使用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编程之Re模块下的函数介绍
Oct 28 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
Python读写docx文件的方法
May 08 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
python爱心表白 每天都是浪漫七夕!
Aug 18 Python
python 获取url中的参数列表实例
Dec 18 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
python线性插值解析
Jul 05 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 Python
golang中的空接口使用详解
Mar 30 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
JavaScript错误处理
2015/02/03 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
Python构造函数及解构函数介绍
2015/02/26 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
python绘制条形图方法代码详解
2017/12/19 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
Html5之title吸顶功能
2018/06/04 HTML / CSS
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
文明青少年标兵事迹材料
2014/01/28 职场文书
出纳员岗位责任制
2014/02/11 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
学校运动会霸气口号
2014/06/07 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android