day73 zabbix页面配置钉钉报警

目前,以及确认,你的机器,和钉钉通信,发消息,是没问题

结合这个功能,实现zabbix触发器执行报警动作,触发钉钉报警,切发送报警的信息。

# zabbix配置要熟练,几大名词问你能立即说出来干啥的

模板
监控项
触发器是什么
图形,
报警媒介

完成项目,基于微信,邮件,钉钉,实现zabbix检测xxx服务,实现报警通知
基于bash和python的多种报警脚本开发


注意,该脚本,放入服务端的一个alter脚本目录中即可,
zabbix-server可以去调用它
AlertScriptsPath=/usr/lib/zabbix/alertscripts

确保脚本如下即可

[root@zabbix-server-71 /usr/lib/zabbix/alertscripts]#ll
total 8
-rwxr-xr-x 1 zabbix zabbix 1739 Jul 11 11:57 dingding.py
-rwxr-xr-x 1 zabbix zabbix 2328 Jul  8 16:24 weixin.sh

在这里插入图片描述

至此,你的zabbix又多支持了一个钉钉报警

你还得配置你的用户,采用这个方式

在这里插入图片描述

触发报警

最后一步,测试钉钉是否报警

web7机器来测,触发报警(得看这个机器,有什么监控项!!!!!!!!)

day73 钉钉机器人API的关系

目标

1.钉钉报警
2.自定义监控模板(tcp11种状态),关联 web7 web8,或者db组机器
3.zabbix监控核心服务,nginx_status,php_status,这是监控公司网站的主要手段,更多的如数据库,和应用服务器,后面学了再补充

zabbix作为监控系统,核心在于,保障,提前预警,服务器硬件出现各种问题;
监控各种软件系统服务

网站来说 
LNMP 

linux服务器本身的健康状况,template os linux 50多个监控项,覆盖了绝大多数硬件资源的监控

nginx  apache
	web server, 提供被动式的web服务,接受http请求,相应http请求
		
	nginx接受,处理的所有的请求状态,监控它的http连接数有多少,链接状况如何
		基于nginx的status状态页功能区采集数据,构造监控项,添加触发器
		
	nginx进程本身,master进程,worker进程的运行状态
		自定义监控项的配置文件+采集进程的命令脚本 === zabbix-UI中
		ps
		netstat
		
	nginx所有功能,你都可以给它监控上
	属于web检测了
	1. 检测nginx的某虚拟主机是否正常,通过什么命令可以监控?
		curl 命令可以实现
	2. 监控nginx设置的location 七层转发是否正常?

		



mysql 先放着
	mysql服务状态本身
	mysql的性能数据采集
	


php  python
	nginx(127.0.0.1:80) + 独立的php-fpm进程(127.0.0.1:9000)
	以apache模块的形式,去解析php代码,没有独立的进程
	
	php接受用户请求与相应
	本质上web相关的通信,都是
	一堆client 客户端,手机,ipad,电脑 发出 N个 http请求
	↓
	发给http服务端,发给php进程
	
	本质上,监控php,1.服务本身运行状态   2、监控连接数



4.web监控
	1. 如果上述的1,2,3题目都是基于命令行去监控,采集进程的信息,提取数据等玩法
	
	2.  老大发话了,确保zabbix的登录页面,也要监控上,确保登录正常
	通过脚本实现自动化
	,找到,人为操作,背后的数据,到底发生了什么

4大知识点,1.zabbix回顾, 2.zabbix和业务结合的思考




构造监控项

2,curl 发出http协议的请求,就是看目标机器正确与http相对应

3,针对结果,构造报警器,和动作

4, 图形化的展示

钉钉的报警

这个和微信报警类似,都是指定的数据发送到钉钉官方提供的API接口

对于api的解释

和微信报警的请求发送流程
API的使用,访问流程

1. curl 发出http请求,携带一堆的参数,发送到json类型的数据,发给微信的API
(nginx先接收到请求,后面是居于路径,转发给location设置的后端服务器,处理以及响应,返回nginx,返回给用户,这里只不过返回的是json数据)

2, 微信的api url接收到请求后,处理请求,构造结果,返回一个json的数据


钉钉会将报警信息,发送到指定的钉钉群聊,提醒所有成员查看,实现报告通知。

什么叫做API,以及发给API请求

在这里插入图片描述

在这里插入图片描述

1.客户端页面上提交账户和密码

2,点击sign in 标签前端代码会构造json类型的数据

是post类型的求情发给这个url

所以说这个url称之为api

3.判断api是否正常,url是否正常

微信报警
钉钉报警

通过脚本 bash curl 命令请求
访问微信 钉钉的api url发送请求,提交数据

python脚本
另外的方式,都是api发送一个api而已

API会返回什么给你

