Linux 服务器 nrpe nagios check_procs 进程状态监控-需要信息,当进程重新启动时

Linux 服务器 nrpe nagios check_procs 进程状态监控-需要信息,当进程重新启动时

我需要得到纳吉奥斯当远程服务器上的进程重新启动时。

我唯一不知道该怎么做的是检查它的进程状态,以及如何做?

我目前在远程服务器中获得了此 nrpe 命令: ./check_procs -c 1: -a "/usr/local/yyyprogram/sbin/XXXdaemon" -s Sl 但此进程必须始终工作,具有自己的重启机制,这是我唯一需要知道的事情 - 它何时重启。我应该在此处添加进程的什么状态,以及以什么方式添加 - 例如 -s SlRD 可以吗?或 -s Sl -s R -s D 可以吗?也许我可以用其他方式来获取此类信息:  OK|WARNING|UNKNOWN|CRITICAL ?对我来说,唯一的状态 OK 就是 OK(表示正在工作)。

另外,如何从其他 nagios 服务器监控它,我应该每秒检查一次吗?当服务重新启动时,我可以在一两分钟后收到通知,但如果不检查日志,如何知道它发生了?重启机制后此服务的 PID 与以前不同。

我如何确保所有状态都包含在nrpe命令配置行中?

请帮忙:)

编辑

root@server:/usr/local/nagios/libexec# ./check_procs -vv -a "/usr/local/yyyprogram/sbin/xxxdaemon"
CMD: /usr/bin/ps axwwo 'stat uid pid ppid vsz rss pcpu cgroup:256 comm args'
Matched: uid=0 vsz=9412 rss=2804 pid=517515 ppid=1 jid=0 pcpu=0.20 stat=Sl etime= prog=xxxdaemon args=/usr/local/yyyprogram/sbin/xxxdaemon -d /usr/local/yyyprogram/conf -b
 cgroup_hierarchy=(null)

答案1

首先,如果您想知道某个进程运行了多长时间,check_procs据我从标志中看到-h,它不提供该功能,所以我不确定您为什么假设它有此功能。或者这不是您想要检查的?

如果您想检查某个进程已运行多长时间,则不需要插件。此示例抓取 netdata 的 PID,为您提供etimes,greps 仅显示数字并使用xargs删除数字周围的多余空格:

$ ps -p $(pidof /usr/sbin/netdata) -o etimes | grep -E "[1-9].*" | xargs
65805

$ systemctl restart netdata

$ ps -p $(pidof /usr/sbin/netdata) -o etimes | grep -E "[1-9].*" | xargs
10

您所要做的就是编写一个 shell 脚本,检查该值是否低于某个数字,如果有问题exit 1,则从 Nagios 通过 NRPE 运行该脚本。

相关内容