Настройка Grafana Loki
В этом руководстве приведены инструкции по настройке Loki для сбора журналов и Grafana для запроса и отображения журналов для кластера Milvus.
В этом руководстве вы узнаете, как:
- Развертывать Loki и Alloy на кластере Milvus с помощью Helm.
- Настраивать объектное хранилище для Loki.
- Запрашивать журналы с помощью Grafana.
Для справки: Promtail будет устаревшим, поэтому мы представляем Alloy, который был официально предложен Grafana Labs в качестве нового агента для сбора логов Kubernetes и передачи их в Loki.
Необходимые условия
- Вы установили кластер Milvus на K8s.
- Вы установили необходимые инструменты, включая Helm и Kubectl.
Развертывание 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 в качестве источника данных для запроса журналов.
- Откройте веб-браузер и перейдите по адресу
127.0.0.1:3000. Войдите в систему, используя имя пользователяadminи пароль, полученный ранее. - В левом боковом меню выберите Подключения > Добавить новое подключение.
- На появившейся странице выберите Loki в качестве типа источника данных. Вы можете ввести loki в строке поиска, чтобы найти источник данных.
- В настройках источника данных Loki укажите Имя и URL, а затем нажмите Сохранить и проверить.
Источник данных
3. Запрос журналов Milvus
После добавления Loki в качестве источника данных сделайте запрос к журналам Milvus в Grafana:
- В левом боковом меню нажмите Explore.
- В левом верхнем углу страницы выберите источник данных loki.
- С помощью браузера Label выберите метки и запросите журналы.
Запрос