Grafana Loki 入门
Loki 是一个水平可伸缩、高可用、多租户日志聚合系统,灵感来自 Prometheus。它设计得非常经济高效且易于操作。它不索引日志内容,而是为每个日志流索引一组标签。
由于所有 Loki 实现都是独一无二的,因此每个用户的安装过程都不同。但在此过程中有一些步骤是所有安装共有的。
收集日志和查看日志数据通常包括以下步骤:
- 使用推荐的Helm chart,以简单的可伸缩模式在 Kubernetes 上安装 Loki。向 Helm chart 提供您的对象存储认证详细信息。
- 部署Grafana Alloy以从您的应用程序收集日志。
- 部署Grafana或Grafana Cloud并配置一个Loki 数据源。
- 在 Grafana 主菜单中选择探索功能。要在探索中查看日志:
下一步: 了解更多关于 Loki 查询语言,LogQL。
Grafana Alloy 和 Agent 发送 Kubernetes Pod 日志到 Loki 的示例配置文件
要部署 Grafana Alloy 或 Agent 以从 Kubernetes 集群收集 Pod 日志并将其发送到 Loki,您可以使用 Helm chart 和一个 values.yaml
文件。
此示例 values.yaml
文件配置用于:
- 安装 Grafana Agent 以发现 Pod 日志。
- 向日志添加
container
和pod
标签。 - 使用租户 ID
cloud
将日志推送到您的 Loki 集群。
使用Helm chart安装 Loki。
使用 Helm chart 部署 Grafana Alloy 或 Grafana Agent
根据以下示例创建
values.yaml
文件,确保更新forward_to = [loki.write.endpoint.receiver]
的值。alloy: mounts: varlog: true configMap: content: | logging { level = "info" format = "logfmt" } discovery.kubernetes "pods" { role = "pod" } loki.source.kubernetes "pods" { targets = discovery.kubernetes.pods.targets forward_to = [loki.write.endpoint.receiver] } loki.write "endpoint" { endpoint { url = "http://loki-gateway.default.svc.cluster.local:80/loki/api/v1/push" tenant_id = "local" } }
agent: mounts: varlog: true configMap: content: | logging { level = "info" format = "logfmt" } discovery.kubernetes "k8s" { role = "pod" } discovery.relabel "k8s" { targets = discovery.kubernetes.k8s.targets rule { source_labels = ["__meta_kubernetes_pod_name"] action = "replace" target_label = "pod" } rule { source_labels = ["__meta_kubernetes_pod_container_name"] action = "replace" target_label = "container" } rule { source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_label_name"] target_label = "job" separator = "/" } rule { source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"] target_label = "__path__" separator = "/" replacement = "/var/log/pods/*$1/*.log" } } local.file_match "pods" { path_targets = discovery.relabel.k8s.output } loki.source.file "pods" { targets = local.file_match.pods.targets forward_to = [loki.write.endpoint.receiver] } loki.write "endpoint" { endpoint { url = "http://loki-gateway:80/loki/api/v1/push" tenant_id = "cloud" } }
然后在您的 Kubernetes 集群中使用以下命令安装 Alloy 或 Agent:
helm install alloy grafana/alloy -f ./values.yml
helm upgrade -f values.yaml agent grafana/grafana-agent