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

nagios 使用 sendEmail 发送报警邮件

[复制链接]

尚未签到

发表于 2019-1-13 06:28:02 | 显示全部楼层 |阅读模式
  原始出处:http://tongcheng.blog.运维网.com/6214144/1785241
  wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
  tar xf sendEmail-v1.56.tar.gz
  cp sendEmail-v1.56/sendEmail ./
  /etc/nagios/sendEmail -f red@hongb.com -t wangqinghua@hongbaodai.com -s smtp.exmail.qq.com -u “from nagios” -xu redm@ho.com -xp 1234 -m "www"
  Jul 01 14:48:37 hbd-test sendEmail[12115]: Email was sent successfully!
  测试成功发送邮件。
  解释:
  -f 表示发送者的邮箱
  -t 表示接收者的邮箱
  -s 表示SMTP服务器的域名或者ip
  -u 表示邮件的主题
  -xu 表示SMTP验证的用户名
  -xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)
  -m 表示邮件的内容
  如果你不带-m参数的话,就会提示你自行输入
  输入完成后使用CTRL-D来结束当然我们也可以将一个文件的内容作为邮件的正文发出去的那么就可以使用:
  cat 文件名| /usr/local/bin/sendEmail –f nagios@test.com –t yahoon@test.com –s mail.test.com –u “from nagios” –xu nagios –xp p#3isoda
  报警脚本编写
  [root@db02 objects]# vim commands.cfg
  define command {
  command_name notify-service1-by-email
  command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" | /usr/local/bin/sendEmail -f  发件人邮箱 -t $CONTACTEMAIL$ -s smtp.139.com -u "**$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is$SERVICESTATE$ **" -xu 发件人邮箱用户名 -xp 发件邮箱密码
  }
  define command {
  command_name notify-host1-by-email
  command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" | /usr/local/bin/sendEmail -f 发件人邮箱 -t $CONTACTEMAIL$ -s smtp.139.com -u "**$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is$SERVICESTATE$ **" -xu 发件人邮箱用户名 -xp 发件邮箱密码
  }
  既然nagios要使用sendEmail来发警告邮件,那么就要修改commands.cfg中关于发邮件的命令的定义,我们现在来修改notify-by-email这个命令,如下(注意其中粗体的部分)
  # 'notify-by-email' command definitiondefine command{        command_name    notify-by-email        command_line    /usr/bin/printf "%b" "***** Nagios 2.9 *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" |/usr/local/bin/sendEmail -f nagios@test.com -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu nagios -xp p#3isoda
  注:其实sendEmail是一个十分有用的程序,我们在这个地方用了它,其实别的地方也可以用,典型的好处就是你不需要每台机器都装sendmail,开启smtp服务.直接用现成的一台邮件服务器就行了,这无疑很大的加强了系统的安全性,也节约了资源.
  以下是原文参考:
  1.下载安装sendEmail工具
  [root@db02 ~]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
  [root@db02 ~]# tar xvf sendEmail-v1.56.tar.gz
  [root@db02 ~]# mv sendEmail-v1.56/sendEmail /usr/local/bin/sendEmail2
  [root@db02 ~]# chmod  755 /usr/local/bin/sendEmail2
  [root@db02 ~]# /usr/local/bin/sendEmail2 -f z597011036@126.com -t dick@tingyun.tech -s smtp.126.com -u "**$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is$SERVICESTATE$ **" -xu z597011036@126.com -xp z597011036zzz -m test
  Jun 01 16:59:03 db02 sendEmail2[27006]: Email was sent successfully!  #测试邮件发送成功
  [root@db02 ~]#
  2.在nagios中定义联系人和联系组
  [root@db02 ~]# cd /usr/local/nagios-4.1.1/etc/objects/
  [root@db02 objects]# vim contacts.cfg
  define contact{
  contact_name       dick    #联系人姓名
  use      generic-contact      #使用联系人模板
  alias     dick           #别名
  email   dick@tingyun.tech  #联系人邮箱
  }
  define contact{
  contact_name  rayc
  use   generic-contact
  alias  rayc
  email   rayc@tingyun.tech
  }
  define contact{
  contact_name    tong
  use        generic-contact
  alias       tong
  email     z597011036@qq.com
  }
  define contactgroup{
  contactgroup_name   tingyun   #定义联系人组
  alias    tingyun
  members    dick,rayc     #组中的成员
  }
  3.报警时间,级别设置
  [root@db02 objects]# vim templates.cfg    #报警参数设置
  define contact{
  name    generic-contact         #定义报警联系人模板
  service_notification_period     24x7 #服务报警的时间(24小时,7天)
  host_notification_period        24x7   #主机报警的时间
  service_notification_options    w,u,c,r,f,s  #服务报警级别
  host_notification_options       d,u,r,f,s   #主机报警级别
  service_notification_commands   notify-service-by-email  #服务报警的命令(在command.cfg文件中)
  host_notification_commands     notify-host-by-email
  register      0      #是否可以继承
  }
  define host{
  name   generic-host
  notifications_enabled      1    #是否启用主机报警
  event_handler_enabled    1    #启用主机事件程序
  flap_detection_enabled    1
  process_perf_data            1     #性能数据
  retain_status_information   1     #程序启动保留状态信息
  retain_nonstatus_information    1     #程序启动保留非状态信息
  notification_period             24x7    #报警时间
  register    0      #是否继承
  }
  define host{
  name     linux-server    #自定义模板
  use     generic-host     #继承哪个模板
  check_period   24x7     #被选中的时钟
  check_interval    5         #主机每5分钟检查一次
  retry_interval      1         #每隔1分钟重试检查一次
  max_check_attempts    10    #检查每个主机10次
  check_command       check-host-alive   #默认命令检查主机
  notification_period    workhours   #只通知白天
  notification_interval    120     #每两个小时发送通知
  notification_options    d,u,r   #只发送特定主机的通知
  contact_groups     tingyun    #发送哪个组
  register    0    #是否被继承
  }
  define service{
  name   generic-service      #定义模板
  active_checks_enabled   1   #启动服务检查
  passive_checks_enabled   1    #启动被动检查
  parallelize_check   1        #主动服务检查(禁用会出现严重问题)
  obsess_over_service  1
  check_freshness      0     #不检查服务新鲜度
  notifications_enabled   1    #启动服务通知
  event_handler_enabled   1    #启用服务事件
  flap_detection_enabled   1
  process_perf_data            1
  retain_status_information     1
  retain_nonstatus_information    1
  is_volatile     0    #服务不稳定
  check_period    24x7      #检查服务时间
  max_check_attempts   3        #重新检查服务3次
  normal_check_interval  10     #每10分钟检查一个服务
  retry_check_interval   2          #每2分钟再检查一次
  contact_groups    tingyun      #邮件通知联系组
  notification_options    w,u,c,r      #发送报警级别
  notification_interval    1               #每1小时重新通知服务
  notification_period        24x7         #通知时间
  register     0     #是否继承
  }
  define service{
  name    local-service       #定义模板
  use    generic-service      #继承模板
  max_check_attempts    4    #最多检查服务4次
  normal_check_interval  5    #正常情况下每5分钟检查一下服务
  retry_check_interval     1     #重新检查该服务需要1分钟
  register      0      #这只是个模板
  notifications_enabled   1     #启用报警
  contact_groups     tingyun   #发送联系组
  }
  4.报警脚本编写
  [root@db02 objects]# vim commands.cfg
  define command {
  command_name notify-service1-by-email
  command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" | /usr/local/bin/sendEmail2 -f t 发件人邮箱 -t $CONTACTEMAIL$ -s smtp.139.com -u "**$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is$SERVICESTATE$ **" -xu 发件人邮箱用户名 -xp 发件邮箱密码
  }
  define command {
  command_name notify-host1-by-email
  command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" | /usr/local/bin/sendEmail2 -f 发件人邮箱 -t $CONTACTEMAIL$ -s smtp.139.com -u "**$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is$SERVICESTATE$ **" -xu 发件人邮箱用户名 -xp 发件邮箱密码
  }
  [root@db02 objects]# /etc/init.d/nagios restart
  Running configuration check...
  Stopping nagios:. done.
  Starting nagios: done.
  [root@db02 objects]#



运维网声明 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-662502-1-1.html 上篇帖子: nagios自定义监控脚本 下篇帖子: 2.1 nagios 安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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