使用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读写文件操作示例程序
Dec 02 Python
python通过shutil实现快速文件复制的方法
Mar 14 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
在Django中创建动态视图的教程
Jul 15 Python
python模拟菜刀反弹shell绕过限制【推荐】
Jun 25 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
python selenium 执行完毕关闭chromedriver进程示例
Nov 15 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
Python 实现一个计时器
Jul 28 Python
Elasticsearch 基本查询和组合查询
Apr 19 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
Codeigniter检测表单post数据的方法
2015/03/21 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
NumPy中的维度Axis详解
2019/11/26 Python
python 实现矩阵按对角线打印
2019/11/29 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
python中round函数如何使用
2020/06/19 Python
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
技术副厂长岗位职责
2013/12/26 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
安全生产标语大全
2014/10/06 职场文书
爱情保证书
2015/01/17 职场文书
关于颐和园的导游词
2015/01/30 职场文书