玩会别人不懂,又实用的zabbix监控架构

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩会别人不懂,又实用的zabbix监控架构相关的知识,希望对你有一定的参考价值。

zabbix工作原理


环境:实验环境,为演示简单化,服务搭建在一台服务器,真实环境,一般会是在多台服务器,方法一样。

角色IP地址服务
zabbix服务端192.168.2.130zabbix-server
被监控端192.168.2.135mysqlnginx

聚合图形

提示:适用于将多个经常监控的信息,完美组合到一个图形中,相比从其他监控子选项一个个点击,节约时间。
步骤:
流程:监测–聚合图形–创建聚合图形–填写聚合图形“名称”–添加–选择新建聚合图形–编辑聚合图形
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监控架构的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix中小型企业Zabbix监控实战之告警大全

zabbix监控架构原理

关于这次KPL春季决赛的感悟

Zabbix监控介绍&配置zabbix架构

LAMP架构之zabbix监控:zabbix基础操作

Zabbix监控原理及架构