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

mysql与nagios的结合使用

[复制链接]

尚未签到

发表于 2015-9-8 10:36:40 | 显示全部楼层 |阅读模式
  一、 对mysql建库建表,并测试数据
  基本信息:
库名:nh_nagios
表名:nagios_alerts

  [iyunv@nhserver2 ~]# mysql -u root -p
Enter password:123456
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cactidb            |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)
mysql> create database nh_nagios;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cactidb            |
| mysql              |
| nh_nagios          |
| test               |
+--------------------+
5 rows in set (0.00 sec)
mysql> use nh_nagios
Database changed
mysql> create table nagios_alerts
    -> (
    ->  nagios_id int not null auto_increment,
    ->  nagios_name char(50) not null,
    ->  nagios_number int not null,
    ->  primary key(nagios_id)
    -> )engine=innod default charset=utf8 auto_increment=1;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql> show tables;
+---------------------+
| Tables_in_nh_nagios |
+---------------------+
| nagios_alerts       |
+---------------------+
1 row in set (0.00 sec)
mysql> INSERT INTO nagios_alerts (nagios_name,nagios_number)  VALUES("serviceTotalsPROBLEMS",2);
Query OK, 1 row affected (0.00 sec)
mysql> select * from nagios_alerts;
+-----------+-----------------------+---------------+
| nagios_id | nagios_name           | nagios_number |
+-----------+-----------------------+---------------+
|         1 | serviceTotalsPROBLEMS |             2 |
+-----------+-----------------------+---------------+
1 row in set (0.00 sec)
mysql> INSERT INTO nagios_alerts (nagios_name,nagios_number)  VALUES("serviceTotalsPROBLEMS",10);
Query OK, 1 row affected (0.00 sec)
mysql> select * from nagios_alerts;
+-----------+-----------------------+---------------+
| nagios_id | nagios_name           | nagios_number |
+-----------+-----------------------+---------------+
|         1 | serviceTotalsPROBLEMS |             2 |
|         2 | serviceTotalsPROBLEMS |            10 |
+-----------+-----------------------+---------------+
2 rows in set (0.00 sec)
mysql> exit


  二、在shell中执行插入数据进mysql的测试
[iyunv@nhserver2 ~]# vim show_nh_nagios_alerts.sh
#!/bin/bash
mysql -uroot -hlocalhost -p123456 <<EOF
        use nh_nagios;
        #select * from nagios_alerts;
        INSERT INTO nagios_alerts (nagios_name,nagios_number)  VALUES("serviceTotalsPROBLEMS",30);
EOF
[iyunv@nhserver2 ~]# chmod 700 show_nh_nagios_alerts.sh
[iyunv@nhserver2 ~]# ./show_nh_nagios_alerts.sh
nagios_id       nagios_name     nagios_number
1       serviceTotalsPROBLEMS   2
2       serviceTotalsPROBLEMS   10
[iyunv@nhserver2 ~]# mysql -u root -p
Enter password:123456
mysql> use nh_nagios
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from nagios_alerts;
+-----------+-----------------------+---------------+
| nagios_id | nagios_name           | nagios_number |
+-----------+-----------------------+---------------+
|         1 | serviceTotalsPROBLEMS |             2 |
|         2 | serviceTotalsPROBLEMS |            10 |
|         3 | serviceTotalsPROBLEMS |            30 |
+-----------+-----------------------+---------------+
3 rows in set (0.00 sec)
mysql> exit
使用语句自动取nagios_number的数据,即nagios内serviceTotalsPROBLEMS的值
[iyunv@nhserver2 ~]# vim 1.sh
#! /bin/sh
alerts=`curl -u nagiosadmin:password -s http://192.168.5.10/nagios/cgi-bin/status.cgi?host=all | \
grep serviceTotalsPROBLEMS |\
grep -o '[[:digit:]]'`
if [ "$alerts" = "" ]
then
        echo "alerts is empty"
else
        echo $alerts
fi
[iyunv@nhserver2 ~]# ./1.sh
2
测试成功

