|
|
|
@ -30,11 +30,9 @@ Promtail est l'agent qui va pusher les logs vers Loki:
|
|
|
|
|
- /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:
|
|
|
|
|
Pour que LOKI récupère les logs des conteneurs il faut ajouter les labels aux conteneurs dont on veux monitorer les logs (optionnel):
|
|
|
|
|
```yml
|
|
|
|
|
labels:
|
|
|
|
|
logging: "promtail"
|
|
|
|
@ -43,7 +41,7 @@ Pour que LOKI récupère les logs des conteneurs il faut ajouter les labels aux
|
|
|
|
|
|
|
|
|
|
### GRAFANA
|
|
|
|
|
|
|
|
|
|
C'est sur le serveur de Grafana que l'on déploie Loki:
|
|
|
|
|
C'est sur le serveur de Grafana que l'on déploie Loki (de préférence):
|
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
version: "3"
|
|
|
|
@ -60,13 +58,11 @@ services:
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
#### TLS
|
|
|
|
|
Les metrics des agents promtail transitent par le WAN et nécessitent d'être encryptées.
|
|
|
|
|
|
|
|
|
|
- Create certs:
|
|
|
|
|
- Creation des certificats:
|
|
|
|
|
|
|
|
|
|
> Renseigner les nom du serveur LOKI ainsi que son DNS, idem pour l'agent Promtail et lançer le script:
|
|
|
|
|
|
|
|
|
@ -74,7 +70,7 @@ Ajouter une datasource en entrant l'URI du serveur Loki ainsi que le certificat
|
|
|
|
|
sudo ./certificates.sh
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- TLS config:
|
|
|
|
|
#### LOKI
|
|
|
|
|
|
|
|
|
|
Décommenter les lignes concernant le TLS dans promtail/config/yml comme suit:
|
|
|
|
|
|
|
|
|
@ -93,6 +89,8 @@ clients:
|
|
|
|
|
insecure_skip_verify: false
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### PROMTAIL
|
|
|
|
|
|
|
|
|
|
Idem pour loki/config/config.yml:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
@ -108,18 +106,65 @@ server:
|
|
|
|
|
client_ca_file: /etc/loki/cert/ca.crt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### NGINX
|
|
|
|
|
|
|
|
|
|
Nginx reverse proxy configuration:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
upstream loki {
|
|
|
|
|
server 127.0.0.1:3100;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
server {
|
|
|
|
|
listen 80;
|
|
|
|
|
listen [::]:80;
|
|
|
|
|
server_name loki.mon-domaine.tld;
|
|
|
|
|
rewrite ^(.*) https://loki.mon-domaine.tld$1 permanent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
server {
|
|
|
|
|
listen [::]:443 ssl;
|
|
|
|
|
listen 443 ssl;
|
|
|
|
|
server_name loki.mon-domaine.tld;
|
|
|
|
|
|
|
|
|
|
client_max_body_size 200M;
|
|
|
|
|
|
|
|
|
|
location / {
|
|
|
|
|
proxy_buffering off;
|
|
|
|
|
proxy_pass http://loki;
|
|
|
|
|
proxy_pass_request_headers on;
|
|
|
|
|
proxy_set_header Host $host;
|
|
|
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
error_log /var/log/nginx/loki.mon-domaine.tld-proxy-error.log;
|
|
|
|
|
access_log /var/log/nginx/loki.mon-domaine.tld-proxy-access.log;
|
|
|
|
|
|
|
|
|
|
ssl_certificate /etc/letsencrypt/live/loki.mon-domaine.tld/fullchain.pem;
|
|
|
|
|
ssl_certificate_key /etc/letsencrypt/live/loki.mon-domaine.tld/privkey.pem;
|
|
|
|
|
|
|
|
|
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
|
|
|
|
|
ssl_ciphers HIGH:!aNULL:!MD5;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> Modifier loki-dns-serveur avec le vrai dns du serveur
|
|
|
|
|
|
|
|
|
|
#### GRAFANA
|
|
|
|
|
|
|
|
|
|
Ajouter une datasource en entrant l'URI du serveur Loki ainsi que le certificat (/etc/loki/cert/ca.crt)
|
|
|
|
|
|
|
|
|
|
![AJOUT DATASOURCE](docs/datasource.png)
|
|
|
|
|
|
|
|
|
|
## DASHBOARD
|
|
|
|
|
|
|
|
|
|
> import dashboard ID: 17514
|
|
|
|
|
> Faire la dashboard standard
|
|
|
|
|
|
|
|
|
|
## TO DO
|
|
|
|
|
|
|
|
|
|
- [X] schema type
|
|
|
|
|
- [X] provisionner dashboard
|
|
|
|
|
- [X] Promtail config
|
|
|
|
|
- [ ] TLS config (https)
|
|
|
|
|
- [X] TLS config (https)
|
|
|
|
|
- [X] SSH logs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> le scraping des metrics du serveur distant se font désormais via TLS
|