zabbix监控全国天气实况

2024-01-23 02:30

本文主要是介绍zabbix监控全国天气实况,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微信公众号:运维开发故事,作者:wanger

本文主要通过一些监控示例来简单介绍zabbix的http agent类型的监控以及map图的简单用法,我们可以通过一些网站查询天气的api来获取天气情况,大部分的地图软件也都支持天气查询,这里我简单介绍几个,有高德地图,百度地图,心知天气,YY天气,个人用的是YY天气,因为我的需求不高,他能轻易地满足我
YY天气api地址:http://www.yytianqi.com/api.html

创建HTTP agent类型的监控项

以创建北京天气的监控项为例

我们只要把请求的URL和键值填上就可以了

获取数据如下

我们可以根据获取的数据对json进行预处理

创建包含预处理的可依赖监控项

以监控天气信息为例

键值定义尽量规范,依赖项选择刚刚新建的http agent监控项

添加预处理步骤

根据刚才获取到的数据来获取tq的值

除此之外还需要定义气温、风力、风向、相对湿度,添加方法与上面相同

添加高温的触发器

编写脚本批量添加监控项和触发器

但是这样做要添加的监控项和触发器太多了,而且都是重复性的工作,这里我写了个脚本,来对各地城市的监控项和触发器进行批量添加,批量添加的好处是省时省力,而且减少出错概率。
实现思路是获取主机的接口id,并对城市进行循环添加监控项和触发器

#coding=utf-8
import requests,json
ApiUrl = 'http://192.168.1.100/api_jsonrpc.php'
header = {"Content-Type":"application/json"}
user="Admin"
password="zabbix"
city=[{"beijing":"CH010100"},{"shanghai":"CH020100"},{"tianjin":"CH030100"},{"chongqing":"CH040100"},{"haerbin":"CH050101"},{"changchun":"CH060101"},{"shenyang":"CH070101"},{"huhehaote":"CH080101"},{"shijiazhuang":"CH090101"},{"taiyuan":"CH100101"},{"xian":"CH110101"},{"jinan":"CH120101"},{"wulumuqi":"CH130101"},{"lasa":"CH140101"},{"xining":"CH150101"},{"lanzhou":"CH160101"},{"yinchuan":"CH170101"},{"zhengzhou":"CH180101"},{"nanjing":"CH190101"},{"wuhan":"CH200101"},{"hangzhou":"CH210101"},{"hefei":"CH220101"},{"fuzhou":"CH230101"},{"nanchang":"CH240101"},{"changsha":"CH250101"},{"guiyang":"CH260101"},{"chengdu":"CH270101"},{"guangzhou":"CH280101"},{"kunming":"CH290101"},{"nanning":"CH300101"},{"haikou":"CH310101"},{"hongkong":"CH320101"},{"aomen":"CH330101"},{"taibei":"CH340101"}]
def get_interface(auth):data ={"jsonrpc": "2.0","method": "hostinterface.get","params": {"output": "extend","hostids": "10343"},"auth": auth,  "id": 1}gethost=requests.post(url=ApiUrl,headers=header,json=data)return json.loads(gethost.content)["result"][0]["interfaceid"]
def gettoken():data = {"jsonrpc": "2.0","method": "user.login","params": {"user": user,"password": password},"id": 1,"auth": None}auth=requests.post(url=ApiUrl,headers=header,json=data)return json.loads(auth.content)["result"]
def createitemandtrigger(auth,interface):for dic in city:for key,value in dic.items():data={"jsonrpc": "2.0","method": "item.create","params": {"url":"http://api.yytianqi.com/observe","query_fields": [{"city":"%s" %value},{"key": "iopesm5a0uhqwer"}],"interfaceid": "%s" %interface,"type":"19","hostid":"10343","delay":"5m","key_":"%s" %key,"name":"%s" %key,"value_type":"1","output_format":"0","timeout":"3s"},"auth": auth,"id": 1}httpagent=requests.post(url=ApiUrl,headers=header,json=data)httpagent=json.loads(httpagent.content)['result']['itemids'][0]print(httpagent)data={"jsonrpc": "2.0","method": "item.create","params": {"hostid": "10343","name": "%s-tq" %key,"key_": "%s-tq" %key,"type": "18","master_itemid": httpagent,"value_type": "1","preprocessing": [{"type": "12","params": "$.data.tq","error_handler": "1","error_handler_params": ""}]},"auth": auth,"id": 1}dependqw=requests.post(url=ApiUrl,headers=header,json=data)print(dependqw.content)data={"jsonrpc": "2.0","method": "item.create","params": {"hostid": "10343","name": "%s-fl" %key,"key_": "%s-fl" %key,"type": "18","master_itemid": httpagent,"value_type": "1","preprocessing": [{"type": "12","params": "$.data.fl","error_handler": "1","error_handler_params": ""}]},"auth": auth,"id": 1}dependfl=requests.post(url=ApiUrl,headers=header,json=data)data={"jsonrpc": "2.0","method": "item.create","params": {"hostid": "10343","name": "%s-qw" %key,"key_": "%s-qw" %key,"type": "18","master_itemid": httpagent,"value_type": "3","preprocessing": [{"type": "12","params": "$.data.qw","error_handler": "1","error_handler_params": ""}]},"auth": auth,"id": 1}dependqw=requests.post(url=ApiUrl,headers=header,json=data)data={"jsonrpc": "2.0","method": "item.create","params": {"hostid": "10343","name": "%s-fx" %key,"key_": "%s-fx" %key,"type": "18","master_itemid": httpagent,"value_type": "1","preprocessing": [{"type": "12","params": "$.data.fx","error_handler": "1","error_handler_params": ""}]},"auth": auth,"id": 1}dependfx=requests.post(url=ApiUrl,headers=header,json=data)data={"jsonrpc": "2.0","method": "item.create","params": {"hostid": "10343","name": "%s-sd" %key,"key_": "%s-sd" %key,"type": "18","master_itemid": httpagent,"value_type": "0","preprocessing": [{"type": "12","params": "$.data.sd","error_handler": "1","error_handler_params": ""}]},"auth": auth,"id": 1}dependsd=requests.post(url=ApiUrl,headers=header,json=data)data={"jsonrpc": "2.0","method": "trigger.create","params": [{"description": "%s温度有点高" %key,"expression": "{tianqi:%s-qw.last()}>30" %key,"opdata": "当前气温:{ITEM.LASTVALUE}","priority": 3,"manual_close": 1}],"auth": auth,"id": 1}triggercreate=requests.post(url=ApiUrl,headers=header,json=data)return json.loads(dependqw.content)#["result"]
auth=gettoken()
interface=get_interface(auth)
createhttpitem(auth,interface)

