Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

Mails

L'alerting avec Prometheus

Rédigé par dada / 02 août 2018 / 4 commentaires


Depuis le temps que je devais l'écrire, ce billet, le voici : comment mettre en place un système d'alerting avec Prometheus !

Pour celles et ceux qui ne sont pas familiers avec ce vocabulaire : l'alerting est une notion d'administrateur système qui consiste à prévenir les équipes en charge du bon fonctionnement d'un service qu'il est en train de se casser la figure. Ou qu'il s'est déjà vautré.

En avant-propos, je vous invite à aller faire un tour du côté de mes différents billets sur Prometheus.

L'alerting, c'est une brique en plus

Prometheus est une bête idiote, les exporters sont des bêtes idiotes, Grafana est une bête idiote, l'alerting est lui aussi une bête idiote. Pour le faire fonctionner, à la manière d'un exporter, il vous faut installer l'Alertmanager.

L'installation de l'Alertmanager est identique à celle des autres exporter : téléchargez le binaire ou le conteneur Docker, lancez tout ça en lui passant en paramètre son fichier de configuration.

Toujours comme un simple exporter, ou presque, faites comprendre à Prometheus qu'il est là en ajoutant ces quelques lignes dans prometheus.yml, en dessous de la configuration globale :
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - localhost:9093
    scheme: http
    timeout: 10s

N'oubliez pas de reload la configuration de Prometheus :

curl -X POST http://localhost:9090/-/reload

Configurer la détection des problèmes

Les alertes se présentent sous forme de fichiers que vous allez placer dans le répertoire rules/ de Prometheus :
root@server /etc/prometheus/rules # ls
memory  up
Il va ensuite falloir les déclarer dans Prometheus :
# Load and evaluate rules in this file every 'evaluation_interval' seconds.
rule_files:
  - '/etc/prometheus/rules/up'
  - '/etc/prometheus/rules/memory'
Pour faire simple et rapide, voici des exemples d'alertes qui pourraient vous servir :

- Service disponible
ALERT InstanceDown
  IF up == 0
  FOR 1m
  LABELS { severity = "page" }
  ANNOTATIONS {
    summary = "Instance {{$labels.instance}} is down",
    description = "{{$labels.instance}} of job {{$labels.job}} has been down for more than 1 minutes"
  }
- L'utilisation de la RAM
ALERT MemoryUsage
  IF ((node_memory_MemTotal-node_memory_MemFree-node_memory_Cached)/(node_memory_MemTotal)*100) > 95
  FOR 10m
  LABELS { severity = "warning" }
  ANNOTATIONS {
    summary = "Instance {{$labels.instance}} is in danger",
    description = "RAM of {{$labels.instance}} has been too used for more than 10 minutes"
  }
Avant de vous lancez dans le copier/coller du code exposé ci-dessus, prenez le temps de lire les quelques lignes suivantes :

- ALERT : il s'agit d'un nom arbitraire que vous donnez à votre alerte
- IF : c'est la condition qu'il faut respecter pour déclencher l'alerte
- FOR : la durée pendant laquelle le IF doit être valide
- LABEL : ça permet de donner un poids à votre alerte (osef, warning, critical, etc)
- ANNOTATIONS : ce que vous voulez afficher quand l'alerte est déclenchée

Normalement, à ce niveau là, vous avez un Alertemanager capable de détecter si vous avez des soucis de RAM ou si vos serveurs/services sont fonctionnels ou HS. C'est bien beau, mais ça ne vous réveillera pas en cas de pépin.

Un rapide tour sur l'interface web de Prometheus devrait vous le confirmer. En exemple, voici la liste des alertes que j'utilise :

Configurer l'envoi d'emails d'alerte

Le fichier de configuration que vous passerez en paramètre au lancement de l'Alertmanager doit lui dire que faire quand une alerte est détectée. Il est possible de lui dire de vous envoyez un message sur Telegram, Mattermost, ou, simplement, de vous envoyer un mail. C'est la solution la plus simple, alors allons-y.

Les possibilités étant énormes, je ne vais vous proposer qu'un exemple de configuration simple :
global:
  smtp_smarthost: 'localhost:25'
  smtp_from: 'alertmanager@mon.email'

route:
  receiver: 'team-mails'
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 3h

receivers:
- name: 'team-mails'
  email_configs:
  - to: 'ladestination@email.mail'
Avec cette configuration, vous allez recevoir un mail en cas de souci. Sans intervention de votre part, le mail sera renvoyé au bout de 3h.

Cette conf est très simple. Je n'explique pas tout. Juste, elle marche. Si vous souhaitez en savoir plus, comme l'organisation de groupes qui recevront des alertes spécifiques ou la gestion des "warning" ou des "critical", je vous encourage à prendre un peu de temps pour lire l'exemple assez complet qu'on peut trouver par ici.

Et voilà ! Je suis loin d'avoir fait le tour des possibilités de Prometheus mais les différents billets que vous trouverez sur ce blog devraient vous permettre de mettre les doigts dedans et de vous en sortir.

Des bisous !

Coucou ProtonMail, ciao Google Mail

Rédigé par dada / 28 décembre 2016 / 12 commentaires




C'était quelque chose que je voulais absolument faire depuis des mois, voire des années et c'est maintenant chose faite : je viens de transformer ma vieille adresse personnelle en Gmail (Google Mail) par une adresse en @protonmail.com.

