zabbix全面监控mysql

怎么知道zabbix server是主动轮询收集信息还是被动接受zabbix agent的信息
zabbix_agent [TCP 主动轮询]
zabbix_sender [UDP 被动接受代理收集的系统信息]

一、从网上下载相应脚本与XML定义文件。

下载地址:http://www.zabbix.com/wiki/howto/monitor/db/mysql/extensive_mysql_monitoring_including_replication?s[]=mysql

Template_MySQL_Server.xml

Template_MySQL_Replication_Master.xml

Template_MySQL_Replication_Slave.xml

和执行脚本:mysql.php

二、把mysql.php上传至配置文件目录/etc/zabbix/

chmod 755 mysql.php

三、修改mysql.php文件

根据本机环境。

第一行加入:#!/usr/bin/php

在最后一行加入:?>

关闭调试:define('DEBUG',true); 为 define('DEBUG',False);

修改日志、数据文件路径:

define('LOG',"/tmp/zabbix_".SYSTEM.".log");
define('DAT',"/tmp/zabbix_".SYSTEM.".dat");
define('UTIME',"/tmp/.zabbix_".SYSTEM.".utime");
define('DTIME',"/tmp/.zabbix_".SYSTEM.".dtime");

修改:define('SYSTEM','mysql'.(DEBUG ? "-debug" : "")); 为:define('SYSTEM','mysql');

打开系统日志功能://system("zabbix_sender -z $server -i ".DAT." >> ".LOG); 为:system("zabbix_sender -z $server -i ".DAT." >> ".LOG);


注释file_put_contents(DAT,"$server $host 10051 ".SYSTEM.".$var $val\n",FILE_APPEND);且

下面增加以下文字:
$cmd = "zabbix_sender -c $config_path -k ".SYSTEM.".$var -o $val -vv";
file_put_contents(DAT,"$cmd\n",FILE_APPEND);
exec($cmd);


四、在zabbix_agentd.conf配置文件中加入

UserParameter=mysql.daily,php /etc/zabbix/mysql.php daily用户名 密码
UserParameter=mysql.live,php /etc/zabbix/mysql.php live 用户名 密码

daily:每天执行一次。【由zabbix_server轮询发起,默认86640秒即一天 zabbix agent类型 UDP协议】

live:按指定时间执行一次。【由zabbix_server轮询发起,默认120秒 zabbix agent类型 UDP协议】

php :执行php文件

/etc/zabbix/mysql.php:mysql.php文件所在的文件路径

用户名 密码:登录mysql数据库的账户与密码

重启zabbix_agentd


切记修改/etc/profile 或者 /home/zabbix/.bash_profile 在文件尾部添加以下文字

/home/zabbix/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/webserver/mysql/bin:/usr/local/webserver/php/bin:/usr/local/webserver/zabbix_agents/bin
export PATH

/etc/profile

PATH=$PATH:/usr/local/webserver/mysql/bin:/usr/local/webserver/php/bin:/usr/local/webserver/zabbix_agents/bin
export PATH

mysql.php 监控文件里面的命令执行失败【/tmp下的日志文件属主权限、用户的.bash_profile是否导入 php zabbix_sender mys】


问题:
Zabbix agent (active) 走 UDP 协议 NGINX 添加的 zabbix_agentd 服务后,且通过zabbix_get可以获取数据,但是无法入库。解决方法看下面大红字

修改防火墙设置 vi /etc/sysconfig/iptables

【zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper

-A INPUT -p tcp -s 110.80.20.XXX-m multiport --dports 10050,10051 -j ACCEPT
-A INPUT -p udp -s 110.80.20.XXXX-m multiport --dports 10050,10051 -j ACCEPT


五、在zabbix web管理界面导入xml文件

配置-导入/导出-浏览

六、在主机内增加指定模板

配置-主机-具体主机名-Link with Template-新增-刚导入的模板。

模板分为三种:

template MYSQL_server:监控项最全【下载文件有备注信息、且若干个tigger有重复会导致导入失败】

由于监控的item很多所以必须修改 Timeout 系统最大值 30秒。默认3秒。范围 1-30秒 否则服务端测试时会

Timeout while executing a shell script 当然如果项目在30秒无法发送完毕也将停止,所以导致发送不全面

### Option: Timeout
# Spend no more than Timeout seconds on processing
#
# Mandatory: no
# Range: 1-30
# Default:
Timeout=30

template MYSQL_Replication_Master:只监控主要参数,监控功能相对最少

template MYSQL_Replication_Slave:主要针对性能方面的监控。

七、测试监控是否成功

删除 定时文件

rm /tmp/.zabbix_mysql-debug.dtime;

取的每天的监控数据

php /etc/zabbix/mysql.php daily root *****

取即时数据

php /etc/zabbix/mysql.php live root *****

查看日志

cat /tmp/zabbix_mysql.log

Info from server: "Processed 1 Failed 0 Total 1 Seconds spent 0.006261"
sent: 1; skipped: 0; total: 1
Info from server: "Processed 1 Failed 0 Total 1 Seconds spent 0.004047"
sent: 1; skipped: 0; total: 1
Info from server: "Processed 0 Failed 106 Total 106 Seconds spent 0.045790"
sent: 106; skipped: 0; total: 106

看到上述为成功

查看DAT的文件。上传的数据

cat /tmp/zabbix_mysql.dat

八、最后查看zabbix 的最新数据

这时会看到新增加的监控项。

接下去就是绘制图形。



你可能感兴趣的:(zabbix)