Zabbix如何实现对Mysql、Apache、Nginx的监控
下文主要给大家带来Zabbix如何实现对MySQL、Apache、Nginx的监控,希望这些内容能够带给大家实际用处,这也是我编辑Zabbix如何实现对Mysql、Apache、Nginx的监控这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。
创新互联成立与2013年,先为临洮等服务建站,临洮等地企业,进行企业商务咨询服务。为临洮企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
1)zabbix agent端安装mysql
由于mysql安装太浪费时间,本人提供一键安装mysql脚本,如下:
[root@agent ~]# ls mysql* mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz mysql.sh [root@agent ~]# sh mysql.sh Starting MySQL. SUCCESS! mysql: [Warning] Using a password on the command line interface can be insecure. //出现此信息表示安装成功! [root@agent ~]# mysql -u root -p123 //脚本对应的root密码为123 mysql> grant all on *.* to zabbix@'192.168.1.%' identified by 'zabbix'; //创建测试用户
2)zabbix agent端编写自定义监控mysql脚本
[root@agent ~]# mkdir /etc/zabbix/shell [root@agent ~]# vim /etc/zabbix/shell/check_mysql.sh #!/bin/bash MYSQL_HOST='192.168.1.8' #指定mysql主机的IP地址 MYSQL_PORT='3306' #指定mysql主机的监听地址 MYSQL_CONN="/usr/local/bin/mysqladmin -h${MYSQL_HOST} -P${MYSQL_PORT}" #指定连接使用的工具 if [ $# -ne "1" ];then echo "arg error!" fi # 获取数据 case $1 in Uptime) result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"` echo $result ;; Com_update) result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` echo $result ;; Slow_queries) result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"` echo $result ;; Com_select) result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` echo $result ;; Com_rollback) result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3` echo $result ;; Questions) result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"` echo $result ;; Com_insert) result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3` echo $result ;; Com_delete) result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3` echo $result ;; Com_commit) result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3` echo $result ;; Bytes_sent) result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` echo $result ;; Bytes_received) result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3` echo $result ;; Com_begin) result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3` echo $result ;; *) echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" ;; esac 由于将用户名、密码信息写到脚本中不安全,所以将用户名、密码信息写到/etc/my.cnf文件中 [root@agent ~]# vim /etc/my.cnf [mysqladmin] user=zabbix password=zabbix [root@agent ~]# chmod +x /etc/zabbix/shell/check_mysql.sh [root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/check_mysql.sh [root@agent ~]# sh /etc/zabbix/shell/check_mysql.sh Uptime 5260 //agent端测试脚本能否使用
3)zabbix agent端修改配置
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf //将原本的UserParameter全部注释,添加以下内容 UserParameter=mysql.status[*],/etc/zabbix/shell/check_mysql.sh $1 UserParameter=mysql.ping,HOME=/etc /usr/local/bin/mysqladmin ping | grep -c alive UserParameter=mysql.version,/usr/local/bin/mysql -V [root@agent ~]# systemctl restart zabbix-agent [root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "mysql.status[Uptime]" 5372 //zabbix server端测试能否获取到数据
4)zabbix web界面引入模板
zabbix自带了mysql监控的模板,因此只需将模板链接到对应的主机即可!如下:
这里重点需要关注的是每个监控项名称对应的”键值“一列的配置,这里的键值,必须和agent端自定义的监控键值保持一致。另外,可以看到”mysql status“这个监控项有一个触发器,用于检查mysql的运行状态。最后,还需关注这些监控项的监控类型是”zabbix客户端“,所有监控项都存放在”MYSQL“应用集中。
以上设置完成,监控mysql的主机已经添加完成!
5)查看监控状态数据
如图:
从图中可以看出已经获取到数据!
配置mysql监控完成!
二、zabbix监控apache应用实战
zabbix对apache的监控,稍微复杂一些,但基本流程还是两个步骤:第一个是编写监控apache的监控脚本;第二个是创建apache监控模板。以下操作均在zabbix agent端实现,具体步骤如下:
1)zabbix agent开启apache状态页
要想监控apache的运行状态,需要在apache的配置中开启一个apache状态页面,然后再通过编写脚本获取这个状态页面的数据即可达到监控apache的目的!
[root@agent ~]# yum -y install httpd [root@agent ~]# vim /etc/httpd/conf/httpd.conf //末尾添加以下内容 EnableSendfile onSetHandler server-status Require ip 127.0.0.1 192.168.1.10 [root@agent ~]# systemctl start httpd
配置项中解释如下:
1)EnableSendfile on:表示开启扩展的status信息,但是开启后会降低云服务器运行效率;
2) /server-status:则表示通过”http://ip/server-status“ 来访问,同时也可以通过”http://ip/server-status?refresh=N“ 的方式进行动态访问,N则表示N秒自动刷新一次;
3)Require ip 127.0.0.1 192.168.1.10:这是apache 2.4版本增加的一个新特效。即表示需要访问的IP地址;
Require常用的用法如下:
1)Require all granted:允许所有主机访问;
2)Require all denied:拒绝所有主机访问;
3)Require ip IP地址:允许某个IP访问;
4)Require not ip IP地址:禁止某个IP访问;
5)Require host 主机名:允许某个主机访问;
6)Require not host 主机名:禁止某个主机访问;
修改完成后重启apache服务生效!
2)zabbix agent获取apache的状态检测脚本和zabbix模板
apache状态页面配置完成后,接下来就需要编写获取状态数据的脚本了,脚本代码较多,大家可通过以下方式下载!
[root@agent ~]# wget https://www.ixdba.net/zabbix/zabbix-apache.zip [root@agent ~]# unzip zabbix-apache.zip [root@agent ~]# ll zapache* -rw-r--r-- 1 root root 5792 1月 31 23:00 zapache -rw-r--r-- 1 root root 52024 4月 22 2016 zapache-template.xml //zapache:是监控apache所需的脚本; //zapache-template.xml:是监控apache所需的模板; [root@agent ~]# mv zapache /etc/zabbix/shell/ [root@agent ~]# chmod 755 /etc/zabbix/shell/zapache [root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/zapache [root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_zapache.conf //编写apache的模板文件,用于调取apache的监控脚本 UserParameter=zapache[*],/etc/zabbix/shell/zapache $1 [root@agent ~]# systemctl restart zabbix-agent [root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "zapache[BusyWorkers]" 1 //zabbix server测试是否可以获取数据
3)zabbix web页面导入模板
如图:
4)查看apache状态数据
如图:
从图中可以看出已经获取到数据!
配置apache监控完成!
三、zabbix监控Nginx应用实战
zabbix对Nginx的监控,与监控apache的方式完全一样,基本流程还是两个步骤:第一个是编写Nginx的脚本;第二个是创建Nginx监控模板。以下操作均在zabbix agent端实现,具体步骤如下:
1)zabbix agent开启Nginx状态页
[root@agent ~]# yum -y install pcre-devel zlib-devel openssl-devel [root@agent ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz [root@agent ~]# tar zxf nginx-1.14.2.tar.gz -C /usr/src [root@agent ~]# cd /usr/src/nginx-1.14.2/ [root@agent nginx-1.14.2]# ./configure --with-http_stub_status_module && make && make install [root@agent ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [root@agent ~]# vim /usr/local/nginx/conf/nginx.conf //添加loaction规则 location /nginx-status { stub_status on; //开启状态监控模块 access_log off; //关闭访问日志 allow 127.0.0.1; allow 192.168.1.10; //允许访问的IP地址 deny all; //拒绝所有的IP地址 } [root@agent ~]# nginx -t [root@agent ~]# nginx [root@agent ~]# curl 127.0.0.1/nginx-status Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0
输出的信息说明:
1)Active connections:对后端发起的活动链接数;
2)accepts:nginx总共处理了多少个连接;
3)handled:nginx成功创建了几次握手;
4)requests:nginx总共处理了多少请求;
5)Reading:nginx读取客户端的header数;
6)Writing:nginx返回给客户端的header数;
7)Waiting:nginx请求处理完成,正在等待下一请求指令的连接;
2)zabbix agent获取apache的状态检测脚本和zabbix模板
[root@agent ~]# wget https://www.ixdba.net/zabbix/zabbix-nginx.zip [root@agent ~]# unzip zabbix-nginx.zip [root@agent ~]# ll nginx_status.sh zbx* -rw-r--r-- 1 root root 1106 11月 1 2018 nginx_status.sh -rw-r--r-- 1 root root 20703 11月 1 2018 zbx_nginx_templates.xml //nginx_status.sh:所需的脚本 // zbx_nginx_templates.xml:所需的模板 [root@agent ~]# mv nginx_status.sh /etc/zabbix/shell/ [root@agent ~]# chmod o+x /etc/zabbix/shell/nginx_status.sh [root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/nginx_status.sh [root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf //编写nginx的模板文件,用于调取nginx的监控脚本 UserParameter=nginx.status[*],/etc/zabbix/shell/nginx_status.sh $1 [root@agent ~]# systemctl restart zabbix-agent [root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "nginx.status[active]" 1 //zabbix server测试是否可以获取数据
3)zabbix web页面导入模板
如图:
4)查看nginx状态数据
如图:
从图中可以看出已经获取到数据!
配置nginx监控完成!
对于以上关于Zabbix如何实现对Mysql、Apache、Nginx的监控,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。
文章名称:Zabbix如何实现对Mysql、Apache、Nginx的监控
分享链接:http://azwzsj.com/article/gdppoi.html