zabbix 报警

1.详细讲解自定义监控

1.认识Template OS Linux 模块的所有监控项都是干什么的
2.自定义一个监控项  ( 创建监控项中的所有选项 )


3.历史保留如何计算? ( 数据 )
days*(items/refresh rate)*24*3600*bytes
items:监控项数量。
days:保留历史数据的天数。
refresh rate:监控项的更新间隔。
bytes:保留单个值所需要占用的字节数,依赖于数据库引擎,通常为 ~90 字节。   

90*(200/60)*24*3600   ~ 24MB    * 200主机 =  5G


4.趋势保留如何计算? ( 图形 )
days*(items/3600)*24*3600*bytes
items:监控项数量。
days:保留历史数据的天数。
bytes:保留单个趋势数据所需要占用的字节数,依赖于数据库引擎,通常为 ~90 字节。

365*(200/3600)*24*3600  ~ 2MB     * 200主机  = 500MB

5.事件如何计算?
days*events*24*3600*bytes
events:每秒产生的事件数量。假设最糟糕的情况下,每秒产生 1 个事件。
days:保留历史数据的天数。
bytes:保留单个趋势数据所需的字节数,取决于数据库引擎,通常为 ~170 字节。

365*1*24*3600    ~ 30MB     *200主机  = 6G 

https://www.zabbix.com/documentation/4.0/zh/manual/installation/requirements


6.自定义监控TCP 11种状态?
    netstat -an | grep -c ESTABLISHED
    netstat -an | grep -c LISTEN
    netstat -an | grep -c SYN_SENT
    netstat -an | grep -c TIME_WAIT

    1.使用shell命令提取状态
    2.通过zabbix-agent将提取的状态封装为一个又一个的监控项目
    3.检查封装后的监控项是否取值正确
    4.创建一个模板
    5.基于模板创建监控项
    6.将主机关联该模板,完成监控
    7.检查监控后的数据

UserParameter=tcp[*], netstat -lntp | grep -c "$1"

7.如何让其他机器也能使用该模板?
    1.推送*.conf文件,这样其他主机也能提取到key对应的值
    2.将主机关联对应的模板

2.自定义触发器

https://www.cnblogs.com/kingle-study/p/10172413.html    
1.监控内存的百分比,   如果 低于20%  则触发报警
        1.通过shell命令提取内存的百分比
        2.设定触发器
    

多条件触发器
    2.监控内存, 以及swap  当内存低于百分之20,并且swap使用率超过百分之1% 则触发报警
            内存取的是剩余         20
            swap取的是已使用      1
    
    变量
    监控项
    key  | 键值 

and         #并且    多个监控项,同时成立    
or          #或者  多个监控项,一个成立


last()      #比对最新的值
avg()       #平均值                        网络的流量 avg(5m)  进程  负载  IO
diff()      #比对上一次文件的内容         
nodata()    #收不到数据进行报警nodata(5m)   探测主机存活 
                test.nodata(5m) = 1     这个条件为真  获取不到数据报警
