Centos搭建zabbix、zabbix邮件和企业微信报警


安装数据库

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

yum install zabbix-server-mysql zabbix-web-mysql zabbix-server zabbix-agent mariadb-server -y

mysql_secure_installation

systemctl start mariadb

systemctl enable mariadb

mysql –uroot -p

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';



导入储室架构和数据

cd /usr/share/doc/zabbix-server-mysql-3.4.15/

zcat create.sql.gz | mysql -uroot zabbix -p123456


配置zabbix-server

vi /etc/zabbix/zabbix_server.conf

DBHost=localhost(指定的ip,本机为内网。其他为公网)

DBName=zabbix

DBUser=zabbix

DBPassword=123456     (zabbix数据库密码一致)

cat /etc/zabbix/zabbix_server.conf | grep -v ^#| grep -v ^$    (过滤#与空行的)

systemctl start zabbix-server

systemctl enable zabbix-server


更改时区

vi /etc/httpd/conf.d/zabbix.conf

php_value date.timezone Asia/Shanghai

systemctl start httpd

systemctl enable httpd

防火墙(在官网设置,在主机内可跳过)

firewall-cmd --permannet -add-service=http(开启http端口,可直接写http)

firewall-cmd --reload

firewall-cmd --list-all


vi /etc/chrony.conf

server cn.ntp.org.cn iburst(注释其他4个时间server)

systemctl start chronyd

systemctl enable chronyd

timedatectl(查看是否同步,同步为yes)


访问网站

http://ip/zabbix/

默认用户名:Admin

默认密码  :zabbix


二、Web乱码问题,用winscp上传本地电脑C:\Windows\Fonts的   simkai.ttf

find / -name graphfont.ttf 直接找到zabbix(linux)字体文件夹


cd /usr/share/zabbix/fonts/

rm -f /etc/alternatives/zabbix-web-font

ln -s /usr/share/zabbix/fonts/simkai.ttf  /etc/alternatives/zabbix-web-font

systemctl restart zabbix-server



安装zabbix_agent客户端

rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm

yum install -yzabbix-agent zabbix-sender

设置映射

vi /etc/hosts #写入公网和对应的虚拟机名字

服务端公网IP server

管理端公网ip 214agent


vi/etc/zabbix/zabbix_agentd.conf

Server=$zabbix_server_ip(zabbix_server服务端的内网ip,有些会报错)


firewall-cmd –permanent–add-port=10050/tcp

firewall-cmd –reload

添加linux主机

添加群组(群组中模板可共用,就不用重新添加监控项)

我自己创建的模板

成功为绿色

添加监控项

https://www.zabbix.com/documentation/4.2/manual/config/items/itemtypes/zabbix_agent(键值参考)

 

键值使用可参考zabbix官网

 

传参

在agent写入绝对路径的脚本

UserParameter=Meminfo[*],/usr/bin/cat /proc/meminfo|grep $1|awk '{print $$2}'

在server中用zabbix_get命令执行测试,命令可运行,无报错,查看结果正常

在web界面找到写入参数的agent的主机,去创建监控项

写入想查的项 例如:Meminfo[Buffers]  Meminfo[MemFree]等。

查出来是没有单位的

find / -name func.inc.php

cat /usr/share/zabbix/include/func.inc.php |grep blackList

在$ blackList中加入单位,注意格式逗号隔开

邮件报警系统

流程:触发器----动作----报警媒介

创建触发器

创建报警媒介(我用的163这个是配置发送邮箱)

再配置接收人的邮箱

创建动作

 

这个在网上截取的,只改前面的正文

