1,安装客户端节点
yum install zabbix-agent -y
2,修改客户端配置文件
zabbix_agent.conf:
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=*.*.*.*,
ServerActive=127.0.0.1
Hostname=*.*.*.*
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
NGINX配置
配置nginx的status模块(这个需要在编译nginx时候就加上--with-http_stub_status_module)
//根据实际需求配置
cd /etc/nginx/conf.d/
vi nginx_satus.conf
server {
listen 9900;
server_name localhost;
location /NginxStatus {
stub_status on;
access_log off;
}
}
测试
curl http://localhost:9900/NginxStatus
只在agent端配置
vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
vim /etc/zabbix/zabbix_agentd.d/UserParameter_script.conf
//指定ngxin监控配置
#Nginx
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1
Nginx监控脚本
cat /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh
#!/bin/bash
HOST="localhost"
PORT="9900"
NGINX_COMMAND=$1
# 检测nginx进程是否存在
function nginx_process() {
/usr/bin/pgrep nginx | wc -l
}
# 检测nginx性能
function nginx_active() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk '/Active/ {print $NF}'
}
function nginx_reading() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk '/Active/ {print $NF}'
}
function nginx_writing() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk '/Active/ {print $NF}'
}
function nginx_waiting() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk '/Active/ {print $NF}'
}
function nginx_accepts() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function nginx_handled() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function nginx_requests() {
/usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行function
#${NGINX_COMMAND}
case $NGINX_COMMAND in
process)
nginx_process;
;;
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
*)
echo $"USAGE:$0 {process|active|reading|writing|waiting|accepts|handled|requests}"
esac
客户端启动脚本:
vim /etc/init.d/zabbix_agentd
option=$1
function start_func() {
pid=`ps -ef | grep zabbix | grep -v grep | awk '{print $2}' | wc -l`
if [ $pid == 0 ];then
echo "zabbix_agent is starting..."
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf &
else
echo "zabbix_agent is running!"
fi
}
function stop_func() {
pid=`ps -ef | grep zabbix | grep -v grep | awk '{print $2}'`
row=`ps -ef | grep zabbix | grep -v grep | awk '{print $2}' | wc -l`
if [ $row == 0 ];then
echo "zabbix_agent no running!!!"
else
echo "now stoping zabbix_agent..."
ps -ef | grep zabbix | grep -v grep | awk '{print $2}' | xargs kill -9
echo "done"
fi
}
function restart_func() {
stop_func
start_func
}
case $option in
start)
start_func;
;;
stop)
stop_func;
;;
restart)
restart_func;
;;
*)
echo $"USAGE:$0 {start|stop|restart}"
esac
Agent端重启zabbix_agent
# /etc/init.d/zabbix_agentd restart
server端测试(ip填写agent的IP):
docker run --rm --name=zabbix-get pschmitt/zabbix-get -s 客户端IP -k nginx.status[process]
zabbix_get -s 客户端IP -k nginx.status[process]
docker run --rm --name=zabbix-get pschmitt/zabbix-get -s 客户端IP -k nginx.status[active]
zabbix_get -s 客户端IP -k nginx.status[active]
zabbix-agent部署测试
最新推荐文章于 2024-04-19 05:39:55 发布