1. Architecture #
Un agent par nœud.
Le DaemonSet #
Elastic Agent tourne en DaemonSet : un pod par nœud lit les logs des conteneurs (/var/log/containers) et les métriques du kubelet. L'intégration Kubernetes interroge aussi kube-state-metrics pour l'état des objets (déploiements, pods en échec, redémarrages).
2. Déployer #
Manifeste Fleet ou ECK.
Manifeste géré par Fleet #
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install kube-state-metrics prometheus-community/kube-state-metrics -n kube-system
# Kibana › Fleet › Add agent › Kubernetes : télécharger le manifeste prérempli (FLEET_URL, FLEET_ENROLLMENT_TOKEN)
kubectl apply -f elastic-agent-managed-kubernetes.yml
kubectl -n kube-system get pods -l app.kubernetes.io/name=elastic-agentÀ savoir : Le manifeste crée le compte de service, les rôles RBAC en lecture et le DaemonSet ; il monte les répertoires de logs de l'hôte en lecture seule.
Avec ECK #
apiVersion: agent.k8s.elastic.co/v1alpha1
kind: Agent
metadata:
name: elastic-agent
spec:
version: 9.x.y
kibanaRef: { name: kibana }
fleetServerRef: { name: fleet-server }
mode: fleet
policyID: eck-agent
daemonSet:
podTemplate:
spec:
serviceAccountName: elastic-agent
automountServiceAccountToken: true3. Autodiscovery #
Configurer par annotations.
Annotations et hints #
Avec les hints, l'agent lit des annotations sur les pods pour activer automatiquement une intégration (ex. Redis) ou un parseur multiligne pour un conteneur précis, sans modifier la politique.
metadata:
annotations:
co.elastic.hints/package: redis
co.elastic.hints/host: '${kubernetes.pod.ip}:6379'
co.elastic.hints/period: 30sBonne pratique : Fixez des limites mémoire et CPU au DaemonSet et surveillez ses redémarrages : un agent tué par manque de mémoire perd la continuité de la collecte.
