用于创建普罗米修斯导出器的异步库。
prometheus-aioexporter的Python项目详细描述
Prometheus AioExporter是一个Aysncio驱动的库,可以简化编写 Prometheus出口商。
导出器通常被实现为公开度量的小守护进程 以文本格式通过web端点(通常是/metrics)。
用法
库提供了一个PrometheusExporterScript类,它充当 创建通过http导出prometheus度量的服务的入口点 端点。
创建一个新的导出器只是一个子类化的问题 PrometheusExporterScript并根据需要实现一些方法。
示例用法如下:
fromprometheus_aioexporterimportPrometheusExporterScriptclassMyExporter(PrometheusExporterScript):"""My Prometheus exporter."""defconfigure_argument_parser(self,parser):# Additional arguments to the scriptparser.add_argument('an-option',help='an option')# ...defconfigure(self,args):# Save attributes that are needed for laterself.data=do_stuff()# ...asyncdefon_application_startup(self,application):# Start other asyncio tasks at application startupuse(self.data)# ...asyncdefon_application_shutdown(self,application):# Stop other asyncio tasks at application shutdownuse(self.data)# ...script=MyExporter()
导出器命令行
PrometheusExporterScript默认情况下提供一些命令行参数:
optional arguments: -h, --help show this help message and exit -H HOST, --host HOST host address to bind (default: localhost) -p PORT, --port PORT port to run the webserver on (default: 9090) -L {CRITICAL,ERROR,WARNING,INFO,DEBUG}, --log-level {CRITICAL,ERROR,WARNING,INFO,DEBUG} minimum level for log messages (default: WARNING) --process-stats include process stats in metrics (default: False)
通过实现configure_argument_parser(),可以添加更多选项, 它接收脚本使用的argparse.ArgumentParser实例。
上面例子中的script变量可以在 setup.py生成脚本,如
setup(...,entry_points={'console_scripts':['script = path.to.script:script']},...)
导出器的name和description可以通过 在脚本类中设置相应的属性。
启动配置
附加的初始设置(例如配置文件解析)可以由 通过实现configure()编写脚本。在启动时调用 已分析参数(一个argparse.Namespace实例)。
指标配置
脚本导出的度量可以通过调用^{tt13}来设置$ 有一个MetricConfigs的列表。这通常在configure():
中完成defconfigure(self,args):# ...self.create_metrics([MetricConfig('metric1','a metric','gauge',{}),MetricConfig('metric2','another metric','counter',{})])
Web应用程序设置
启动时,PrometheusExporterScript创建一个PrometheusExporter,它 包括公开度量的web应用程序。
可以通过以下方式自定义和执行其他启动/关闭任务 实现on_application_startup和on_application_shutdown 协同路由方法,以应用程序作为参数调用。
PrometheusExporter实例可以通过 application['exporter'],并提供一个set_metric_update_handler 方法在 将响应返回给客户端。注册的函数必须返回 协同路由,并通过dict将度量名称映射到度量对象来调用:
asyncdefon_application_startup(self,application):# ...application.set_metric_update_handler(self._update_handler)asyncdef_update_handler(self,metrics):forname,metricinmetrics.items():metric.set(...)