zabbix-监控nginx

本文介绍如何在Zabbix环境中部署Nginx并实现对其状态的监控。内容包括使用yum源安装Nginx,配置Nginx状态模块,编写监控脚本,设置自定义监控项,以及通过Zabbix Web界面进行监控配置。

1.nginx七种status详解

  • Active:活跃的连接数量
  • accepts:总共处理了多少个连接
  • handled:成功创建多少次握手
  • requests:总共处理了多少个请求
  • Reading:读取客户端的链接数
  • Writing:响应数据到客户端的数量
  • Waiting:开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

2.在zabbix-02上部署nginx。

2.1使用yum源安装(重点不是nginx安装)

[root@zabbix-02 ~]# yum install nginx -y(先装epel源)
[root@zabbix-02 ~]# cat /etc/nginx/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  www.liang.com;
        location /nginx_status {###开启状态模块
                stub_status on;###
        }
        location / {
            root   /var/www/html;
            index  index.html index.htm;
        }
    }
}

2.2测试

[root@zabbix-02 ~]# tail -1 /etc/hosts
10.0.0.8 www.liang.com
[root@zabbix-02 ~]# curl http://www.liang.com/nginx_status
Active connections: 1 
server accepts handled requests
 167 167 173 
Reading: 0 Writing: 1 Waiting: 0

3.编写脚本,授权

3.1脚本内容

[root@zabbix-02 ~]# cat /server/scritp/nging_monitiring.sh 
#!/bin/bash
Host=www.liang.com
Port=80
Cache_status="/server/scritp/status.txt"
Status_message="/server/scritp/status_test.txt"
curl http://${Host}:${Port}/nginx_status > ${Status_message} 2>/dev/null
if [ ! -f "$Cache_status" ];then
        cat "$Status_message" > $Cache_status  2>/dev/null
fi
Status_time=`stat -c %Y $Cache_status`
Date=`date +%s`
if [ `expr $Date - $Status_time` -gt 60 ];then
        > $Cache_status
        cat $Status_message > $Cache_status 2>/dev/null
fi
nginx_active(){
        grep -i "active" $Cache_status|awk '{print $NF}'
}

nginx_reading(){
        grep -i "Reading" $Cache_status|awk '{print $2}'
}
nginx_writing(){
        grep -i "Writing" $Cache_status|awk '{print $4}'
}
nginx_waiting(){
        grep -i "Waiting" $Cache_status|awk '{print $NF}'
}
nginx_accepts(){
        awk 'NR==3{print $1}' $Cache_status
}
nginx_handled(){
        awk 'NR==3{print $2}' $Cache_status
}
nginx_requests(){
        awk 'NR==3{print $3}' $Cache_status
}
$1

3.2对脚本及文件授权

[root@zabbix-02 ~]# chown -R zabbix:zabbix /server/

4.自定义key

[root@zabbix-02 ~]# cat -n /etc/zabbix/zabbix_agentd.d/nginx_monitoring.conf  
     1  UserParameter=nginx_monitoring[*],bash  /server/scritp/nging_monitiring.sh $1
[root@zabbix-02 ~]# systemctl restart zabbix-agent

5.zabbix-server测试

[root@zabbix ~]# for i in requests handled accepts waiting writing reading active ;do zabbix_get -s 10.0.0.8 -k nginx_monitoring[nginx_${i}];done
212
206
206
0
1
0
1

6.zabbix-web界面操作

6.1创建模板

这里写图片描述

6.2创建监控项

这里写图片描述

6.3创建主机

这里写图片描述

6.4查看

这里写图片描述

### 命令原理 `systemctl enable --now` 是一个组合命令。`systemctl enable` 用于在系统启动时自动启动指定的服务,它会在 `/etc/systemd/system` 目录下创建符号链接到相应的服务单元文件,使服务在系统启动时被激活。`--now` 选项则会立即启动该服务,相当于在执行 `enable` 之后紧接着执行 `start` 命令。因此,`systemctl enable --now zabbix-server zabbix-agent nginx php-fpm postgresql-16` 会将这五个服务设置为开机自启,并立即启动它们。 ### 使用场景 在新安装了 Zabbix 监控系统、Nginx 服务器、PHP-FPM 以及 PostgreSQL 数据库后,希望这些服务能够立即启动并在后续系统重启时自动启动,使用该命令可以一次性完成设置和启动操作,提高配置效率。 ### 可能出现的问题及解决办法 1. **服务未找到**:若系统中未安装相应服务,会提示服务未找到。需要确保已正确安装 `zabbix-server`、`zabbix-agent`、`nginx`、`php-fpm` 和 `postgresql-16`。例如,安装 Zabbix 相关服务可使用如下命令: ```bash rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm dnf clean all dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2 ``` 2. **服务启动失败**:服务启动失败可能是由于配置文件错误、依赖项缺失等原因。可以通过 `systemctl status` 命令查看服务的详细状态信息,例如查看 `zabbix-server` 服务状态: ```bash systemctl status zabbix-server ``` 根据状态信息中的错误提示进行相应的修改。如 `zabbix-server` 服务可能因为配置文件路径错误而启动失败,可检查 `/usr/lib/systemd/system/zabbix-server.service` 文件中的配置是否正确,以下是一个示例配置: ```plaintext [Unit] Description=Zabbix Server After=syslog.target After=network.target [Service] Environment="CONFFILE=/zabbix/zabbix/etc/zabbix_server.conf" EnvironmentFile=-/zabbix/zabbix Type=forking PIDFile=/tmp/zabbix_server.pid ExecStart=/zabbix/zabbix/sbin/zabbix_server -c /zabbix/zabbix/etc/zabbix_server.conf ExecStop=/usr/bin/kill $MAINPID Restart=always RestartSec=5 User=zabbix Group=zabbix [Install] WantedBy=multi-user.target ``` 3. **端口冲突**:若服务使用的端口已被其他程序占用,会导致服务启动失败。可以使用 `netstat -tulnp` 命令查看端口使用情况,找出占用端口的程序并停止该程序或修改服务配置文件中的端口。 ### 命令示例 ```bash systemctl enable --now zabbix-server zabbix-agent nginx php-fpm postgresql-16 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值