Confuso sobre o uso do MySQL do Zabbix Template (mais de 800 itens)

0

Por favor, explique o uso completo deste modelo. modelo de link

Eu pesquisei muito no Google, configurei conforme descrito, mas não posso usar isso ainda. Você pode explicar completamente? Eu tenho dois centos 7. zabbix versão 3.4. config zabbix-agent: /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}'

UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/etc/zabbix mysql -N'

UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V
UserParameter=mysql[*],/etc/zabbix/mysql_check.pl $1 $2 $3 $4

eu crio o usuário mysql .

CREATE USER 'david'@'%' IDENTIFIED BY 'david123';
    ---------------------------------------------------------------
MariaDB [(none)]> select user,host from mysql.user;
+--------------+-----------+
| user         | host      |
+--------------+-----------+
| cluster_user | %         |
| david        | %         |
| dav          | 127.0.0.1 |
| root         | 127.0.0.1 |
| root         | ::1       |
| dav          | db1       |
| root         | db1       |
| root         | db3       |
| dav          | localhost |
| fazeli       | localhost |
| root         | localhost |
+--------------+-----------+
11 rows in set (0.00 sec)
------------------------------------------------
     MariaDB [(none)]> show databases;           
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)
    ------------------------------------------------
    MariaDB [(none)]> show grants for 'david'@'%';  
+---------------------------------------------------------------------------------------------------------------+
| Grants for david@%                                                                                            |
+---------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'david'@'%' IDENTIFIED BY PASSWORD '*76E1DED67C484EF41716EFA3545C12098380B713' |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
------------------------------------------------

eu crio .my.cnf em /etc/zabbix

[mysql]
user=david
password=david123
[mysqladmin]
user=david
password=david123

meu perl script mysql_check.pl em /etc/zabbix

use strict;
use Data::Dumper;
use DBI;
my $user = shift;
my $password = shift;
my $type = shift;
my $search_like = shift;
my $dsn = "DBI:mysql:database=mysql;host=db2";
my $tmp_file = '/tmp/zbx_mysql.status';
my $zbx_sender_file = '/usr/bin/zabbix_sender';
my $zabbix_sender = '/usr/bin/zabbix_sender';

eu defino macro. (veja a captura de tela).

arquivos de permissão:

[root@db2 zabbix]# ll
total 92
-rw-r--r-- 1 root root 78654 Jan 24 06:20 mysql_check.pl
-rw-r--r-- 1 root root 11124 Jan 21 10:28 zabbix_agentd.conf
drwxr-xr-x 2 root root    38 Jan 21 09:52 zabbix_agentd.d

POR FAVOR.THANKS.

    
por pyramid13 24.01.2018 / 12:50

1 resposta

0

Observação: se a captura de tela incluiu a senha raiz do seu banco de dados MySQL, altere-a o mais rápido possível!

Esta linha do UserParameter sugere que mysql_check.pl usa quatro parâmetros que provavelmente são especificados pelo modelo:

UserParameter=mysql[*],/etc/zabbix/mysql_check.pl $1 $2 $3 $4

O original mysql_check.pl que vem com o modelo tem isso no começo:

#!/usr/bin/perl

use strict;
use Data::Dumper;
use DBI;

my $user = shift;
my $password = shift;

my $type = shift;

my $search_like = shift;

my $dsn = "DBI:mysql:database=mysql;host=<replace mysql host>";
my $tmp_file = '/tmp/zbx_mysql.status';
my $zbx_sender_file = '/tmp/zbx_mysql.sender';

[...continues...]

Suponho que você tenha postado apenas as linhas importantes / editadas desta parte em sua pergunta. Eu vejo dois problemas:

1.) a falta de cotação adequada que também foi observada por cas:

one obvious error is that the string dav in mysql_check.pl needs to be quoted: my $user = 'dav';. don't know much about zabbix so can't help beyond that. – cas

Eu suponho que você já corrigiu isso.

2.) os quatro comandos shift devem escolher os parâmetros da linha de comando recebidos por mysql_check.pl e colocá-los em variáveis, em ordem.

Na versão original, o primeiro parâmetro é armazenado na variável $user , o segundo em $password e assim por diante. Mas você substituiu os dois primeiros dos comandos shift por valores codificados: isso fará com que o primeiro parâmetro (que aparentemente é o nome de usuário do MySQL da sua macro capturada, passou pelo modelo) seja atribuído a $type em vez de $user e a senha para $search_like em vez de $password . Os parâmetros da terceira e quarta linha de comando não serão usados. E esses dois parâmetros informariam o mysql_check.pl do que verificar.

Olhando mais para o código de script mysql_check.pl , sua versão modificada acabará fazendo coisas sem sentido porque está tentando interpretar o nome de usuário como o valor $type , então ele retornará nada ou algo do tipo não será capaz de analisar.

Não remova nenhum comando shift de mysql_check.pl . Se você precisar codificar o nome de usuário e a senha por algum motivo, faça assim:

[...]
use DBI;

my $user = shift;
my $password = shift;

#hard-coded user info for testing only; these should come from the zabbix macro instead
$user = 'dav';
$password = 'dav123456';

my $type = shift; 
my $search_like = shift;
[...]

Além disso, parece que suas macros do Zabbix ${MYSQL_USER} e ${MYSQL_PWD} têm os valores 'dav' e 'dav123456' respectivamente designados no nível global, mas 'root' e '' no nível do host. As atribuições no nível do host substituirão as globais, portanto, o modelo usará os valores incorretos.

    
por 27.01.2018 / 14:03