Add MySQL monitoring script and template
This commit is contained in:
parent
eaf262cb24
commit
f20de75884
7
zabbix_conf/mysql.conf
Normal file
7
zabbix_conf/mysql.conf
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Type: Agent or Agent (active)
|
||||||
|
# You can also get all the stats in a json object by passing 'all',
|
||||||
|
# or retreive the value of a specific key
|
||||||
|
# Run the script without --what to get a list of available keys
|
||||||
|
|
||||||
|
UserParameter=db.mysql[*],sudo /var/lib/zabbix/bin/check_mysql_sudo --host '$1' --port '$2' --user '$3' --password '$4' --defaults='$5' --what '$6'
|
||||||
|
|
101
zabbix_scripts/check_mysql
Normal file
101
zabbix_scripts/check_mysql
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use JSON;
|
||||||
|
use Data::Dumper;
|
||||||
|
use Getopt::Long;
|
||||||
|
|
||||||
|
my $what = 'all';
|
||||||
|
my $defaults = undef;
|
||||||
|
my $host = undef;
|
||||||
|
my $port = undef;
|
||||||
|
my $user = undef;
|
||||||
|
my $password = undef;
|
||||||
|
my $help = 0;
|
||||||
|
my $pretty = 0;
|
||||||
|
my $exit = 0;
|
||||||
|
|
||||||
|
my $json = {
|
||||||
|
zbx_error => "none"
|
||||||
|
};
|
||||||
|
|
||||||
|
GetOptions(
|
||||||
|
"what=s" => \$what,
|
||||||
|
"help" => \$help,
|
||||||
|
"defaults=s" => \$defaults,
|
||||||
|
"host=s" => \$host,
|
||||||
|
"port=s" => \$port,
|
||||||
|
"user=s" => \$user,
|
||||||
|
"password=s" => \$password,
|
||||||
|
"pretty" => \$pretty
|
||||||
|
);
|
||||||
|
|
||||||
|
# Basic input checks
|
||||||
|
if (defined $defaults and $defaults ne '' and not -e $defaults){
|
||||||
|
$json->{zbx_error} = "File $defaults doesn't exist";
|
||||||
|
$exit = 1;
|
||||||
|
} elsif (defined $host and $host ne '' and $host !~ m/^[\w\-\.]+$/){
|
||||||
|
$json->{zbx_error} = "Bad value for --host";
|
||||||
|
$exit = 1;
|
||||||
|
} elsif (defined $port and $port ne '' and ($port !~ m/^\d+$/ or $port lt 1 or $port gt 65535)){
|
||||||
|
$json->{zbx_error} = "Bad value for --port";
|
||||||
|
$exit = 1;
|
||||||
|
} elsif (defined $user and $user ne '' and $user !~ m/^[\w\-\.]+$/){
|
||||||
|
$json->{zbx_error} = "Bad value for --user";
|
||||||
|
$exit = 1;
|
||||||
|
} elsif (defined $password and $password ne '') {
|
||||||
|
# Just escape quotes as will protect the password with
|
||||||
|
$password =~ s/'/\\'/g;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($help){
|
||||||
|
print <<_EOF;
|
||||||
|
Usage: $0 [--what=key] [--help] [--pretty]
|
||||||
|
|
||||||
|
* --what : if a key is given (eg --what=Bytes_received) will print only this value.
|
||||||
|
Else, all the stats are printed in a json format.
|
||||||
|
Run once without --what to get a list of available keys
|
||||||
|
|
||||||
|
* --help : print this help and exit
|
||||||
|
|
||||||
|
* --defaults : set the file from which mysql will read defaults
|
||||||
|
|
||||||
|
* --host : set the hostname to connect to
|
||||||
|
|
||||||
|
* --user : set the user to connect as
|
||||||
|
|
||||||
|
* --password : set the password to use
|
||||||
|
|
||||||
|
* --pretty : prints JSON in a pretty, human readable format. Has no use when --what is also given
|
||||||
|
_EOF
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($exit eq 0){
|
||||||
|
my $opt = "";
|
||||||
|
$opt .= " --defaults-file=$defaults" if (defined $defaults and $defaults ne '');
|
||||||
|
$opt .= " --host=$host" if (defined $host and $host ne '');
|
||||||
|
$opt .= " --user=$user" if (defined $user and $user ne '');
|
||||||
|
$opt .= " --password='$password'" if (defined $password and $password ne '');
|
||||||
|
my @status = qx(mysql $opt --batch --execute 'show global status;' 2>&1);
|
||||||
|
if ($? != 0){
|
||||||
|
$exit = $?;
|
||||||
|
$json->{zbx_error} = join '', @status;
|
||||||
|
} else {
|
||||||
|
foreach (@status){
|
||||||
|
chomp;
|
||||||
|
my ($key, $val) = split(/\t/, $_);
|
||||||
|
$json->{$key} = $val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($what ne 'all' and defined $json->{$what}){
|
||||||
|
print $json->{$what} . "\n";
|
||||||
|
} else {
|
||||||
|
print to_json($json, { pretty => $pretty });
|
||||||
|
}
|
||||||
|
|
||||||
|
exit $exit;
|
||||||
|
|
1079
zabbix_templates/Template_App_MySQL.xml
Normal file
1079
zabbix_templates/Template_App_MySQL.xml
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user