zabbix自定义监控nginx状态

本文详细介绍了如何通过Zabbix监控Nginx服务器的状态,包括开启status页面、编写监控脚本、配置UserParameter和触发器,以及实际测试性能。涵盖了状态码解析和监控配置的关键步骤。

zabbix自定义监控nginx状态

zabbix_server192.168.200.145
zabbix_agentd ,nginx192.168.200.146

1. 开启状态界面

开启status:

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

location /status {
     stub_status on;
     allow 192.168.200.146;
     allow 192.168.200.145
     deny all;
}
[root@localhost ~]# nginx -s reload 

在这里插入图片描述
状态页面信息详解:

状态码表示的意义
Active connections 2当前所有处于打开状态的连接
accepts总共处理了多少个连接
handled成功创建多少握手
requests总共处理了多少个请求
Readingnginx读取到客户端的Header信息数,表示正处于接收请求状态的连接数
Writingnginx返回给客户端的Header信息数,表示请求已经接收完成,且正处于处理请求或发送响应的过程中的连接数
Waiting开启keep-alive的情况下,这个值等于active - (reading + writing),意思就是Nginx已处理完正在等候下一次请求指令的驻留连接

2. 写监控脚本

[root@localhost scripts]# vim check_status.sh
#! /bin/bash
ip=$(ip a | grep 'inet ' | grep -v '127.0.0.1' | awk -F'[ /]+' '{print $3}')

case $1 in
    "Reading")
    curl -s http://$ip | awk 'NR==4 {print $2}';;
    "Writing")
    curl -s http://$ip | awk 'NR==4 {print $4}';;
    "Waiting")
    curl -s http://$ip | awk 'NR==4 {print $6}'
esac


//添加配置文件
[root@localhost scripts]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=check_status[*],/bin/bash /scripts/check_Reading.sh $1
[root@localhost scripts]# pkill zabbix_agentd 
[root@localhost scripts]# zabbix_agentd 

//测试
[root@zabbix ~]# zabbix_get -s 192.168.200.146 -k check_status Waiting
1

3. 配置监控项

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 配置触发器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 测试

[root@localhost scripts]# ab -n 1500000 http://192.168.200.146/status

在这里插入图片描述

