zoukankan      html  css  js  c++  java
  • 记录一次zabbix邮件告警搭建过程和问题处理

    (不是一天写成blog,有截图上的时间差)

    流程:

    1.配置zabbix-server服务端mailx,并在zabbix-server.conf配置文件的脚本路径中添加邮件脚本;

    2.配置web界面选项的动作报警媒介类型

    3.在用户中添加告警媒介,设置类型,收件人等选项

    首先,在zabbix-server客户端安装mailx,先停掉postfix

    systemctl stop postfix.service
    yum install mailx -y

    在配置文件最后面编写发送使用的配置邮件:

    vim /etc/mail.rc 

    set bsdcompat set from=yourmail@163.com set smtp=smtp.163.com set smtp-auth-user=yourmail@163.com set smtp-auth-password=163邮箱授权码 set smtp-auth=login

    163邮箱授权码获得方式:

    需要手机发送短信收到之后网页163邮箱确定会会出现一次,记住在添加到配置中去。。

    测试,自己给自己发一下吧:

    echo "yourmail@163.com test" | mailx -s "zabbix-alert" yourmail@163.com 

    测试 成功了!!!

    ===

    创建邮件发送脚本

    先看下zabbix-server配置文件查看下发送脚本的目录

    找到alertscripts目录,

    编写脚本mail.sh,并赋予执行权限x,

    #!/bin/bash
    echo "use mailx to send mail"
    echo "$3" | mail -s "$2" "$1"
    

    OK,,

    配置报警媒介回到zabbix-server 界面,在告警媒介添加新的告警

     

     脚本名称要和配置文件中的一样,,点击测试

     要添加发送的邮箱收告警信息,成功如下图,

     配置动作

    紧接着配置zabbix界面上的动作选项,

    动作选项中,在子选项条件选项中添加对应的触发条件,我设置的是主机web1的nginx宕机为触发条件,也可以添加一个主机组,

     

    操作选项中,消息内容要把需要的报警信息填进去,会在邮件中显示,操作细节必须填写,要设定发送邮件给定的主机或主机组,恢复操作细节也是,但也可以不写,不写在事故恢复时,不会发邮件告诉我事故已经没有了,,

    操作-->消息内容:

    故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
    告警主机:{HOSTNAME1}
    告警时间:{EVENT.DATE} {EVENT.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息: {TRIGGER.NAME}
    告警项目:{TRIGGER.KEY1}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    事件ID:{EVENT.ID}

    恢复操作-->消息内容:

    恢复故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
    恢复主机:{HOSTNAME1}
    恢复时间:{EVENT.DATE} {EVENT.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息: {TRIGGER.NAME}
    恢复告警项目:{TRIGGER.KEY1}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    事件ID:{EVENT.ID}

    看下演示:

    然后在用户中添加告警媒介

     当监控主机web1的nginx停掉后,zabbix-server会发送邮件通知。

    ===============================================================

    报错集合:

    1.碰到的错误如图,发送邮件的时候显示以失败,并报错No media defined for user.

     

     原因如图,我在玩配置用户报警媒介的时候类型忘记选择自定义的邮件告警,将类型选择邮件告警,正常发送:

     2.这个也不是错误

    就是收到的邮件是个bin文件,需要下载之后改成txt类型查看,怎么解决?

    解决了!!

    mail.sh脚本配置文件:

    #!/bin/bash
    #export LANG=zh_CN.UTF-8
    
    #dos2unix -k "$3"
    #echo "use mailx to send mail"
    #echo "$3" | mail -s "$2" "$1"
    
    
    #export.UTF-8 ###解决发送的中文变成了乱码的问题 
    #FILE=/tmp/zabbix_mail.txt 
    #echo "$3" >$FILE
    #dos2unix -k $FILE ###解决了发送的邮件内容变成附件的问题。 
    #/usr/bin/mail -s "$2" $1 < $FILE
    SENT_TO=$1
    SENT_SUBJECT=$2
    SENT_CONTENT="/tmp/alert_$$.tmp"
    
    echo "$3">$SENT_CONTENT
    dos2unix $SENT_CONTENT
    mailx -s "SENT_SUBJECT" $SENT_TO<$SENT_CONTENT
    

     

  • 相关阅读:
    URLEncoder编码算法
    传输层TCP和UDP的区别分析与应用场景
    【Android】AndroidStudio打包apk出现的一些问题 `Error:Execution failed for task ':app:lintVitalRelease'.
    【Android】在开发项目的时候,利用AndroidStudio开发工具,突然一直报错。
    【Android】listview 嵌套gridview报错,代码:”during second layout pass: posting in next frame
    华为荣耀5X(畅玩版 全网通)USB调试模式如何开启教程(开发者模式 开发者选项打开)
    Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习
    AndroidStudio中利用git下载github或者git.oschina的代码时报错:repository test has failed解决方法
    java最简单的知识之创建一个简单的windows窗口,利用Frame类
    【Android】java生成炫酷验证码,不区分大小写。登陆,发送手机验证码,防止注册机,android开发
  • 原文地址:https://www.cnblogs.com/5444de/p/12597656.html
Copyright © 2011-2022 走看看