zabbix操作错误汇总

1####################################################################################

2019-05-03T00:56:36.941840Z mysqld_safe mysqld from pid file /data/mysqld.pid ended

[root@zabbix-server bin]# mysqld_safe --defaults-file=/etc/my.cnf

2019-05-03T00:59:06.392254Z mysqld_safe Logging to '/data/mysqld.log'.

2019-05-03T00:59:06.395674Z mysqld_safe Logging to '/data/mysqld.log'.

2019-05-03T00:59:06.424562Z mysqld_safe Starting mysqld daemon with databases from /data

^Z

[1]+  Stopped                 mysqld_safe --defaults-file=/etc/my.cnf

[root@zabbix-server bin]# bg 1

[1] + mysqld_safe --defaults-file=/etc/my.cnf &

如果还是启动不起来,那就是权限问题,赋予数据目录相关权限:chown -R mysql:mysql ./

2###################################################################################

[root@dbserver-6 data]# mysql -uroot -p123 -s /usr/local/mysql/data/mysql.sock

mysql: [Warning] Using a password on the command line interface can be insecure.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

[root@dbserver-6 data]# mysql -uroot -p123 -S /usr/local/mysql/data/mysql.sock

mysql>

3、####################################################################################

[root@dbserver-6 zabbix_agentd.conf.d]# zabbix_get -s 172.16.20.1 -k cpu_number

zabbix_get [11636]: Check access restrictions in Zabbix agent configuration

 被监控端的zabbix_agentd.conf配置文件里的server_name没有修改,应该修改成被监控端的主机名Hostname=rh-mysql-1

真正原因是要在server端运行该命令[root@zabbix-server etc]# zabbix_get -s 172.16.20.1 -p 10050 -k "cpu_number"

4

4####################################################################################

[root@rh-mysql-1 ~]# mysql -uroot -p123 -S /usr/local/mysql/data/mysql.sock --show-warnings=false -Ne "show variables like 'innodb_buffer_pool_size';" 2>/dev/null | awk '{print $2}'

134217728

[root@zabbix-server bin]# zabbix_get -s rh-mysql-1 -k buffer_pool_wait_free

           

agent端单独测试执行命令没问题,server端zabbix_get监控项键值时,返回值为空,在zabbix监控网页端配置自定义监控项,显示不支持字符类型,

 

因为我设置的类型为正整数类型,很可能上边参数返回的是一个字符串报错!!

因此我查看zabbix_agent的执行文件

     vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf.d/userparameter_mysql.conf

UserParameter=buffer_pool_wait_free,mysql -uroot -p123 -S /usr/local/mysql/data/mysql.sock --show-warnings=false -Ne "show global status like 'Innodb_buffer_pool_wait_free';" 2>/dev/null | awk '{print $2}'

将屏蔽错误和警告道null文件取消,进行测试,

[root@rh-mysql-1 ~]# mysql -uroot -p123 -S /usr/local/mysql/data/mysql.sock --show-warnings=false -Ne "show variables like 'innodb_buffer_pool_size';" | awk '{print $2}'

mysql: [Warning] Using a password on the command line interface can be insecure.

134217728

[root@zabbix-server bin]# zabbix_get -s rh-mysql-1 -k buffer_pool_wait_free

mysql: [Warning] Using a password on the command line interface can be insecure.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/data/mysql.sock' (13)

server端出现出错根源,连接不上sock套接字文件,可是我明明在agent端命令中指定sock文件,而且单独执行没有问题,这里可能是由于server端执行命令调用agent端的mysql时,使用的sock文件路径出错;

修改如下:

agent端的mysql配置文件中vim /etc.my.cnf中,进行sock文件指定,添加内容如下:

[mysql]

socket=/usr/local/mysql/data/mysql.sock

修改zabbix_agent的执行文件

     vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf.d/userparameter_mysql.conf

UserParameter=buffer_pool_wait_free,mysql -uroot -p123 --show-warnings=false -Ne "show global status like 'Innodb_buffer_pool_wait_free';" 2>/dev/null | awk '{print $2}'

结果仍然出错。

采用本地回环方式登录agent端的mysql

UserParameter=buffer_pool_wait_free,/usr/local/mysql/bin/mysql -uroot -p123 -h127.0.0.1 -P3306 --show-warnings=false -Ne "show global status like 'Innodb_buffer_pool_wait_free';" 2>/dev/null | awk '{print $2}'

[root@zabbix-server ~]# zabbix_get -s rh-mysql-1 -p 10050 -k "innodb_buffer_pool_size"

134217728

成功!!1

因为server端和agent端都存在一个MySQL数据库,如果servermysql连接zabbix成功,就不必考虑,只考虑agent端即可,即在zabbix中可能存在默认socket文件的路径必须在/tmp目录下,如果不在导致agent端配置文件中的路径出错,因此会报错。

5、###########################################################################

解决命令行输入mysql密码的Warning

由于在命令行中输入密码造成的Warning通过一般的过滤手段可能无法过滤掉这条警告,这样就造成了在zabbix web界面显示获得的监控项的值的类型和定义的不一致

如何解决:

1--show-warnings=false

mysql -uroot -p123 --show-warnings=false -Ne "show variables like 'innodb_buffer_pool_size';" 2>/dev/null

2、在mysql配置文件中添加如下内容

[client]

user=zabbix

password=123

host=localhost

socket=/usr/local/mysql/data/mysql.sock

[mysqladmin]

user=zabbix

password=123

host=localhost

socket=/usr/local/mysql/data/mysql.sock

专门在mysql中添加一个zabbix用户,供zabbix获取mysql的信息,不用给zabbix用户很高的权限,实现zabbix用户免密登录mysql,这样就避免了输入密码带来的问题

3、自己在定义一个mysql配置文件,只存放用户名和密码等信息

执行mysql命令时在命令前面加上 HOME=/usr/local/zabbix-agent/etc/ 这个执行时就会读取这个目录     下的配置文件,例

HOME=/usr/local/zabbix-agent/etc/ mysql -e "show variables like 'innodb_buffer_pool_size';"|grep -v Value |awk '{print$2}'

上述的第2中方式需要重启数据库才能读取配置文件,可能在真实的生产环境中不允许重启,第3中方式就弥补了第2 中方式的不足

#####################################################################################################

6、解决zabbix 图表中的中文乱码问题

web端定义的各种中文表示,到了图表中就显示为一个个方框的乱码,这时因为由PHP编写的zabbix web页面时没有加入中文字体包。

解决方式:

1、找一个中文字体包(windows中的就可以。在C:WindowsFonts中)

2、将中文字体包放入zabbix对应网页的目录中(/var/www/zabbix/php/fonts 字体包路径)

     注意将文件名后缀改为 .ttf,否则不能识别

3、修改/var/www/zabbix/php/include/defines.inc.php 文件,

 

DejaVuSans修改为你上传到fonts下的字体包名,不带ttf

4、或者,不用修改配置文件,直接把fonts下,将新的字体包重命名成原来的那个名字,并且把原来的移走或删除

原文地址:https://www.cnblogs.com/5945yang/p/11061613.html