@marcos_feitoza/vector
v1.0.1
Published
Este repositório entrega o Vector como DaemonSet para coleta de logs dos pods.
Readme
Vector (Coletor de logs)
Este repositório entrega o Vector como DaemonSet para coleta de logs dos pods.
Papel na arquitetura
- Coleta
stdout/stderrde pods no nó (kubernetes_logs). - Normaliza campos e labels para consulta no Loki/Grafana.
- Encaminha para
Lokiemhttp://loki.monitoring.svc.cluster.local:3100.
Integração com Loki e Grafana
Fluxo:
- Pod escreve log em stdout/stderr.
- Vector captura no nó.
- Transform
normalizedefine:namespacepodcontainernodeapp(fallback por labels e nomes)
- Sink Loki envia payload JSON + labels.
- Grafana consulta Loki com LogQL e usa labels para filtros (
namespace,app,pod,container).
Arquivos principais
helm/prod-values.yaml: imagem, recursos e endpoint Loki.helm/templates/configmap.yaml: pipeline Vector (sources,transforms,sinks).
Mapeamento de label app
No transform atual, prioridade:
kubernetes.pod_labels.appkubernetes.pod_labels."app.kubernetes.io/name"kubernetes.pod_labels."app_kubernetes_io_name"kubernetes.pod_labels."app.kubernetes.io/instance"containerpod- fallback
unknown
Isso reduz casos de app="unknown" no Grafana.
Verificação rápida
- Pods do Vector:
kubectl -n monitoring get pods -l app.kubernetes.io/name=vector -o wide- Logs do Vector:
kubectl -n monitoring logs -l app.kubernetes.io/name=vector --tail=200- Teste no Grafana Explore (Loki):
{namespace="app"}ou com app específico:
{namespace="app", app=~".*crypto.*"}Troubleshooting comum
- Sem logs no Grafana:
- Validar endpoint do Loki no Vector.
- Conferir conectividade DNS/Service
loki.monitoring.svc.cluster.local.
app=unknown:- Revisar labels dos Deployments.
- Ajustar fallback do transform em
configmap.yaml.
- Alta cardinalidade:
- Evitar labels dinâmicas no app (IDs por requisição, etc.).
Convenções
- Logs em JSON estruturado quando possível.
- Labels estáveis:
app,namespace,pod,container,node.
