设为首页 收藏本站
查看: 916|回复: 0

Nagios监控笔记下

[复制链接]
发表于 2019-1-13 06:00:19 | 显示全部楼层 |阅读模式
7. nagios插件开发

  7.1 什么是插件?
在前文部署nagios服务是安装了nagios-plugins ,这个软件包就是nagios的插件包
ll /usr/local/nagios/libexec/ | wc -l 大概有六十多个插件
  7.2 编写nagios插件规则
  7.2.1 编写nagios插件说明
Nagios插件是Nagios提供额一种通过可扩展的方式部署的程序组件,该插件可通过JavaC/C++php等多种语言开发,操作员通过修改配置文件和相应参数,就能很方便地将该插件集成到Nagios中,实现对目标系统的监控。
Nagios插件提供两个返回值:一个是插件的退出状态码,另一个是插件在控制台打印的第一行数据
Nagios相关状态:
cd /usr/local/nagios/libexec
vim utils.sh 查看
  7.3 Nagios 插件开发语言
nagios的插件开发不限制任何开发语言,只要该插件能被nagios调用获取到相应服务护具就OK,如能在命令行执行输出结果也可以,常见的插件语言有shellperlpythonphp
  7.4 使用shell开发nagios插件
  7.4.1 编写检查weburl地址的插件
1)编写nagios插件前的几个变量测试
a. 测试变量的脚本
vim test.sh
echo $0
PROGNAME=`basename $0`
PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
echo $PROGNAME
echo $PROGPATH
2)开发监控url的插件
vim check_url.sh
#!/bin/bash
PROGNAME=`basename $0`
PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
. /usr/local/nagios/libexec/utils.sh


print_usage() {
    echo "Usage:"
    echo "/bin/sh $PROGNAME url"
    echo -n "For example:"
    echo "/bin/sh $PROGNAME http//www.yan.com"
    exit 1
}

if [ $# -ne 1 ];then
    print_usage
fi

if wget -T 20 --spider $1 >/dev/null 2>&1 ;then
        echo 'HTTP/1.1 OK'
        exit $STATE_OK

else
        echo 'HTTP/1.1 NO'
        exit $STATE_CRITICA
fi
chmod 755 check_url.sh
/usr/local/nagios/libexec/check_url.sh www.baidu.com
7.4.2 weburl插件脚本部署过程(主动监控方式)
7.4.2.1 上传监控脚本到指定目录并设置执行授权可执行权限
cd /usr/local/nagios/libexec/     上传到这个位置
chmod 755 check_url.sh
   2)手动测试简本执行结果
/usr/local/nagios/libexec/check_url.sh http://192.168.1.80
HTTP/1.1 OK
7.4.2.2 修改nagios服务端的配置文件
1)编辑commands.cfg
vim commands.cfg
#'check_url' command definition
define command {
        command_name    check_url
        command_line    $USER1$/check_url.sh www.baidu.com
        }
2)编辑service.cfg
vim service.cfg
define service {
        use                     generic-service
        host_name               81-lamp-1
        service_description     blog_url-001
        check_command           check_url
        max_check_attempts      3
        normal_check_interval   2
        retry_check_interval    1
        check_period            24x7
        notification_interval   30
        notification_period     24x7
        notification_options    w,u,c,r
        contact_groups          admins
        process_perf_data       1
        action_url              /nagios/php/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
}
3)语法检查
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
4)重新加载
/etc/init.d/nagios reload

  7.4.3 编写检查mysql服务的插件
  7.4.3.1 使用check_mysql插件被动方式监控MySQL服务的过程
  一、在nagios客户端进行操作(被监控的mysql服务器)  81
  
  1. 调试check_mysql插件
  1.1 进入被监控的mysql服务器,登陆到mysql中,建立测试账号,供测试使用
mysql -uroot -predhat
grant select on test.* to nagios@'localhost' identified by 'redhat';                      cd /usr/local/nagios/libexec/
./check_mysql -unagios -predhat
./check_mysql: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
解决办法:ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
/usr/local/nagios/libexec/check_mysql -unagios -predhat
Uptime: 95558  Threads: 1  Questions: 36...........
  1.2 修改nrpe.cfg增加一条记录
vim /usr/local/nagios/etc/nrpe.cfg
command[check_mysql]=/usr/local/nagios/libexec/check_mysql -unagios -predhat
  1.3 重启nrpe
