yzqzs 发表于 2019-1-25 08:34:10

centos6.5编译安装zabbix2.4及微信企业号告警

  在centos6.5上编译安装zabbix2.4
  

  zabbix server安装节点为:192.168.1.36
  被监控主机节点为:192.168.1.37
  

  本来想在centos6.5上安装zabbix3.0,没想到装到第一步就进行不下去了,百度、谷歌好半天也没搜到答案,好多人也遇到同样的问题:就是进入zabbix的web页面,第一步点击下一步时,现象是页面刷新后,没有进行下一步,所以,只好作罢,改装了zabbix2.4。
http://s4.运维网.com/wyfs02/M00/89/AF/wKiom1gZravCRyFjAADoY3X4BMs442.png
  

  

  还有一个失败是,本来打算使用企业公众号进行微信的zabbix告警实验,但也是到test时候一直失败,苦于找不到解答,只好采用网上文档较多的使用微信企业号进行zabbix告警实验。
http://s3.运维网.com/wyfs02/M01/89/AF/wKiom1gZrQ_hS2JgAABJpwozD88981.png
  

  所以,以上是遇到的问题解决不了,只好绕开问题把实验做成功。
  

  zabbix的server端IP:192.168.1.36
  zabbix的agent端IP:192.168.1.37
  

  前提是两台主机的防火墙和selinux都关闭:
  ]# service iptabels stop
  ]# vim /etc/sysconfig/selinux
  SELINUX=disabled
  

  在server安装基础软件包,这里的环境使用yum安装,如果使用源码安装也是可以的
  ]# yum -y install wget vim tree gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp net-snmp-devel curl-devel
  

  启动httpd、mysql并设置成开机自动启动
  ]# service httpd start
  ]# service mysqld start
  ]# chkconfig httpd on
  ]# chkconfig mysqld on
  

  如果实际生产中设置了iptables,则可参考如下设置:
  ]# iptables -I INPUT -p tcp -m multiport --destination-port 80,10050:10051 -j ACCEPT
  ]# iptables -L -n
  Chain INPUT (policy ACCEPT)
  target   prot opt source               destination         
  ACCEPT   tcp--0.0.0.0/0            0.0.0.0/0         multiport dports 80,10050:10051
  ACCEPT   all--0.0.0.0/0            0.0.0.0/0         state RELATED,ESTABLISHED
  ACCEPT   icmp --0.0.0.0/0            0.0.0.0/0         
  ACCEPT   all--0.0.0.0/0            0.0.0.0/0         
  ACCEPT   tcp--0.0.0.0/0            0.0.0.0/0         state NEW tcp dpt:22
  REJECT   all--0.0.0.0/0            0.0.0.0/0         reject-with icmp-host-prohibited
  Chain FORWARD (policy ACCEPT)
  target   prot opt source               destination         
  REJECT   all--0.0.0.0/0            0.0.0.0/0         reject-with icmp-host-prohibited
  Chain OUTPUT (policy ACCEPT)
  target   prot opt source               destination
  #保存iptables规则
  ]# service iptables save
  iptables: Saving firewall rules to /etc/sysconfig/iptables:
  

  三.配置PHP参数
      zabbix的运行需要特定的php参数支持,修改如下
  ]# sed -i "s@;date.timezone =@date.timezone = Asia/Shanghai@g" /etc/php.ini
  ]# sed -i "s@max_execution_time = 30@max_execution_time = 300@g" /etc/php.ini
  ]# sed -i "s@post_max_size = 8M@post_max_size = 32M@g" /etc/php.ini
  ]# sed -i "s@max_input_time = 60@max_input_time = 300@g" /etc/php.ini
  ]# sed -i "s@memory_limit = 128M@memory_limit = 128M@g" /etc/php.ini
  ]# sed -i "s@;mbstring.func_overload = 0@ambstring.func_overload = 2@g" /etc/php.ini
  修改httpd的FQDN错误,重启httpd服务
  ]# echo "ServerName localhost:80" >>/etc/httpd/conf/httpd.conf
  ]# /etc/init.d/httpd restart
  

  
  四.下载zabbix-2.4.5.tar.gz
  https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.4.5/zabbix-2.4.5.tar.gz/download?use_mirror=jaist
  五.添加zabbix用户和组
  ]# groupadd -g 201 zabbix
  ]# useradd -g zabbix -u 201 -s /sbin/nologin zabbix
  六.安装zabbix-server端
  ]# tar xf zabbix-2.4.5.tar.gz
  ]# cd zabbix-2.4.5
  ]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl、
  ]# make && make install
  #创建zabbix数据库以及相关表
  ]# mysql -e "create database zabbix default charset utf8;"
  ]# mysql -e "grant all on zabbix.* to zabbix@localhost identified by 'zabbix';"
  ]# mysql -uzabbix -pzabbix zabbixzabbix.sql
  ]# sed -i 's/latin1/utf8/g' zabbix.sql
  2.删除zabbix数据库
  > drop database zabbix;
  3.关闭mysql数据库,设置默认字符集
  ]# service mysqld stop
  #在mysql配置文件中添加字符集参数
  ]# vim /etc/my.cnf
  
  datadir=/var/lib/mysql
  socket=/var/lib/mysql/mysql.sock
  default-character-set = utf8
  user=mysql
  # Disabling symbolic-links is recommended to prevent assorted security risks
  symbolic-links=0
  
  log-error=/var/log/mysqld.log
  pid-file=/var/run/mysqld/mysqld.pid
  4.启动mysql并恢复zabbix数据库
  ]# service mysqld start
  ]# mysql
  > create database zabbix;
  > show create database zabbix;
  > show databases;
  > use zabbix;
  > source zabbix.sql;
  

  测试agent端与server端是否通信正常:
  ]# zabbix_get -s127.0.0.1 -p10050 -k"system.uptime"
  65819
  注:因为,zabbix服务器上安装了server端和agent端,所以直接在本地测试即可。
  有输出,则表示通信正常。
  

  注意:zabbix监控server本机,要先在页面上设定zabbix-server监控,才能使zabbix server端监控自己;
