菜单
文档面包屑箭头 Grafana Loki面包屑箭头 设置面包屑箭头 安装面包屑箭头 使用 Helm 安装面包屑箭头 监控面包屑箭头 使用本地 LGTM 堆栈监控 Loki
开源

使用本地 LGTM(Loki、Grafana、Tempo 和 Mimir)堆栈监控 Loki

本主题将指导您使用 meta-monitoring Helm Chart 部署本地堆栈来监控您的生产环境 Loki 安装。此方法利用了该 Chart 的许多 自监控 功能,但日志不会发送回 Loki 本身,而是发送到一个运行在 meta 命名空间内的小型 Loki、Grafana、Tempo、Mimir (LGTM) 堆栈。

开始之前

  • Helm 3 或更高版本。请参阅安装 Helm
  • 一个正在运行的 Kubernetes 集群以及一个正在运行的 Loki 部署。

配置 meta 命名空间

meta-monitoring 堆栈将安装在名为 meta 的独立命名空间中。要创建此命名空间,请运行以下命令

bash
  kubectl create namespace meta

配置和安装

meta-monitoring 堆栈使用 meta-monitoring Helm Chart 安装。本地模式部署了一个小型 LGTM 堆栈,包括 Alloy、Grafana、Mimir、Loki 和 Tempo。要配置 meta-monitoring 堆栈,请创建包含以下内容的 values.yaml 文件

yaml
namespacesToMonitor:
- default

cloud:
  logs:
    enabled: false
  metrics:
    enabled: false
  traces:
    enabled: false

local:
  grafana:
    enabled: true
  logs:
    enabled: true
  metrics:
    enabled: true
  traces:
    enabled: true
  minio:
    enabled: true

有关更多配置选项,请参阅示例 values.yaml 文件

本地模式默认也会启用 Minio,它将作为 LGTM 堆栈的对象存储。要提供对 Minio 的访问权限,您需要创建一个通用 Secret。要创建通用 Secret,请运行以下命令

bash
kubectl create secret generic minio -n meta \
 --from-literal=<INSERT USERNAME OF CHOICE> \
 --from-literal=<INSERT PASSWORD OF CHOICE>

注意

用户名和密码必须至少包含 8 个字符。

要安装 meta-monitoring 堆栈,请运行以下命令

bash
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install meta-monitoring grafana/meta-monitoring -n meta -f values.yaml

或者在升级配置时

bash
helm upgrade meta-monitoring grafana/meta-monitoring -n meta -f values.yaml 

要验证安装,请运行以下命令

bash
kubectl get pods -n meta

它应该返回以下 Pod

bash
grafana-59d664f55f-dtfqr                           1/1     Running   2 (2m7s ago)   137m
loki-backend-0                                     2/2     Running   2 (2m7s ago)   137m
loki-backend-1                                     2/2     Running   4 (2m7s ago)   137m
loki-backend-2                                     2/2     Running   3 (2m7s ago)   137m
loki-read-6f775d8c5-6t749                          1/1     Running   1 (2m7s ago)   137m
loki-read-6f775d8c5-kdd8m                          1/1     Running   1 (2m7s ago)   137m
loki-read-6f775d8c5-tsw2r                          1/1     Running   1 (2m7s ago)   137m
loki-write-0                                       1/1     Running   1 (2m7s ago)   137m
loki-write-1                                       1/1     Running   1 (2m7s ago)   137m
loki-write-2                                       1/1     Running   1 (2m7s ago)   137m
meta-alloy-0                                       2/2     Running   2 (2m7s ago)   137m
meta-alloy-1                                       2/2     Running   2 (2m7s ago)   137m
...

启用 Loki 追踪

默认情况下,Loki 未启用追踪。要启用追踪,请通过编辑 values.yaml 文件并添加以下配置来修改 Loki 配置

tracing.enabled 配置设置为 true

yaml
loki:
  tracing:
    enabled: true

接下来,对每个 Loki 组件进行插桩,使其将追踪数据发送到 meta-monitoring 堆栈。为每个 Loki 组件添加 extraEnv 配置

yaml
ingester:
  replicas: 3
  extraEnv:
    - name: JAEGER_ENDPOINT
      value: "http://mmc-alloy-external.default.svc.cluster.local:14268/api/traces"
      # This sets the Jaeger endpoint where traces will be sent.
      # The endpoint points to the mmc-alloy service in the default namespace at port 14268.
      
    - name: JAEGER_AGENT_TAGS
      value: 'cluster="prod",namespace="default"'
      # This specifies additional tags to attach to each span.
      # Here, the cluster is labeled as "prod" and the namespace as "default".
      
    - name: JAEGER_SAMPLER_TYPE
      value: "ratelimiting"
      # This sets the sampling strategy for traces.
      # "ratelimiting" means that traces will be sampled at a fixed rate.
      
    - name: JAEGER_SAMPLER_PARAM
      value: "1.0"
      # This sets the parameter for the sampler.
      # For ratelimiting, "1.0" typically means one trace per second.

安装 kube-state-metrics

关于 Kubernetes 对象的指标是从 kube-state-metrics 中采集的。这需要在集群中安装。meta-monitoring 的 values.yaml 文件中的 kubeStateMetrics.endpoint 条目应设置为其地址(不包含 URL 中的 /metrics 部分)

yaml
kubeStateMetrics:
  # Scrape https://github.com/kubernetes/kube-state-metrics by default
  enabled: true
  # This endpoint is created when the helm chart from
  # https://artifacthub.io/packages/helm/prometheus-community/kube-state-metrics/
  # is used. Change this if kube-state-metrics is installed somewhere else.
  endpoint: kube-state-metrics.kube-state-metrics.svc.cluster.local:8080

访问 meta-monitoring 堆栈

要访问 meta-monitoring 堆栈,您可以使用端口转发来访问 Grafana 仪表盘。为此,请运行以下命令

bash
kubectl port-forward -n meta svc/grafana 3000:3000

仪表盘和规则

本地 meta-monitoring 堆栈附带了一组预配置的仪表盘和告警规则。您可以使用默认凭据 adminadmin 通过 https://:3000 访问它们。