使用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中使用MELIAE分析程序内存占用实例
Feb 18 Python
使用PDB模式调试Python程序介绍
Apr 05 Python
Python Queue模块详细介绍及实例
Dec 27 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
django定期执行任务(实例讲解)
Nov 03 Python
Python3 replace()函数使用方法
Mar 19 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
Django models filter筛选条件详解
Mar 16 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
Python eval函数介绍及用法
Nov 09 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 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
PHP生成随机密码方法汇总
2015/08/27 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
采用call方式实现js继承
2014/05/20 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
Python常用小技巧总结
2015/06/01 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
Python之循环结构
2019/01/15 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
python 伯努利分布详解
2020/02/25 Python
《动手做做看》教学反思
2014/04/09 职场文书
扬尘污染防治方案
2014/06/15 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
承诺书模板大全
2015/05/04 职场文书
校长新学期致辞
2015/07/30 职场文书
公司员工培训管理制度
2015/08/04 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫
Nginx安装配置详解
2022/06/25 Servers