[iyunv@nhserver2 ~]# vim show_nh_nagios_alerts.sh
#!/bin/bash
test_get_nagios_service_alerts=`curl -u nagiosadmin:password -s http://192.168.5.10/nagios/cgi-bin/status.cgi?host=all | \
grep serviceTotalsPROBLEMS |\
grep -o '[[:digit:]]'`
  #此处加入判断当无报警时,设get_nagios_service_alerts=0
if [ "$test_get_nagios_service_alerts" = "" ];
then
        get_nagios_service_alerts=0
else
        get_nagios_service_alerts=$test_get_nagios_service_alerts
fi
mysql -uroot -hlocalhost -p123456 <<EOF
        use nh_nagios;
        #select * from nagios_alerts;
        INSERT INTO nagios_alerts (nagios_name,nagios_number)  VALUES("serviceTotalsPROBLEMS",$get_nagios_service_alerts);
EOF
写入3条数据进mysql中
[iyunv@nhserver2 ~]# ./show_nh_nagios_alerts.sh
[iyunv@nhserver2 ~]# ./show_nh_nagios_alerts.sh
[iyunv@nhserver2 ~]# ./show_nh_nagios_alerts.sh
[iyunv@nhserver2 ~]# mysql -u root -p
Enter password:123456
mysql> use nh_nagios
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from nagios_alerts;
+-----------+-----------------------+---------------+
| nagios_id | nagios_name           | nagios_number |
+-----------+-----------------------+---------------+
|         1 | serviceTotalsPROBLEMS |             2 |
|         2 | serviceTotalsPROBLEMS |            10 |
|         3 | serviceTotalsPROBLEMS |            30 |
|         4 | serviceTotalsPROBLEMS |             2 |
|         5 | serviceTotalsPROBLEMS |             2 |
|         6 | serviceTotalsPROBLEMS |             2 |
|         7 | serviceTotalsPROBLEMS |             2 |
|         8 | serviceTotalsPROBLEMS |             2 |
|         9 | serviceTotalsPROBLEMS |             1 |
|        10 | serviceTotalsPROBLEMS |             1 |
|        11 | serviceTotalsPROBLEMS |             1 |
|        12 | serviceTotalsPROBLEMS |             1 |
|        13 | serviceTotalsPROBLEMS |             0 |
|        14 | serviceTotalsPROBLEMS |             0 |
|        15 | serviceTotalsPROBLEMS |             0 |
|        16 | serviceTotalsPROBLEMS |             0 |
|        17 | serviceTotalsPROBLEMS |             0 |
|        18 | serviceTotalsPROBLEMS |             0 |
|        19 | serviceTotalsPROBLEMS |             0 |
|        20 | serviceTotalsPROBLEMS |             0 |
|        21 | serviceTotalsPROBLEMS |             2 |
|        22 | serviceTotalsPROBLEMS |             2 |
|        23 | serviceTotalsPROBLEMS |             0 |
|        24 | serviceTotalsPROBLEMS |             0 |
|        25 | serviceTotalsPROBLEMS |             0 |
|        26 | serviceTotalsPROBLEMS |             2 |
|        27 | serviceTotalsPROBLEMS |             2 |
|        28 | serviceTotalsPROBLEMS |             2 |
|        29 | serviceTotalsPROBLEMS |             2 |
|        30 | serviceTotalsPROBLEMS |             2 |
+-----------+-----------------------+---------------+
30 rows in set (0.00 sec)
mysql> exit
到此,通过shell写入nagios的数据进mysql成功。后继可考虑将shell写入cron,让它每隔一分钟就写入数据进mysql中。
  
  三、取服务状态为CRITICAL的IP地址与服务名
  [iyunv@nhserver2 ~]# curl -u nagiosadmin:password -s http://192.168.5.10/nagios/cgi-bin/status.cgi?host=all | grep CRITICAL | \
grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' > nagios.txt
[iyunv@nhserver2 ~]# cat nagios.txt
<TD ALIGN=LEFT valign=center CLASS='statusBGCRITICAL'><A HREF='extinfo.cgi?type=2&host=192.168.5.110&service=SSH'>SSH</A></TD></TR>
<TD ALIGN=LEFT valign=center CLASS='statusBGCRITICAL'><A HREF='extinfo.cgi?type=2&host=192.168.5.110&service=check-host-alive'>check-host-alive</A></TD></TR>
[iyunv@nhserver2 ~]# awk -F'&' '{print $2,$3}' nagios.txt
host=192.168.5.110 service=SSH'>SSH</A></TD></TR>
host=192.168.5.110 service=check-host-alive'>check-host-alive</A></TD></TR>
[iyunv@nhserver2 ~]# awk -F'&' '{print $2,$3}' nagios.txt | sed 's#</A></TD></TR>##g'
host=192.168.5.110 service=SSH'>SSH
host=192.168.5.110 service=check-host-alive'>check-host-alive
[iyunv@nhserver2 ~]# awk -F'&' '{print $2,$3}' nagios.txt | sed 's#</A></TD></TR>##g' | sed "s#\'>.*##g"
host=192.168.5.110 service=SSH'>SSH
host=192.168.5.110 service=check-host-alive'>check-host-alive
[iyunv@nhserver2 ~]# awk -F'&' '{print $2,$3}' nagios.txt | sed 's#</A></TD></TR>##g' | sed "s#\'>.*##g" > nagios2.txt
[iyunv@nhserver2 ~]# cat nagios2.txt
host=192.168.5.110 service=SSH'>SSH
host=192.168.5.110 service=check-host-alive'>check-host-alive
[iyunv@nhserver2 ~]# sed "s/'>.*$//g" nagios2.txt
host=192.168.5.110 service=SSH
host=192.168.5.110 service=check-host-alive
  
  四、对nagios_alerts表加入一记录生成时间的字段,并成功记录数据
  #新增一生成时间字段
mysql> alter table nagios_alerts add COLUMN createtime datetime NOT NULL;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0
#查看表结构
mysql> show columns from nagios_alerts;
+---------------+----------+------+-----+---------+----------------+
| Field         | Type     | Null | Key | Default | Extra          |
+---------------+----------+------+-----+---------+----------------+
| nagios_id     | int(11)  | NO   | PRI | NULL    | auto_increment |
| nagios_name   | char(50) | NO   |     | NULL    |                |
| nagios_number | int(11)  | NO   |     | NULL    |                |
| createtime    | datetime | NO   |     | NULL    |                |
+---------------+----------+------+-----+---------+----------------+
4 rows in set (0.04 sec)
========================================
  
#生成时间的shell,但在mysql中,可以使用NOW()函数来做
[iyunv@nhserver2 ~]# var=`date "+%Y-%m-%d %H:%M:%-S"`
[iyunv@nhserver2 ~]# echo $var
2014-03-30 21:36:53
========================================
[iyunv@nhserver2 ~]# vim show_nh_nagios_alerts.sh
#!/bin/bash
test_get_nagios_service_alerts=`curl -u nagiosadmin:skylink -s http://192.168.5.10/nagios/cgi-bin/status.cgi?host=all | \
grep serviceTotalsPROBLEMS |\
grep -o '[[:digit:]]'`
create_time=`date "+%Y-%m-%d%H:%M:%-S"`
if [ "$test_get_nagios_service_alerts" = "" ];
then
        get_nagios_service_alerts=0
else
        get_nagios_service_alerts=$test_get_nagios_service_alerts
fi
mysql -uroot -hlocalhost -p123456 <<EOF
        use nh_nagios;
        #select * from nagios_alerts;
        INSERT INTO nagios_alerts (nagios_name,nagios_number,createtime)  VALUES("serviceTotalsPROBLEMS",$get_nagios_service_alerts,NOW()); #加入生成时间
EOF

  ====================================
  #显示表内容
  [iyunv@nhserver2 ~]# vim show_nh_nagios_alerts_mysql.sh
  #!/bin/bash
mysql -uroot -hlocalhost -p123456 <<EOF
        use nh_nagios;
        select * from nagios_alerts;
EOF

运维网声明 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-110973-1-1.html 上篇帖子: [zz]SENDING ALERTS WITH GRAPHITE GRAPHS FROM NAGIOS 下篇帖子: Nagios 监控系统架设全攻略(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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