pkill nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
ps -ef | grep nrpe

  二、服务端的配置(nagios-service
2.1 cd /usr/local/nagios/etc/
vim nagios.cfg(里面添加了一条cfg_dir,在service目录下的都能够被加载)
2.2 在nagios的配置文件中加入如下配置
cd/usr/local/nagios/etc/objects/services
vim check_mysql.cfg
define service {
        use                     generic-service
        host_name               81-lamp-1
        service_description     check_mysql_beidong
        check_command           check_nrpe!check_mysql
        max_check_attempts      3
        normal_check_interval   2
        retry_check_interval    1
        check_period            24x7
        notification_interval   30
        notification_period     24x7
        notification_options    w,u,c,r
        contact_groups          admins
        process_perf_data       1
}

2.3 检查语法,重新加载nagios服务

2.4 被动监控方式遇到问题判断及检查办法

1)首先在客户端检查

/usr/local/nagios/libexec/check_mysql -unagios -predhat
如果没有问题,即可以正常获得数据,然后在nagios服务器端通过check_nrpe检查
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.81 -c check_mysql
如果没有结构,那就是服务端的配置文件有问题

7.4.3.2 使用check_mysql 插件主动方式监控MySQL服务的配置过程

(提示:因为是主动方式监控,因此以下完全是在nagios服务器端操作)

首先在mysql服务器上授权一个用户:

grant select on test.* to nagios@'192.168.1.%' identified by 'redhat';

1)原理:

/usr/local/nagios/libexec/check_mysql -unagios -predhat -H 192.168.1.81

2)编辑commands.cfg

vim commands.cfg

define command {

        command_name    check_mysql_zhudong

        command_line    $USER1$/check_mysql -unagios -predhat -H 192.168.1.81

        }

3)在nagios的配置文件中加入如下配置
cd/usr/local/nagios/etc/objects/services
vim check_mysql.cfg  (添加)
define service {
        use                     generic-service
        host_name               81-lamp-1
        service_description     check_mysql_zhudong
        check_command           check_mysql_zhudong
        max_check_attempts      3
        normal_check_interval   2
        retry_check_interval    1
        check_period            24x7
        notification_interval   30
        notification_period     24x7
        notification_options    w,u,c,r
        contact_groups          admins
        process_perf_data       1
}
4)检查语法,重新加载nagios服务

7.5 手工开发脚本监控mysql服务的配置方法

7.5.1 手工开发脚本监控mysql服务

vim check_mysql.sh

#!/bin/bash

PROGNAME=`basename $0`

PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`

. /usr/local/nagios/libexec/utils.sh



print_usage() {

    echo "Usage:"

    echo "/bin/sh $PROGNAME ip"

    echo -n "For example:"

    echo "/bin/sh $PROGNAME 192.168.1.81"

    exit 1

}


if [ $# -ne 1 ];then

    print_usage

fi


if mysql -unagios -predhat -h $1 -e "select version();" >/dev/null 2>&1 ;then

        echo 'Mysql service is OK'

        exit $STATE_OK


else

        echo 'Mysql service is NO'

        exit $STATE_CRITICA

fi

7.5.2被动方式:

1)将脚本上传到客户端(81主机)/usr/local/nagios/libexec

2)修改nrpe.cfg增加一条记录
vim /usr/local/nagios/etc/nrpe.cfg
command[check_mysql_shoudong_beidong]=/usr/local/nagios/libexec/check_mysql.sh 192.168.1.81

3)重启nrpe
pkill nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
ps -ef | grep nrpe
4)切到nagios服务端(80主机)

vim services/check_mysql.cfg

define service {

        use                     generic-service

        host_name               81-lamp-1

        service_description     check_mysql_shoudong_beidong

        check_command           check_nrpe!check_mysql_shoudong_beidong

        max_check_attempts      3

        normal_check_interval   2

        retry_check_interval    1

        check_period            24x7

        notification_interval   30

        notification_period     24x7

        notification_options    w,u,c,r

        contact_groups          admins

        process_perf_data       1

}

5)检查语法,重新加载nagios服务
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-662491-1-1.html 上篇帖子: Nagios监控笔记上 下篇帖子: nagios部署监控多台client
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表