http://s5.运维网.com/wyfs02/M02/89/B6/wKiom1gam3yhzGn_AACxM1zcjws994.png
  根据下图:

http://s5.运维网.com/wyfs02/M00/89/B6/wKiom1ganJWzImEhAABhVLbvKlA155.png
http://s3.运维网.com/wyfs02/M01/89/B6/wKiom1ganJWzBq1mAABgJazYfJw931.png
http://s3.运维网.com/wyfs02/M00/89/B3/wKioL1ganJbQGyAnAAEuJeMBaAQ094.png
http://s3.运维网.com/wyfs02/M01/89/B6/wKiom1ganJeQmRrFAAFmcQMkaW0530.png
http://s2.运维网.com/wyfs02/M01/89/B3/wKioL1ganJeSSJVKAABXtzhb2c0755.png
  最后点击《添加》按钮即可。

  此时,稍等片刻,应该就会在检测中--》仪表盘页面,就可看到
http://s5.运维网.com/wyfs02/M00/89/B6/wKiom1ganZ_gNv-vAADKeLSMKOw272.png
  这里的截图,显示绿色为已经监控到的主机,有2个,原因是,在写这篇博客时,已经做完整个实验,添加过另一台监控的主机了,所以显示有监控了2台主机(包括zabbix主机和一个agent端的主机)。
  

  十二.在client端192.168.1.37安装zabbix
  安装基础软件包
  ]# yum install wget vim tree gcc gcc-c++ -y
  groupadd-g201zabbix
  useradd-gzabbix -u201 -s /sbin/nologin zabbix
  tar xf zabbix-2.4.5.tar.gz
  cd zabbix-2.4.5
  #开始编译安装zabbix客户端
   ./configure --prefix=/usr/local/zabbix --enable-agent
  ]# make && make install
  #创建zabbix的日志目录
  ]# mkdir /var/log/zabbix
  ]# chown zabbix.zabbix /var/log/zabbix
  #复制zabbix_agentd启动文件到/etc/init.d目录下
  ]# cp misc/init.d/fedora/core/zabbix_agentd/etc/init.d/
  ]# chmod 755 /etc/init.d/zabbix_agentd
  #在iptables中放行10050和10051端口
  ]# iptables -I INPUT -p tcp -m multiport --dports 10050:10051 -j ACCEPT
  ]# service iptables save   #保存iptables规则
  #查看iptables结果
  ]# iptables -L -n
  Chain INPUT (policy ACCEPT)
  target   prot opt source               destination         
  ACCEPT   tcp--0.0.0.0/0            0.0.0.0/0         multiport dports 10050:10051
  ACCEPT   all--0.0.0.0/0            0.0.0.0/0         state RELATED,ESTABLISHED
  ACCEPT   icmp --0.0.0.0/0            0.0.0.0/0         
  ACCEPT   all--0.0.0.0/0            0.0.0.0/0         
  ACCEPT   tcp--0.0.0.0/0            0.0.0.0/0         state NEW tcp dpt:22
  REJECT   all--0.0.0.0/0            0.0.0.0/0         reject-with icmp-host-prohibited
  Chain FORWARD (policy ACCEPT)
  target   prot opt source               destination         
  REJECT   all--0.0.0.0/0            0.0.0.0/0         reject-with icmp-host-prohibited
  Chain OUTPUT (policy ACCEPT)
  target   prot opt source               destination
  #修改启动文件和配置软连接
  ]# sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g" /etc/init.d/zabbix_agentd
  ]# ln -s /usr/local/zabbix/etc/ /etc/zabbix
  ]# ln -s /usr/local/zabbix/bin/*/usr/bin
  ]# ln -s /usr/local/zabbix/sbin/*/usr/sbin/
  #/etc/zabbix/zabbix_agentd.conf,这里的IP地址写的是zabbix_server端的IP地址
  ]# sed -i "s@Server=127.0.0.1@Server=192.168.3.28@g" /etc/zabbix/zabbix_agentd.conf
  ]# sed -i "s@ServerActive=127.0.0.1@ServerActive=192.168.3.28:10051@g" /etc/zabbix/zabbix_agentd.conf
  ]# sed -i "s@tmp/zabbix_agentd.log@var/log/zabbix/zabbix_agentd.log@g"/etc/zabbix/zabbix_agentd.conf
  ]# sed -i "s@^# UnsafeUserParameters=0@UnsafeUserParameters=1\n@g" /etc/zabbix/zabbix_agentd.conf
  ]# egrep -v '^$|^#' /etc/zabbix/zabbix_agentd.conf
  LogFile=/var/log/zabbix/zabbix_agentd.log
  Server=192.168.1.36
  ServerActive=192.168.1.36:10051
  Hostname=Zabbix server
  UnsafeUserParameters=1
  #设置zabbix_agentd开机自动启动,并启动zabbix_agentd服务
  ]# chkconfig zabbix_agentd on
  ]# service zabbix_agentd start
  

  在被监控主机命令行上设置完后,就可在zabbix的web管理页面上添加监控主机了。

  添加步骤,同监控zabbix本机的步骤,这里不再赘述。
  英文向导:Configuration→Hosts→Create host
  这里要说明的是,在添加被监控主机时,主机名称和IP地址,要写被监控主机上的。
  然后,再点击Configuration→Hosts的template增加模板(select)
  加完后点击Configuration→Hosts效果,Z变绿就OK了。
  http://s4.运维网.com/wyfs02/M02/89/B4/wKioL1gao-ODDG8oAACgvvbTbco269.png
  至此zabbix基础搭建完成,接下来是重点微信报警。
  

