菜单
开源 RSS

开始使用 Grafana Loki

Loki 是一个受 Prometheus 启发的水平可扩展、高可用、多租户日志聚合系统。它设计得非常经济高效,易于操作。它不对日志内容进行索引,而是为每个日志流设置一组标签。

由于所有 Loki 实现都是独特的,因此每个客户的安装过程都不同。但是,在安装过程中有一些步骤应该是每个安装都通用的。

收集日志和查看日志数据通常涉及以下步骤

Loki implementation steps

  1. 在 Kubernetes 上以简单可扩展模式安装 Loki,使用推荐的 Helm 图表。向 Helm 图表提供您的对象存储认证详细信息。
  2. 部署 Grafana Alloy 以收集您的应用程序的日志。
    1. 在 Kubernetes 上,使用 Helm 图表部署 Grafana Alloy。配置 Grafana Alloy 以从您的 Kubernetes 集群中抓取日志,并添加您的 Loki 端点详细信息。有关 Grafana Alloy 配置文件示例,请参阅以下部分。
    2. 根据我们的最佳实践添加 标签 到您的日志。大多数 Loki 用户首先添加描述日志来源的标签(例如区域、集群、环境等)。
  3. 部署 GrafanaGrafana Cloud 并配置一个 Loki 数据源
  4. 在 Grafana 主菜单中选择 探索功能。要在 探索中查看日志
    1. 选择时间范围。
    2. 选择 Loki 数据源。
    3. 查询编辑器中使用 LogQL,使用构建器视图来探索您的标签,或使用 启动您的查询 按钮从预配置的查询样本中进行选择。

下一步:了解更多关于 Loki 查询语言 LogQL 的信息。

示例 Grafana Alloy 和 Agent 配置文件,用于将 Kubernetes Pod 日志发送到 Loki

要部署 Grafana Alloy 或 Agent 以收集您的 Kubernetes 集群中的 Pod 日志并将其发送到 Loki,您可以使用 Helm 图表和一个 values.yaml 文件。

此示例 values.yaml 文件配置为

  • 安装 Grafana Agent 以发现 Pod 日志。
  • containerpod 标签添加到日志中。
  • 使用租户 ID cloud 将日志推送到您的 Loki 集群。
  1. 使用 Helm 图表 安装 Loki。

  2. 使用 Helm 图表部署 Grafana Alloy 或 Grafana Agent

  3. 创建一个基于以下示例的 values.yaml 文件,确保更新 forward_to = [loki.write.endpoint.receiver] 的值

    yaml-alloy
    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"
            }
          }
    yaml-static-agent
    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"
            }
          }
  4. 然后使用以下命令在您的 Kubernetes 集群中安装 Alloy 或 Agent

    alloy
    helm install alloy grafana/alloy -f ./values.yml    
    agent
    helm upgrade -f values.yaml agent grafana/grafana-agent