菜单
Enterprise 开源

监控系统健康状况

您可以通过收集在 Kubernetes 集群上运行的 Mimir 或 GEM 实例的指标和日志来监控 Grafana Mimir 或 Grafana Enterprise Metrics。此过程称为 元监控(metamonitoring)。

作为 元监控 的一部分,您可以创建仪表盘并接收关于从 Mimir 收集的指标和日志的警报。要设置这些仪表盘和警报,请参阅安装 Grafana Mimir 仪表盘和警报

通过 Helm Chart 配置 Grafana Agent Operator

注意

Grafana Alloy 是我们发行的 OTel collector 的新名称。Grafana Agent 已被弃用,并将在 2025 年 10 月 31 日之前进入长期支持 (LTS) 阶段。Grafana Agent 将于 2025 年 11 月 1 日终止生命周期 (EOL)。了解更多关于我们建议迁移到 Grafana Alloy 的原因。

在 Helm Chart 中,您可以配置指标和日志的发送位置。您可以将指标发送到 Prometheus 兼容的服务器,并将日志发送到 Loki 集群。Helm Chart 还可以从 kube-state-metrics、kubelet 和 cAdvisor 抓取额外指标。

Helm Chart 不会收集 Prometheus node_exporter 指标;node_exporter 的指标必须都带有与 Mimir 指标上 instance 标签值相同的 instance 标签。有关必要的 node_exporter 指标列表,请参阅 Grafana Cloud:自托管 Grafana Mimir 集成 中带有 node 前缀的指标。

您可以使用 Grafana Agent operator 配置指标和日志收集。Helm Chart 可以安装并使用 Grafana Agent operator。

注意:在 Helm Chart 可以使用 operator 之前,您需要从 Grafana Agent operator YAML 文件 中手动安装所有 Kubernetes 自定义资源定义 (CRD)

最好使用 Grafana Agent operator 进行指标和日志收集。但是,如果您不想使用它,或者您已经有现有的 Grafana Agent,请参阅 Grafana Mimir 2.5.0 版本中的《通过 Grafana Agent 收集指标和日志》文档。

  1. 在 Secret 中存储凭据

    如果 Prometheus 和 Loki 在没有身份验证的情况下运行,则可以跳过此部分。元监控支持多种指标和日志身份验证方式。如果您使用 API 密钥等 Secret 进行 Prometheus 或 Loki 身份验证,则需要创建包含该 Secret 的 Kubernetes Secret。

    这是一个 Kubernetes Secret 示例

    yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: metamonitoring-credentials
    data:
      prometheus-api-key: FAKEACCESSKEY
      loki-api-key: FAKESECRETKEY

    有关如何创建 Kubernetes Secret 的信息,请参阅创建 Secret

  2. 配置 Helm Chart Values

    将以下 YAML 配置合并到您的 Helm values 文件中,并将 urlusernamepasswordSecretNamepasswordSecretKey 的值替换为 Prometheus 和 Loki 集群的详细信息以及您创建的 Secret。如果您的 Prometheus 和 Loki 服务器在没有身份验证的情况下运行,则删除以下 YAML 中的 auth 块。

    如果您的 Kubernetes 集群中已经安装了 Agent operator,请设置 installOperator: false

    yaml
    metaMonitoring:
      serviceMonitor:
        enabled: true
      grafanaAgent:
        enabled: true
        installOperator: true
    
        logs:
          remote:
            url: "https://example.com/loki/api/v1/push"
            auth:
              username: "12345"
              passwordSecretName: "metamonitoring-credentials"
              passwordSecretKey: "loki-api-key"
    
        metrics:
          remote:
            url: "https://example.com/api/v1/push"
            auth:
              username: "54321"
              passwordSecretName: "metamonitoring-credentials"
              passwordSecretKey: "prometheus-api-key"
    
          scrapeK8s:
            enabled: true
            kubeStateMetrics:
              namespace: kube-system
              labelSelectors:
                app.kubernetes.io/name: kube-state-metrics

将指标发送回 Mimir 或 GEM

您还可以将收集到的指标(元监控指标)发送回 Mimir 或 GEM 本身,而不是发送到其他地方。

当您将 metamonitoring.grafanaAgent.metrics.remote.url 字段留空时,Chart 将自动填写 GEM 网关 Service 或 Mimir NGINX Service 的地址。

如果您已部署 Mimir,并且未设置 metamonitoring.grafanaAgent.metrics.remote.url,则元监控指标将被发送到 Mimir 集群。您可以使用 HTTP 头 X-Scope-OrgID: metamonitoring 查询这些指标。

如果您已部署 GEM,则有两种替代方案

  • 如果您使用 trust 身份验证类型(mimir.structuredConfig.auth.type=trust),则适用与 Mimir 相同的说明。

  • 如果您使用企业身份验证类型(mimir.structuredConfig.auth.type=enterprise,这也是 enterprise.enabled=true 时的默认值),则还需要提供一个包含租户身份验证令牌的 Secret。该令牌应具有 metrics:write 范围的访问策略。假设您使用 GEM 身份验证模型,Helm Chart 值应如下例所示。

yaml
metaMonitoring:
  serviceMonitor:
    enabled: true
  grafanaAgent:
    enabled: true
    installOperator: true

    metrics:
      remote:
        auth:
          username: metamonitoring
          passwordSecretName: gem-tokens
          passwordSecretKey: metamonitoring

不使用 Helm Chart 进行监控

要不使用 Helm Chart 监控系统健康状况,请参阅不使用 Helm Chart 收集指标和日志

您还可以使用自托管 Grafana Cloud 集成来监控您的 Mimir 系统。更多信息请参阅Grafana Cloud:自托管 Grafana Mimir 集成