Skip to content
Snippets Groups Projects
Commit d31572eb authored by OKE Ulrich Enangnon's avatar OKE Ulrich Enangnon
Browse files

UPDATE - README

parent a3c75d57
No related branches found
No related tags found
No related merge requests found
Pipeline #16953 passed
# Monitoring et logging de microservices kubernetes avec EK
>_Date:_ Lundi 21 mars 2023.
>
> **Mastère Spécialisé - Infrastructure Cloud et DevOps 2022-23**
>
> GROUPE 3
>
# Monitoring et logging du microservice meteo-icd
## Présentation
Ce dépôt est destiné à la configuration des agents de collecte de métriques et de log dans un cluster kubernetes respectivement avec `metricbeat` et `filebeat`.
Chacun de ces deux agents fonctionnent avec des `modules` et sont executés dans des pods de `DaemonSet` sur tous les noeuds du cluster kubernetes.
Des volumes de types `hostPath` sont utilisés pour l'accès aux fichiers de log. Un fichier de manifest est mis à disposition pour le déploiement des objets liés aux `DaemonSet`.
Des volumes de types `configMap` sont utilisés pour l'accès aux fichiers de log. Un fichier de manifest est mis à disposition pour le déploiement des objets liés aux `DaemonSet`.
# Pré-requis:
## Pré-requis:
Les instructions contenues dans ce dépôt font suite à la mise en place du projet [elastic-kibana](https://gitlab.imt-atlantique.fr/msicd-monitoring/elastic-kibana.git) du même groupe de projets que celui-ci.
Les instructions contenues dans ce dépôt font suite au projet de déploiement de l'application meteo-icd du même groupe de projets que celui-ci.
On suppose que le cluster d'orchestration est kubernetes et héberge déja l'application vapormap déployée lors du précédent projet fil rouge.
On suppose que le cluster d'orchestration est kubernetes et héberge déja l'application meteo-icd.
Les contraintes suivantes sont nécessaires:
......@@ -23,32 +32,8 @@ Les `taints` du controlplane doivent correspondre aux tolérances suivantes:
- effect: "NoSchedule"
operator: "Exists"
```
Le volume des log des pods de l'application vapormap est un `pv` nommé `volume-vapormap`. Ajuster donc le déploiement de cette application avec le manifest `log_volumes.yaml`:
```sh
kubectl apply -f log_volumes.yaml
```
>Note:
> Pour rappel, la définition correspondante dans le playbook de déploiement
```sh
...
spec:
containers:
- image: "{{ vapormap_app_image }}"
name: vapormapapp
volumeMounts:
- mountPath: /var/log/nginx/
name: vapormap-volume
...
volumes:
- name: vapormap-volume
persistentVolumeClaim:
claimName: vapormap-volume
...
```
Le gestionnaire de paquetage `helm` doit être installé sur le noeud de controlplane.
Le gestionnaire de paquetage `helm` doit être installé sur le noeud de controlplane. Cette nécessité est satisfaite par le playbook `environment.yml`.
## Meticbeat
Les caractéristiques principales de cet agent sont:
......@@ -58,75 +43,39 @@ Les caractéristiques principales de cet agent sont:
- [x] dépend de [kubernetes-state-metrics](https://www.elastic.co/guide/en/beats/metricbeat/current/running-on-kubernetes.html);
- [x] utilise le sous-système [autodiscover](https://www.elastic.co/guide/en/beats/metricbeat/current/configuration-autodiscover.html) monitorer les services en cours d'exécution.
### Déploiement
Les étapes indiquées à travers ce [lien](http://elatov.github.io/2020/01/monitoring-kubernetes-with-metricbeat/#deploying-kube-state-metrics) sont les références pour résoudre la dépendance de `kubernetes-state-metrics`. Une copie du [dépot](https://github.com/kubernetes/kube-state-metrics.git) est disponible dans ce projet et les étapes à suivre sont les suivantes (Ajuster `apiVersion` selon la version de kubernetes):
Déployer les composants kubernetes dépendants:
```sh
git clone git@gitlab.imt-atlantique.fr:msicd-monitoring/node-agents.git
cd agent
# Lister les valeurs liees au déploiement
helm show values prometheus-community/kube-state-metrics
# Appliquer les valeurs standards
kubectl apply -f examples/standard
```
Pour vérifier avec un port-forward:
```sh
kubectl port-forward svc/kube-state-metrics -n kube-system 9000:8080 --address 0.0.0.0
```
Visiter le lien http://@IP_NODES:9000/metrics avec le navigateur ou faire :
```sh
curl http://@ClusterIP:8080/metrics -s | grep deployment_status_replicas_availab
```
Déployer à présent metribeat suivant les instructions de la [documentation officielle](https://www.elastic.co/guide/en/beats/metricbeat/current/running-on-kubernetes.html).
Le fichier manifest final est celui qui répond au projet vapormap. Pour voir les différences faire:
## Filebeat
```sh
diff metricbeat-kubernetes.yaml.orig metricbeat-kubernetes.yaml
```
Tout comme metricbeat, il effectue la collecte à l'aide des modules et les inputs configurés suivants la localisation des fichiers de log. Il récupère ainsi tous les flux de logs, avec leur pod, leur conteneur, leur nœud, leur VM, leur hôte et leurs autres métadonnées pour une corrélation automatique. Les fonctionnalités Autodiscover des agents Beats détectent les nouveaux conteneurs et les surveillent de manière évolutive avec les modules Filebeat adaptés.
Les modifications concernent donc:
- le dashboard et l'authentification;
- le moteur de filtre et d'enrichissement `processors`;
- l'activation de métriques système;
- la désactivation d'args;
- la défintion de nouvelles variables;
- et l'application de taints pour autoriser le déploiement sur les noeuds de controlplane.
## Déploiement
Les étapes indiquées à travers ce [lien](http://elatov.github.io/2020/01/monitoring-kubernetes-with-metricbeat/#deploying-kube-state-metrics) sont les références pour résoudre la dépendance de `kubernetes-state-metrics`. Une copie du [dépot](https://github.com/kubernetes/kube-state-metrics.git) est disponible dans ce projet et les étapes à suivre sont les suivantes (Ajuster `apiVersion` selon la version de kubernetes):
Pour appliquer faire:
La chaine de deploiement de ce depot resoud les dependances evoqees et deploie automatiquement les agents dans le cluster kubernetes.
```sh
kubectl create -f metricbeat-kubernetes.yaml
```
Les variables de `pipeline` importantes pour le deploiement sont contenues dans le fichier de variable `METEO_PROD_VARS` notamment `METEO_VOLUME_PATH`, `NGINX_ACCESS_LOG_PATHS` et `NGINX_ERROR_LOG_PATHS`.
Egalement les varibles de groupe de projet
- `NODE_PUBLIC_IP` qui correspond l'adresse IP de `Elasticsearch`;
- `ELASTICSEARCH_PORT` pour port de `Elasticsearch`;
- `KIBANA_PORT` pour le port de `Kibana`;
## Filebeat
Le declenchement de la chaine est assure par des contraintes de branches protegees `master` et `*-release` lors des commit ou manuellement en selectionnant un `tag` correspondant a un numero de release puis l'execution avec le bouton `Run pipeline` (menu CI/CD > Pipelines).
Tout comme metricbeat, il effectue la collecte à l'aide des modules et les inputs configurés suivants la localisation des fichiers de log. Il récupère ainsi tous les flux de logs, avec leur pod, leur conteneur, leur nœud, leur VM, leur hôte et leurs autres métadonnées pour une corrélation automatique. Les fonctionnalités Autodiscover des agents Beats détectent les nouveaux conteneurs et les surveillent de manière évolutive avec les modules Filebeat adaptés.
## Déploiement
>_NB:_
>
> A chaque numero de release correspond un deploiement specifique suivants les changements desires par l'iteration.
>
La [documentation officielle](https://www.elastic.co/guide/en/beats/filebeat/current/running-on-kubernetes.html) fournit un fichier de manifest qui est modifié pour collecter les logs des pods de l'orchestrateur et de ceux de l'application vapormap.
Pour vérifier que la dependance `kube-state-metrics` est operationnelle, il suffit de le faire avec un port-forward:
```sh
# Afficher les modifications
diff filebeat-kubernetes.yaml.orig filebeat-kubernetes.yaml
kubectl port-forward svc/kube-state-metrics -n kube-system 9000:8080 --address 0.0.0.0
```
Ces modifications concernent donc:
- la découverte automatique avec `autodiscovers`;
- le dashboard et l'authentification;
- la défintion de modules nginx et traefik;
- le `path` des logs pour vapormap dans le module nginx;
- le `path` des logs pour traefik dans le module traefik;
- la défintion de nouvelles variables;
- et l'application de taints pour autoriser le déploiement sur les noeuds de controlplane.
Enfin appliquer les modifications:
Visiter le lien http://@IP_NODES:9000/metrics avec le navigateur ou faire :
```sh
kubectl create -f filebeat-kubernetes.yaml
curl http://@ClusterIP:8080/metrics -s | grep deployment_status_replicas_availab
```
Une fois les agents deployes les metrics et log sont remontes a la plateforme d'observabilite.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment