linux系统中监控自动化脚本

问题汇总
问题1、逐渐告警,问题出现时,第一时候通知XX人,多长时间没解决,通知XXX人

问题2、问题主机出现告警时,想要获取其他相关监控值的情况,如load、cpu等,同时也可能会需要获取到其他会受影响主机的情况。

解决方法
问题1

很多开源的监控产品里都有escalations功能,如常见的zabbix 、nagios (这个确实是没关注到过的知识点)

zabbix根据问题持续的时间发送给不同的人 来处理的配置方法:

例如:

 代码如下 复制代码

1 – 5 min  mail to user_a

6 – 10 min mail to user_b

11 -15 sms to phone_a

16 -20 sms to phone_b

查了一些zabbix的资料发现escalations 能够实现此功能,配置如下:

zabbix web page — configuration — actions
设置 Period (seconds)
开启 Enable escalations
 在Action operations 设置step
利用from和to的值以及Period控制报警的周期, Send message to 选择收件人, Send only to 选择发送的类型,最后save保存。

具体可以参看官方文档,在zabbix 1.8的版本里就已经有该功能。

nagios下同样有类似功能

定义主机的逐次通知

 代码如下 复制代码
# vim ${NAGIOS_HOME}/etc/servers/host-escalation.cfg
-------------------------------------------------------------------
define hostescalation{
        hostgroup_name        linux-servers
        first_notification    2
        last_notification    3
        notification_interval    1440
        contact_groups        361way1
}
define hostescalation{
        hostgroup_name        linux-servers
        first_notification    4
        last_notification    0
        notification_interval    0
        contact_groups        admins
}

定义服务的逐次通知

 代码如下 复制代码
# vi ${NAGIOS_HOME}/etc/servers/service-escalation.cfg
-------------------------------------------------------------------
define serviceescalation{
        servicegroup_name    host-basic,host-info,host-perf,oracle-basic,oracle-self,mysql-basic
        first_notification    3  ;自第3条消息起,发送给本组员
        last_notification    5   ;0表示无限制通知,5表示只发送到第5条,此后的消息仍发送给前一组员。
        notification_interval    480  ;配置每条通知的时间间隔是480分钟,配置为0的话不表示不通知
        contact_groups        admins
}
define serviceescalation{
        servicegroup_name    host-basic,host-info,host-perf,oracle-basic,oracle-self,mysql-basic
        first_notification    6
        last_notification    7
        notification_interval    1440
        contact_groups        admins
}
define serviceescalation{
        servicegroup_name    host-basic,host-info,host-perf,oracle-basic,oracle-self,mysql-basic
        first_notification    8
        last_notification    0
        notification_interval    0
        contact_groups        admins
        escalation_options         c   ;紧急的消息,其他消息仍发送给上一组员
}

具体也可以参看官方文档给出的web页面配置的文件法。

问题2

该问题,我最早想到的方法是通过通过告警的时候将相关信息也一并发送给通知人,显然这种方法即不合理又傻瓜,甚至还有sms bomb的感觉 。后来在回来的公车上想到之前在运维趋势上看到过的taobao的作法是robot机器人训练。原理大致是将很多即时查询性的东西做成API和监控系统进行整合,同时再和xmpp(甚至是目前的微信)进行整合 。需要获取当前资源信息状况时,通过spark、skype、weixin等client post一个数据请求过去 ,监控平台向主机搜集完数据后再返回给client 。

电脑上没有安装好的绘图工具,用word画了个简图如下:

关于类似的实现在github上有一个skype的sevabot的项目 ,不过没有和监控平台进行结合 。关于和client的交互有三种设想:

1、像zabbix、nagios都提供了jabber协基client的通知,这个做过二次开发后可以实现上面的post请求,而国内基于jabber协议实现的client应用有陌陌和新浪微博,显然这两个都不大适合 ;

2、sms的方式,需要实现短信接口,实现想对也较麻烦 ;

3、和weixin的结合,由于winxin官方提供了相应的开发API ,而且网上相对应的开发教程也较多,所认这个实现起来应该是最好的。

接口完成后实现的效果如发送A-system,则返回A主机的所有cpu、内存等相关的系统信息 ;发送A-tomcat则返回A主机上tomcat相应的信息 。关于weixin的整合,个人认为和zabbix、nagios结合的难度相对大此,和saltstack等进行结合相同较容易 。

时间: 2024-11-03 21:30:16

linux系统中监控自动化脚本的相关文章

linux系统中yunfile文件下载脚本

脚本内存和CPU占用很低! 回答问题时我的脚本已经完成了60%,昨天凌晨加班完成了,使用到了ORC解析验证码,指定只分析数字! 使用前需要安装很多库,如果需要orc识别,还需要需要你的系统安装Tesseract-OCR,系统是linux的话在这里应该能找到编译好的包,老高用mac一句话就装好了brew install tesseract. requirements.txt progressbar == 2.3pyquery == 1.2.9requests == 2.4.3Pillow == 2

