部署 Loki 元监控
收集和监控 Loki 集群的主要方法是使用 Kubernetes Monitoring Helm chart。此 Chart 为 Kubernetes 集群提供了一个全面的监控解决方案,并包含了对完整 LGTM (Loki, Grafana, Tempo 和 Mimir) 技术栈的直接集成监控。本步骤将引导您部署 Kubernetes Monitoring Helm chart 以监控您的 Loki 集群。
注意
我们建议在生产环境中使用 Kubernetes 以分布式模式运行 Loki 集群。本步骤假设您拥有一个正在运行的 Kubernetes 集群和一个正在运行的 Loki 部署。还有其他部署 Loki 的方法,例如使用 Docker 或虚拟机安装。使用这些部署方法时,元监控仍然可能,但本步骤未涵盖。
先决条件
- kubectl
- Helm 3 或更高版本。请参阅 安装 Helm。
- 一个正在运行的 Kubernetes 集群以及一个正在运行的 Loki 部署。
- 一个 Grafana Cloud 账户或一个单独的 LGTM 技术栈用于监控。
准备您的环境
在部署 Kubernetes Monitoring Helm chart 之前,您需要在您的环境中设置几个组件。
添加 Grafana Helm 仓库
helm repo add grafana https://grafana.github.io/helm-charts
更新您的 Helm 仓库
helm repo update
为监控技术栈创建一个命名空间
kubectl create namespace meta
认证
Kubernetes Monitoring Helm chart 需要一个 Grafana Cloud 账户或一个单独的 LGTM 技术栈用于监控。您需要向 Helm chart 提供必要的凭据,以便与您的 Grafana Cloud 账户或 LGTM 技术栈进行认证。在本步骤中,我们将使用 Grafana Cloud 作为示例。
在 Grafana Cloud 中创建一个新的 Cloud Access Policy。
- 登录 Grafana Cloud。
- 在主菜单中,选择 Security > Access Policies。
- 点击 Create access policy。
- 为 Policy 指定一个 Name 并选择以下权限
- 指标:写入
- 日志:写入
- 点击 Create。
- 点击 Add Token。为 Token 指定一个名称,然后点击 Create。保存 Token 以备后用。
收集 Prometheus 和 Loki 的
url
和username
。- 导航到 Grafana Cloud Portal 的 Overview 页面。
- 点击您的 Prometheus 实例的 Details 按钮。
- 从 Sending metrics using Grafana Alloy 部分,收集实例的 username 和 url。
- 导航回 Overview 页面。
- 点击您的 Loki 实例的 Details 按钮。
- 从 Sending Logs to Grafana Cloud using Grafana Alloy 部分,收集实例的 username 和 url。
- 导航回 Overview 页面。
使用从 Grafana Cloud 收集的凭据创建 Kubernetes Secrets。
kubectl create secret generic metrics -n meta \ --from-literal=username=<PROMETHEUS-USER> \ --from-literal=password=<CLOUD-TOKEn> kubectl create secret generic logs -n meta \ --from-literal=username=<LOKI-USER> \ --from-literal=password=<CLOUD-TOKEN>
请注意,Kubernetes Monitoring Helm 根据您的需求支持许多不同的认证方法,包括
- Bearer Tokens
- OAuth2
- SigV4
- External Secrets
有关如何配置这些方法的更多信息,请参阅 Kubernetes Monitoring Helm 示例。
部署 Kubernetes Monitoring Helm chart
现在您已经准备好了环境并收集了必要的凭据,您可以部署 Kubernetes Monitoring Helm chart 来监控您的 Loki 集群。为此,我们需要将 values.yaml
文件复制到本地机器并修改,以包含必要的配置。
从 Kubernetes Monitoring Helm chart 仓库下载
values.yaml
文件curl -O https://raw.githubusercontent.com/grafana/loki/main/production/meta-monitoring/values.yaml
使用您选择的文本编辑器打开
values.yaml
文件,并添加 Prometheus 和 Loki 的端点。destinations: - name: prometheus type: prometheus url: https://<PROMETHEUS-ENDPOINT>/api/prom/push auth: type: basic usernameKey: username passwordKey: password secret: create: false name: metrics namespace: meta - name: loki type: loki url: https://<LOKI-ENDPOINT>/loki/api/v1/push auth: type: basic usernameKey: username passwordKey: password secret: create: false name: logs namespace: meta
(可选)更新集群名称为一个可读的名称,以便在 Grafana Cloud 中识别您的集群。
# Global Label to be added to all telemetry data. Should reflect a recognizable name for the cluster. cluster: name: loki-meta-monitoring-cluster
默认的 values 文件假设您已将 Loki 部署在
loki
命名空间中,并将把 Kubernetes 监控技术栈部署在meta
命名空间中。如果您将 Loki 部署在不同的命名空间中,则需要更新values.yaml
文件中的namespaces
以匹配 Loki 部署所在的命名空间。示例如下namespaces: - loki
请注意,如果您想从所有可用命名空间收集数据,可以从
values.yaml
文件中移除namespaces
键。使用修改后的
values.yaml
文件部署 Kubernetes Monitoring Helm charthelm install meta-loki grafana/k8s-monitoring \ --namespace meta \ -f values.yaml
验证 Kubernetes Monitoring Helm chart 是否已成功部署
kubectl get pods -n meta
您应该会看到在
meta
命名空间中运行的 Pod 列表。NAME READY STATUS RESTARTS ... meta-loki-alloy-singleton-6d7f8d8b86-sg4wx 2/2 Running 0 ... meta-loki-kube-state-metrics-64bdcfcbd-5snqz 1/1 Running 0 ... meta-loki-node-exporter-855l5 1/1 Running 0 ... meta-loki-node-exporter-b976b 1/1 Running 0 ... meta-loki-node-exporter-vsm4s 1/1 Running 0 ...
后续步骤
您已成功部署 Kubernetes Monitoring Helm chart 来监控您的 Loki 集群。现在您可以继续下一步,部署 Loki mixin 以可视化来自 Loki 集群的指标和日志。有关更多信息,请参阅 安装 Loki Mixin。