StatsD

本文原文链接:https://docs.konghq.com/hub/kong-inc/statsd/

为 Service Route 记录日志指标到一个StatsD 服务器。 通过启用它的Statsd插件,还可用于在Collected守护程序上记录指标。

注意:此插件的功能与0.11.0之前的Kong版本捆绑在一起,与此处记录的不同。 有关详细信息,请参阅CHANGELOG

术语

  • plugin: 在请求被代理到上游API之前或之后,在Kong内部执行操作的插件。
  • Service: 表示外部 upstream API或微服务的Kong实体。
  • Route: 表示将下游请求映射到上游服务的方法的Kong实体。
  • Consumer: 代表使用API的开发人员或机器的Kong实体。当使用Kong时,Consumer 仅与Kong通信,其代理对所述上游API的每次调用。
  • Credential: 与Consumer关联的唯一字符串,也称为API密钥。
  • upstream service: 这是指位于Kong后面的您自己的 API/service,转发客户端请求。

配置

此插件与具有以下协议的请求兼容:

  • http
  • https
  • grpc
  • grpcs

此插件与无DB模式兼容。

在 Service 上启用插件

使用数据库:

通过发出以下请求在Service上配置此插件:

  1. $ curl -X POST http://kong:8001/services/{service}/plugins \
  2. --data "name=statsd" \
  3. --data "config.host=127.0.0.1" \
  4. --data "config.port=8125"

不使用数据库:

通过添加此部分在服务上配置此插件执行声明性配置文件:

  1. plugins:
  2. - name: statsd
  3. service: {service}
  4. config:
  5. host: 127.0.0.1
  6. port: 8125

在这两种情况下,{service}是此插件配置将定位的 Service 的idname

在 Route 上启用插件

使用数据库:

通过发出以下请求在 Route 上配置此插件:

  1. $ curl -X POST http://kong:8001/routes/{route}/plugins \
  2. --data "name=statsd" \
  3. --data "config.host=127.0.0.1" \
  4. --data "config.port=8125"

不使用数据库:

通过添加此部分在 Route 上配置此插件执行声明性配置文件:

  1. plugins:
  2. - name: statsd
  3. route: {route}
  4. config:
  5. host: 127.0.0.1
  6. port: 8125

在这两种情况下,,{route}是此插件配置将定位的 route 的idname

在 Consumer 上启用插件

使用数据库:

您可以使用http://localhost:8001/plugins在特定的Consumers上启用此插件:

  1. $ curl -X POST http://kong:8001/consumers/{consumer}/plugins \
  2. --data "name=statsd" \
  3. \
  4. --data "config.host=127.0.0.1" \
  5. --data "config.port=8125"

不使用数据库:

通过添加此部分在Consumer上配置此插件执行声明性配置文件:

  1. plugins:
  2. - name: statsd
  3. consumer: {consumer}
  4. config:
  5. host: 127.0.0.1
  6. port: 8125

在这两种情况下,{consumer}都是此插件配置将定位的Consumeridusername
您可以组合consumer_idservice_id 。 在同一个请求中,进一步缩小插件的范围。

全局插件

  • 使用数据库: 可以使用http://kong:8001/plugins/配置所有插件。
  • 不使用数据库: 可以通过plugins: 配置所有插件:声明性配置文件中的条目。

与任何 Service ,Route 或 Consumer (或API,如果您使用旧版本的Kong)无关的插件被视为“全局”,并将在每个请求上运行。有关更多信息,请阅读插件参考插件优先级部分。

参数

以下是可在此插件配置中使用的所有参数的列表:

参数 默认值 描述
name 要使用的插件的名称,在本例中为ip-restriction
service_id 此插件将定位的 Service 的ID。
route_id 此插件将定位的 Route 的ID。
enabled true 是否将应用此插件。
consumer_id 此插件将定位的Consumer的id
config.host
optional
127.0.0.1 要将数据发送到的IP地址或主机名。
config.port
optional
8125 将数据发送到上游服务器上的端口。
config.metrics
optional
所有被记录的指标 将要被记录的指标列表。可用值的描述可在 Metrics 中查看。
config.prefix
optional
kong 要在每个指标名称前添加字符串。

指标

插件支持登录到StatsD服务器。

指标 描述 命名空间
request_count 跟踪请求 kong.<service_name>.request.count
request_size 以字节为单位跟踪请求的正文大小 kong.<service_name>.request.size
response_size 以字节为单位跟踪响应的正文大小 kong.<service_name>.response.size
latency 跟踪启动请求和从上游服务器收到响应之间的时间间隔 kong.<service_name>.latency
status_count 跟踪响应中返回的每个状态代码 kong.<service_name>.status.<status>.count
kong.<service_name>.status.<status>.total
unique_users 跟踪向基础 Service/Route 发出请求的唯一用户 kong.<service_name>.user.uniques
request_per_user 跟踪请求/用户 kong.<service_name>.user.<consumer_id>.count
upstream_latency 跟踪最终服务处理请求所花费的时间 kong.<service_name>.upstream_latency
kong_latency 跟踪运行所有插件所需的内部Kong延迟 kong.<service_name>.kong_latency
status_count_per_user 跟踪请求/状态/用户 kong.<service_name>.user.<customer_id>.status.<status>
kong.<service_name>.user.<customer_id>.status.total

指标字段

可以使用指标的任意组合来配置插件,每个条目都包含以下字段。

字段 描述 被允许的值
name StatsD指标的名称 Metrics
stat_type 确定指标代表哪种事件 gauge, timer, counter, histogram, meterset
sample_rate
conditional
采样率 number
customer_identifier
conditional
认证的用户详细信息 consumer_id, custom_id, username

指标要求

  1. 默认情况下,将记录所有指标。
  2. stat_type设置为countergauge的时候,指标也必须定义sample_rate
  3. unique_users指标仅适用于设置为stat_type的情况。
  4. status_countstatus_count_per_userrequest_per_user仅以stat_type作为计数器起作用。
  5. status_count_per_userrequest_per_userunique_users必须定义有customer_identifier

Kong Process Errors

此日志记录插件将仅记录HTTP请求和响应数据。 如果要查找Kong进程错误文件(即nginx错误文件),则可以在以下路径中找到它:$KONG_PREFIX/logs/error.log,其中$ KONG_PREFIX表示配置的前缀

status_count_per_user,request_per_user和unique_users必须定义有customer_identifier。