Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Podman: containere Prometheus, Alertmanager și Grafana

26 iunie 2021 By Bobses Un comentariu

Articolul de față își propune să arate cum începem să lucrăm cu Podman și cum ridicăm câteva containere. Pentru exemplificare, voi ridica un cluster de monitorizare format containere ale arhicunoscutelor aplicații Prometheus, Alertmanager, Node Exporter și Grafana.

Despre Prometheus am mai scris. Pe scurt, cu Prometheus putem vizualiza metrici, configura anumite reguli și, în cazul în care pragurile definite în regulile noastre sunt depășite, se trimit alerte către Alertmanager, o componentă care, configurată corect, gestionează alertele trimise de serverul Prometheus și le rutează către diferite sisteme de notificare (email, Slack, etc.). Grafana poate, prin intermediul dashboard-urilor, să vizualizeze datele din diferite surse (una din ele poate fi Prometheus); totodată, Grafana permite și definirea unor alerte.

După ce am instalat Podman, nu ne rămâne decât să ridicăm containerele aplicațiilor.

Deschiderea porturilor

În funcție de firewall-ul folosit, trebuie să deschidem următoarele porturi:

  • 9090 (folosit de Prometheus)
  • 9093 (folosit de Alertmanager)
  • 9100 (folosit de Node Exporter pentru a expune metricile)
  • 3000 (folosit de Grafana)

În distribuțiile din familia Ubuntu se folosește UFW - aici sunt reguli de configurare.

În distribuțiile din familia RedHat se folosește Firewalld - aici sunt reguli de configurare.

Pentru iptables se adaugă regulile:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9093 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9100 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT

Se restartează serviciul iptables și se listează regulile încărcate:

systemctl restart iptables
iptables -S

Pentru început, vom face un nou director unde vom ține fișierele de configurare pentru fiecare aplicație în parte - de aici le vom încărca la lansarea containerului.

mkdir ~/files
cd files
ls 
> alertmanager.yml  alert.rules  persistence-grafana  prometheus.yml

În directorul de mai sus avem următoarele fișiere:

- prometheus.yml este fișierul de configurare pentru Prometheus - exemplu aici https://gitlab.com/Bobses/prometheus/-/blob/master/prometheus.yml

- alert.rules este fișierul cu reguli pentru Prometheus - exemplu aici https://gitlab.com/Bobses/prometheus/-/blob/master/alert.rules

- alertmanager.yml este fișierul de configurare pentru Alertmanager - exemplu aici https://gitlab.com/Bobses/prometheus/-/blob/master/alert.rules

- in directorul persistence-grafana își va asigura Grafana persistența (astfel încât să nu pierdem setările la pornirea unui nou container).

Ridicarea containerelor

Dacăa ați mai lucrat cu Docker, cu podman e la fel de simplu să ridicăm și să gestionăm containere, iar opțiunile sunt asemănătoare:

  • flagul -d (--detach) ridică containerul în background și-i afișează id-ul
  • flagul --name atribuie un nume containerului
  • flagul -p expune un port de pe host (sau un range de porturi) către un port al containerului (sau către un range de porturi)
  • flagul -v (--volume) montează un volum într-un container (de exemplu, montăm un fișier de configurare ca volum în container)
  • putem specifica diverse variabile cu flagul -e
  • la final specificăm imaginea folosită
podman run -d --name prometheus-container -p 9090:9090 -v ~/files/prometheus.yml:/etc/prometheus/prometheus.yml -v ~/files/alert.rules:/etc/prometheus/alert.rules prom/prometheus
podman run -d --name alertmanager-container -p 9093:9093 -v ~/files/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager
podman run -d --name node-exporter-container  --net="host"   --pid="host"   -v "/:/host:ro,rslave"   quay.io/prometheus/node-exporter:latest   --path.rootfs=/host
podman run -d --name grafana-container -p 3000:3000 -v ~/files/persistence-grafana:/var/lib/grafana -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" grafana/grafana

Câteva comenzi utile

Listăm noile containere ridicate cu comanda podman ps:

podman ps
Comanda podman ps

Listarea tuturor containerelor (inclusiv a celor Exited): podman ps -a

Afișarea configurației unui container se face cu comanda podman inspect container-id.

Vizualizarea logurilor se face cu comanda podman logs container-id.

Obținerea ajutorului și câteva exemple:

  • podman --help
  • podman run --help
  • podman inspect --help
  • podman logs --help
  • podman generate --help
  • etc.

Crearea serviciilor

Față de Docker, unde rulează un daemon în spate și are grijă de ridicarea containerelor la pornirea unui sistem, la Podman trebuie să procedăm în altă manieră. Tot documentația Podman ne ajută și ne oferă posbilitatea de a crea un servciu folosind un fișier systemd generat de comanda podman generate systemd.

Vom instala servciile nou create sub userul care a creat containerul: generăm fișierul cu prima comandă, facem un director nou în subdirectorul .config din home-ul userului, copiem conținutul generat în fișierul respectiv și, la urmă, activăm servicul să pornească la boot:

podman generate systemd --restart-policy=always -t 1 prometheus-container
mkdir -p $HOME/.config/systemd/user
vi .config/systemd/user/prometheus-container.service
systemctl --user enable prometheus-container.service
podman generate systemd --restart-policy=always -t 1 alertmanager-container
vi .config/systemd/user/alertmanager-container.service
systemctl enable --user alertmanager-container.service
podman generate systemd --restart-policy=always -t 1 grafana-container
vi .config/systemd/user/grafana-container.service
systemctl enable --user grafana-container.service
podman generate systemd --restart-policy=always -t 1 node-exporter-container
vi .config/systemd/user/node-exporter-container.service
systemctl enable --user node-exporter-container.service

Pentru a vedea conținutul unui fișier generat ca mai sus, se dă comanda:

systemctl cat nume_serviciu --user

Să nu uitați, dacă ștergeți și recreați unul din aceste containere, e musai fie să editați fișierul de serviciu cu noul container-id, fie să generați un fișier nou.

Vizualizare aplicații din containere

Pentru a vedea aplicațiile proaspăt instalate în containere, scrieți în browser:

  • Prometheus: http://localhost:9090
  • Alertmanager: http://localhost:9093
  • Grafana (logare inițială cu admin/admin, apoi vi se cere să schimbați parola): http://localhost:3000
  • Node Exporter: http://localhost:9100

În imaginea de mai jos este un exemplu de dashboard Grafana care afișează date din sistemele monitorizate de Prometheus:

Dashboard Node Exporter Grafana
Dashboard Node Exporter Grafana

Asta e tot pentru acest articol. În articolul viitor voi arăta cum se face configurarea Alertmanagerului astfel încât să trimită emailuri folosind fie Gmail, fie SendGrid.

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: Tutoriale Etichete: Alertmanager, containere, Grafana, Node Exporter, podman, Prometheus

Trackbacks

  1. Prometheus Alertmanager: trimitere emailuri la declansarea alertelor | Despre Linux spune:
    27 iunie 2021 la 11:39

    […] prin ce metodă am instalat Prometheus și Alertmanager (servicii de sine stătătoare, containere sau ca operator într-un cluster Kubernetes), trebuie să configurăm serverul SMTP din Prometheus […]

    Răspunde

Lasă un răspuns Anulează răspunsul

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2023 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}