玩会别人不懂,又实用的zabbix监控架构
Posted Friends of the wind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩会别人不懂,又实用的zabbix监控架构相关的知识,希望对你有一定的参考价值。
zabbix工作原理
环境:实验环境,为演示简单化,服务搭建在一台服务器,真实环境,一般会是在多台服务器,方法一样。
角色 | IP地址 | 服务 |
---|---|---|
zabbix服务端 | 192.168.2.130 | zabbix-server |
被监控端 | 192.168.2.135 | mysql、nginx |
聚合图形
提示:适用于将多个经常监控的信息,完美组合到一个图形中,相比从其他监控子选项一个个点击,节约时间。
步骤:
流程:监测–聚合图形–创建聚合图形–填写聚合图形“名称”–添加–选择新建聚合图形–编辑聚合图形
1、 创建聚合图形
2、编辑聚合图形
3、 验证:
percona模版监控mysql
提示:zabbix自带mysql监控模板少,可以导入第三方模板,丰富监控架构的监控项。
1.安装php环境(percona需要php环境)
在被监控端192.168.2.135操作
[root@mysql /data/soft]# yum install php php-mysql -y
2.下载软件(注意,安装完成后会有提示模版的路径位置)
[root@mysql ~]# mkdir /data/soft/ -p //创建文件下载到的目录
[root@mysql ~]# cd /data/soft/
[root@mysql /data/soft]# wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
安装模板软件
[root@mysql /data/soft]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
3.查看目录
有2个目录,一个是脚本目录,一个是模版目录
4.编辑脚本配置文件get_mysql_stats_wrapper.sh
vim get_mysql_stats_wrapper.sh
修改get_mysql_stats_wrapper数据库登陆信息,第19行添加mysql账号密码
如图:添加绿色区域内容,具体是根据您设置的mysql账号密码。
5.编辑php配置文件ss_get_mysql_stats.php
vim ss_get_mysql_stats.php
修改30,31行:
6.复制自定义监控项配置文件到zabbix目录
进入目录:
cd /var/lib/zabbix/percona/templates/
拷贝文件:
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
7.重启agent
systemctl restart zabbix-agent
8.测试key
zabbix服务端:由于没有进行操作,所以是0;
zabbix被监控端:需要多等一会,才有数据,下图是mysql测试情况。
zabbix_agentd -p
9.导入模版(把主机的数据导入到web图形界面)
配置–模板–导入–浏览导入文件–勾选“聚合图形”–最后“导入”
10.主机链接模版
配置–主机–创建主机(或勾选已存在的主机)–选择模板
11.验证:
自定义模版监控nginx状态
提示:以epel源安装Nginx为例
步骤:
1、 搭建nginx服务器,安装zabbix-agent,修改配置文件指向zabbix服务器
yum -y install epel-release
yum -y install nginx
2.开启监控页面并访问测试
vim /etc/nginx/conf.d/default.conf
编辑:在server内,location下添加以下内容:
重启服务:systemctl restart nginx
本地测试:
命令:curl 127.0.0.1/nginx_status/
3. 准备nginx监控状态脚本
创建文件:
添加以下内容,保存退出:
#!/bin/bash
NGINX_COMMAND=$1
CACHEFILE="/tmp/nginx_status.txt"
CMD="/usr/bin/curl http://127.0.0.1/nginx_status/"
if [ ! -f $CACHEFILE ];then
$CMD >$CACHEFILE 2>/dev/null
fi
# Check and run the script
TIMEFLM=`stat -c %Y $CACHEFILE`
TIMENOW=`date +%s`
if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then
rm -f $CACHEFILE
fi
if [ ! -f $CACHEFILE ];then
$CMD >$CACHEFILE 2>/dev/null
fi
nginx_active(){
grep 'Active' $CACHEFILE| awk '{print $NF}'
exit 0;
}
nginx_reading(){
grep 'Reading' $CACHEFILE| awk '{print $2}'
exit 0;
}
nginx_writing(){
grep 'Writing' $CACHEFILE | awk '{print $4}'
exit 0;
}
nginx_waiting(){
grep 'Waiting' $CACHEFILE| awk '{print $6}'
exit 0;
}
nginx_accepts(){
awk NR==3 $CACHEFILE| awk '{print $1}'
exit 0;
}
nginx_handled(){
awk NR==3 $CACHEFILE| awk '{print $2}'
exit 0;
}
nginx_requests(){
awk NR==3 $CACHEFILE| awk '{print $3}'
exit 0;
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
*)
echo 'Invalid credentials';
exit 2;
esac
赋予执行权:chmod a+x nginx_monitor.sh
4.编写zabbix监控配置文件
vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1
重启代理服务:systemctl restart zabbix-agent.service
5.在服务端192.168.2.130使用zabbix_get取值
可能报错:
在被监控端:删除提示的文件
rm -f /tmp/nginx_status.txt
即可成功:
6.导入模版(方法同上)
7.链接模版
8.查看数据
扩展:如果有上百台Nginx服务器需要监控,一个个添加是不是麻烦?可以,配置–主机–web1–点击web1–选择“全克隆”–填写新nginx的ip
以上是关于玩会别人不懂,又实用的zabbix监控架构的主要内容,如果未能解决你的问题,请参考以下文章