# Installation et configuration de Grafana
## Pré-requis
- Un client Ubuntu
- Un server windows server 2019
- Une adresse IP statique sur le client Ubuntu
---
Avant de commencer l'installation de prometheus nous allons vérifier quelque éléments.
## Ubuntu
### Etape 1 obtention adresse ip:
Faite un ping sur l'adresse suivante:
```
ping 8.8.8.8
```
si vous recevez bien une réponse vous pouvez passer à l'étape suivante
Faites un ping cette fois sur l'adresse de google
```
ping google.ch
```
:warning: Avant de continuer soyez sûr que l'adresse que vous avez est statique.
### Etape 2 mise à jour:
Si ces deux rêquete on bien fonctionnée nous pouvons maintenant faire vérifier que Ubuntu est à jour. Lancer ces deux commandes:
```
sudo apt get update && apt-get upgrade -y
```
### Etape 3 Docker:
---
#### Etape 3.1 Installation:
Commencez par l'installtion de docker avec cette commande:
```
sudo apt install docker.io -y
```
---
#### Etape 3.2 Group:
Maintenant que docker est installé, nous allons nous assurez que vous puissiez utiliser docker sans devoir utiliser "sudo" à chaque commande.Effectuez ces commandes:
```
sudo usermod -aG docker $USER
newgrp docker
groups
```
Voilà vous votre utlisateur est normalement dans un groupe nommé "docker". Vous pouvez tester si cela fonctionne avec n'importe laquelle des commandes docker par exemple "docker ps", vous n'aurez plus à saisir "sudo" avant.
---
#### Etape 3.3:
Installez docker-compose avec cette commande:
```
sudo apt install docker-compose
```
Assurez-vous qu'il soit executable en utilisant la commande suivante:
```
sudo chmod +x /usr/local/bin/docker-compose
```
---
#### Etape 3.4:
Bien il ne reste plus qu'une chose à installé sur votre client Ubuntu. Installez là avec cette commande:
```
sudo apt install prometheus
```
Voilà, votre système est maintenant prêt.
---
## Windows
### Etape 1 Windows-exporter
télécharger le fichier windows-exporter via ce lien [Github](https://github.com/prometheus-community/windows_exporter/releases)
Prenez la version "amd64.msi". Une fois que vous avez fait ça nous allons l'installer et le configurer.
---
Faites un clique droit sur le fichier et cliquer sur installer. Une fenêtre d'installtion va s'ouvrir. Faites "next"
---
Ensuite cliquez sur la petite croix à coté de "Firewall Exception", activez toutes la "feature" puis faites "next"

---
Ne changez rien sur la prochaine fenêtre. Appuyez directement sur "next"

---
Enfin appuyez sur "install"

Attendez que l'installtion se termine. Lorsque ça sera le cas, vous pourrez appuyez sur un bouton "finish". La fenêtre se fermera d'elle même.
---
### Etape 2 test:
Maintenant ouvrez le gestionnaire des tâches, et verifiez que votre processus a bien démarré.

---
# Ubuntu
### Etape 1.1 répertoire de travail:
Nous allons créer un répertoire de travail c'est la que nous allons entreposer nos fichiers qui serviront pour les différents docker et leurs configurations. Executez ces deux commandes:
```
mkdir -p ~/Desktop/monitoring
cd ~/Desktop/monitoring
```
:warning: Dès maintenant veillez à rester dans ce répertoire, sinon certaines commandes ne pourraient pas fonctionner.
---
#### Etape 1.2 configurations des dockers:
Créez le premier fichier "prometheus.yml" gardez la même syntaxe pour le nom des fichiers c'est important.
```
nano prometheus.yml
```
##### Dedans, vous allez y écrire ceci:
```
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'grafana'
static_configs:
- targets: ['localhost:3000']
- job_name: 'windows'
static_configs:
- targets: ['IP_DU_SERVER_A_MONITORER:9182']
```
Vous allez devoir modifier une seule chose, sur la dernière ligne, il est écrit "IP_DU_SERVER_A_MONITORER", vous allez devoir remplacer ce bout de texte par l'adresse IP que vous avez choisi pour votre server Windows 2019.
---
Si vous ne savez pas l'IP que possède votre server windows 2019, il vous suffit d'aller dans gestionnaire de serveur>serveur local et vous verrez l'IP de votre carte dans la première colonne.

---
Voici un exemple de ce à quoi votre fichier devrait resembler après cette modification.

Après avoir modifié ceci vous pouvez quitter en sauvgardant votre fichier.
---
#### Etape 1.3
Le prochain fichier, s'appelle "docker-compose.yml" créer le avec la commande:
```
nano docker-compose.yml
```
##### Dedans, vous allez y écrire ceci:
```
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
networks:
- monitoring
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=formation
networks:
- monitoring
networks:
monitoring:
external: true
```

##### Retenez bien, que dans ce fichier se trouve vos identifiants pour vous connectez plus tard. A savoir le user "admin" avec le mot de passe "formation".
Rien n'est a modifier dans ce fichier vous pouvez donc le quitter après l'avoir sauvegardé.
Il faut aussi créer un réseau pour cela executer cette commande:
```
docker network create monitoring
```
---
### 1.4 Test prometheus.yml:
Avant de lancer la construction de nos docker, nous allons vérifier que prometheus.yml est corectement executable. Pour cela, utilisez "promtool" avec cette commande:
```
promtool check config prometheus.yml
```

Voilà le résultat attendu, si ce n'est pas le cas vérifiez la syntaxe du nom du fichier ou à l'intérieur du fichier même un simple espace peut empêcher le fichier d'être corectement lu.
---
### Etape 1.5 Docker-compose:
Si le deux fichier on été créer et que prometheus.yml est bien valide, executez cette commande:
```
docker-compose up -d
```

---
### Etape 1.6 Test:
Attendez que tout les fichiers aient été téléchargé, lorsque ce sera le cas vous devriez voir deux ligne avec marqué done comme si-dessous.

Assurez vous que le deux docker sont bien fonctionnel, executez la commande docker p. Elle devrait vous retourner ceci:

Assurez vous de deux choses que leur statu est bien "up" et qu'ils communique bien sur les ports comme si dessus.
---
Si tout est fonctionnel, nous allons essayer de nous connecter au interfaces web des deux services.
Ouvrez un navigateur et taper l'url suivante: http://localhost:3000

---
Si vous accéder bien à cette fenêtre, ouvrez un nouvel onglet mais cette fois taper l'url: http://localhost:9090

---
## Etape 2 Configuration de Grafana:
### Etape 2.1 Data source:
Allez dans le menu verticale à gauche, devlopper la liste déroulante de "connection" et cliquez sur Data sources

---
Cliquez Ensuite sur "Add data source"

---
cherchez "prometheus si il n'apparait pas directement et cliquez dessus.

---
Vous pouvez observez que l'url n'est pas valide, il va falloir le changer pour qu'il coresponde à l'adresse IP de votre client Ubuntu.

---
Remplacez donc comme moi si-dessous, "localhost" par l'adresse de votre client Ubuntu.

---
Descendez en bas de la page et cliquer sur "Save & test". Si l'adresse que vous avez renterz est bien correct, vous devriez voir un message de succès.

---
### Etape 2.2 Dashboard:
Cliquez sur "new dashboard" à coté de la barre de recherche

---
Lorsque vous êtes dessus cliquez sur "save" qui se trouve un peu en-dessous du bouton que vous avez utilisé juste avant. Renommer le comme vous le voulez. Et cliquez sur "save"

---
### Etape 2.3 Import Dashboard
Quand vous êtes à nouveau sur votre page par défaut du dashboard cliquez sur import. Vous arrivez sur une fenêtre comme si-dessous. Ecrivez le nombre 10467 dans le champ comme si-dessous et cliquez sur load à coté du champ de texte

Si vous voulez d'autres Dashboards, il vous suffit de changer l'url ou utiliser l'ID du dashboard
---
Dans le champ name remmettez le nom que vous avez choisi plus tôt. Ensuite, selectionnez prometheus dans la liste juste en-dessus de Import. Puis cliquez sur ce bouton

---
Et voilà, vous devriez avoir des Dashboards fonctionnels qui vous informe en quasi temps réel de l'état de votre server.

---

---