文章目录
安装邮件发送工具,并配置发送账户信息
#第一:在smokeping主机上安装mailx
yum install mailx -y
#第二:备份并编辑mailx的配置文件,设置发送邮件账户
cp /etc/mail.rc{,.bak}
vim /etc/mail.rc
#先清空里面的内容,然后填入以下信息
set from=11111@163.com
set smtp=smtp.163.com
set smtp-auth-user=111111
#拿163邮箱来说这个不是密码,而是授权码
set smtp-auth-password=111111
set smtp-auth=login
#第三:发送测试邮件,验证mailx是否设置正确
echo " nishi wo de " | mail -s " this is email" 123456789@qq.com
注意:这里额外介绍如何让mailx使用smtps(适用于某些屏蔽对外部25端口访问的机房--阿里云机房)
set nss-config-dir=/etc/pki/nssdb/
set smtp-user-starttls #要点
set ssl-verify=ignore
set from=1234567@163.com
set smtp=smtps://smtp.163.com:465 #要点1
set smtp-auth-user=1234567@163.com
set smtp-auth-password=1234567
set smtp-auth=login
配置smokeping调用外部脚本进行邮件报警
vim /opt/smokeping/etc/config
*** Alerts ***
#to = 8ds@wsdfsk.com
to = |/opt/smokeping/bin/mailx_alert.sh # 使用|接脚本路径,调用外部脚本
from = smokealert@company.xy
#注意:smokeping在告警的时候会发送5个参数到告警接收媒介(这里也就是我们自定义的alert脚本),参数按照顺序分别为:name-of-alert, target, loss-pattern, rtt-pattern, hostname,对应下面报警脚本的$1-$5
编写邮件报警脚本
vim /opt/smokeping/bin/mailx_alert.sh
#!/bin/bash
#########################################################
# Script to email a ping report on alert from Smokeping #
#########################################################
# 解析变量
zhuti="临空IDC-网络质量监测报警"
alertname=$1
target=$2
losspattern=$3
rtt=$4
hostname=$5
DATE=$( date '+%Y-%m-%d %H:%M:%S' )
#根据报警目标,将其与smokeping配置文件中目标的中文标题进行匹配
case "$target" in
yw.sw.sw-I16)
target=白水湖3F-I16交换机-yw.sw.sw-I16;;
yw.sw.sw-H161)
target=白水湖4F-H16高防核心上联一口-yw.sw.sw-H161;;
yw.sw.sw-H162)
target=白水湖4F-H16高防核心上联二口-yw.sw.sw-H162;;
yw.sw.sw-H17)
target=白水湖4F-H17-汇聚交换机-yw.sw.sw-H17;;
yw.sw.sw-H17-10)
target=白水湖4F-H17-防火墙管理机-yw.sw.sw-H17-10;;
yw.sw.sw-I17)
target=白水湖3F-I17交换机-yw.sw.sw-I17;;
yw.sw.sw-I18)
target=白水湖3F-I18交换机-yw.sw.sw-I18;;
yw.sw.sw-I19)
target=白水湖3F-I19核心交换机-yw.sw.sw-I19;;
yw.sw.sw-I20)
target=白水湖3F-I20交换机-yw.sw.sw-I20;;
yw.sw.sw-shuya)
target=白水湖3F-I16束亚交换机-yw.sw.sw-shuya;;
esac
#messages=`echo -e " Name of Alert: \t $alertname \n Target: \t $target \n Loss Pattern: \t $losspattern \n RTT Pattern: \t $rtt \n Hostname: \t$hostname"`
messages=`echo -e " 报警策略名: \t $alertname \n 报警目标: \t $target \n 丢包率: \t $losspattern \n 延迟时间: \t $rtt \n 主机地址: \t$hostname \n 报警时间: \t$DATE "`
email="8dsd8@dsdsfnk.com"
echo "$DATE -- $alertname -- $target -- $losspattern -- $rtt -- $hostname" >> /tmp/smokeping-baojin
echo "$messages" | mail -s "$zhuti" $email >>/tmp/mailx.log 2>&1
为邮件报警脚本赋予执行权限
chmod +x /opt/smokeping/bin/mailx_alert.sh
编写报警策略
vim /opt/smokeping/etc/config
*** Alerts ***
#to = alertee@address.somewhere
to = |/opt/smokeping/bin/mailx_alert.sh
from = smokealert@company.xy
# 定义各种告警规则,有两种类型,(延时|丢包)
+hostdown
type = loss
# in percent
pattern = ==0%,==0%,==0%, ==U
comment = 对端无响应
+hight-loss
type = loss
# in percent
pattern = ==0%,==0%,==0%,==0%,>15%,>15%,>15%
comment = 连续3次采样-丢包率超过15%
+some-loss
type = loss
# in percent
pattern = >0%,*12*,>0%,*12*,>0%
comment = 间断性丢包
+enlarge-rtt
type = rtt
# in milli seconds
pattern = <100,<100,<100,<100,<100,<150,>150,>150,>150
comment = 连续3次采样延迟增大-超过150ms
应用告警策略
如你所了解的,smokeping的配置文件里面通过"+"号的个数来定义层级关系,因此你可以在不同的层级里面调用告警规则,上级的定义可以被下级继承和覆盖(内层的优先级更高)
#配置语法
# alerts = 告警规则1,告警规则2,告警规则3
vim /opt/smokeping/etc/config
*** Targets ***
+ Other
menu = 全国DNS网络监控
title = 全国DNS网络监控
++ dx
menu = 电信
title = 电信网络监控列表
#合理应用多个策略,能减少误报
alerts = hostdown,hight-loss
host = /Other/dx/dx-jx /Other/dx/dx-sh
+++ dx-jx
menu = 江西电信
title = 江西电信
alerts = hostdown,some-loss
host = 202.101.22.98
+++ dx-sh
menu = 上海电信
title = 上海电信
slaves = tengxunyun
host = 202.96.209.133
最后:重启相关服务
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论