(5m)        #表示最近5分钟得到值
(#5)        #表示最近5次得到的值



3.自定义图形
    1.基于监控项, 创建图形,   可以在模板上创建,这个所有的主机都应用成功
    2.基于图形创建, 聚合图形,  将多个小图片整合至一个大图片上   ( 检测中--->聚合图形 )
    3.基于聚合图形创建幻灯片, 可以让多张聚合图形进行轮播   (大屏显示器 --> )
    
    扩展: 如果希望出更好看,更炫的图,需要使用grafana   
        注意: grafana只是一个出图,所有的数据都是zabbix提供   (  皮肤 )
    
    
        1.安装grafana
            # yum localinstall grafana-6.4.4-1.x86_64.rpm 
        
        
        2.启动grafana  默认监听在3000端口
            # systemctl start grafana-server

        3.安装插件, 集成zabbix
            # grafana-cli plugins install alexanderzobnin-zabbix-app
            # systemctl restart grafana-server

        4.启用已安装好的zabbix插件,这样就完成了集成
        5.配置zabbix数据源
        
        6.grafana  变量   ()

        1.实现一个单条件触发器
        2.实现一个多条件触发器
        3.基于监控项
            1.图形
            2.聚合图形
            3.幻灯片
        4.grafana安装

3.自定义报警

    基于监控项-->触发器-->执行动作--> ( 通知  |  执行命令  
    1.怎么发        
    2.发什么
    3.发给谁
    
    
1.启用动作
2.动作中将所有的报警消息通过介质发送给administrator用户
3.配置介质--> 新建一个发邮件的邮箱介质
4.配置administrator用户, 填写收件人邮件

https://www.zabbix.com/documentation/3.4/zh/manual/appendix/macros/supported_by_location

修改报警的消息

报警主机:{HOST.NAME1}
报警服务: {ITEM.NAME1}
报警Key1: {ITEM.KEY1}:{ITEM.VALUE1}
报警Key2: {ITEM.KEY2}:{ITEM.VALUE2}
严重级别: {TRIGGER.SEVERITY}


3.配置故障恢复消息,消息内容如下:
恢复主机:{HOST.NAME1}
恢复服务: {ITEM.NAME1}
恢复Key1:{ITEM.KEY1}:{ITEM.VALUE1}
恢复Key2: {ITEM.KEY2}:{ITEM.VALUE2}



{ALERT.SENDTO}      #发送的用户
{ALERT.SUBJECT}     #发送的主题
{ALERT.MESSAGE}     #发送的内容

    邮件报警
    微信报警
    钉钉报警
    

4.告警升级 | 告警抑制

1.远程执行命令
2.告警抑制是怎么回事
1个故障 出现             发邮件给运维      邮件
超过1分钟没有被处理  发邮件给经理      微信
超过2分钟没有被处理  发邮件给总监      钉钉

7.自定义模板
8.自定义监控Nginx PHP

钉钉企业的地址

https://oa.dingtalk.com/

钉钉企业告警的注意事项
1.通讯录管理里的userid发钉钉需要用到
2.工作台里可自建应用
3.微应用管理可以管理应用
4.开发账号管理可以查看密码信息


发送钉钉告警的脚本/usr/local/zabbix/alertscripts/zabbix_dingding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
#curl 'https://oapi.dingtalk.com/gettoken?corpid=xxx&corpsecret=xxx'
import json,urllib2,sys

appkey = 'xxx'
appsecret = 'xxx'
agentid = 'xxx'
touser = sys.argv[1]
content = sys.argv[2]

tockenurl = 'https://oapi.dingtalk.com/gettoken?corpid=' + appkey + "&corpsecret=" + appsecret
tockenresponse = urllib2.urlopen(tockenurl)
tockenresult = json.loads(tockenresponse.read().decode('utf-8'))
tocken =  tockenresult['access_token']

sendurl = 'https://oapi.dingtalk.com/message/send?access_token=' + tocken
headers = {
'Content-Type':'application/json'
}
main_content = {
"touser": touser,
"toparty": "",
"agentid": agentid,
"msgtype": "text",
"text": {
"content": content
}
}
main_content = json.dumps(main_content)
req = urllib2.Request(sendurl,headers=headers)
response = urllib2.urlopen(req, main_content.encode('utf8'))
print(response.read().decode('utf-8'))

手动发钉钉告警测试
chmod +x /usr/local/zabbix/alertscripts/zabbix_dingding.py
/usr/local/zabbix/alertscripts/dingding.py 194668593697491 'dingding_messages'


{ALERT.SENDTO}      #发送的用户
{ALERT.SUBJECT}     #发送的主题
{ALERT.MESSAGE}     #发送的内容




[root@zabbix ~]# yum install python-pip -y

企业微信地址,个人可注册

https://work.weixin.qq.com/

登录企业微信
1.  企业 -> 微工作台里可以直接微信关注,无需要下载企业微信
2.  通讯录里的账号在发微信脚本中要用到
3.  应用与小程序可创建应用

发微信的python脚本/usr/local/zabbix/alertscripts/weixin.py
[root@zabbix-server alertscripts]# cat weixin.py 
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: bgx
#date: 2018
#comment: zabbix接入微信报警脚本

import requests
import sys
import os
import json
import logging

logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
                datefmt = '%a, %d %b %Y %H:%M:%S',
                filename = os.path.join('/tmp','weixin.log'),
                filemode = 'a')


corpid='xxx'
appsecret='xxx'
agentid=xxx
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']

#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
        "touser": touser,
#       "toparty": toparty,
        "msgtype": "text",
        "agentid": agentid,
        "text": {
                "content": message
        },
        "safe":0
}

req=requests.post(msgsend_url, data=json.dumps(params))

logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)  


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

推荐阅读更多精彩内容