十一.设置微信企业号


https://qy.weixin.qq.com/ 这个地址申请企业号 按照步骤一步步来就行了
  这个微信企业号也是从网上搜到的文档,反正就是自己注册一个企业号,用手机扫描,输入个人身份证号、手机号就可以。基本就是鼠标操作,没有难度,顶多点错了,重新再点一遍呗。
  

  参考文档出处:http://mxlmgl.blog.运维网.com/9834691/1831695
  

  进入“通讯录”,点击“组织架构”旁边的加号,点击“新增成员”
  http://s3.运维网.com/wyfs02/M00/89/B6/wKiom1gapljjWWxDAAJw24V8f4I373.png
注:这里的账号相当于你的企业账号,与微信号无关。
必须先在此处创建用户,并且填写正确的微信号或者手机号,才可通过扫描二维码关注该企业号
我这里是crystal(这个会在后面脚本参数里用到)
  http://s4.运维网.com/wyfs02/M02/89/B6/wKiom1gapyKjclhSAAJ-6zYMZ1Y651.png
  关注企业号的方法:点击左侧的“设置”-二维码,使用微信扫一扫扫描二维码
  http://s5.运维网.com/wyfs02/M01/89/B4/wKioL1gap5PTST-6AAKzWgVe9hM891.png
  点击左侧列的“应用中心”,点击“自建应用”的图标zabbix
  http://s5.运维网.com/wyfs02/M00/89/B4/wKioL1gaqTaDB2TJAAH7DrovmkU051.png
  注:创建应用时,上传了美女图片,本人屌丝喜欢看美女,哈哈。
  http://s3.运维网.com/wyfs02/M01/89/B7/wKiom1gaqZ3AgjxTAAHsAdjHMMw370.png
  

  这里要记住一个值:应用ID,后面配置需要填写。
  

  