操作”里的

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息:{TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件  ID:{EVENT.ID}

恢复操作

恢复主机:{HOSTNAME1}

恢复时间:{EVENT.DATE} {EVENT.RECOVERY.TIME}

恢复等级:{TRIGGER.SEVERITY}

恢复信息:{TRIGGER.NAME}

恢复项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件  ID:{EVENT.ID}


添加完成后,开始测试,写入代码在agent中

dd if=/dev/zero of=/tmp/zabbix bs=1G count=25

/dev/zero—传字符设备

/tmp/zabbix:到这个临时文件

bs=1G:字符产生的每个文件大小为1G

count=25:数量25个

 

删除:

直接删除文件

rm –rf /tmp/zabbix

若没有恢复就kill掉进程

查看结果

 

 

企业微信报警(要自己去注册,比较简单 地址:https://work.weixin.qq.com

配置环境

创建应用:1、上传一张图片 2、写入应用名称

记住3个值

Corpid(企业ID)     :ww5ee*************

Secret                       :eHn5mdONdjckh**********************

Agentid                       :1000002                        

在server修改拥有人与拥有组

chown -R zabbix:zabbix/usr/lib/zabbix/alertscripts/

 

在网上找的python脚本写入alertscripts(.py结尾,如wechat.py)

脚本内容(修改圈起部分)

 

#!/usr/bin/python2.7

#_*_coding:utf-8 _*_


import requests,sys,json

import urllib3

urllib3.disable_warnings()


reload(sys)

sys.setdefaultencoding('utf-8')


defGetTokenFromServer(Corpid,Secret):

    Url ="https://qyapi.weixin.qq.com/cgi-bin/gettoken"

    Data = {

        "corpid":Corpid,

        "corpsecret":Secret

    }

    r = requests.get(url=Url,params=Data,verify=False)

    print(r.json())

    if r.json()['errcode'] != 0:

        return False

    else:

        Token = r.json()['access_token']

        file =open('/tmp/zabbix_wechat_config.json', 'w')

        file.write(r.text)

        file.close()

        return Token


defSendMessage(User,Agentid,Subject,Content):

    try:

        file =open('/tmp/zabbix_wechat_config.json', 'r')

        Token = json.load(file)['access_token']

        file.close()

    except:

        Token = GetTokenFromServer(Corpid,Secret)


    n = 0

    Url ="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" %Token

    Data = {

        "touser": User,                                 #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。

        #"totag": Tagid,                                #企业号中的标签id,群发使用(推荐)

        #"toparty": Partyid,                             #企业号中的部门id,群发时使用。

        "msgtype":"text",                             #消息类型。

        "agentid": Agentid,                             #企业号中的应用id。

        "text": {

            "content": Subject + '\n'+ Content

        },

        "safe": "0"

    }

    r =requests.post(url=Url,data=json.dumps(Data),verify=False)

    while r.json()['errcode'] != 0 and n <4:

        n+=1

        Token = GetTokenFromServer(Corpid,Secret)

        if Token:

            Url ="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" %Token

            r =requests.post(url=Url,data=json.dumps(Data),verify=False)

            print(r.json())


    return r.json()



if __name__ == '__main__':

    User = sys.argv[1]                                                                 # zabbix传过来的第一个参数

    Subject = str(sys.argv[2])                                                         # zabbix传过来的第二个参数

    Content = str(sys.argv[3])                                                         # zabbix传过来的第三个参数


   Corpid ="ww5ee**************"                                                       #CorpID是企业号的标识

    Secret = "eHn5mdONdjc******************"                              # Secret是管理组凭证密钥

    #Tagid = "1"                                                                       #通讯录标签ID

    Agentid ="1000002"                                                                #应用ID

    Partyid = "2"                                                                     #部门ID


    Status =SendMessage(User,Agentid,Subject,Content)

    print Status



if __name__ =='__main__':

    User = sys.argv[1]                                                                 # zabbix传过来的第一个参数

    Subject = str(sys.argv[2])                                                         # zabbix传过来的第二个参数

    Content = str(sys.argv[3])                                                         # zabbix传过来的第三个参数


    Corpid = "ww5ee8*************"                                                       #CorpID是企业号的标识

    Secret = "eHn5mdONdj*******************"                              # Secret是管理组凭证密钥

    #Tagid = "1"                                                                       #通讯录标签ID

    Agentid = "1000002"                                                                #应用ID

    #Partyid = "1"                                                        #部门ID(点击 部门后面的省略号可查看)


    Status =SendMessage(User,Agentid,Subject,Content)

print Status


 

 

下载simplejson压缩包

可以在网址搜索包名 https://pypi.org/

 

wget https://files.pythonhosted.org/packages/98/87/a7b98aa9256c8843f92878966dc3d8d914c14aad97e2c5ce4798d5743e07/simplejson-3.17.0.tar.gz

 

解压:tar -zxvf

simplejson-3.17.0.tar.gz

进目录安装

cd simplejson-3.17.0

python setup.py build

python setup.py install

 

安装request,否则运行会报错,还要安装额外的两个工具

wget https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz

tar -xvf setuptools-12.0.3.tar.gz

cd setuptools-12.0.3

python setup.py install

wget https://files.pythonhosted.org/packages/ce/ea/9b445176a65ae4ba22dce1d93e4b5fe182f953df71a145f557cffaffc1bf/pip-19.3.1.tar.gz

tar -xvf pip-19.3.1.tar.gz

cd pip-19.3.1

python setup.py install

pip install requests

 

运行测试

/usr/lib/zabbix/alertscripts/wechat.py chenyuexiang zabbix "test"


测试成功

开始配置触发器,和邮件配置差不多

 

创建用户

创建动作

创建报警媒介

写入宏定义语言:

{ALERT.SENDTO} (收件人)

{ALERT.SUBJECT}   (标题)

{ALERT.MESSAGE}    (内容)

利用ping提高入口流量

ping -n 1000 -l 65500 agetn_ip

 

 

 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • # 一度蜜v3.0协议 --- # 交互协议 [TOC] ## 协议说明 ### 请求参数 下表列出了v3.0版协...
    c5e350bc5b40阅读 620评论 0 0
  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵胜奥阅读 4,247评论 0 1
  • AFN发送网络请求,后台要数组参数。google后发现原来AFN 提交array参数的时候是将参数名转为了...&...
    Roader阅读 159评论 0 0
  • 摘要:Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用z...
    think_lonely阅读 4,788评论 0 8
  • 文:许大果 她抬起头,发现天上有个黑色的物体坠落下来,在视线里从一个黑点渐渐放大,慢慢呈现出模样,似乎是一个黑背包...
    许大果阅读 234评论 0 2