Alerts Monitoring : Trend Micro Vision One with API, Prometheus and Grafana sert à obtenir certaines metriques exploitables concernant les events de l'XDR Trend comme le nombre d'events total sur une durée choisie, le lien de l'event, la sevérité, etc. Il est possible par la suite de les intégrer à un outil de monitoring tel que Grafana.
C'est un projet qui comporte :
- un dockerfile pour faciliter l'installation
- un script python servant d'exporter et de colleteur Prometheus
- un fichier de config qui contient le token
- un fichier de config prometheus.yml
- les requirements
Installer Python (3.10).
Installer Docker Desktop.
Créer un fichier prometheus.yml vide ou récupérer celui du projet.
Dans Docker Desktop il faut :
- un container Prometheus (v2.29.2)
- un container Grafana (latest version)
Dans Windows PowerShell (ou autre console) :
docker run -d -p 9090:9090 --name prometheus -v /VOTRECHEMIN/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:v2.29.2
docker run -d -p 3000:3000 --name grafana grafana/grafana:latest
Dans Windows PowerShell (ou autre console), se rendre dans le répertoire du projet :
docker build -t trendmicro:1.0 .
docker images
docker run -p 9400:9400 --name trend [IMAGEID]
Installer les libraires et les modules nécessaires.
pip install -r REQUIREMENTS.txt
Il faut modifier le token dans le fichier config.py et mettre votre token Trend (droits admin nécessaires).
token = 'YOURTOKEN'
Modifier également le fichier de config prometheus.yml (/VOTRECHEMIN/prometheus.yml) afin de renseigner votre IP dans les jobs.
global:
scrape_interval: 5s
external_labels:
monitor: 'node'
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['YOURIP:9090'] ## IP Address of the localhost. Match the port to your container port
- job_name: 'vision_one'
static_configs:
- targets: ['YOURIP:9400']
Il y a la possibilité de passer le token en variable d'environnement dans Windows PowerShell (laisser la fenêtre ouverte) :
$Env:token='VOTRETOKEN'
Il faut alors renommer le fichier config_token_env.py en config.py.
Il est parfois nécessaire d'ajouter le paramètre -e (export) pour lancer le container :
docker run -p 9400:9400 --name trend -e token='VOTRETOKEN' [IMAGEID]
Sinon l'usage alternatif fonctionne de la même façon.
Lancer le container Prometheus, le container Grafana et le container trend via Docker Desktop (ils sont normalement déjà lancés).
Les containers Prometheus et Grafana sont normalement déjà lancés. Alors il suffit de lancer le script python api.py dans une console Windows (ou autre console).
python api.py
Pour observer les métrics il faut se rendre à l'adresse : http://YOURIP:9400.
Pour aller sur Prometheus il faut se rendre à l'adresse : http://YOURIP:9090.
Pour créer votre dashboard il faut se rendre sur : http://YOURIP:3000.
Sur Grafana, renseigner la data source Prometheus avec l'adresse que vous avez attribuée (http://YOURIP:9090).
Cacher une colonne sur Grafana
Faire un exporter Prometheus en Python
Windows variable environnement
Toutes les contributions sont les bienvenues.