![使用 SNMP 通过 Zabbix 监控进程/服务](https://linux22.com/image/662634/%E4%BD%BF%E7%94%A8%20SNMP%20%E9%80%9A%E8%BF%87%20Zabbix%20%E7%9B%91%E6%8E%A7%E8%BF%9B%E7%A8%8B%2F%E6%9C%8D%E5%8A%A1.png)
我尝试使用 Zabbix 2.2 和 SNMP 监控大约 60 台服务器。我能够监控很多值,但我面临一个与 Linux 服务器上进程的识别状态有关的问题。
当服务启动并运行时,我可以使用 OID 通过 SNMP 收集数据:
HOST-RESOURCES-MIB::hrSWRunStatus
[
"index",
"HOST-RESOURCES-MIB::hrSWRunPath",
"name_of_the_service_or_process"
]
问题在于服务停机时。Zabbix 无法识别这一点,只是显示最后一个值。可以在图中识别故障,其中线甚至不在级别 1 或级别 0 上。它只是缺失了(因为没有数据)。
是否有可能使用 SNMP 来监控服务/进程?有人有这方面的经验吗?
非常感谢 ...
答案1
所以我对此做了一些阐述,并决定自己开发一些东西。这是 bash 中的脚本,如下所示
#!/bin/bash
# Arguments:
# hostname
# service name
# please review community string when you debug any issue with this script
SNMP_COMM_STRING="public"
HOST_NAME=$1
SERVICE_NAME=$2
case $SERVICE_NAME in
test)
echo "For testing purposes only ..."
echo $HOST_NAME
echo $SERVICE_NAME
;;
*)
RESULT=$(snmpwalk -v2c -c $SNMP_COMM_STRING $HOST_NAME HOST-RESOURCES-MIB::hrSWRunPath | grep $SERVICE_NAME )
#if the variable is null then the service is down (or the host is unreachable)
if [ -z "$RESULT" ]; then
echo 0
else
echo 1
fi
esac
exit 0
- 在适当的外部脚本目录中创建.sh 脚本。
- 设置脚本内的变量。
- 使用以下参数在 Zabbix WebUI 中创建项目:
- 姓名:根据你的需求填写
- 类型:外部检查
- 钥匙:脚本["{HOST.HOST}","进程名称“]
- 信息类型:数字(无符号)
- 数据类型:十进制
希望这能有所帮助。欢迎任何其他评论...Ch。
嗨,先生!你能具体指导我一下吗