zabbix(三)对服务的监控
httpd/nginx
1>给 server2 添加 httpd 监控
但是这个 http 监控的监控项只有一个,下面在 server3 上自定义 nginx 的监控
#源码编译 nginx,关闭 debug,添加监控模块
[root@server3 nginx-1.15.8]#./configure --prefix=/usr/local/nginx --with-http_stub_status_module
[root@server3 nginx-1.15.8]# make && make install
启用nginx
关闭日志,只允许本机查看状态监控
[root@server3 conf]# curl http://127.0.0.1/status
Active connections: 1
server accepts handled requests
222
Reading: 0 Writing: 1 Waiting: 0
多访问几次,增加数据量
2>自定义 nginx 监控项
(1)获取活跃链接数
[root@server3 ~]# curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
1
##user -> web ui -> zabbix server -> zabbix agent -> shell -> zabbix server ->mysql -> web ui
#编辑获取链接数的配置文件
[root@server3 ~]# cd /etc/zabbix/zabbix_agentd.d
[root@server3 zabbix_agentd.d]#cp userparameter_mysql.conf userparameter_nginx.conf
[root@server3 zabbix_agentd.d]# cat userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
[root@server3 zabbix_agentd.d]# systemctl restart zabbix-agent
#在 server1 上安装 zabbix-get,来用命令方式获取 key 值,同时为了测试是否能获取到自己设置的 key 值
[root@server1 4.0]# yum install -y zabbix-get-4.0.5-1.el7.x86_64.rpm
[root@server1 4.0]# zabbix_get -s 172.25.0.3 -p 10050 -k "nginx.active"
1
##这里的 -k 后的参数是刚才配置文件里的,获取到数据说明配置正确
#给 server3 配置监控项
#这里要注意:键值一栏,填的内容需要和配置文件UserParameter 定义的 key 值相同,否则无效
##新建图形并添加监控项
在预览中可以看到已经产生数据
##但是发现汉字无法显示,是字体原因
##zabbix 字体存放在下面路径
[root@server1 fonts]# ls
graphfont.ttf
[root@server1 fonts]# pwd
/usr/share/zabbix/fonts
#获取字体
[root@server1 fonts]# ls
graphfont.ttf simkai.ttf
#修改配置使新字体生效
[root@server1 include]# pwd
/usr/share/zabbix/include
[root@server1 include]# vim defines.inc.php
搜索 FONT 关键字,发现使用的是 graphfont.ttf 字体
:%s/graphfont/simkai/g
##替换为 simkai
#再刷新,字体正常
(2)获取接收请求数
[root@server3 ~]# curl http://127.0.0.1/status
Active connections: 1
server accepts handled requests
72 72 72
Reading: 0 Writing: 1 Waiting: 0
[root@server3 ~]# curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
79
[root@server3 zabbix_agentd.d]# cat userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk
'{print $3}'
UserParameter=nginx.accept,curl -s http://127.0.0.1/status | awk NR==3 | awk
'{print $1}'
#重启
[root@server3 zabbix_agentd.d]# systemctl restart zabbix-agent
#测试获取 key 值
[root@server1 ~]# zabbix_get -s 172.25.0.3 -p 10050 -k "nginx.accept"
89
#添加监控项
#添加图形
#查看预览
##增加数据,看的更清楚
[root@foundation0 ~]# ab -c 1 -n 1000 http://172.25.0.3/index.html
[root@server3 zabbix_agentd.d]# curl -s http://127.0.0.1/status
Active connections: 1
server accepts handled requests
1117 1117 1117
Reading: 0 Writing: 1 Waiting: 0
再次查看图形
mysql
(1)zabbix 自带的 mysql 监控模板
##添加 mysql 监控模板
##zabbix 监控 mysql 的配置目录
[root@server1 ~]# mkdir /var/lib/zabbix
##因为 mysql 的 key 监控目录就是这个
[root@server1 zabbix]#cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
##mysql 默认使用 mysqladmin 检测 mysql 是否存活
[root@server1 zabbix]# mysqladmin -uzabbix -predhat -h127.0.0.1 ping | grep -c alive
1
得到结果为 1,表示 mysql 正常,为 0 表示 mysql 挂了
##由于 mysql 帐号密码写在命令行对以后维护不好,也不安全,所以写在配置文件里
[root@server1 zabbix]# cat .my.cnf
##建立为隐藏文件更安全
[mysql]
host = localhost
user = root
password = redhat
socket = /var/lib/mysql/mysql.sock
[mysqladmin]
host = localhost
user = root
password = redhat
socket = /var/lib/mysql/mysql.sock
[root@server1 zabbix]# systemctl restart zabbix-agent
然后在 web 端可以看到 mysql 相关的两个图形有数据,如果没数据就进入 mysql 敲几条
命令进行查询,再看就有
##以上是使用 zabbix 自带的 mysql 监控模板
(2)使用 percona 模板来监控 mysql
##对应着手册写配置
##因为 zabbix 自带的 mysql 监控的监控项太少,只有一些基础的监控,并且没有可以直接使用的 key,不能满足生产环境需求,需要扩展,所以使用 percona 插件。Percona 为MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为 。
[root@server1 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
##复制 percona 配置文件
[root@server1 templates]# pwd
/var/lib/zabbix/percona/templates
[root@server1 templates]#cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
#可以看到此模板中有 190 个监控项
[root@server1 ~]# cd /var/lib/zabbix/percona/scripts
##配置 mysql 的用户名和密码,新建一个文件,不用修改原脚本
[root@server1 scripts]# vim ss_get_mysql_stats.php.cnf
<?php
$mysql_user = 'root';
$mysql_pass = 'redhat';
#重启
systemctl restart zabbix-agent
##运行脚本获取数据
[root@server1 zabbix_agentd.d]#/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
gk 1647
能获取到数据说明配置正常
#查看所有 key 值
[root@server1 ~]# cat /tmp/localhost-mysql_cacti_stats.txt
这是一个缓存文件,里面记录了所有 key 对应的值
##导入模板
聚合图形选上
##删除原来的模板,添加 percona 模板
##添加后可以看到监控项多了很多,打开一个监控项查看图形