📽️

Nagios利用mail告警通知

~ made by @zhengenze ~

Nagios利用mail告警通知

使用sendEmail来发送邮件
Nagios邮件告警 配置
参考

sendEmail是一个轻量级,命令行的SMTP邮件客户端。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php、bash、perl和web站点使用。

  • 以上是sendEmail的简单介绍,千万不要和sendmail搞混掉了。用了sendEmail你将不在喜欢sendmail了.
  • 下载安装sendEmail
sendEmail下载地址:http://caspian.dotconf.net/menu/Software/SendEmail/

# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz //下载1.56版本


  • 解压
# tar -xzvf sendEmail-v1.56.tar.gz //解压后就可以使用了

  • 把里面的主要程序复制到环境变量目录下,即可使用
# mv sendEmail /usr/local/bin/

发送邮件

#  /usr/local/bin/sendEmail/sendEmail -f 319989158@qq.com \
    -t 478641330@qq.com -s smtp.qq.com -u "我是邮件主题" \
    -o message-content-type=html -o message-charset=utf8 \
     -xu 319989158@qq.com -xp 123456 -m "我是邮件内容"

命令说明:


/usr/local/bin/sendEmail 命令主程序
-f lpc_bg@163.com  发件人邮箱
-s smtp.163.com       发件人邮箱的smtp服务器
-u "我是邮件主题"     邮件的标题
-o message-content-type=html   邮件内容的格式,html表示它是html格式
-o message-charset=utf8        邮件内容编码
-xu lpc_bg@163.com          发件人邮箱的用户名
-xp 123456               发件人邮箱密码
-m "我是邮件内容"        邮件的具体内容

发送成功之后会有如下提示:

Jul 29 15:02:53 e10074 sendEmail[26347]: Email was sent successfully!

sendEmail使用命令帮助


[root@localhost scripts]# sendEmail --help
sendEmail-1.56 by Brandon Zehm <caspian@dotconf.net>
Synopsis:  sendEmail -f ADDRESS [options]
Required:
-f ADDRESS                from (sender) email address
* At least one recipient required via -t, -cc, or -bcc
* Message body required via -m, STDIN, or -o message-file=FILE
Common:
-t ADDRESS [ADDR ...]     to email address(es)
-u SUBJECT                message subject
-m MESSAGE                message body
-s SERVER[:PORT]          smtp mail relay, default is localhost:25
Optional:
-a   FILE [FILE ...]      file attachment(s)
-cc  ADDRESS [ADDR ...]   cc  email address(es)
-bcc ADDRESS [ADDR ...]   bcc email address(es)
-xu  USERNAME             username for SMTP authentication
-xp  PASSWORD             password for SMTP authentication
Paranormal:
-b BINDADDR[:PORT]        local host bind address
-l LOGFILE                log to the specified file
-v                        verbosity, use multiple times for greater effect
-q                        be quiet (i.e. no STDOUT output)
-o NAME=VALUE             advanced options, for details try: --help misc
-o message-content-type=<auto|text|html>
-o message-file=FILE         -o message-format=raw
-o message-header=HEADER     -o message-charset=CHARSET
-o reply-to=ADDRESS          -o timeout=SECONDS
-o username=USERNAME         -o password=PASSWORD
-o tls=<auto|yes|no>         -o fqdn=FQDN
Help:
--help                    the helpful overview you're reading now
--help addressing         explain addressing and related options
--help message            explain message body input and related options
--help networking         explain -s, -b, etc
--help output             explain logging and other output options
--help misc               explain -o options, TLS, SMTP auth, and more
sendEmail发送邮件内容到此结束,如有什么不明白的,请留言.

Nagios邮件告警 配置

创建一个联系人

  • 我们只需要编辑/usr/local/nagios/etc/object下的contact.cfg文件,在email后添加管理员的邮箱即可。一般而言,如果监控项目的分工不是太细的话就是管理员可以负责所有的监控、并对其进行处理的话,可以直接将一个或者多个管理员的邮件地址写上,使用空格或者逗号隔开。
  • 可以在原有的contact.cfg修改

可以自定义contact.cfg

修改nagios.cfg
# vim /usr/local/nagios/etc/nagios.cfg
 添加:
cfg_file=/usr/local/nagios/etc/objects/contact.cfg

检查nagios配置文件是否正确
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg  

重新启动nagios服务:
# service nagios restart

vim /usr/local/nagios/etc/object/contact.cfg

define contact{
        contact_name                    root
        alias                           Root
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           754376957@qq.com //【You email address】
        }

创建一个组


        define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 root
        }

修改发送邮件命令

vim commands.cfg


define command{
	command_name	notify-service-by-email
	command_line   /usr/local/bin/sendEmail-v1.56/sendEmail -f maize@soft.today -t $CONTACTEMAIL$ \
  -s smtp.exmail.qq.com:10025 -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -o message-content-type=html  \
    -o message-charset=utf8 -o message-content-type=html    \
    -xu maize@soft.today -xp ojufSie5ZwAYqsP9 -m "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n"
	}

指定监控项目


define service {
        use generic-service
        host_name SSR-2018
        service_description check_cpu_load
        check_command check_nrpe_1arg!check_cpu_load
        contact_groups admins
}

修改 nagios.cfg 插件

enable_notifications=1          //开启后也就是nagios装的所有插件,出现问题都会报警

几个重要参数说明

1、notifications_enabled : 是否开启提醒功能。1为开启,0为禁用。一般,这个选项会在主配置文件(nagios.cfg)中定义。

2、notification_interval: 表示重复发送提醒信息的最短间隔时间。默认间隔时间是60分钟。如果这个值设置为0,将不会发送重复提醒。

3、notification_period: 发送提醒的时间段。非常重要的主机(服务)我定义为7×24,一般的主机(服务)就定义为上班时间。如果不在定义的时间段内,无论什么问题发生,都不会发送提醒。

4、notification_options:

这个参数定义了发送提醒包括的情况:

w = WARNING,警告

d = 状态为DOWN

u = 状态为UNREACHABLE , 未知

r = 状态恢复为OK

c = CRITICAL,危险(已达临界值)

n = 不发送提醒

参考

https://www.idcyunwei.org/post/116.html

https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/objectdefinitions.html

http://caspian.dotconf.net/menu/Software/SendEmail/