Kubernetes apiserver 度量集

编辑

Kubernetes apiserver 度量集编辑

这是 Kubernetes 模块的 apiserver 度量集,负责从 Kubernetes API(在 /metrics 可用)中检索指标。

此度量集需要访问 Kubernetes 的 apiserver 组件,通常可以通过任何 POD 通过 kubernetes.default 服务或通过环境变量 (KUBERNETES_SERVICE_HOSTKUBERNETES_SERVICE_PORT) 访问。

当 API 使用 https 时,pod 需要使用其默认令牌进行身份验证,并使用适当的 CA 文件信任服务器。

使用 https 和基于令牌的身份验证的配置示例

- module: kubernetes
  enabled: true
  metricsets:
    - apiserver
  hosts: ["https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}"]
  #hosts: ["https://kubernetes.default"]
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  ssl.certificate_authorities:
    - /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  period: 30s

为了访问 API 服务的 /metrics 路径,某些 Kubernetes 环境可能需要将以下权限添加到 ClusterRole。

rules:
- nonResourceURLs:
  - /metrics
  verbs:
  - get

之前的配置和 RBAC 要求可在 在 Kubernetes 上运行 Metricbeat 文档中提出的完整示例清单中找到。

字段

有关度量集中每个字段的描述,请参阅 导出字段 部分。

以下是由此度量集生成的示例文档

{
    "@timestamp": "2019-03-01T08:05:34.853Z",
    "event": {
        "dataset": "kubernetes.apiserver",
        "duration": 115000,
        "module": "kubernetes"
    },
    "kubernetes": {
        "apiserver": {
            "major": {
                "version": "1"
            },
            "minor": {
                "version": "21"
            },
            "request": {
                "code": "0",
                "component": "apiserver",
                "count": 14,
                "resource": "endpoints",
                "scope": "cluster",
                "verb": "WATCH",
                "version": "v1"
            }
        }
    },
    "metricset": {
        "name": "apiserver",
        "period": 10000
    },
    "service": {
        "address": "127.0.0.1:55555",
        "type": "kubernetes"
    }
}