zoukankan      html  css  js  c++  java
  • 【zabbix系列】报警系统的设置和排除

    关于邮件报警,有非常多方案,这里选择的是稳定性较好。使用较多的msmtp+mutt方案。

    该方案有一个非常好的地方在于不用自己来搭建独立的mailserver,能够使用第三方mail。这样的方法不仅能够有效的解决未知email地址被处理为垃圾邮件的问题。同一时候因为第三方的稳定服务来提供报警的准确和及时性。

    事实上最关键的一点是msmtp能够使用gmail。

    我们须要两个组件msmtp和mutt,当中msmtp是发送email的关键。mutt来优化msmtp。
    【msmtp】
    sudo apt-get install -y msmtp
    配置msmtp
    touch /var/log/msmtp.log


    vim ~/.msmtprc


    account default
    host smtp.126.com
    port 25
    from cl0554@126.com
    auth login
    tls off
    user cl0554@126.com
    password xxxxxxx
    logfile /var/log/msmtp.log


    chmod 600 .msmtprc
    chown zabbix.zabbix /var/log/zabbix -R
    chown zabbix.zabbix /var/log/msmtp.log
    chmod 777 /var/log/msmtp.log


    【mutt】
    安装
    sudo apt-get install -y mutt
    sudo mv /etc/Muttrc /etc/Muttrc.back
    sudo vim /etc/Muttrc


    set sendmail="/usr/bin/msmtp" #你的msmtp命令路径
    set use_from=yes
    set realname="cl0554@126.com"
    set editor="vim"


    測试邮件


    echo "hello zabbix" | mutt -s "zabbix test" chenlong0554@qq.com


    【zabbix配置】
    改动zabbix的脚本位置路径
    sudo vim /etc/zabbix/zabbix_server.conf
    AlertScriptsPath=/usr/local/zabbix/scripts/
    重新启动zabbix
    sudo service zabbix-server restart


    sudo mkdir -p /usr/local/zabbix/scripts/
    sudo chown zabbix.zabbix /usr/local/zabbix -R
    sudo vim /usr/local/zabbix/scripts/mail.sh
    #!/bin/sh
    echo "$3" | mutt -s "$2" $1


    sudo chown zabbix.zabbix mail.sh
    sudo chmod 777 mail.sh
    測试脚本
    ./mail.sh chenlong0554@qq.com zabbix測试 你好zabbix


    zabbix web界面通过右上角的 profile中的media设置发送的邮箱
    通过工具栏的administrator-Media types中的email 来配置mail发送的方式
    type选择 script
    name是mail.sh


    PS:报警系统的web配置教复杂,在下一节研究mysql和系统基础报警中具体讨论。本节将仅仅实现基础报警功能。



    【关于package安装zabbix无法报警的问题】
    假设日志和数据库中都显示zabbix发送了邮件可是你却没有收到邮件。
    排除垃圾邮件被屏蔽的问题,那么就是zabbix本身的问题。网上并没有类似的解决方式,可是通过分析能够找出问题所在。




    分析问题:
    1.zabbix的权限不存在问题。脚本已经赋予了最高权限而且所属组和用户都是zabbix。
    2.脚本本身假设直接用ubuntu用户运行是能够正确发送和接收到邮件的。那么排除脚本本身的问题。
    3.既然zabbix的日志和DB中都显示了已经send了mail。说明至少zabbix在做sendmail这一项操作,可是事实上并没有send成功。那么问题的根源就出在zabbix send mail这一过程之中。
    4.我们知道mutt是调用msmtp去发送email,那么zabbix在发送mail的过程应该是这种。
      触发报警—>zabbix用户调用bash—>运行mail.sh脚本
      假设运行成功则发送肯定成功。假设运行失败则肯定无法收到邮件。




    測试和解决这个问题
    1.手动登录zabbix用户来模拟zabbix发送邮件。我们发现第一步就会出错。由于ubuntu在apt-get安装zabbix时自己主动创建的zabbix用户默认是不具有home文件夹和登录shell的。那么至少应该给与zabbix 调用bash的权限否则zabbix用户是不可能成功运行mail.sh脚本的。
    解决方法例如以下:
    sudo vim /etc/passwd
    将zabbix行最后的/bin/false 改为 /bin/bash。

    保存退出后。这时用sudo su - zabbix切换到zabbix ,尽管没有home文件夹 可是是有登录shell的。


    2.运行mail.sh測试 
    ./mail.sh chenlong0554@qq.com zabbix測试 你好zabbix
    提示
    msmtp: account default not found: no configuration file available
    Error sending message, child exited 78 ().
    Could not send the message.


    通过对msmtp我们了解,在有用apt-get安装的msmtp,它的配置文件默认调用的当前用户home文件夹下的.msmtprc,我们尽管在ubuntu用户下创建了.msmtprc可是zabbix文件夹下却没有这个文件,所以zabbix还是无法有用msmtp。
    解决方法例如以下:
    sudo mkdir /home/zabbix
    sudo chown zabbix.zabbix -R /home/zabbix
    sudo vim /etc/passwd

    将zabbix的/var/lib/zabbix改为/home/zabbix

    sudo cp /home/ubuntu/.msmtprc /home/zabbix/.msmtprc

    chown zabbix.zabbix /home/zabbix/.msmtprc

    chmod 600 /home/zabbix/.msmtprc

    再次通过zabbix用户运行測试脚本,成功。





















  • 相关阅读:
    Opennebula4.2管理端和节点SSH模式的安装配置
    shell操作mysql之增删改查
    Linux常用服务部署与优化之NFS篇
    Linux常用服务部署与优化之Samba篇
    sql编程小结
    mysql5.7.11编译安装以及修改root密码小结
    基于centOS6.7搭建LAMP(httpd-2.4.18+mysql-5.5.47+php-5.6.16)环境
    php实现文件上传下载功能小结
    zabbix搭建
    mysql主从复制
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5060694.html
Copyright © 2011-2022 走看看