使用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实例之wxpython中Frame使用方法
Jun 09 Python
windows下wxPython开发环境安装与配置方法
Jun 28 Python
自己编程中遇到的Python错误和解决方法汇总整理
Jun 03 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
Python实现DDos攻击实例详解
Feb 02 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
Python使用字典实现的简单记事本功能示例
Aug 15 Python
python实现画循环圆
Nov 23 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
Python入门之使用pandas分析excel数据
May 12 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获取文件内容最后一行示例
2014/01/09 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
jQuery提交多个表单的小例子
2013/06/30 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
Python3读写ini配置文件的示例
2020/11/06 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
毕业自我鉴定范文
2013/11/06 职场文书
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
酒店个人求职信范文
2014/01/25 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
教职工代表大会主持词
2014/04/01 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
文员岗位职责范本
2015/04/16 职场文书