mouse 发表于 2019-1-24 14:31:34

zabbix接入百度告警详细攻略

  

  第一章:百度告警端配置
  首先需要申请百度告警账号,使用以下链接注册百度告警账号:
  http://gaojing.baidu.com/#/register
https://s3.运维网.com/wyfs02/M02/95/74/wKioL1kVV1DwYpmmAABzvzsGL4c528.png-wh_500x0-wm_3-wmp_4-s_2988427601.png
  输入邮箱后,点击验证注册码,所注册的邮箱会收到一封来自百度告警平台的验证码:
https://s2.运维网.com/wyfs02/M00/95/74/wKiom1kVV1HypqrwAABpzZzuY4M681.png-wh_500x0-wm_3-wmp_4-s_3932041385.png
  账号注册完成后来到登录界面,依次分别验证手机、短信、及微信账号,其中微信账号的验证为点击后出现一幅二维码,使用微信手机客户端扫描验证即可。
https://s2.运维网.com/wyfs02/M01/95/74/wKioL1kVV1HDvNzSAAAzopcTVxU744.png-wh_500x0-wm_3-wmp_4-s_1473367352.png
  点击我创建的空间,进入个人告警管理界面
https://s1.运维网.com/wyfs02/M02/95/74/wKiom1kVV1KRS_UiAAAl_m3nado947.png-wh_500x0-wm_3-wmp_4-s_3906402358.png
  首先点击“升级策略”,选择“新增升级策略”
https://s1.运维网.com/wyfs02/M00/95/74/wKioL1kVV1KiO_2cAACkJJ1-iIo068.png-wh_500x0-wm_3-wmp_4-s_2580398734.png
  在新增界面升级策略名称处可随意输入一个策略名称,此处使用“zabbix”,在接收人处下拉选择个人接收。如需新增2级告警,可点击加号新增。
https://s1.运维网.com/wyfs02/M02/95/74/wKioL1kVV1KBipIvAAA3b9pyOek566.png-wh_500x0-wm_3-wmp_4-s_1878634047.png
  下图解释为,告警发生后先微信通知两名联系人,若1分钟内无人接单,则发送短信给两位联系人,若再次1分钟内无响应,则电话通知指定联系人。
https://s4.运维网.com/wyfs02/M00/95/74/wKiom1kVV1OCjoDmAABRI1DUKd0451.png-wh_500x0-wm_3-wmp_4-s_1962152906.png
  然后点击“服务管理”,选择”新增服务”
https://s4.运维网.com/wyfs02/M00/95/74/wKioL1kVV1OynwaRAABwRSYD8pc541.png-wh_500x0-wm_3-wmp_4-s_2772677358.png
  服务名称随意输入,接入类型选择“zabbix_api”,默认升级策略选择刚刚升级策略处输入的名称。单击保存,生成策略。
https://s5.运维网.com/wyfs02/M01/95/74/wKiom1kVV1Twx3AlAABwWEe2gwg234.png-wh_500x0-wm_3-wmp_4-s_1722290685.png
  然后点击下方箭头处,在弹出的下框中记录下ID号及token号,之后会用到。
  

https://s5.运维网.com/wyfs02/M02/95/74/wKiom1kVV1XgE5uuAAB8nnMQfw0758.png-wh_500x0-wm_3-wmp_4-s_3715411243.png
  至此百度告警端的配置已完全配置完成。进入下章zabbix端配置。
  


  第二章:zabbix端搭建及配置1
  由于个人测试使用的是zabbix官方下载的虚拟化的ovf模板搭建。省去了zabbix初期的搭建,下载地址如下:http://www.zabbix.com/download
  此模板如需导入esxi需修改ovf文件,具体修改方法为:
  使用notepad++打开ovf文件,修改以下几处,即可导入。
  修改后ovf文件
  <               SCSIController
  <               SCSIController
  <               SCSIController
  <               5
  <               lsilogic
  <               6
  修改前ovf文件
  >      sataController0
  >      SATA Controller
  >      sataController0
  >      5
  >      AHCI
  >      20
  如需使用VMware Workstation 12 Player导入ovf,可直接导入,有告警忽视即可。
  导入完成后,先在终端输入“sudo su”命令然后输入默认appliance密码zabbix切换至root用户https://s1.运维网.com/wyfs02/M01/95/75/wKioL1kVWf7zM09eAAAJUEisa88317.png

  即可使用root用户设置固定ip,文件路径及配置内容如下https://s5.运维网.com/wyfs02/M02/95/74/wKioL1kVV1XyNPqjAAAqwgaiBOI934.png-wh_500x0-wm_3-wmp_4-s_3509991031.png

  然后配置DNS解析,文件路径及配置内容如下
  
