使用Python和Prometheus跟踪天气的使用方法


Posted in Python onMay 06, 2019

开源监控系统 Prometheus 集成了跟踪多种类型的时间序列数据,但如果没有集成你想要的数据,那么很容易构建一个。一个经常使用的例子使用云端提供商的自定义集成,它使用提供商的 API 抓取特定的指标。

创建自定义 Prometheus 集成以跟踪最大的云端提供商:地球母亲。

开源监控系统 Prometheus 集成了跟踪多种类型的时间序列数据,但如果没有集成你想要的数据,那么很容易构建一个。一个经常使用的例子使用云端提供商的自定义集成,它使用提供商的 API 抓取特定的指标。但是,在这个例子中,我们将与最大云端提供商集成:地球。

幸运的是,美国政府已经测量了天气并为集成提供了一个简单的 API。获取红帽总部下一个小时的天气预报很简单。

import requests
HOURLY_RED_HAT = "<https://api.weather.gov/gridpoints/RAH/73,57/forecast/hourly>"
def get_temperature():
  result = requests.get(HOURLY_RED_HAT)
  return result.json()["properties"]["periods"][0]["temperature"]

现在我们已经完成了与地球的集成,现在是确保 Prometheus 能够理解我们想要内容的时候了。我们可以使用 Prometheus Python 库中的 gauge 创建一个注册项:红帽总部的温度。

from prometheus_client import CollectorRegistry, Gauge
def prometheus_temperature(num):
  registry = CollectorRegistry()
  g = Gauge("red_hat_temp", "Temperature at Red Hat HQ", registry=registry)
  g.set(num)
  return registry

最后,我们需要以某种方式将它连接到 Prometheus。这有点依赖 Prometheus 的网络拓扑:是 Prometheus 与我们的服务通信更容易,还是反向更容易。

第一种是通常建议的情况,如果可能的话,我们需要构建一个公开注册入口的 Web 服务器,并配置 Prometheus 收刮(scrape)它。

我们可以使用 Pyramid 构建一个简单的 Web 服务器。

这可以使用任何 Web 网关接口(WSGI)服务器运行。例如,假设我们将代码放在 earth.py 中,我们可以使用 python -m twisted web --wsgi earth.app 来运行它。

或者,如果我们的代码连接到 Prometheus 更容易,我们可以定期将其推送到 Prometheus 的推送网关。

import time
from prometheus_client import push_to_gateway
def push_temperature(url):
  while True:
    registry = prometheus_temperature(get_temperature())
    push_to_gateway(url, "temperature collector", registry)
    time.sleep(60*60)

这里的 URL 是推送网关的 URL。它通常以 :9091 结尾。

祝你构建自定义 Prometheus 集成成功,以便跟踪一切!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
python用户管理系统
Mar 13 Python
python 列表降维的实例讲解
Jun 28 Python
详解Python3 对象组合zip()和回退方式*zip
May 15 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
Python库skimage绘制二值图像代码实例
Apr 10 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
如何利用python读取micaps文件详解
Oct 18 Python
Python中常用的8种字符串操作方法
May 06 #Python
基于python if 判断选择结构的实例详解
May 06 #Python
20行python代码的入门级小游戏的详解
May 05 #Python
python2.7 安装pip的方法步骤(管用)
May 05 #Python
Python中print和return的作用及区别解析
May 05 #Python
Python深拷贝与浅拷贝用法实例分析
May 05 #Python
Python3中函数参数传递方式实例详解
May 05 #Python
You might like
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
Python实现区域填充的示例代码
2021/02/03 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
农村门前三包责任书
2014/07/25 职场文书
市场策划求职信
2014/08/07 职场文书
房屋出售授权委托书
2014/10/12 职场文书
工作失误检讨书
2015/01/26 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
青春雷锋观后感
2015/06/10 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
SQL Server中使用表变量和临时表
2022/05/20 SQL Server