ProtonMail ? C'est un fournisseur de courriel (!) basé en Suisse et créé par des gars du CERN. La page Wikipedia vous donnera toutes les informations connues autour de ce service et je vous invite à la lire : ce billet va se concentrer sur mes retours d'utilisateur.

Mails chiffrés

C'est natif avec ProtonMail et ça ne demande pas la moindre manipulation de la part de l'utilisateur. Ça caresse ma fibre de feignant. Les mails chiffrés ne sont pas lisibles ni par les administrateurs des serveurs ni par les gars ne possédant pas votre clé privée.
Quand vous chiffrez un mail à destination d'un contact qui n'a pas de compte ProtonMail, celui-ci ne recevra qu'une notification et sera invité à en lire le contenu depuis une interface sécurisée. Youpi, non ?
Vous pouvez, en toute connaissance de cause, envoyer des mails en clair sur le réseau pour ne pas perturber vos contacts.

Le support des domaines perso

Ce qui veut dire que si vous avez un nom de domaine, vous pourrez le faire pointer sur votre compte PM en toute transparence et, du coup, profiter de tous ses avantages avec une adresse qui ne se terminera pas en @protonmail.com. C'est pour ça que je me sers de PM maintenant et pas d'un autre service : dadall.info était géré par un serveur mail classique configuré par mes soins. Une plaie à gérer et je suis content d'avoir refilé le bébé à PM !

Les inconvénients

- PM a un gros inconvénient : il ne supporte pas les protocoles IMAP ou POP3. Pour faire simple, il n'est pas possible de s'en servir avec Thunderbird, K9-mail ou le client de votre choix. C'est assez emmerdant pour moi, je suis quand même un accro de l'oiseau bleu. Tant pis, mais c'est avec un gros pincement au cœur que j'écris ces lignes.
- Dans la même veine, sans protocole supporté, PM ne se consulte que via une interface web qui n'est pas disponible en français. Elle n'est qu'en anglais pour le moment. Perso, je m'en fiche mais ça ne va pas permettre à des non anglophones de s'en servir.
- Un dernier truc qui me chagrine, c'est qu'ils proposent, quand même, une application mobile pour mon Fairphone sous Android mais elle n'est pas libre et nécessite ces cochonneries de Google Services. Préparez-vous à lire la notification vous conjurant d'installer Google Play et ces saloperies à chaque lancement de l'application. Ça entraîne aussi des problèmes : pas de relevé automatique des mails et pas de notification lors de leur réception. #Tristitude

Bon, tout n'est pas rose. Je me suis engagé sur un an pour 48€. C'est le prix à payer pour avoir 5Go d'espace disque et le support de mon domaine perso.
J'espère que ce retour sera utile pour ceux qui se posaient des questions autour de ProtonMail. J'y suis depuis le 17 décembre et les quelques soucis que je relate ne me gênent pas vraiment : j'suis pas un accro des mails sur mon téléphone et Thunderbird est toujours mon compagnon au taff, là où il s'empiffre le plus de mails !

Il existe d'autres services fournissant des adresses mails loin de la sphère des GAFAM. ProtonMail est une solution parmi tant d'autres que je vous invite à tester par vous-même :-)

Nylas N1 : un nouveau dans les clients mails lourds

Rédigé par dada / 28 décembre 2015 / 12 commentaires


MàJ : Un grand merci à Pafzedog pour son commentaire. J'ai maladroitement raté une information critique : N1 passe par les serveurs de l'entreprise Nylas pour récupérer nos mails. Mails qui ne seront supprimés que dans les 60 jours après leurs suppressions par l'utilisateur. De plus, le binaire téléchargeable contient des bouts de code non libres.
Il reste la possibilité de récupérer les sources pour les compiler sans inconnus et à faire de même avec l'API qui va chercher nos mails. Ce logiciel perd, donc, pas mal de son intérêt. Fausse joie.


Alors que Thunderbird se stabilise pendant que la fondation Mozilla se désengage, l’arrivée d'un nouveau dans les clients mails lourds, par opposition aux clients web (RainLoop, ownCloud Mail, etc), n’était pas vraiment attendue. Pour ma part, du moins.




Pourtant, c'est en cette fin d’année que Nylas N1 fait son apparition. Techniquement, il est entièrement fait avec des technologies sorties toutes droit du web : HTML, CSS et JS, à la manière des applications pour Firefox OS.

Visuellement, c'est classique : une vue divisée en 2 ou 3 colonnes en fonction des envies.


Je m'en sers depuis un peu plus d'une semaine et la seule chose que j'arrive à dire, c'est que son design est trop swag : le thème de base se rapproche de Google Mail et chaque action dévoile une animation chouette mais sobre. Je ne me sers pas des appareils de la marque à la pomme mais je crois reconnaître une ergonomie assez proche.

C'est encore un jeunot : les comptes classiques Gmail, Yahoo, Outlook, etc, sont bien pris en compte alors que ma boite mail personnelle ne passe pas. C'est peut-être une histoire de configuration maladroite de mon serveur alors je ne m'avance pas trop. Je vous laisse tester ça de votre côté.

Pour l'heure, le projet annonce pouvoir supporter tout un tas d'extensions, mais elles n'existent pas encore. Le temps nous dira s'il arrive à se placer au niveau d'un Thunderbird avec la gestion des contacts et de l'agenda.

Je termine en dévoilant les évidences : il est open source et ouvert à toute proposition et/ou aide.