Configurar o Grafana Loki
Este guia fornece instruções sobre como configurar o Loki para coletar logs e o Grafana para consultar e exibir logs para um cluster Milvus.
Neste guia, você aprenderá como:
- Implantar o Loki e o Alloy em um cluster Milvus usando o Helm.
- Configurar o armazenamento de objetos para o Loki.
- Consultar logs usando o Grafana.
Para referência, o Promtail será descontinuado. Portanto, apresentamos o Alloy, que foi oficialmente sugerido pelo Grafana Labs como o novo agente para coletar logs do Kubernetes e encaminhá-los para o Loki.
Pré-requisitos
- Você instalou um cluster Milvus no K8s.
- Você instalou as ferramentas necessárias, incluindo Helm e Kubectl.
Implantar o Loki
O Loki é um sistema de agregação de logs inspirado no Prometheus. Implante o Loki usando o Helm para coletar logs do seu cluster Milvus.
1. Adicionar o repositório de gráficos do Helm do Grafana
Adicione o repositório de gráficos do Grafana ao Helm e atualize-o:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
2. Configurar o armazenamento de objetos para o Loki
Escolha uma das seguintes opções de armazenamento e crie um arquivo de configuração loki.yaml:
Opção 1: Usando o MinIO para armazenamento
loki: commonConfig: replication_factor: 1 auth_enabled: false minio: enabled: trueOpção 2: usar o AWS S3 para armazenamento
No exemplo a seguir, substitua
<accessKey>e<keyId>por sua própria chave de acesso e ID do S3,s3.endpointpelo ponto de extremidade do S3 es3.regionpela região do 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. Instalar o Loki
Execute os seguintes comandos para instalar o Loki:
kubectl create ns loki
helm install --values loki.yaml loki grafana/loki -n loki
Implantar o Alloy
Mostraremos a configuração do Alloy.
1. Criar a configuração do Alloy
Usaremos o seguinte alloy.yaml para coletar logs de todos os pods do Kubernetes e enviá-los para o Loki via 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. Instalar o Alloy
helm install --values alloy.yaml alloy grafana/alloy -n loki
Consultar logs com o Grafana
Implante o Grafana e configure-o para se conectar ao Loki para consultar os logs.
1. Implantar o Grafana
Instale o Grafana usando os seguintes comandos:
kubectl create ns monitoring
helm install my-grafana grafana/grafana --namespace monitoring
Antes de poder acessar o Grafana, é necessário recuperar a senha admin:
kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Em seguida, encaminhe a porta do Grafana para sua máquina local:
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. Adicionar o Loki como uma fonte de dados no Grafana
Quando o Grafana estiver em execução, você precisará adicionar o Loki como uma fonte de dados para consultar os logs.
- Abra um navegador da Web e navegue até
127.0.0.1:3000. Faça login usando o nome de usuárioadmine a senha obtida anteriormente. - No menu do lado esquerdo, escolha Conexões > Adicionar nova conexão.
- Na página que aparece, escolha Loki como o tipo de fonte de dados. Pode introduzir loki na barra de pesquisa para encontrar a fonte de dados.
- Nas definições da fonte de dados Loki, especifique o Nome e o URL e, em seguida, clique em Guardar e testar.
Fonte de dados
3. Consultar registos do Milvus
Depois de adicionar o Loki como uma fonte de dados, consulte os logs do Milvus no Grafana:
- No menu do lado esquerdo, clique em Explore (Explorar).
- No canto superior esquerdo da página, escolha a fonte de dados loki.
- Use o navegador de rótulos para selecionar rótulos e consultar logs.
Consultar