实现效果如下



制作map图

首先创建背景图片

这里我添加了一张中国地图

创建map图

对map图进行编辑

标签用于显示监控的数据,添加高温的触发器,当触发高温报警后,图标由绿点会变成红绿交替闪动,这里以北京气温为例

最终实现效果如下

报警效果如下


欢迎关注微信公众号“运维开发故事”

这篇关于zabbix监控全国天气实况的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/634966

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能

基于树梅派的视频监控机器人Verybot

最近这段时间做了一个基于树梅派 ( raspberry pi ) 的视频监控机器人平台 Verybot ,现在打算把这个机器人的一些图片、视频、设计思路进行公开,并且希望跟大家一起研究相关的各种问题,下面是两张机器人的照片:         图片1:                   图片2                    这个平台的基本组成是:

PC与android平板通过浏览器监控Verybot的视频

下面这个视频是PC与android平板通过浏览器监控Verybot的视频:           http://v.youku.com/v_show/id_XNjYzNzYyMTIw.html

java后端服务监控与告警:Prometheus与Grafana集成

Java后端服务监控与告警:Prometheus与Grafana集成 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在现代的微服务架构中,监控和告警是确保服务稳定性的关键组成部分。Prometheus和Grafana是两个强大的工具,它们可以集成在一起,为Java后端服务提供实时监控和可视化告警。 服务监控的重要性 服务监控可以帮助我们实时了解服务的健

2024 年高教社杯全国大学生数学建模竞赛题目——2024 年高教社杯全国大学生数学建模竞赛题目的求解

2024 年高教社杯全国大学生数学建模竞赛题目 (请先阅读“ 全国大学生数学建模竞赛论文格式规范 ”) 2024 年高教社杯全国大学生数学建模竞赛题目 随着城市化进程的加快、机动车的快速普及, 以及人们活动范围的不断扩大,城市道 路交通拥堵问题日渐严重,即使在一些非中心城市,道路交通拥堵问题也成为影响地方经 济发展和百姓幸福感的一个“痛点”,是相关部门的棘手难题之一。 考虑一个拥有知名景区

2024 年高教社杯全国大学生数学建模竞赛 C 题 农作物的种植策略 参考论文 无水印

持续更新中,2024年数学建模比赛思路代码论文都会发布到专栏内,只需订阅一次!  完整论文+代码+数据结果链接在文末!  订阅后可查看参考论文文件 第一问 1.1 问题重述 这个问题围绕的是华北山区的某乡村,在有限的耕地条件下,如何制定最优的农作物种植策略。乡村有 34 块露天耕地和 20 个大棚,种植条件包括粮食作物、蔬菜、水稻和食用菌。除了要考虑地块的面积、种植季节等,还要确保

2024年全国大学生数学建模A题借鉴论文

问题  1: 舞龙队的动态位置与速度计算 1. **螺旋线的几何建模**:根据题目描述,舞龙队沿着等距螺旋线前进。螺旋线的螺距为 55 cm, 需根据极坐标公式确定每节板凳的位置。 -  极坐标螺旋线方程:\( r = a + b\theta \), 其中  \( b \)  是螺距, 可以利用该方程计算 每秒舞龙队的各个节数的坐标。 2. **速度计算**:给定龙头的行进速度为 1 m/s ,

145-Linux权限维持Rootkit后门Strace监控Alias别名Cron定时任务

参考 【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务_alias ls='alerts(){ ls $* --color=auto;python -c "-CSDN博客 参考 FlowUs 息流 - 新一代生产力工具 权限维持-Linux-定时任务-Cron后门 利用系统的定时任务功能进行反弹Shell 1、编辑后门反弹shell脚本