使用本地 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
的独立命名空间中。要创建此命名空间,请运行以下命令
kubectl create namespace meta
配置和安装
meta-monitoring 堆栈使用 meta-monitoring
Helm Chart 安装。本地模式部署了一个小型 LGTM 堆栈,包括 Alloy、Grafana、Mimir、Loki 和 Tempo。要配置 meta-monitoring 堆栈,请创建包含以下内容的 values.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,请运行以下命令
kubectl create secret generic minio -n meta \
--from-literal=<INSERT USERNAME OF CHOICE> \
--from-literal=<INSERT PASSWORD OF CHOICE>
注意
用户名和密码必须至少包含 8 个字符。
要安装 meta-monitoring 堆栈,请运行以下命令
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
或者在升级配置时
helm upgrade meta-monitoring grafana/meta-monitoring -n meta -f values.yaml
要验证安装,请运行以下命令
kubectl get pods -n meta
它应该返回以下 Pod
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
loki:
tracing:
enabled: true
接下来,对每个 Loki 组件进行插桩,使其将追踪数据发送到 meta-monitoring 堆栈。为每个 Loki 组件添加 extraEnv
配置
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
部分)
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 仪表盘。为此,请运行以下命令
kubectl port-forward -n meta svc/grafana 3000:3000
仪表盘和规则
本地 meta-monitoring 堆栈附带了一组预配置的仪表盘和告警规则。您可以使用默认凭据 admin
和 admin
通过 https://:3000 访问它们。