通过pushgateway服务将scrapy统计数据导出为prometheus度量
scrapy-prometheus的Python项目详细描述
scrapy stats收集器,通过pushgateway服务将scrapy stats导出为普罗米修斯度量。
安装
通过PIP:
pip install scrapy_prometheus
用法
若要开始使用,请将scrapy_prometheus.PrometheusStatsCollector添加到统计类设置:
STATS_CLASS='scrapy_prometheus.PrometheusStatsCollector'
这个stats收集器的工作方式与vanilla收集器完全相同(因为它是它的子类),但是 创建普罗米修斯度量并将其推送到蜘蛛关闭信号上的pushgateway服务。
它支持两种度量类型:Counter和Gauge。stat度量类型由上使用的操作确定 stat:stats.inc_value将创建一个Counter度量,而其他方法, stats.set_value,stats.max_value,stats.min_value,将创建Gauge。
所有指标都将有一个带有蜘蛛名称的蜘蛛标签。
stat值必须是int或float。
注意,试图对一个度量执行操作,不应该与此一起使用 操作(在计数器上设置值或在仪表上增加值)将产生 scrapy_prometheus.InvalidMetricType错误。要抑制它,请将PROMETHEUS_SUPPRESS_TYPE_CHECK设置为true。
如果要创建自定义度量,可以使用stats.get_registry(spider)访问spider的collectorregistry。
可用设置
# Prometheus pushgateway hostPROMETHEUS_PUSHGATEWAY='localhost:9091'# default# Metric name prefixPROMETHEUS_METRIC_PREFIX='scrapy_prometheus'# default# Timeout for pushing metrics to pushgatewayPROMETHEUS_PUSH_TIMEOUT=5# default# Method to use when pushing metrics# Read https://github.com/prometheus/pushgateway#put-methodPROMETHEUS_PUSH_METHOD='POST'# default# Do not raise scrapy_prometheus.InvalidMetricType when stat is accessed as different type metric.# For example, doing stats.inc_value('foo', 1) and then stats.set_value('foo', 2) will raise an error,# Because metric of type Counter was already created for stat foo.PROMETHEUS_SUPPRESS_TYPE_CHECK=False# job label value, applied to all metrics.PROMETHEUS_JOB='scrapy'# default# grouping label dict, applied to all metrics.# by default it is an instance key with hostname value.PROMETHEUS_GROUPING_KEY={'instance':<hostname>}
如何创建指标
度量名称是从PROMETHEUS_METRIC_PREFIX和stat name生成的,其中所有/都替换为_。
例如:
- statfoo: 67将生成度量值scrapy_prometheus_foo{instance="...",job="scrapy",spider="..."} 67
- statfoo/bar: 67将生成度量值scrapy_prometheus_foo_bar{instance="...",job="scrapy",spider="..."} 67
- statfoo/bar/baz: 67将生成度量值scrapy_prometheus_foo_bar_baz{instance="...",job="scrapy",spider="..."} 67