prometheus输出器

功能描述

能够配置多个自定义的prometheus指标来收集请求的相关信息,向外部的Prometheus应用提供指标的收集接口。

具备以下特性:

  • 包含请求总数,请求耗时等九种收集类型
  • 可自定义指标的收集数据的类型
  • 可自定义指标的标签

OpenAPI配置日志

配置参数说明

参数名值类型是否必填值可能性默认值说明
namestring实例名
driverstringprometheus驱动名
descriptionstring描述
scopesarray_string作用域
metricsarray_object指标列表
metrics->metricstring指标名
metrics->descriptionstring["line","json"]指标描述
metrics->collectorstring可选其一:["request_total","request_timing","request_retry","request_req","request_resp","proxy_total","proxy_timing","proxy_req","proxy_resp"]收集类型
metrics->objectivesstring"0.5:0.05,0.9:0.01,0.99:0.001"quantiles分位数值配置,每个quantile用,分隔
metrics->labelsarray_string标签列表

Metrics请求路径:Prometheus拉取数据所需要的Metrics路径默认为/apinto/metrics/prometheus/{name} {name}为该输出器的所配置的name。

备注

  • 同一输出器下,指标名metric不可重复

  • 多个指标可以配置相同的收集类型collector

  • quantiles分位数值配置objectives: 当收集类型所对应prometheus指标类型为Summary时生效

收集类型配置说明
收集类型类型说明对应的prometheus指标类型
request_total请求总数Counter
request_timing请求耗时Summary
request_retry请求重试次数Summary
request_req请求的request_body大小Summary
request_resp请求的response_body大小Summary
proxy_total转发总数Counter
proxy_timing转发耗时Summary
proxy_req转发的request_body大小Summary
proxy_resp转发的response_body大小Summary
标签列表配置说明

标签列表用于配置指标的标签信息,单个标签的配置可指定标签名和标签值所指定的值。标签名可用as进行指定,标签值可以用常量和变量,变量用$表示。

示例如下:

标签配置配置说明标签名标签值
$status取变量 请求状态码status$status
$status as req_status取变量 请求状态码,并且标签名取别名req_statusreq_status$status
apinto使用常量apintoapintoapinto
apinto as program使用常量apinto,并且标签名取别名programprogramapinto
标签变量取值范围

变量可取范围如下:

  • 应用的标签:比如某个应用配置了key为app_label,value为test的标签,当请求通过了这个应用,使用$app_label作为标签配置就能获取test作为指标的标签值。
  • 系统可用值: 系统可用值的字段前加$即可取系统可用值。注意:由于一次请求可能会有多次转发,proxy_开头的收集类型,若要获取当次转发的相关信息则使用proxy_开头的系统可用值。而request_开头的收集类型,使用proxy_开头的系统可用值会获取最后一次转发的信息。
  • 内置标签
    • $api: 该请求命中的路由名
    • $service: 该请求命中的服务名
    • $application: 该请求命中的应用名
    • $handler:内容处理器,标示响应内容由什么模块处理的,如正常转发为 proxy,如果是熔断是 fuse,如果是缓存,则是 cache

系统可用值的教程点此进行跳转

返回参数说明

参数名类型是否必含说明
idstring实例id
namestring实例名
driverstring驱动名
descriptionstring描述
professionstring模块名
createstring创建时间
updatestring更新时间
scopesarray_string作用域
metricsarray_object指标列表
metrics->metricstring指标名
metrics->descriptionstring指标描述
metrics->collectorstring收集类型
metrics->objectivesstringquantiles分位数值配置,每个quantile用,分隔
metrics->labelsarray_string标签列表

创建prometheus输出器示例

curl -X POST 'http://127.0.0.1:9400/api/output' -H 'Content-Type:application/json' \
-d '{
	"name": "test_prometheus",
	"driver": "prometheus",
	"description": "test_prometheus",
	"scopes": ["prometheus"],
	"metrics": [{
		"metric": "apinto_request_total",
		"collector": "request_total",
		"description": "request_total description",
		"labels": ["$status as request_status", "apinto as program", "$api", "$service"],
		"objectives": ""
	}]
}'

示例说明:prometheus实际拉取的metrics请求路径为/apinto/metrics/prometheus/test_prometheus,配置指标名为apinto_request_total,采集request_total请求总数。

指标配置的标签分别为:

标签名标签值
request_status$status 表示取变量请求状态码
program常量apinto
api$api表示取变量 该请求的路由名
service$service表示取变量 该请求的服务名

返回结果示例

{
    "id": "test_prometheus@output",
    "name": "test_prometheus",
    "description": "test_prometheus",
    "profession": "output",
    "driver": "prometheus",
    "scopes": [
        "prometheus"
    ],
    "metrics": [
        {
            "collector": "request_total",
            "description": "request_total description",
            "labels": [
                "$status as request_status",
                "apinto as program",
                "$api",
                "$service"
            ],
            "metric": "apinto_request_total",
            "objectives": ""
        }
    ],
    "create": "2023-02-24 10:26:14",
    "update": "2023-02-24 10:26:14"
}

prometheus输出器使用

通过prometheus插件绑定prometheus输出器,输出器能够接收并处理来自prometheus插件的相关指标信息。外部的Prometheus应用调用输出器配置的metrics路径即可获取收集的指标信息。

点此跳转至prometheus插件。