https://s2.运维网.com/wyfs02/M02/95/75/wKiom1kVWprBg49SAAAXDmXaTCY473.png
  该dns配置重启后会失效,修改如下配置文件可确保重启服务器后DNS配置依旧生效
https://s3.运维网.com/wyfs02/M00/95/75/wKioL1kVWpqz39_xAAAJ79Lc4f0351.png
  配置完成后重启网络服务,使其生效。
  ps:ubuntu模板默认未安装vim,如使用vi不习惯可配置完网络后使用“apt-getinstall vim-gtk”命令在线安装vim
  由于本人环境已拥有网闸做安全防护,顾使用如下命令关闭并删除了防火墙
  iptables -P INPUT ACCEPT
  iptables -P FORWARD ACCEPT
  iptables -P OUTPUT ACCEPT
  iptables -F
  apt-get remove iptables
  配置ubuntu的本地时区,并做同步
  date –R             //查看当前时间和时区,如果大陆地区末尾不是+0800则进行以下操作,若是则可跳过本段
  sudo tzselect            //选择时区,此处选择5(Asia),然后选择9(China),1(Shanghai),1(Yes)
  sudo cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime            //将配置文件复制到本地时间目录下
  sudo ntpdate time.windows.com            //网络同步时间
sudo hwclock –systohc                                       //将系统时间写入硬件时间
配置php时区
备份并编辑/etc/php5/apache2/php.ini文件,修改以下部分
https://s1.运维网.com/wyfs02/M00/95/74/wKioL1kVV1bz6oJHAAAQ9KBwUEU282.png-wh_500x0-wm_3-wmp_4-s_2977654629.png

配置zabbix时区
备份并编辑/etc/apache2/conf-enabled/zabbix.conf文件,修改以下部分
https://s1.运维网.com/wyfs02/M01/96/33/wKiom1keQwPw_nRsAAA-dlN7mU8915.png
完成后使用如下命令,重启apache及zabbix服务
/etc/init.d/apache2 restart
/etc/init.d/zabbix-server restarthttps://s1.运维网.com/wyfs02/M01/95/74/wKiom1kVV1fi-V1MAAAahrLGfgo731.png-wh_500x0-wm_3-wmp_4-s_477408236.png
  完成后登陆zabbix网页端,查看网页端时间和本地时间是否正常。
https://s4.运维网.com/wyfs02/M01/95/75/wKiom1kVW8ay3EGLAAFGajtQOCU215.png
  时间正常后进入第三章。
  


  第三章:zabbix端搭建及配置2
  此章主要为配置zabbix网页端的告警转发
  首先在zabbix主页选择“管理”——“报警媒介类型”——点击“创建媒体类型”若是zabbix版本为3.X配置如下所示:
https://s2.运维网.com/wyfs02/M02/96/33/wKioL1keQznBnjWgAAB4qXHPso0522.png
  若zabbix版本为2.X则删除脚本参数,如下图所示即可
https://s3.运维网.com/wyfs02/M02/95/75/wKioL1kVXHejjIP2AABgx3aPVsY581.png-wh_500x0-wm_3-wmp_4-s_747629217.png
  登陆zabbix命令行界面,使用root用户切换目录至zabbix告警脚本目录。默认路径为“/usr/lib/zabbix/alertscripts”,若是没有,可使用“find / -name "zabbix_server.conf"”查找zabbix配置文件,然后搜索“AlertScript”即可查找到alertscripts的默认路径
https://s2.运维网.com/wyfs02/M01/95/75/wKioL1kVXKLgrphcAAAXQ7W4gCY854.png
  cd至alertscripts目录下,使用“vimbaidu_gaojing.sh”命令创建百度告警脚本。脚本文件如下(可参见附件):
