天天看点

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

Zabbix 监控平台搭建 —服务监控

前言

在Zabbix 监控平台搭建一文中,已经将Zabbix的基础理论知识以及基础搭建过程大致展示了一遍,本文主要内容是展示Zabbix其他的监控功能以及与生产工具结合使用的搭建过程,如有错误或者遗漏的地方,欢迎大家指正,谢谢。

基础理论说明

请阅读Zabbix 监控平台搭建一文来获取Zabbix的基本理论知识。

实验步骤

实验目的:搭建展示其他监控功能

实验准备:3台Centos标准系统虚拟机(防火墙与selinux已关闭)

Zabbix服务端使用Centos7,其余虚拟机系统任意。(6或7)

实验规划:

本试验由于被监控端服务不同,此处不做规划。

PS:Zabbix服务端搭建见Zabbix 监控平台搭建

一、Zabbix监控nginx的活动量

主机规划

服务器角色 IP
Zabbix服务端 192.168.10.20
Nginx服务器(被监控端) 192.168.10.21

1.被监控端配置Nginx服务

安装依赖

yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel
           

准备Nginx软件包,解压编译安装。

tar -zxvf nginx-1.13.8.tar.gz
cd nginx-1.13.8
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module # 指定安装路径、指定用户、组、开启http状态统计模块
make && make install
useradd -s /sbin/nologin -M nginx # 创建运行用户
           

修改nginx的配置文件,开启状态统计模块.

vim /usr/local/nginx/conf/nginx.conf

# 在server区域下添加信息。
location /ngx_status {
		stub_status on;
	}
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

保存退出,编写客户端脚本。

vim nginx.sh

#!/bin/bash
	 
HOST="127.0.0.1"
PORT="80"
	 
# 检测 nginx 进程是否存在
function ping {
	/sbin/pidof nginx | wc -l 
}
 
