Einrichtung einer verteilten Monitoringlösung auf Basis von
Prometheus und M3 im Bereich des behördlichen Gesundheitswesens
von Nico Kahlert
format_list_numbered_rtl
Agenda
apartment
Vorstellung des Unternehmens
Vorstellung des Unternehmens
IT-Campus
Infos
- Netzlink Informationstechnik GmbH
- IT-Dienstleister für den Mittelstand
- 110 Mitarbeitende
Standorte
- Hannover
- Kassel
- Braunschweig
Rechenzentren
- Braunschweig
- Hannover
- Salzgitter
- Limburg (OVH)
Langjährige Geschäftsbeziehungen mit dem HZI
person
Vorstellung des Kunden
Vorstellung des Kunden
Bundesministerium für Gesundheit
- CDU
- Jens Spahn
- 15 Mrd € Haushalt
- Wegweisend für die Gesundheitsämter
Projekteinordnung
Projekteinordnung
SORMAS Projekt
- Pandemiemanagementsoftware
- Kontaktverfolgung
- Entwickelt vom HZI/Vitagroup
- DevOps und Operations von NLI
- Hosting im ITZBund RZ
- 400 Instanzen
- Containerisiert
- Updates alle 2 Wochen
- Herausforderung für das Monitoring
analytics
IST/SOLL-Analyse
IST/SOLL-Analyse
- 1 vServer
- 4vCPU, 16GB RAM, 500GB SSD
- Prometheus & Grafana
- circa 400 Endpunkte
- Scraping: 468 MB/min
- 3 vServer
- 4 vCPU, 8 GB RAM, 500GB SSD
- Prometheus, M3DB, Consul & Grafana
Cluster Topologie
Node Topologie
Nutzen
- No Single Point of Failure
- Horizontal Skalierbar
- Wachsende Community
- Aggregation inklusive
code
Konstruktion von Playbook & Rollen
Konstruktion von Playbook & Rollen
---
- name: Setup Distributed Prometheus
hosts: all
become: yes
remote_user: root
roles:
- cloudalchemy.node_exporter
- common
- consul
- etcd
- m3db
- prometheus
- grafana
Playbook main.yml
Konstruktion von Playbook & Rollen
Common Rolle
graph TD
A(Hostname ist gesetzt) --> |ok| B(Firewall ist aktiv)
B --> |ok| C(EPEL Repository ist konfiguriert)
C --> |ok| D(Pakete sind installiert z.B. podman)
D --> |ok| E(Zeitzone ist konfiguriert)
Konstruktion von Playbook & Rollen
Consul Rolle
graph TD
A(Ports in der Firewall sind offen) --> |ok| B(Data-/Configfolder sind vorhanden)
B --> |ok| C(Consul Server Container läuft)
C --> |ok| D(Consul Agent Container laufen)
D --> |ok| E(Status ist Ready)
Konstruktion von Playbook & Rollen
ETCD Rolle
graph TD
A(Ports in der Firewall sind offen) --> |ok| B(Data-/Configfolder sind vorhanden)
B --> |ok| C(ETCD Server Container laufen)
C --> |ok| D(Status ist Ready)
Konstruktion von Playbook & Rollen
M3DB Rolle
graph TB
A(Ports in der Firewall sind offen) --> |ok| B(Data-/Configfolder sind vorhanden)
B --> |ok| C(Konfigurationdatei ist templated)
C --> |ok| D(M3DB Container laufen)
E(Namespace ist konfiguriert)--> |ok| F(Placement ist konfiguriert)
F --> |ok| G(Datenbank ist erstellt)
G --> |ok| H(Status ist Ready)
Konstruktion von Playbook & Rollen
Prometheus Rolle
graph TD
A(Ports in der Firewall sind offen) --> |ok| B(Configfolder sind vorhanden)
B --> |ok| C(Konfigurationdatei ist templated)
C --> |ok| D(Prometheus Container laufen)
Prometheuskonfiguration
# prometheus.yml.j2
global:
scrape_interval: 15s
evaluation_interval: 15s
remote_write:
- url: "http://localhost:7201/api/v1/prom/remote/write"
scrape_configs:
- job_name: 'consul_services'
consul_sd_configs:
- server: "127.0.0.1:8500"
datacenter: "{{ consul_datacenter }}"
scheme: http
refresh_interval: "60s"
Template der Prometheuskonfiguration
Konstruktion von Playbook & Rollen
Grafana Rolle - Node 0
graph TD
A(Ports in der Firewall sind offen) --> |ok| B(Data-/Configfolder sind vorhanden)
B --> |ok| C(Konfigurationdatei ist getemplated)
C --> |ok| D(Grafana Container läuft)
Fazit
Monitoring
- Ausfalltolerant
- Reproduzierbar
- Dynamisch
- Performant
Planung
- Verschiebung in den Rollen
- In sich stimmig
- Viel gelernt!
Quellen
https://www.bundesgesundheitsministerium.de/
https://www.sormas-oegd.de/
https://www.itzbund.de/
https://etcd.io/
https://m3db.io
https://etcd.io/docs/v3.4/op-guide/configuration/
https://www.youtube.com/watch?v=CcH13GyszHI
https://www.itzbund.de/DE/home/home_node.html
https://www.youtube.com/watch?v=gqwcUgZOoyI
https://prometheus.io/docs/
https://docs.ansible.com/ansible/latest/user_guide/
https://www.ansible.com/resources/whitepapers
https://grafana.com/docs
https://podman.io/
Danke für Ihre Aufmerksamkeit
Haben Sie noch Fragen?
Danke für Ihre Aufmerksamkeit
Haben Sie noch Fragen?
Und
hier
geht es online weiter