设置-功能设置-权限管理-新建管理组
管理员必须事先已经关注了企业号,并且已经设置好邮箱地址

http://s3.运维网.com/wyfs02/M01/89/B7/wKiom1gaq_aT057WAALZqaK-1dw479.png增加完的系统组:
注意应用权限,通讯录权限,
注意:这里要记录下来下面的CorpID和Secret后面配置里要用到。
  

下面是重点了:
http://qydev.weixin.qq.com/debug   微信企业号接口调试工具(看看接口是否能调用成功)
这里的CorpID和Secret填上,就会出现access_token
填写上步骤获得的信息,点击检查问题:

http://s1.运维网.com/wyfs02/M02/89/B5/wKioL1garQuxByW7AAFFq4EABso866.png
检测后则会继续出现如下信息:(ok表示成功)

http://s1.运维网.com/wyfs02/M00/89/B5/wKioL1garbbhJX29AADVZ5MGVm4830.png
  得出的返回结果,复制红色框中的内容,下一步要用到。
  然后接口类型换成发送消息
  填写信息:
  http://s2.运维网.com/wyfs02/M02/89/B8/wKiom1gasfCSQn4JAADECAeEIzA686.png
这里的access_token已经在上一步获得了,重点是body,经过看官方给的格式小编总结如下:


