linux上配置zabbix并设置企业微信,机器人以及自主告警
配置lamp
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
(1)配置准备:
Linux服务端一台
IP地址:192.168.12.4
Linux客户端一台
IP地址:192.168.12.55
(2)配置服务器端:
1.构建lamp架构:
yum install -y httpd mariadb-server mariadb php php-mysql php-gd libjpeg php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash
vi /etc/httpd/conf/httpd.conf //编辑apache配置文件
DirectoryIndex index.html index.php //添加index.php
mysql_secure_installation //初始化数据库配置
mysql -u root –p //root用户登录数据库进行配置
CREATE DATABASE zabbix character set utf8 collate utf8_bin; //创建zabbix数据库
GRANT all privileges ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix'; //
给zabbix用户授权管理zabbix数据库
flush privileges; //刷新权限
安装zabbix
Yum install php-mbstring* php-bcmath* -y
(如果装不上或者报错可以去下面这个地址去找对应版本:
http://buildlogs.cdn.centos.org/c7.01.u/php/20150623210225/5.4.16-36.el7_1.x86_64/)
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm//网上下载最新版本的zabbix源(自动生成Yum源)
yum install zabbix-server-mysql zabbix-web-mysql –y
zcat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz | mysql -uzabbix -p zabbix //生成数据库文件
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
修改配置文件/etc/httpd/conf.d/zabbix.conf,时区改成 Asia/Shanghai:
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai
systemctl enable zabbix-server //设置zabbix开机启动
[root@server ~]# systemctl start zabbix-server //启动zabbix服务
systemctl restart httpd //重启apache服务
访问http://192.168.12.4/zabbix/
去到php.ini下设置timezome
设置zabbix-agent
1.下载zabbix-agent:
wget http://repo.zabbix.com/zabbix/4.0/rhel/5/x86_64/zabbix-agent-4.0.0-2.el5.x86_64.rpm
然后解压如图:
配置监控参数:
LogFileSize=0
ListenPort=10050 #启动监听端口
ListenIP=0.0.0.0 #监听所有IP
Server=192.168.12.4 #被动模式下必填,将zabbix-server端的ip填入
#ServerActive=192.168.12.4 #主动模式下填写
启动监控服务并查看
最后启动服务:service zabbix-agent restart
设置主机,添加主机群组以及agent接口
设置添加现有模板
Zabbix-agent标识会被点亮
设置企业微信监控
企业微信api申请详情看以下地址:
http://blog.51cto.com/wuhf2015/1688614
设置步骤:
下图为调出api发送企业微信调出脚本的位置以及设置:
Vi /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts/
脚本内容为:
#!/bin/bash
#set -x
CorpID="ww379d02732f0fadd"
Secret="Q9mMPU1RJCwcva-x_NvBaBpdsN45lkJmaW6AlurLKm"
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
#echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
function body(){
local int agentid=1000002 应用的id号
local UserID=$1
local PartyID=2 应用位置
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"agentid": "'"$agentid"\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
设置zabbix企业微信报警步骤
设置操作:
设置恢复操作:
设置机器人告警
和微信告警一样,微信机器人告警也是通过传入url数据来获取信息,如下是脚本设置在
/usr/lib/zabbix/alertscripts/zabbix.py:
#!/usr/bin/python
#-*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=790a8c81-e134-44cc-a139-f0d2045f2f1a
#api_url是通过webhook协议设置的机器人的api接口
def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": test
},
}
print(requests.post(api_url,json.dumps(json_text)).content)
if __name__ == '__main__':
test = sys.argv[1]
msg(test)
因为脚本里只要求输入一个参数,所以改下zabbix里传入的参数设置:
其它和设置企业微信告警一样不用变。
设置自主脚本监控
在zabbix_agentd.conf修改:
UnsafeUserParameters=1(这个设置原本是0,并去掉#)
接着添加脚本地址到设置中:
UserParameter=degree,/bin/bash /etc/zabbix/scripts/degree.sh
(前面的degree是标识号,也是zabbix里监控项的键值,后面是路径)
如下是监控脚本内容:
#!/bin/bash
i=`ipmitool sensor get "01-Inlet Ambient" |grep "Sensor Reading" |awk -F [":("] '{print $2}'`
echo $i
随后修改zabbix设置:
设置监控项和触发器完成之后就可以试验了 如果要使用ipmitool,需要给/dev/ipmi0添加rw的权限,不然zabbix无法调用
设置微信告警自主汇报固定信息:
修改脚本使脚本不接收参数,自主输入参数请求url即可,路径在/usr/lib/zabbix/alertscripts/zabbix.sh:
#!/bin/bash
a_1=`sh /etc/zabbix/scripts/degree.sh`
a="IP:10.2.2.107\nTemperature:$a_1"
CorpID="ww07bb4b5dba065e5"
Secret="JFJT0DOscBakUVH4lExdOHAC8XHbjNRZyXXRfQB5Pc"
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
#echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
function body(){
local int agentid=1000003
local UserID=$1
1. List item
local PartyID=21
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"agentid": "'"$agentid"\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $a)" $PURL