使用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获取mp3文件信息的方法
Jun 15 Python
Python实现在线音乐播放器
Mar 03 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
Jun 19 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
python中绕过反爬虫的方法总结
Nov 25 Python
python 经纬度求两点距离、三点面积操作
Jun 03 Python
 python中的元类metaclass详情
May 30 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中simplexml_load_string函数使用说明
2011/01/01 PHP
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
php判断访问IP的方法
2015/06/19 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
js中生成map对象的方法
2014/01/09 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
layui的select联动实现代码
2019/09/28 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
jquery实现广告上下滚动效果
2021/03/04 jQuery
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
softmax及python实现过程解析
2019/09/30 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
文化建设工作方案
2014/05/12 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
三行辞职书范文
2015/02/26 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