{
   "touser": "crystal",
   "toparty": " PartyID1 | PartyID2 ",
   "totag": " TagID1 | TagID2 ",
   "msgtype": "text",
   "agentid": 1,
   "text": {
       "content": "lala(http://xxxxx)"
   },
   "safe":"0"
}
这里需要把touser的值(crystal)换成自己的员工账号
点击检查问题
然后大家就可以在微信企业号收到消息了,内容是lala(http://xxxxx)
http://s1.运维网.com/wyfs02/M00/89/B6/wKioL1gas5jSCswlAABTlflC5ao881.png
以上证明接口调用没问题了,接下来就该上脚本了。
  

首先:脚本放什么位置
             /usr/local/zabbix/share/zabbix/alertscripts

            chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
   chmod +x /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
好了,上正菜:
  ]# vim /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
   http://s2.运维网.com/wyfs02/M00/89/B6/wKioL1gatOHBOePeAADPokrazyY632.png
  

  #!/bin/bash
  CorpID=wxef******7423(此处打码)
  Secret=PYzCHeqi3Jjbp06V***(此处打码)_cKoarAeSqn8pLls
  GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
  Gtoken=$(/usr/bin/curl$GURL -H "DNT: 1" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh;q=0.8" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 BIDUBrowser/8.1 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "X-DevTools-Emulate-Network-Conditions-Client-Id: B546FC80-414C-403F-95F0-EB0F70E58EF7" -H "Connection: keep-alive" -H "Cache-Control: max-age=0" --compressed | awk -F \" '{print $4}')
  

  PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
  function body() {
  local int appId=1
  local userId=$1
  local partyId=1
  local tag=1
  local msg=$(echo "$@" | cut -d" " -f3-)
  printf '{\n'
  printf '\t"touser":"'"$userId"\"",\n"
  printf '\t"toparty":"'"$partyId"\"",\n"
  printf '\t"msgtype": "text",'"\n"
  printf '\t"totag":"'"$tag"\"",\n"
  printf '\t"agentid":"'"$appId"\"",\n"
  printf '\t"text":{\n'
  printf '\t\t"content":"'"$msg"\"
  printf '\n\t},\n'
  printf '\t"safe":"0"\n'
  printf '}\n'
  }
  body $1 $2 $3
  /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
  测试方法:
  ./weixin.sh crystal 1 helloevery
  
crystal 是用户账号(不是微信号,是你在企业号里的名字)
1 这是部门的ID(或者是应用ID,我的都是1)
test:是你想发的内容
  


  http://s1.运维网.com/wyfs02/M00/89/B7/wKioL1gazvySPa1NAABCZv2t2H8521.png
  
出现以上内容说明脚本执行成功,你的微信企业号会收到你发的报警内容,至此我们成功了多一半了*..*
http://s2.运维网.com/wyfs02/M01/89/BA/wKiom1gaz5eDedQkAAA7OqYy0V0768.png
以上是手机微信收到的内容。
接下来我们要做的就是在web界面设置报警媒介类型和触发动作了
点击管理(Administration)-媒体类型(Mediatypes)-创建媒体类型(Create media type)
  http://s5.运维网.com/wyfs02/M02/89/BA/wKiom1ga0aTARZ0DAACmd5XkxYg049.png
  填写完后,即可看到示警媒介类型增加了一个weixin。
  下一步,点击点击管理(Administration)-Users Create user
http://s1.运维网.com/wyfs02/M00/89/BA/wKiom1ga02bw36yVAACTaTypVGs828.png
http://s4.运维网.com/wyfs02/M00/89/BA/wKiom1ga02egZD24AACQIDRM9mc587.png
  下一步,点击点击管理(Administration)-Users Create user
  
http://s3.运维网.com/wyfs02/M00/89/B7/wKioL1ga1H2iHHKqAABiO6NP2to317.png
  选择用户组:
http://s5.运维网.com/wyfs02/M01/89/BA/wKiom1ga1H_xV8gtAACy7KZ8xD8577.png
  
http://s1.运维网.com/wyfs02/M02/89/BA/wKiom1ga1Tzj6AtNAABOyT83YBc880.png
  此时,先不要点击添加,设置示警媒介后再添加。
http://s3.运维网.com/wyfs02/M00/89/B8/wKioL1ga2W3wDv33AABWGRqgAc0524.png
  选择创建的weixin:
http://s3.运维网.com/wyfs02/M02/89/BA/wKiom1ga2Tih15HTAACBD6fvbfo693.png
在Media点add
类型(ty)pe选刚才定义的weixin
收件人(send to) :填你的微信号
http://s3.运维网.com/wyfs02/M02/89/B8/wKioL1ga2TiwsrpBAABy9Mn6vJ0529.png
  接下来在permissions中把user_type改成超级管理员
http://s5.运维网.com/wyfs02/M00/89/B8/wKioL1ga2niAeZfwAABMEmm2wAE109.png
http://s5.运维网.com/wyfs02/M01/89/BA/wKiom1ga2njRA8SlAACQ6-ekfrY154.png
  点击添加,到此user增加完毕了。
  http://s2.运维网.com/wyfs02/M01/89/BA/wKiom1ga2weCyQAfAACaNvqUMC8739.png
  下面一步是创建触发动作
  
http://s5.运维网.com/wyfs02/M01/89/B8/wKioL1ga3W6goQ0qAACXA0EnmzA767.png
http://s1.运维网.com/wyfs02/M00/89/B8/wKioL1ga3W7zVvcQAACAyXnB1BM522.png
  默认信息:
  Host:{HOST.NAME}
Time:{EVENT.DATE}{EVENT.TIME}
Status:{TRIGGER.STATUS}
Event:{TRIGGER.NAME}


恢复信息:
  
Server recovered.
Host:{HOST.NAME}
Time:{EVENT.DATE}{EVENT.TIME}
Status:{TRIGGER.STATUS}
Event:{TRIGGER.NAME}
  
这样当服务器恢复后,可以收到一条以Serverrecovered开头的信息,能及时知道服务器恢复正常。

  条件(Conditions)无视。
  注意:必须填完下面operations里的选项才能点击添加(ADD)
  
http://s2.运维网.com/wyfs02/M02/89/BA/wKiom1ga35-xJ3M8AABUgsdtGQM907.png
http://s1.运维网.com/wyfs02/M02/89/B8/wKioL1ga35_wLa2uAABewMaDJt4598.png
http://s1.运维网.com/wyfs02/M00/89/BA/wKiom1ga36CwI38WAACVytHOSN0038.png
  
在填完操作(operations)里的选项时先按里面的add再按外面的add,否则会报错
  http://s5.运维网.com/wyfs02/M02/89/BA/wKiom1ga4EPAPQA2AABcWlGhxL4670.png
http://s4.运维网.com/wyfs02/M00/89/BA/wKiom1ga4M3gtL07AABac5Ximow919.png
  至此配置完毕,现在关闭被监控机,等一会,若微信收到消息,则配置成功。
  大概等了有不到5分钟,微信报警就收到了。
  
http://s1.运维网.com/wyfs02/M02/89/BA/wKiom1ga4v-xsML8AAB28GjLUDc357.png
http://s5.运维网.com/wyfs02/M02/89/B8/wKioL1ga4wCyO7bDAACxESlWHHE271.png
  
到此为止,实验大功告成!!
  烧香,网上能找到文档且能搞成功!!
  

  




页: [1]
查看完整版本: centos6.5编译安装zabbix2.4及微信企业号告警