• nagios 整合 ganglia 设置邮件、短信报警


    要学的东西还有很多呢,慢慢来~!

    环境:

    操作系统:ubuntu 10.10

    软件:ganglia-monitor 3.1.7-1,gmetad 3.7.1-1,nagios 3.2.1-2

    步骤:

    1.下载安装nagios:
    sudo apt-get install nagios3 nagios-plugins
      输入要发送报告的邮箱
      输入密码(用户名默认为:nagiosadmin)


    2.把nagios的http文件链接到apache所在目录,并重启apache
    sudo ln -s /usr/share/nagios3/htdocs /var/www/nagios
    sudo service apache2 restart
    现在,就可以通过http://localhost/nagios来访问nagios了,查看service的时候会要求输入用户名和密码,就是之前设置的

    3.下载插件脚本

    1)check_ganglia.py 试验发现只适合单播、单个数据源的
    去http://ganglia.sourceforge.net/downloads.php?component=ganglia-webfrontend&version=3.1.7下载ganglia的源文件

    解压后在contrib目录中找到check_ganglia.py并复制到/usr/lib/nagios/plugins/目录(该目录在/etc/nagios3/resource.cfg脚本中被定义为USER1)
    这个python脚本是通过ganglia收集到的数据发出不同等级的警报,nagios显示这些警报信息或者根据设置通过邮件、短信发送警报信息给指定用户

    2)check_ganglia_metric.php 这个好像是最原生态的,都适合

    下载地址:http://vuksan.com/linux/ganglia/check_ganglia_metric.phps
    这是check_ganglia的php脚本,直接调用gmetad取得的信息,因此可以获得other clusters and Grids的信息。把它复制到$USER1$目录下。

    调用方法:check_ganglia_metric.php hostName metric_name less|more value


    4.在/etc/nagios3/conf.d添加一个名为ganglia-services.cfg的配置文件,添加如下设置:
    #定义servicegroup方便host使用多个service
    define servicegroup {
      servicegroup_name ganglia-metrics
      alias Ganglia Metrics
    }

    #定义host,address似乎可以不用,因为check_ganglia.py脚本只通过host_name就可获取数据
    #host_name可以从ganglia中看到
    define host{
      use       generic-host   ; Name of host template to use
      host_name   Just_Test
      alias       test-host
    }

    #定义hostgroup,members中可以指定属于该组的成员,定义service的时候可以指定只有某组才能使用该service
    define hostgroup {
      hostgroup_name    my-host-servers
      alias           test-group
      members        *   ;可以指定多个host属于当前组,用逗号分隔
    }


    #定义check_ganglia.py的command,执行检测脚本
    #define command {
    #  command_name  check_ganglia
    #  command_line   $USER1$/check_ganglia.py -h $HOSTNAME$ -m $ARG1$ -w $ARG2$ -c $ARG3$
    #}

    #定义command,执行check_ganglia_metric.php检测脚本
    define command{
      command_name   check_ganglia
      command_line    $USER1$/check_ganglia_metric.php $HOSTNAME$ $ARG1$ $ARG2$ $ARG3$
    }

    #定义一个service集合,共享配置(似乎是这个意思)
    define service {
      use           generic-service
      name          ganglia-service
      hostgroup_name    my-host-servers  ;定义那个组需要当前服务
      service_groups     ganglia-metrics
      notifications_enabled   1          ;是否发送通知,1为发送,0为不发送
    }

    #定义具体service,check_command中的值:首先是command名,然后是用!分隔的参数,分别对应$ARG1$,$ARG2$。。。

    #check_ganglia.py的检测命令
    define service {
      use           ganglia-service
      service_description   load_one             ;服务名称
      check_command     check_ganglia!load_one!4!5  ;调用之前定义的command
    }

    #check_ganglia_metric.php的检测命令
    define service {
      use           ganglia-service
      service_description   内存空闲
      check_command    check_ganglia!mem_free!less!10240
    }
    #发送邮件的command
    define command {
      command_name   notify-by-email
      command_line    /usr/bin/printf "%b" "***** Nagios 3.2.1*****\nNotification Type: $NOTIFICATIONTYPE$\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nDate/Time: $LONGDATETIME$\nAdditionalInfo: $SERVICEOUTPUT$" | /usr/local/bin/sendEmail -f sender@qq.com -t $CONTACTEMAIL$ -s smtp.qq.com -u "**$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is  $SERVICESTATE$ **" -xu sender@qq.com -xp password
    }


    5.修改contacts_nagios2.cfg
    修改被通知的Email以及xx_notification_commands:

    service_notification_commands notify-by-email
    host_notification_commands notify-by-email
    email 138xxxxxxxx@139.com

    使用139的邮箱,让接收短信的人去139邮箱那开通下短信通知(同时设置长短信打开),这样就可以免费接到报警短信了。之前配飞信的时候遇到太多问题,而且听说用飞信还要验证码,只好转139邮箱了,似乎163也有邮件到达通知。


    6.安装sendEmail,发邮件通知(可以直接复制已经安装的程序/usr/local/bin/sendEmail):
    wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.55.tar.gz
    tar -zxvf sendEmail-v1.55.tar.gz
    cd sendEmail-v1.55
    cp sendEmail /usr/local/bin
    chmod 0755 /usr/local/bin/sendEmail
    测试sendEmail(我试的时候,只有qqmail能发送成功,163、sina什么的都不行,不知道为什么):

    sendEmail -f sender@qq.com -t receiver@qq.com -s smtp.qq.com -u "test" -xu sender@qq.com -xp your-password -m "hello world!"

    -f表示发送者的邮箱
    -t表示接收者的邮箱
    -s表示SMTP服务器的域名或者ip
    -u表示邮件的主题
    -xu表示SMTP验证的用户名
    -xp表示SMTP验证的密码
    -m表示邮件的内容

    *结束语

    至此,已经能通过nagios收到报警信息了,间歇性地花了一周事件才搞定。。慢慢来吧

  • 相关阅读:
    PAT 天梯赛 L1-048. 矩阵A乘以B 【数学】
    PAT 天梯赛 L1-047. 装睡 【水】
    PAT 天梯赛 L1-047. 装睡 【水】
    PAT 天梯赛 L1-045. 宇宙无敌大招呼 【水】
    PAT 天梯赛 L1-045. 宇宙无敌大招呼 【水】
    PAT 天梯赛 L1-044. 稳赢 【循环】
    PAT 天梯赛 L1-044. 稳赢 【循环】
    PAT 天梯赛 L1-042. 日期格式化 【水】
    PAT 天梯赛 L1-042. 日期格式化 【水】
    PAT 天梯赛 L1-041. 寻找250 【水】
  • 原文地址:https://www.cnblogs.com/Nstd/p/2760180.html
Copyright © 2020-2023  润新知