​ 1.可能返回一个html给你,zabbix是返回的字符串,html`

  1. 可能返回一个json数据(字符串)给你,微信,钉钉API就是这么玩的。

在这里插入图片描述

  1. 发送请求构造post类型,构造json类型的账户密码数据
  2. 到达index.php 服务器
  3. 服务器返回给你一个response响应

该zabbix的登录,首页api每一个url就是一个api

作为你以后部署网站必须掌握的API的知识,web通信知识

先看微信的api,发送到微信,


#就是这一段代码
curl -s -H "Content-Type: application/json" -X POST "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${token}" -d' {
   "toparty" : "'"${group}"'",
   "msgtype" : "text",
   "agentid" : "'"${agentid}"'",
   "text" : {
       "content" : "'"${title}\n\n${message}"'"
   },
   "safe":0
}'


发出get类型的请求,看看是什么结果
2个方式
给这个API,发出get类型的请求
curl 访问 ,方式1
用浏览器直接访问,方式,get类型

什么是api,

1.zabbix的登录页面,发出的http请求,查看响应的结果

都是携带者数据的get请求

(传入的数据,就是json类型的字符串,相应的数据,也就是json数据类型,json是一个网络传输的数据,数据结构类型)

具体,来看钉钉报警了

具体的操作流程
1.创建钉钉群聊
2.创建自定义机器人
创建报警关键词, zabbix
自动的生成一个AIP 以及身份令牌token
https://oapi.dingtalk.com/robot/send?access_token=9f47d1319cdfbc4af977dfe5ce17c65ddfc34bd302498891d99b82aafb13af6c

{"errcode":43002,"errmsg":"需要POST请求"}
只能通过post请求访问
测试该钉钉api 是否能发到钉钉组里

# 至此,API的玩法,你应该基本懂了
# 测试钉钉的API,是能发出去消息的
# 写脚本,按照该API规定的key,构造数据即可


curl  -H 'Content-Type: application/json' \
-d '{"msgtype": "text",  "text": {"content": "关键字:zabbix  来自于linux0224的钉钉消息,看懂了吗老六同志。"}}' \
https://oapi.dingtalk.com/robot/send?access_token=9f47d1319cdfbc4af977dfe5ce17c65ddfc34bd302498891d99b82aafb13af6c 

开发报警脚本

填写zabbix-ui界面的配置

测试钉钉报警通知

在这里插入图片描述

在这里插入图片描述


钉钉脚本,python版本

注意,该脚本是python3,你的目标机器,是否支持python3

yum install python3 python3-devel  python3-pip -y

pip3 install requests
python语法比较优雅,你拿到代码,只需要修改什么就行?修改你的webhook,web钩子,钉钉机器人的API地址,该成你自己的即可


#!/usr/bin/python3
# coding: utf-8
# about zabbix python script
# Author: www.yuchaoit.cn

import requests,json,sys,os,datetime

# 钉钉机器人API
webhook_url='https://oapi.dingtalk.com/robot/send?access_token=9f47d1319cdfbc4af977dfe5ce17c65ddfc34bd302498891d99b82aafb13af6c' 

# 给脚本参数手机号参数1
user_phone=sys.argv[1]

# 参数2,消息正文
text=sys.argv[2] + "\n\n" + sys.argv[3]

# 构造json数据体
data={
    "msgtype":"text",
    "text":{
        "content":text
    },
    "at":{
        "atMobiles":[user_phone],
        "isAtAll":False
    }
}

# 请求头,表明请求类型是json
headers={"Content-Type":"application/json"}

# 发HTTP请求,POST方式,传入数据与请求头
response=requests.post(url=webhook_url,data=json.dumps(data),headers=headers)
print(response.content)

# 日志目录生成
if os.path.exists("/tmp/dingding.log"):
    with open("/tmp/dingding.log","a+") as f:
        print("该文件以存在,追加写入中")
        if response.json().get("errcode")==0:
            f.write("\n" + str(datetime.datetime.now()) + "    " + str(user_phone) + "    " + "发送成功" + "\n" + str(text) )
        else:
            f.write("\n" + str(datetime.datetime.now()) + "    " + str(user_phone) + "    " + "发送失败" + "\n" + str(text) )
else:
    with open("/tmp/dingding.log","w+") as f:
        print("该日志文件不存在,创建且写入中")
        if response.json().get("errcode")==0:
            f.write("\n" + str(datetime.datetime.now()) + "    " + str(user_phone) + "    " + "发送成功" + "\n" + str(text) )
        else:
            f.write("\n" + str(datetime.datetime.now()) + "    " + str(user_phone) + "    " + "发送失败" + "\n" + str(text) )

这里需要传入几个参数

python3 dingding.py  15210858004 "来自于linux0224的钉钉消息"  "keyword:zabbix 老六门,看懂了吗"

# 必须要有关键字

在这里插入图片描述

钉钉脚本bash版本

#!/bin/bash
# about zabbix bash script
# Author: www.yuchaoit.cn


#webhook 地址 webhook=''
#接受者的手机号,由 zabbix 传入 
user=$1
#报警邮件标题,由 zabbix 传入 
title=$2
#报警邮件内容,由 zabbix 传入
message=$3

# 构造语句执行发送动作
# bash就是用curl 构造json数据发出去而已,注意引号的细节就好
# 通过API返回的数据,来确认是否发送正确

curl -s -H "Content-Type: application/json" -X POST "https://oapi.dingtalk.com/robot/send?access_token=9f47d1319cdfbc4af977dfe5ce17c65ddfc34bd302498891d99b82aafb13af6c " -d '{"msgtype":"text","text":{"content":"'"${title}\n\n${message}\n\nzabbix报警啦!!!火烧屁股啦!!!老六们!!!"'"},"at":{"atMobiles":["'"${user}"'"],"isAtAll":false}}' 


#将报警信息写入日志文件
echo -e "\n 报警时间:$(date +%F-%H:%M)\n 报警标题:${title}\n 报警内容:${message}" >> /tmp/ding_bash.log

在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