#! /bin/bash
#
# Copyright(c) 2015 Badu.com,Inc. All Rights Reserved
# Date: 2016/01/04
# Name: Zabbix aojing proxy sender
# Version: 1.0
# Brief:
#   Format and send zabbix alerts to baidu gaojing.
# Require:
#   Bash 3.x or higher
# See:
#   Baidu Gaojing API:
#   http://help.gaojing.baidu.com/api.html
#
# option
set -o xtrace
set -o errexit
set -o nounset
# config
# log flag, enabled when set 'TRUE'
declare -r LOG_FLAG='TRUE'
# const
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE}" )" && pwd )"
LOG="${CURRENT_DIR}/gaojing_proxy_history.log"
API_URL="http://gaojing.baidu.com/event/create"
# trigger problem
function send_trigger {
    local service_id=$1
    local service_key=$2
    local status=$3
    local original_id=$4
    local description=$5
    local event_type="trigger"
    if [[ $trigger_status = "OK" ]]; then
      event_type="resolve"
    fi
    local data="{service_id : ${service_id}, original_id : ${original_id}, event_type : \"${event_type}\", description : \"${description}\"}"
    local result=`curl --silent -H "servicekey:${service_key}" -X POST -d "${data}" $API_URL`
# log request and result
    if [[ $LOG_FLAG = "TRUE" ]]; then
      echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]">>$LOG
    fi
}
# error
err() {
#log error info
    if [[ $LOG_FLAG = "TRUE" ]]; then
      echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $@" >>$LOG
    fi
    exit -1
}
function main() {
    if [[ $LOG_FLAG = "TRUE" ]]; then
      echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]">>$LOG
    fi
    if [ $# -lt 3 ]; then
      err "params num not equal to 3,zabbix action config error, params: $@"
    fi
# input args
    local send_to=$1
    local title=$2
    local content=""
    num=0
    for i in $@;
    do
      if [ $num -lt 2 ];then
            num=$(($num+1))
            echo $num
            continue
      fi
      content=$content" "$i
    done

# parse zabbix alert
    local service_id=$(echo ${send_to} | awk -F, '{print $1}')
    local service_key=$(echo ${send_to} | awk -F, '{print $2}')
    local trigger_status=$(echo ${title} \
            | awk -F'|' '{print $1}' \
            | awk -F':' '{print $1}')
    local event_id=$(echo ${title} \
            | awk -F'|' '{print $1}' \
            | awk -F':' '{print $2}')
# validate parsing
    if [[ -z $service_id ]]; then
      err "service_id parse error, params: $@"
    fi
    if [[ -z $service_key ]]; then
      err "service_key parse error, params: $@"
    fi
    if [[ -z $trigger_status ]]; then
      err "trigger_status parse error, params: $@"
    fi
    if [[ -z $event_id ]]; then
      err "event_id parse error, params: $@"
    fi
    send_trigger $service_id $service_key $trigger_status $event_id "$content"
}
main "$@"  或使用如下命令下载脚本文件至zabbix告警目录,赋予脚本执行权限,并且将脚本文件存放的文件夹及文件夹内的文件权限均改为“zabbix:zabbix”权限,此操作原因是告警脚本执行后会在其所在目录生成一个名为“gaojing_proxy_history.log”的日志文件,若用户及组权限不对则脚本无法执行下去告警将会发送失败。
  wgethttp://gaojing.baidu.com/doc/zabbix-help/download/gaojing_zabbix.sh -O/usr/lib/zabbix/alertscripts/gaojing_zabbix.sh
  cd /usr/lib/zabbix/alertscripts
  mv gaojing_zabbix.sh baidu_gaojing.sh
  chmod +x baidu_gaojing.sh
  cd ..
  chown –R zabbix:zabbix alertscripts
  完成后进去zabbix告警主界面,选择“管理”——“用户”——“Admin”
https://s5.运维网.com/wyfs02/M02/95/75/wKiom1kVXcHz0topAABgnHtdbvc333.png
  在新出窗口中单击“报警媒介”
https://s2.运维网.com/wyfs02/M00/95/75/wKiom1kVXgzx2-kDAAChbRHiMHk699.png
  在告警媒介处选择“添加”然后在新弹出的“报警媒介”窗口中,将类型修改为之前创建的“baidu-gaojing”,收件人输入之前记录的“ID号,token号”使用英文逗号将其隔开。
https://s2.运维网.com/wyfs02/M00/95/75/wKioL1kVXgyCxqGhAABkVg2I7Yk869.png
  最后效果如下
https://s3.运维网.com/wyfs02/M02/95/75/wKiom1kVXiiSF6vAAACwEdCADsU749.png-wh_500x0-wm_3-wmp_4-s_2826885914.png
  然后在权限处,将所有机器的读写权限赋予Admin用户
https://s3.运维网.com/wyfs02/M00/95/75/wKioL1kVX1ORuWg8AACv9XRR6BM519.png-wh_500x0-wm_3-wmp_4-s_2670174499.png
  然后需要创建一个动作,如下图所示,依次点击“配置”——“动作”——“创建动作”
https://s3.运维网.com/wyfs02/M01/95/76/wKioL1kVX46BMLutAACYpAjvFLw764.png
  

  动作界面中,名称可随意输入,默认接收人必须按规定输入“{TRIGGER.STATUS}:{EVENT.ID}”,默认信息可以按照需求自定义,是否需要回复信息也可按需选择。
