• О Милвусе
  • Начать
  • Концепции
  • Руководство пользователя
  • Импорт данных
  • Инструменты искусственного интеллекта
  • Руководство по администрированию
  • Инструменты
  • Интеграции
  • Учебники
  • Вопросы и ответы
  • API Reference

Настройка Grafana Loki

В этом руководстве приведены инструкции по настройке Loki для сбора журналов и Grafana для запроса и отображения журналов для кластера Milvus.

В этом руководстве вы узнаете, как:

  • Развертывать Loki и Alloy на кластере Milvus с помощью Helm.
  • Настраивать объектное хранилище для Loki.
  • Запрашивать журналы с помощью Grafana.

Для справки: Promtail будет устаревшим, поэтому мы представляем Alloy, который был официально предложен Grafana Labs в качестве нового агента для сбора логов Kubernetes и передачи их в Loki.

Необходимые условия

Развертывание Loki

Loki - это система агрегации журналов, созданная по мотивам Prometheus. Разверните Loki с помощью Helm для сбора логов с вашего кластера Milvus.

1. Добавьте репозиторий диаграмм Grafana в Helm

Добавьте репозиторий графиков Grafana в Helm и обновите его:

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

2. Настройте хранилище объектов для Loki

Выберите один из следующих вариантов хранения и создайте файл конфигурации loki.yaml:

  • Вариант 1: Использование MinIO для хранения данных

    loki:
      commonConfig:
        replication_factor: 1
      auth_enabled: false
    
    minio:
      enabled: true
    
  • Вариант 2: Использование AWS S3 для хранения данных.

    В следующем примере замените <accessKey> и <keyId> на собственный ключ доступа и идентификатор S3, s3.endpoint - на конечную точку S3, а s3.region - на регион S3.

    loki:
      commonConfig:
        replication_factor: 1
      auth_enabled: false
      storage:
        bucketNames:
          chunks: loki-chunks
          ruler: loki-ruler
          admin: loki-admin
        type: 's3'
        s3:
          endpoint: s3.us-west-2.amazonaws.com
          region: us-west-2
          secretAccessKey: <accessKey>
          accessKeyId: <keyId>
    

3. Установите Loki

Выполните следующие команды для установки Loki:

kubectl create ns loki
helm install --values loki.yaml loki grafana/loki -n loki

Развернуть Alloy

Мы покажем вам конфигурацию Alloy.

1. Создание конфигурации Alloy

Мы будем использовать следующий alloy.yaml для сбора логов всех подсистем Kubernetes и отправки их в Loki через loki-gateway:

alloy:
  enableReporting: false
  resources: {}
  configMap:
    create: true
    content: |-
      loki.write "default" {
        endpoint {
          url = "http://loki-gateway/loki/api/v1/push"
        }
      }

      discovery.kubernetes "pod" {
        role = "pod"
      }

      loki.source.kubernetes "pod_logs" {
        targets    = discovery.relabel.pod_logs.output
        forward_to = [loki.write.default.receiver]
      }

      // Rewrite the label set to make log query easier
      discovery.relabel "pod_logs" {
        targets = discovery.kubernetes.pod.targets
        rule {
          source_labels = ["__meta_kubernetes_namespace"]
          action = "replace"
          target_label = "namespace"
        }

        // "pod" <- "__meta_kubernetes_pod_name"
        rule {
          source_labels = ["__meta_kubernetes_pod_name"]
          action = "replace"
          target_label = "pod"
        }

        // "container" <- "__meta_kubernetes_pod_container_name"
        rule {
          source_labels = ["__meta_kubernetes_pod_container_name"]
          action = "replace"
          target_label = "container"
        }

        // "app" <- "__meta_kubernetes_pod_label_app_kubernetes_io_name"
        rule {
          source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"]
          action = "replace"
          target_label = "app"
        }

        // "job" <- "__meta_kubernetes_namespace", "__meta_kubernetes_pod_container_name"
        rule {
          source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_container_name"]
          action = "replace"
          target_label = "job"
          separator = "/"
          replacement = "$1"
        }

        // L"__path__" <- "__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"
        rule {
          source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"]
          action = "replace"
          target_label = "__path__"
          separator = "/"
          replacement = "/var/log/pods/*$1/*.log"
        }

        // "container_runtime" <- "__meta_kubernetes_pod_container_id"
        rule {
          source_labels = ["__meta_kubernetes_pod_container_id"]
          action = "replace"
          target_label = "container_runtime"
          regex = "^(\\S+):\\/\\/.+$"
          replacement = "$1"
        }
      }

2. Установить Alloy

helm install --values alloy.yaml alloy grafana/alloy -n loki

Запрос логов с помощью Grafana

Разверните Grafana и настройте ее на подключение к Loki для запроса логов.

1. Развертывание Grafana

Установите Grafana с помощью следующих команд:

kubectl create ns monitoring
helm install my-grafana grafana/grafana --namespace monitoring

Прежде чем получить доступ к Grafana, необходимо получить пароль admin:

kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

Затем перенаправьте порт Grafana на вашу локальную машину:

export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 3000

2. Добавьте Loki в качестве источника данных в Grafana

После запуска Grafana необходимо добавить Loki в качестве источника данных для запроса журналов.

  1. Откройте веб-браузер и перейдите по адресу 127.0.0.1:3000. Войдите в систему, используя имя пользователя admin и пароль, полученный ранее.
  2. В левом боковом меню выберите Подключения > Добавить новое подключение.
  3. На появившейся странице выберите Loki в качестве типа источника данных. Вы можете ввести loki в строке поиска, чтобы найти источник данных.
  4. В настройках источника данных Loki укажите Имя и URL, а затем нажмите Сохранить и проверить.

DataSource Источник данных

3. Запрос журналов Milvus

После добавления Loki в качестве источника данных сделайте запрос к журналам Milvus в Grafana:

  1. В левом боковом меню нажмите Explore.
  2. В левом верхнем углу страницы выберите источник данных loki.
  3. С помощью браузера Label выберите метки и запросите журналы.

Query Запрос