linux系统中监控用户的操作记录命令

首先我们创建一个放操作记录的日志文件  代码如下 复制代码 touch /var/log/rootlog.txt 给这个文件相应的写权限和追加权限  代码如下 复制代码 chmod 002 /var/log/rootlog.txt chattr +a /var/log/rootlog.txt 编辑/etc/profile文件,末尾添加如下脚本命令  代码如下 复制代码 export HISTORY_FILE=/var/log/usermonitor/usermonitor.log export

Linux系统中自动备份脚本

要求:将/data目录下的所有文件cp到/var/backups目录下,文件以当天的日期命名.例如(/var/backups/data.20151103).并且判断前一天的目录中的文件与当天的区别,如果无区别,则删除前一天的备份目录. # cat auto_bak.sh #!/bin/bash   bak_from_name="data" bak_from_dir="/data" bak_to_dir_par="/var/backups" bak

Linux 系统中使用 logwatch 监控日志文件

Linux 系统中使用 logwatch 监控日志文件 Linux 操作系统和许多应用程序会创建特殊的文件来记录它们的运行事件,这些文件通常被称作"日志".当要了解操作系统或第三方应用程序的行为或进行故障排查时,这些系统日志或特定的应用程序日志文件是必不可少的的工具.但是,日志文件并没有您们所谓的"清晰"或"容易"这种程度的可读性.手工分析原始的日志文件简直是浪费时间,并且单调乏味.出于这个原因,对于系统管理员来说,发现任何一款能把原始的日志文件

Linux系统中获取路径的文件名的方法

  这篇文章主要介绍了Linux系统中获取路径的文件名的方法,文中总结出了两条,需要的朋友可以参考下 代码如下: [root@dabu.info ]#basename /root/aaa/bbb/dabu.txt 显示: 代码如下: dabu.txt #获取路径的文件名 shell脚本中如何获得脚本文件所在路径? 方法一: 代码如下: [root@dabu.info ]#DIR=$(cd "$(dirname "$0")"; pwd) [root@dabu.info

Linux系统中的进程管理简介

在Linux系统里,当前正在运行的程序实例称为进程.比如,当你启动Apache的时候,系统会为它分配一个进程ID.然后就可以用这个ID监视和控制这个程序. 进程监视和控制是任何Linux系统管理员的核心任务.一个管理员可以终止("kill").重启一个进程,甚至可以为它指定一个不同的优先级.标准的Linux命令"ps"和"top"通常用于查看当前的进程列表.下面我来说明如何用这些命令和其它命令来管理Linux系统中的进程. 用ps监视进程 一个监

Linux系统中保存可执行文件的执行结果

在Linux操作系统上编译测试脚本文件或者应用程序的时候,往往需要不满足只是将结果输出到屏幕上,而是希望能够将运行结果.错误信息.警告信息等等保存在一个文件中,以方便系统管理员进行分析与调整.虽然这也可以通过屏幕截屏或者屏幕录像来完成,但是这得到的结果处理起来很不方便.如不方便查询.不能够过滤等等.为了解决这个问题,在Linux系统中提供了一个重定向的工具.在编程调试的过程中,可以利用重定向操作来存储可执行文件的输出结果. 一.将输入输出分别重定向到不同的文件. 在程序调试时,屏幕上的信息大致可

Linux系统中的usr目录有哪些

Linux 系统文件结构中,有这么一个神奇的目录那就是usr.之前一直都没有去关注过它,反正程序已经安装在里面,我也不知道有什么用就放在哪里了,后来 fedora 要简化整个文件系统体系,这才看到才想到它的存在,usr 到底是什么的缩写呢,它又是怎么来的呢?这里小编要给你们讲述的是Linux系统中的usr目录,下面也列举了usr目录下一些重要子目录所包含文件的功能,有需要的网友可以参考学习下. 1.usr 是 unix system resources 的缩写; 2.usr 是 user 的缩写

Linux系统中与中文显示相关的一些编码设置方法

  对于国内的Linux用户,经常烦恼的一个问题是:系统常常在需要显示中文的时候却显示成了乱码,而由于某些原因,需要英文界面的系统的时候,却苦于系统不能正常输入和显示中文.另外,由于大部分主要Linux发行版都是以英语为主体的,英文界面的系统和应用程序不管在界面的美观程度和稳定程度上都比中文的略好一些,各种奇怪的BUG也要少一些.因此,很多稍微有英语基础的Linux用户都宁愿使用英文界面的系统.但是,矛盾又突现出来:在英文系统下,如何才能正常显示和输入中文呢?有没有两全其美的方案呢?因此,笔者开