https://s3.运维网.com/wyfs02/M02/95/76/wKiom1kVX47y51kOAACmXQb-N3g454.png
  条件选择默认即可
https://s1.运维网.com/wyfs02/M00/95/76/wKioL1kVX9WRWwKaAABoVjJBM9k060.png-wh_500x0-wm_3-wmp_4-s_2877501497.png
  操作选择界面,需选择新增,创建新的动作操作。
https://s4.运维网.com/wyfs02/M00/95/76/wKiom1kVX9ah9IJcAABi5-4_4o8808.png-wh_500x0-wm_3-wmp_4-s_2465354040.png
  此时需在发送到用户处添加“Admin”管理用户,在发送到处选择之前新建的“baidu-gaojing”,点击添加,完成动作的配置。
https://s4.运维网.com/wyfs02/M00/95/76/wKioL1kVX9bAtUkKAACygQq6aWg636.png-wh_500x0-wm_3-wmp_4-s_2643250060.png
  完成后可手动触发一个告警,比如增加磁盘使用率将其达到告警阀值,或者跑些应用将cpu内存增高之类的,测试告警是否会发送到百度告警平台,并手机微信收到提示短信。
  


  第四章故障排错
  若微信未收到告警信息,可按照以下步骤进行排错。
  首先进入zabbix主界面在右下角最近20个问题处,查看告警是否触发,触发后再动作下方的1处,查看告警是否发送,若是告警已送达,则证明zabbix已将告警整合送至脚本处。
https://s5.运维网.com/wyfs02/M01/95/76/wKioL1kVYDfDEoJHAAEcmtAaIW4403.png
https://s4.运维网.com/wyfs02/M00/95/76/wKioL1kVYDfx9fLfAAFBm1qonso554.png
  

  然后可以使用ssh登录zabbix服务器,cd至告警脚本存放目录“/usr/lib/zabbix/alertscripts”使用ls查看该目录下是否生成一个log日志文件,若无日志文件则说明告警目录权限并非zabbix:zabbix,只是日志无法写入成功,修改目录权限即可。
https://s5.运维网.com/wyfs02/M01/95/76/wKiom1kVYLvzMvx2AAANyVrxlCY641.png
  然后使用cat 查看日志文件,若告警文件内提示“params num not equal to 3,zabbix action config error, params:”
https://s5.运维网.com/wyfs02/M01/95/76/wKioL1kVYLyygd57AAATzbHm5co477.png
  则说明在网页端的“创建报警媒介”界面未填写脚本参数,按下图将参数添加即可。
https://s4.运维网.com/wyfs02/M02/95/76/wKiom1kVYOHSAtJvAABl6t8LzOk956.jpg-wh_500x0-wm_3-wmp_4-s_549941398.jpg
  然后可以使用“tail -n 10 -f gaojing_proxy_history.log”命令实时监控该告警日志,并且再次触发告警,查看告警日志内是否有内容生成,若有类似下图的告警内容可尝试以下步骤。
https://s4.运维网.com/wyfs02/M01/95/76/wKiom1kVYPmgONdyAAAhX_jo8B0703.png
  另外,若是不希望自动生成告警日志,可将“baidu_gaojing.sh”告警脚本中的declare -r LOG_FLAG='TRUE' 这部分语句,修改为FALSE 来关闭告警日志。
  由于脚本采用curl命令向百度告警传输告警内容,所以某些精简安装的系统会为安装该命令,ubuntu下可使用apt-get install curl 来安装curl。另外可以使用下列脚本来测试百度告警的告警接收情况,具体使用如下:
  首先cd至tmp目录,新建一个名为sendtest.sh的脚本,内容包含
  #!/bin/bash
  SERVICE_KEY="xxxxxxxxxxxxxxxxxxxxxxx"
  SERVICE_ID=xxxx
  curl -H"servicekey:$SERVICE_KEY" -X POST -d"{'service_id':$SERVICE_ID,'description':'This is the eventdescription.','event_type':'trigger'}"http://gaojing.baidu.com/event/create
  service_key为百度告警的token号,而service_id则为百度告警的id号,完成后,可用“sh sendtest.sh”命令发送告警测试,几秒后再百度告警页面即可收到告警信息,内容为” This is the event description.”。
  



附件:http://down.运维网.com/data/2366654

beson2000 发表于 2019-1-24 20:43:02

谢谢分享
页: [1]
查看完整版本: zabbix接入百度告警详细攻略