使用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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
python获取从命令行输入数字的方法
Apr 29 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
浅谈flask中的before_request与after_request
Jan 20 Python
Python数据处理numpy.median的实例讲解
Apr 02 Python
Python实现查找二叉搜索树第k大的节点功能示例
Jan 24 Python
Python要如何实现列表排序的几种方法
Feb 21 Python
django修改models重建数据库的操作
Mar 31 Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
Python导入数值型Excel数据并生成矩阵操作
Jun 09 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简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
获取URL文件名后缀
2013/10/24 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
python 读取DICOM头文件的实例
2018/05/07 Python
python中的print()输出
2019/04/12 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
中文系学生自荐信范文
2013/11/13 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
入党自我评价范文
2014/02/02 职场文书
办公室综合文员岗位职责范本
2014/02/13 职场文书
倡导文明标语
2014/06/16 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
服务行业标语口号
2015/12/26 职场文书
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫
python单向链表实例详解
2022/05/25 Python