Grafana Loki 入门
Loki 是一个受 Prometheus 启发的横向可扩展、高可用、多租户日志聚合系统。它设计为非常经济高效且易于操作。它不索引日志内容,而是索引每个日志流的一组标签。
由于所有 Loki 实现都是唯一的,因此安装过程对于每个客户来说都是不同的。但流程中有一些步骤应该是所有安装通用的。
收集日志并查看日志数据通常涉及以下步骤
- 使用推荐的 Helm 图表,在 Kubernetes 上以简单的可扩展模式安装 Loki。为 Helm 图表提供您的对象存储身份验证详细信息。
- 部署 Grafana Alloy 从您的应用程序收集日志。
- 部署 Grafana 或 Grafana Cloud 并配置 Loki 数据源。
- 在 Grafana 主菜单中选择 探索功能。要 在探索中查看日志
下一步:详细了解 Loki 查询语言 LogQL。
将 Kubernetes Pod 日志发送到 Loki 的示例 Grafana Alloy 和 Agent 配置文件
要部署 Grafana Alloy 或 Agent 从您的 Kubernetes 集群收集 Pod 日志并将其发送到 Loki,您可以使用 Helm 图表和一个 values.yaml
文件。
此示例 values.yaml
文件配置为
- 安装 Grafana Agent 以发现 Pod 日志。
- 将
container
和pod
标签添加到日志。 - 使用租户 ID
cloud
将日志推送到您的 Loki 集群。
使用 Helm 图表 安装 Loki。
使用 Helm 图表部署 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