# LOKI PROMTAIL GRAFANA Simple stack pour monitorer les logs des conteneurs ou applications d'un serveur via LOKI / PROMTAIL ![ARCHI](docs/promtail-loki.png) ## UTILISATION LOCALE ```bash docker-compose up -d ``` Grafana est disponible à l'adresse: http://localhost:3000 > user: admin / password: admin ## CONFIGURATION PROD De base promtail est configuré pour faire remonter les logs systèmes (/var/log) ### PROMTAIL AGENT HOST Promtail est l'agent qui va pusher les logs vers Loki: ```yml promtail: image: grafana/promtail:2.9.4 container_name: promtail volumes: - ./promtail/config.yml:/etc/promtail/config.yml - /var/lib/docker/containers:/var/lib/docker/containers:ro - /var/run/docker.sock:/var/run/docker.sock - /var/log:/var/log command: -config.file=/etc/promtail/config.yml depends_on: - loki ``` Pour que LOKI récupère les logs des conteneurs il faut ajouter les labels aux conteneurs dont on veux monitorer les logs: ```yml labels: logging: "promtail" logging_jobname: "containerlogs" ``` ### GRAFANA C'est sur le serveur de Grafana que l'on déploie Loki: ```yml version: "3" services: loki: image: grafana/loki:2.9.4 container_name: loki ports: - 3100:3100 volumes: - ./loki/config:/etc/loki - ./loki/cert:/etc/loki/cert command: -config.file=/etc/loki/config.yml ``` Ajouter une datasource en entrant l'URI du serveur Loki ainsi que le certificat (/etc/loki/cert/ca.crt) ![AJOUT DATASOURCE](docs/datasource.png) #### TLS - Create certs: > Renseigner les nom du serveur LOKI ainsi que son DNS, idem pour l'agent Promtail dans le .env ```bash ./certificates.sh ``` - TLS config: Décommenter les lignes concernant le TLS dans promtail/config/yml comme suit: ```yaml clients: # LOCAL # - url: http://loki:3100/loki/api/v1/push # DISTANT TLS - url: https://loki-dns-serveur:3100/loki/api/v1/push tls_config: ca_file: /usr/allen/loki/cert/ca.crt cert_file: /usr/allen/loki/cert/promtail.client.crt key_file: /usr/allen/loki/cert/client.key server_name: loki-dns-serveur insecure_skip_verify: false ``` Idem pour loki/config/config.yml: ```yaml server: http_listen_port: 3100 # DISTANT TLS grpc_listen_port: 9096 http_tls_config: cert_file: /etc/loki/cert/loki.server.crt key_file: /etc/loki/cert/server.key client_auth_type: RequireAndVerifyClientCert client_ca_file: /etc/loki/cert/ca.crt ``` > Modifier loki-dns-serveur avec le vrai dns du serveur ## DASHBOARD > import dashboard ID: 17514 > Faire la dashboard standard - [X] schema type - [X] provisionner dashboard - [X] Promtail config - [ ] TLS config (https) - [X] SSH logs > le scraping des metrics du serveur distant se font désormais via TLS