<think>我们正在讨论Zabbix自定义监控项的配置。根据引用内容,配置自定义监控项主要涉及以下几个步骤:1.**在Zabbix客户端配置自定义监控项**:-编辑Zabbix客户端的配置文件`/etc/zabbix/zabbix_agentd.conf`(或`/usr/local/etc/zabbix_agentd.conf`,具体路径可能因安装方式而异)。-确保配置文件中启用了`UnsafeUserParameters`(设置为1)[^4]。-添加`UserParameter`项,格式为:`UserParameter=<key>[*],<command>`。其中:-`<key>`是自定义的键值名称,用于在Zabbix服务器端获取数据。-`[*]`表示可以传递参数(可选),后面的`<command>`是执行的命令或脚本,`$1`,`$2`等表示传递的参数[^4]。示例配置(监控某个进程是否存在):```UnsafeUserParameters=1UserParameter=check_process[*],/bin/bash/scripts/check_process.sh$1```2.**编写监控脚本(如果需要)**:-在客户端创建脚本(如`/scripts/check_process.sh`),并赋予执行权限[^4]。-脚本应返回监控数据(如进程存在返回0,不存在返回1)[^4]。示例脚本(`check_process.sh`):```bash#!/bin/bashstatus=$(ps-ef|grep$1|grep-Ev"$0|grep"|wc-l)if[$status-eq0];thenecho'1'elseecho'0'fi```3.**重启Zabbix客户端服务**:-修改配置后,重启客户端服务使配置生效[^2][^4]。```bashkillallzabbix_agentdzabbix_agentd```4.**在Zabbix服务器端测试自定义监控项**:-使用`zabbix_get`命令测试是否能获取数据[^2][^3]。```bashzabbix_get-s<客户端IP>-p10050-k"check_process[进程名]"```5.**在ZabbixWeb界面配置监控项**:-登录ZabbixWeb,进入“配置”->“模板”或“主机”。-创建监控项(Item):-键值(Key)填写自定义的键值名称(如`check_process[进程名]`)。-根据需求设置其他参数(如数据类型、更新间隔等)[^2][^4]。**注意事项**:-确保Zabbix客户端配置中允许服务器连接(`Server`和`ServerActive`设置为Zabbix服务器的IP)[^1]。-脚本路径和权限需正确,确保Zabbix客户端用户(通常为`zabbix`)有执行权限。通过以上步骤,即可实现自定义监控项的配置。下面我们通过一个实际例子(监控Nginx进程)来具体说明。###示例:监控Nginx进程1.**在Zabbix客户端**:-创建脚本`/scripts/check_nginx.sh`:```bash#!/bin/bash#检查Nginx进程是否存在ifpgrep-x"nginx">/dev/null;thenecho"1"elseecho"0"fi```(注意:脚本逻辑根据需求调整,这里假设存在返回1,不存在返回0)-修改配置文件`zabbix_agentd.conf`:```UnsafeUserParameters=1UserParameter=nginx.status,/bin/bash/scripts/check_nginx.sh```-重启客户端服务。2.**在Zabbix服务器端测试**:```bashzabbix_get-s客户端IP-k"nginx.status"```3.**在ZabbixWeb界面**:-选择目标主机或模板,创建监控项:-名称:NginxStatus-键值:`nginx.status`-数据类型:字符型(或根据返回值选择)-创建触发器(Trigger),当返回值为0时触发报警(表示Nginx未运行)。这样就完成了自定义监控项的配置。§§相关问题§§1.如何监控多个进程?2.自定义监控项返回的数据类型有哪些?3.如何配置自定义监控项的触发器?4.Zabbix自定义监控项支持哪些类型的命令或脚本?5.自定义监控项的安全性如何保障?</think>### Zabbix自定义监控项配置指南 在Zabbix中配置自定义监控项需要完成以下核心步骤,以监控服务器进程状态为例(参考引用[4]): #### 一、客户端配置 1. **创建监控脚本** ```bash # 创建脚本目录 mkdir /scripts vim /scripts/check_process.sh ``` 脚本内容(监控指定进程是否存在): ```bash #!/bin/bash status=$(ps -ef | grep $1 | grep -Ev "$0|grep" | wc -l) if [ $status -eq 0 ]; then echo '1' # 进程不存在 else echo '0' # 进程存在 fi ``` ```bash chmod +x /scripts/check_process.sh # 添加执行权限 ``` 2. **修改Agent配置** ```bash vim /etc/zabbix/zabbix_agentd.conf ``` 关键配置项: ```ini UnsafeUserParameters=1 # 启用自定义参数 UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1 # 定义监控键值 ``` > 注:`[*]`表示支持参数传递,`$1`接收第一个参数 3. **重启Agent服务** ```bash killall zabbix_agentd zabbix_agentd ``` #### 二、服务端验证 ```bash zabbix_get -s <客户端IP> -p 10050 -k "check_process[nginx]" ``` 预期返回: `0`(nginx进程存在)或 `1`(进程不存在) #### 三、Web界面配置 1. **创建监控项** - 路径:`配置` → `主机` → 选择目标主机 → `监控项` → `创建监控项` - 关键参数: ``` 名称:Nginx进程状态 键值:check_process[nginx] # 方括号内为脚本参数 数据类型:数字(整数) 更新间隔:30s ``` 2. **配置触发器**(可选) - 路径:`触发器` → `创建触发器` - 表达式: `{HOST:check_process[nginx].last()}=1` (当返回值为1时触发告警) 3. **查看数据** - 路径:`监测` → `最新数据` → 筛选主机 > 关键说明: > - **参数传递**:通过`UserParameter=key[*],command $1 $2`实现多参数传递[^4] > - **安全限制**:`UnsafeUserParameters=1`允许执行系统命令(需评估风险)[^1] > - **脚本调试**:先用`zabbix_get`命令验证数据获取[^3] ### 自定义监控类型扩展 | 监控场景 | 脚本示例 | 键值配置 | |----------------|-------------------------------|--------------------------| | 文件行数监控 | `wc -l /path/file \| awk '{print $1}'` | `UserParameter=file.line.count,wc -l /etc/passwd \| awk '{print $1}'`[^2] | | 内存使用率 | `free \| grep Mem \| awk '{print $3/$2*100}'` | `UserParameter=mem.usage,free \| grep Mem \| ...` | | 自定义TCP连接数| `netstat -ant \| grep ':80 ' \| wc -l` | `UserParameter=tcp.80.conn,netstat -ant \| ...` | > 最佳实践: > 1. 复杂监控推荐将脚本输出转为JSON格式 > 2. 敏感操作脚本需设置严格权限(如`chown zabbix:zabbix /scripts/`) > 3. 生产环境建议通过`Include`加载独立配置文件(如`/etc/zabbix/zabbix_agentd.d/*.conf`)[^1]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值