使用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 相关文章推荐
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
Aug 09 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
详解Python3 pickle模块用法
Sep 16 Python
Python图片的横坐标汉字实例
Dec 04 Python
使用python+whoosh实现全文检索
Dec 09 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
python中sklearn的pipeline模块实例详解
May 21 Python
Pytorch 高效使用GPU的操作
Jun 27 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原理之异常机制
2010/08/21 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
python中wheel的用法整理
2020/06/15 Python
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
拖鞋店创业计划书
2014/01/15 职场文书
社会工作专业自荐信
2014/09/26 职场文书
2014年减负工作总结
2014/12/10 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电
解决Oracle数据库用户密码过期
2022/05/11 Oracle