# 检测 nginx 性能
function active {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
	
function reading {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
	
function writing {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
	
function waiting {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}

function accepts {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}

function handled {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
	
function requests {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}

# 执行function
$1
           

保存退出,给脚本赋予执行权限。启动Nginx服务后测试脚本。

chmod a+x nginx.sh
ln -s /usr/local/nginx/sbin/* /usr/local/bin # 做好软链接,方便调用Nginx
echo "123" > /usr/local/nginx/html/index.html # 添加网页内容
nginx -t # 检测Nginx配置文件是否有问题
nginx # 启动Nginx服务
./nginx.sh ping # 测试脚本
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

返回值为1,代表服务运行正常。关闭nginx服务测试脚本。

pkill nginx
./nginx.sh ping
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

返回值为0,代表服务运行异常。

安装agent端,修改配置文件,将脚本放入指定目录,启动服务。

yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf

# 修改95行,指定zabbix服务器的IP或域名
Server=192.168.10.20
# 修改136行,指定主动方案中的zabbix服务器的IP或域名
ServerActive=192.168.10.20
# 修改147行,指定本机的主机名,此项必须与web界面配置项一致
Hostname=192.168.10.21
# 取消284行,开启自定义模块
UnsafeUserParameters=1
# 取消293行,配置自定义模块。
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx.sh $1

mv nginx.sh /etc/zabbix/zabbix_agentd.d/

service zabbix-agent start
           

新复制会话,创建访问循环,以便测试访问量。

2.配置监控端

安装Zabbix探测工具,进行探测测试。

yum -y install zabbix-get-3.2.1-1.el7.x86_64.rpm
zabbix_get -s 192.168.10.21 -k 'nginx.status[ping]'
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

启动服务端Nginx,再次探测。

zabbix_get -s 192.168.10.21 -k 'nginx.status[ping]'
zabbix_get -s 192.168.10.21 -k 'nginx.status[accepts]'
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

探测成功,返回浏览器监控端添加主机。

导入nginx模板,添加监控nginx的主机

配置→模版→导入

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

然后点击主机,创建主机,设置主机名称、IP地址、模板、主机资产记录、加密等,然后查看监控的各项指标情况。

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

监控模版设置

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

点击添加,添加监控主机,等待片刻后开始监控。

查看Nginx访问量

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

监控中→聚合图形,添加自定义监控项目。

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

监测成功,成功获取Nginx服务信息。

二、Zabbix监控MySQL数据库

还原被监控端,监控端删除被监控Nginx主机。

主机规划

服务器角色 IP
Zabbix服务端 192.168.10.20
MySQL数据库 192.168.10.10

1.被监控端配置MySQL数据库

安装数据库,配置基本信息。

yum -y install mysql mysql-server # 在CentOS7里需安装maridb-server
service mysqld start
mysqladmin -uroot password 123 # 创建MySQL初始密码
mysql -uroot -p123
GRANT ALL ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix'; # 创建连接访问用户
FLUSH PRIVILEGES; # 刷新权限表
quit
           

安装agent端

yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
           

配置用户连接信息文件

vim /etc/zabbix/.my.cnf

# 填写以下信息
[client]
user=zabbix
password=zabbix
           

配置MySQL监控模版

cd /etc/zabbix/zabbix_agentd.d/
cp -a userparameter_mysql.conf userparameter_mysql.conf.bak # 备份该配置文件
vim userparameter_mysql.conf

# 修改第5行,指定模版文件存放目录。
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}'
# 修改第17行,指定模版文件存放目录。
UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c aliveUserParameter=mysql.version,mysql -V
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

修改agent端配置文件

vim /etc/zabbix/zabbix_agentd.conf

# 修改95行,指定zabbix服务器的IP或域名
Server=192.168.10.20
# 修改136行,指定主动方案中的zabbix服务器的IP或域名
ServerActive=192.168.10.20
# 修改147行,指定本机的主机名,此项必须与web界面配置项一致
Hostname=192.168.10.10
           

保存退出,启动zabbix-agent服务。

service zabbix-agent start
netstat -antp | grep :10050
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

2.配置监控端

点击配置创建主机设置主机、模板、主机资产记录、加密等

一段时间后,查看mysql服务器的监控状态。

主机信息

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

模版配置

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

点击添加,过一段时间查看监控内容。

创建聚合图形,查看MySQL服务器的带宽,操作数,负载等信息。

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

监测成功。

三、Zabbix自动发现设置

假设zabbix-server服务器已经配置完成,zabbix-agent端也已经通过批量部署完毕。那么这时候就需要我们在zabbix的监控页面进行添加工作了,如果只有10几台机器还好说。但是生产环境中基本上都是动辄上百台的虚拟机,添加主机的工作量就非常巨大了,而且无脑的重复性劳动是毫无意义。而Zabbix的自动发现功能解决了这个问题。

还原被监控端,监控端删除被监控端。

主机规划

服务器角色 IP
Zabbix服务端 192.168.10.20
被监控端1 192.168.10.10
被监控端2 192.168.10.11

1.被监控端配置

两台被监控端安装agent端,修改配置文件。

yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf

# 修改95行,指定zabbix服务器的IP或域名
Server=192.168.10.20
# 修改136行,指定主动方案中的zabbix服务器的IP或域名
ServerActive=192.168.10.20
# 修改147行,指定本机的主机名,此项必须与web界面配置项一致
Hostname=192.168.10.10
           

ps:注意两台机器的主机名!!!

安装apache服务,开启apache服务。

yum -y install httpd # 安装apache
echo "123" > /var/www/html/index.html # 填写网页内容
service httpd start # 启动服务
curl localhost # 访问测试
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

启动Zabbix-agent服务

service zabbix-agent start
netstat -antp | grep :10050
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

2.配置监控端

返回浏览器的监控端,开始配置自动发现。

配置动作

先创建动作,再配置自动发现。

配置→动作→选择自动发现→创建动作

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

配置动作

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

配置操作

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

点击添加,当动作条件满足,才能开始执行操作。

配置自动发现

配置→自动发现→创建自动发现规则

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

点击添加,完成配置。

ps:该过程困难较慢,需要等待一段时间。

3.查看自动发现的主机

检测中→自动发现

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

成功发现配置的被监控端

进入监控页面查看

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

成功触发动作,添加了两台主机。

四、Zabbix绑定钉钉进行报警提示

1.添加钉钉机器人

在钉钉工作群内创建智能机器人

邮件点击选择群设置

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

点击添加机器人,机器人设置如下。

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

勾选同意协议,完成设置。

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

点击完成设置

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

添加成功

2.配置告警脚本

vim /etc/zabbix/zabbix_server.conf

# 查看455行,查看Zabbix脚本存放目录或自行定义
AlertScriptsPath=/usr/lib/zabbix/alertscripts

cd /usr/lib/zabbix/alertscripts/
vim token.sh # 创建告警脚本

#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=d84c01cc34d5b5443de7ca887e2f4184b0261e93c94429d70f7a390ac579b7d4' \ # 设置刚刚配置机器人的Wedhook
    -H 'Content-Type: application/json' \
    -d '
    {"msgtype": "text",
        "text": {
            "content": "'"$text"'"
        },
        "at":{
            "atMobiles": [ 
                "'"$1"'" 
        ],
        "isAtAll": false
        }
    }'
           

保存退出,赋予脚本执行权限与用户群组权限。

chown zabbix.zabbix token.sh
chmod +x token.sh
           

测试脚本是否能与钉钉建立通信。

./token.sh 13221612875 aa 
yajunxitou
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

钉钉成功接受到发送的信息

3.Zabbix绑定钉钉

创建报警媒介类型

管理→报警媒介类型→创建报警媒介

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

报警媒介配置

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

点击完成,报警媒介添加成功。

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

创建动作

配置→动作→触发器→创建动作

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

配置故障操作

默认接收人设置为
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

默认信息设为
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
for yajunxitou
           

ps:最后一行为配置机器人时的安全设置的自定义关键词!

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

配置恢复操作

默认接收人设置为
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

默认信息设为
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
for yajunxitou
           

ps:最后一行为配置机器人时的安全设置的自定义关键词!

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

配置用户权限

管理→用户→Admin

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

点击报警媒介添加钉钉报警媒介

Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

4.测试钉钉告警

关闭任意一台被监测主机的http服务(模拟故障)

service httpd stop
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

错误报警提示成功。

开启httpd服务(模拟修复)

service httpd start
           
Zabbix 监控平台搭建 —服务监控Zabbix 监控平台搭建 —服务监控

本文于2020年11月25日由Vonmerlot整理成文。