使用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 __setattr__、 __getattr__、 __delattr__、__call__用法示例
Mar 06 Python
Python中数字以及算数运算符的相关使用
Oct 12 Python
python之PyMongo使用总结
May 26 Python
详解Python文本操作相关模块
Jun 22 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
Django组件content-type使用方法详解
Jul 19 Python
详解用python生成随机数的几种方法
Aug 04 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
python爬虫把url链接编码成gbk2312格式过程解析
Jun 08 Python
python实现简单贪吃蛇游戏
Sep 29 Python
python两种获取剪贴板内容的方法
Nov 06 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
php session应用实例 登录验证
2009/03/16 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
Python反射用法实例简析
2017/12/22 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
商学院大学生求职的自我评价
2014/03/12 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
联片教研活动总结
2014/07/01 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
师德师风事迹材料
2014/12/20 职场文书
企业法律事务工作总结
2015/08/11 职场文书
PHP实现两种排课方式
2021/06/26 PHP
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android