使用Python和Prometheus跟踪天气

本文展示了如何使用Python和Prometheus集成来追踪天气,特别是利用美国政府提供的天气API获取Red Hat总部的天气预报。文章详细介绍了创建自定义集成的过程,包括构建一个使用Prometheus Python库的注册表,以及通过Pyramid建立Web服务器或使用Push网关来让Prometheus抓取或接收数据。
摘要由CSDN通过智能技术生成

开源监视系统Prometheus具有集成功能,可以跟踪许多类型的时间序列数据,但是如果您想要一个尚不存在的集成,则很容易构建。 一个经常使用的示例是与云提供商的自定义集成,该提供商使用提供商的API来获取特定指标。 但是,在此示例中,我们将与所有最大的云提供商集成:Earth。

幸运的是,美国政府已经测量了天气,并提供了易于集成的API。 在Red Hat总部获取下一小时的天气预报非常简单。


   
   
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库创建一个具有以下规格的注册表:Red Hat HQ的温度。


   
   
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对其进行抓取

我们可以使用Pyramid构建一个简单的Web服务器。


   
   
from pyramid. config import Configurator
from pyramid. response import Response
from prometheus_client import generate_latest , CONTENT_TYPE_LATEST
def metrics_web ( request ) :
    registry = prometheus_temperature ( get_temperature ( ) )
    return Response ( generate_latest ( registry ) ,
                    content_type = CONTENT_TYPE_LATEST )
config = Configurator ( )
config. add_route ( 'metrics' , '/metrics' )
config. add_view ( metrics_web , route_name = 'metrics' )
app = config. make_wsgi_app ( )
假设我们将代码放在earth.py中 ,则python -m twisted web --wsgi earth.app可以运行它。

另外,如果我们的代码更容易连接到Prometheus,则可以定期将其推送到Prometheus的Push网关


   
   
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是用于Push网关的URL; 它通常以:9091结尾。

祝您建立自己的自定义Prometheus集成好运,以便您可以跟踪所有内容!

翻译自: https://opensource.com/article/19/4/weather-python-prometheus

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值