Logomotion: Volet sécurité des applications Web, métrologie / prometheus

This commit is contained in:
2017-12-21 16:55:59 +01:00
committed by Benjamin Bohard
parent 884905c1db
commit c90015ab94
10 changed files with 212 additions and 0 deletions

View File

@ -0,0 +1 @@
/node_modules

View File

@ -0,0 +1,28 @@
// Voir https://github.com/siimon/prom-client
const client = require('prom-client');
// Voir http://expressjs.com/
const express = require('express')
// Création de notre application Web
const app = express()
// On collecte les métriques proposées par défaut par le module 'prom-client'
const collectDefaultMetrics = client.collectDefaultMetrics;
collectDefaultMetrics({ timeout: 5000 }); // Récolte toutes les 5s
// Définition des métriques
const helloWorldCounter = new client.Counter({
name: 'demoapp_hello_world',
help: 'Total de requêtes sur la page "Hello World"'
});
app.get('/', (req, res) => {
helloWorldCounter.inc()
res.send('Hello World!')
})
// On expose les métriques de notre récolteur sur /metrics
app.get('/metrics', (req, res) => res.send(client.register.metrics()))
// On écoute sur le port 0.0.0.0:3000
app.listen(3000, () => console.log('listening on port 3000'))

View File

@ -0,0 +1,15 @@
{
"name": "demo-app",
"version": "0.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "William Petit <william.petit@cadoles.com>",
"license": "AGPL-3.0",
"dependencies": {
"express": "^4.16.2",
"prom-client": "^10.2.2"
}
}

View File

@ -0,0 +1,18 @@
version: '2'
services:
prometheus:
image: prom/prometheus
volumes:
- ./etc/prometheus:/etc/prometheus
ports:
- 9090:9090
alertmanager:
image: prom/alertmanager
volumes:
- ./etc/alertmanager:/etc/alertmanager
ports:
- 9093:9093
faketools:
image: bornholm/faketools
ports:
- 8080:8080

View File

@ -0,0 +1,14 @@
global:
smtp_smarthost: 'faketools:2525'
smtp_from: 'alertmanager@my.org'
smtp_auth_username: 'alertmanager'
smtp_auth_password: 'password'
smtp_require_tls: false
route:
receiver: dev-team
receivers:
- name: 'dev-team'
email_configs:
- to: 'dev-team@my.org'

View File

@ -0,0 +1,20 @@
# Configuration de l'application sur laquelle
# Prometheus doit récolter des informations
scrape_configs:
- job_name: demoapp
scrape_interval: 10s
metrics_path: /metrics
static_configs:
- targets: [ "172.17.0.1:3000" ]
# Configuration de l'alertmanager
alerting:
alertmanagers:
- static_configs:
- targets: [ "alertmanager:9093" ]
# Définition des règles d'alertes
rule_files:
- "/etc/prometheus/rules.d/*.yml"

View File

@ -0,0 +1,6 @@
groups:
- name: hello-world
rules:
- alert: HelloWorldAlert
expr: demoapp_hello_world > 5
for: 10s