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