使用 Zabbix 监控 Nginx MySQL,以及自定义监控项
Posted 愿许浪尽天涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Zabbix 监控 Nginx MySQL,以及自定义监控项相关的知识,希望对你有一定的参考价值。
一、使用 Zabbix 监控 Nginx 服务
安装 Agent 软件:
yum install -y curl curl-devel net-snmp net-snmp-devel perl-DBI
useradd -M -s /sbin/nologin zabbix
tar xf zabbix-4.2.6.tar.gz -C /usr/src/zabbix-4.2.6/
cd /usr/src/zabbix-4.2.6/
./configure --prefix=/usr/local/zabbix --enable-agent && make && make install
修改 Agent 主配置文件:
vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.1.1
ListenPort=10050
ServerActive=192.168.1.1
Hostname=nginx_php # 本地主机名. 这里主机名一定要和本地主机名一致. 因为很容易错
Timeout=15
启动 Agent 服务:
mkdir /usr/local/zabbix/logs # 创建日志存放路径
chown -R zabbix:zabbix /usr/local/zabbix/ # 修改属主.属组
/usr/local/zabbix/sbin/zabbix_agentd # 启动 Agent 服务
netstat -anpt | grep 10050 # 查看端口是否开启
1.确定监控内容
[root@nginx_php ~]# vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.1.1;
deny all;
}
[root@nginx_php ~]# nginx -s reload
在 Zabbix Server 上访问验证
[root@zabbix ~]# curl http://192.168.1.2/status
2.编写 Agent 端的监控脚本
[root@nginx_php ~]# mkdir /usr/local/zabbix/scripts
[root@nginx_php ~]# vim /usr/local/zabbix/scripts/nginx_status.sh
#!/bin/bash
# Description: Zabbix 监控 Nginx 状态
# Note: 此脚本需要配置在被监控端
HOST="127.0.0.1"
PORT="80"
# 检测 Nginx 进程是否存在
function ping {
/sbin/pidof nginx | wc -l
}
# 检测 Nginx 性能
function active {
/usr/bin/curl "http://$HOST:$PORT/status/" 2> /dev/null | grep "Active" | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/status/" 2> /dev/null | grep "Reading" | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/status/" 2> /dev/null | grep "Writing" | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/status/" 2> /dev/null | grep "Waiting" | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/status/" 2> /dev/null | awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/status/" 2> /dev/null | awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/status/" 2> /dev/null | awk NR==3 | awk '{print $3}'
}
# 执行 function
$1
[root@nginx_php ~]# chmod +x /usr/local/zabbix/scripts/nginx_status.sh
3.配置 Agent 主配置文件,定义监控脚本
[root@nginx_php ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@nginx_php ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_status.conf
UserParameter=nginx.status[*],/usr/local/zabbix/scripts/nginx_status.sh $1
[root@nginx_php ~]# killall zabbix_agentd # 终止 Agent 服务
[root@nginx_php ~]# /usr/local/zabbix/sbin/zabbix_agentd # 启动 Agent 服务
Zabbix Server 使用 zabbix_get
测试获取数据
[root@zabbix ~]# zabbix_get -s 192.168.1.2 -p 10050 -k nginx.status[ping]
[root@zabbix ~]# zabbix_get -s 192.168.1.2 -p 10050 -k nginx.status[active]
[root@zabbix ~]# zabbix_get -s 192.168.1.2 -p 10050 -k nginx.status[accepts]
4.登录 Zabbix Web 配置台
配置 --
模板 --
创建模板
创建应用集
创建监控项
- 在监控脚本中,一共定义了 8 个监控项,所以这里的监控项页要创建 8 个,重复上面的步奏,创建脚本中相应的监控项。
创建图形
创建主机
创建主机模板
二、使用 Zabbix 监控 MySQL 服务
给 Zabbix Server 赋予权限:
MariaDB [(none)]> grant all on zabbix.* to zabbix@'192.168.1.%' identified by 'zabbix';
MariaDB [(none)]> grant all on *.* to zabbix@localhost identified by 'zabbix';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
zabbix3.0
server
已自带mysql
的模板了,只需配置好agent
客户端,然后在web
端给主机增加模板即可。
[root@mysql ~]# cp /usr/src/zabbix-4.2.6/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@mysql ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.1.1
ListenPort=10050
ServerActive=192.168.1.1
Hostname=mysql # 注意主机名要和本机一致
Timeout=15
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@mysql ~]# mkdir /usr/local/zabbix/logs
[root@mysql ~]# chown -R zabbix:zabbix /usr/local/zabbix/
1.建立数据库和 Zabbix 的连接信息
[root@mysql ~]# vim /usr/local/zabbix/etc/.my.cnf
# Zabbix Agent
[mysql]
host=localhost
user=zabbix
password=zabbix
[mysqladmin]
host=localhost
user=zabbix
password=zabbix
[root@mysql ~]# sed -i 's/HOME=\\/var\\/lib\\/zabbix/HOME=\\/usr\\/local\\/zabbix\\/etc\\//g' /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
[root@mysql ~]# /usr/local/zabbix/sbin/zabbix_agentd # 启动 Agent 服务
Zabbix Server 使用 zabbix_get
测试获取数据
[root@zabbix ~]# zabbix_get -s 192.168.1.3 -p 10050 -k "mysql.status[Uptime]"
18654
2.登录 Zabbix Web 配置台
监控 MySQL 的带宽:
监控 MySQL 的操作状态:在 Zabbix 前端可以实时查看各种 SQL 语句每秒钟的操作次数。
三、使用 Zabbix 监控 Server 端的 TCP 连接次数
1.编写 Agent 端的监控脚本
[root@zabbix ~]# mkdir /usr/local/zabbix/scripts
[root@zabbix ~]# vim /usr/local/zabbix/scripts/tcp_status.sh
#!/bin/bash
if [ $# -ne 1 ];then
echo "Follow the script name with an argument "
fi
case $1 in
LISTEN)
result=`netstat -ant| awk '/^tcp/ {a[$6]++} END {for (b in a) print b,a[b]}'| awk '/LISTEN/{print $2}'`
if [ "$result" == "" ];then
echo 0
else
echo $result
fi
;;
ESTAB)
result=`netstat -ant| awk '/^tcp/ {a[$6]++} END {for (b in a) print b,a[b]}'| awk '/ESTABLISHED/{print $2}'`
if [ "$result" == "" ];then
echo 0
else
echo $result
fi
;;
TIME_WAIT)
result=`netstat -ant| awk '/^tcp/ {a[$6]++} END {for (b in a) print b,a[b]}'| awk '/TIME_WAIT/{print $2}'`
if [ "$result" == "" ];then
echo 0
else
echo $result
fi
esac
[root@zabbix ~]# chmod +x /usr/local/zabbix/scripts/tcp_status.sh
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.1.1
ServerActive=192.168.1.1
Hostname=zabbix
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/tcp_status.conf
UserParameter=tcp.status[*],/usr/local/zabbix/scripts/tcp_status.sh $1
Zabbix Server 使用 zabbix_get
测试获取数据
[root@zabbix ~]# zabbix_get -s 192.168.1.1 -p 10050 -k tcp.status[LISTEN]
6
[root@zabbix ~]# zabbix_get -s 192.168.1.1 -p 10050 -k tcp.status[ESTAB]
29
[root@zabbix ~]# zabbix_get -s 192.168.1.1 -p 10050 -k tcp.status[TIME_WAIT]
18
2.登录 Zabbix Web 配置台
创建监控项
创建图形
查看
以上是关于使用 Zabbix 监控 Nginx MySQL,以及自定义监控项的主要内容,如果未能解决你的问题,请参考以下文章
zabbix-agent安装及添加配置nginx,mysql及系统的监控