nagios插件nrpe自定义脚本使用root权限执行

环境:公司刚小批量使用docker容器,没有使用k8s之类的统一管理docker容器。初期要监控docker每个container的运行状态,并结合nagios报警通知。

由于没有多余时间去搭建docker专门的监控管理工具,就用最简单的古老的方法,用shell脚本获取 docker ps -a 里面的status,状态为非UP就报警;

脚本内容如下:

#!/bin/bash

STATUS=`sudo docker ps -a |grep jenkins|awk '{print $9}'`

if [  "$STATUS" == "Up" ]; then

    echo docker container jenkins status is "$STATUS"

    exit 0

else

    echo "docker container jenkins is not running!"

    exit 2

fi

内容很丑也简单粗暴。

然后惯例在nrpe.cfg里面添加

command[check_docker_jenkins]=/usr/local/nagios/libexec/check_docker_jenkins

服务端也配置好之后监控一直报 docker container jenkins is not running

原因:

docker用root账户起的,而且非docker运行账户使用docker ps 根本看不到里面跑的容器。

解决办法:(操作系统为centos7.2)

1 :修改/etc/sudoers

修改Defaults    requiretty   为  Defaults:nagios  !requiretty (表示仅 nagios 用户不需要控制终端)

添加nagios ALL=NOPASSWD:ALL  (表示nagios用户使用sudo直接不输入密码)

2 在nrpe.cfg里面修改(sudo的路径先which一下)

command[check_docker_jenkins]=/bin/sudo /usr/local/nagios/libexec/check_docker_jenkins

3然后重启nrpe

这样就能正常监控了,特此记录一下,举一反三。

你可能感兴趣的:(nagios插件nrpe自定义脚本使用root权限执行)