Überwachungssystem Prometheus+Grafana

Inhaltsverzeichnis

Eins, Prometheus. 1

2. Grafana 2

3. Umgebungsvorbereitung... 2

4. Installieren Sie Prometheus und Grafana

5. Konfigurieren Sie Prometheus und Grafana

1. Prometheus konfigurieren 4

2. Grafana konfigurieren 6

Sechs, Maschinenhardware-Ressourcen überwachen... 7

7. Überwachung der Grundversorgung... 9

1. NGINX überwachen 9

2. MySQL überwachen 11

3. REDIS überwachen 16

8. Überwachungsanwendung ... 18

Neun, Überwachung von Geschäftsschnittstellendaten ... 19

10. Alarmeinstellungen... 21

1. Weckmodus einstellen... 21

2. Alarmregeln festlegen... 24

①/data/prometheus/rules/node.yml 24

② /data/prometheus/rules/redis.yml 26

③/data/prometheus/rules/mysql.yml 27

④/data/prometheus/rules/nginx.yml 29

Verwenden Sie Prometheus+Grafana, um ein Überwachungssystem aufzubauen. Der Hauptüberwachungsinhalt umfasst Maschinenhardwareressourcen, grundlegende Dienste, Anwendungen und Geschäftsschnittstellendaten.

1. Prometheus

Prometheus - Überwachungssystem & Zeitreihendatenbank

Prometheus ist ein Open-Source-Dienstüberwachungssystem und eine Zeitreihendatenbank. Das Prometheus-Ökosystem besteht aus mehreren Komponenten, einschließlich des Prometheus-Servers, der für die Datenerfassung und -speicherung verantwortlich ist und Unterstützung für PromQL-Abfragesprachen bereitstellt, mehrsprachige Client-SDKs bereitstellt, das zwischengeschaltete Gateway Push Gateway, das temporäre Push-Indikatoren für aktive Jobs unterstützt, und die Datenerfassungskomponente Exporter , der dafür verantwortlich ist, Daten vom Ziel zu sammeln und in ein von Prometheus unterstütztes Format zu konvertieren, und einen Alertmanager, der eine Warnfunktion bereitstellt.

Der Unterschied zwischen der Komponente „Promethues Exporter“ und der herkömmlichen Datenerfassungskomponente besteht darin, dass sie keine Daten an den zentralen Server sendet, sondern darauf wartet, dass der zentrale Server die Initiative ergreift, um sie abzurufen.Prometheus stellt verschiedene Arten von Exportern bereit, um den Betriebsstatus zu erfassen verschiedener Dienstleistungen.

Diagramm der Ökosystemarchitektur, bereitgestellt von der offiziellen Promethues-Website:

 

2. Grafana

Grafana: Die offene Observability-Plattform | Grafana Labors

Grafana ist ein plattformübergreifendes Open-Source-Messanalyse- und Visualisierungstool, das die Datenerfassung aus mehreren Datenquellen (z. B. Prometheus) für die visuelle Datenanzeige unterstützt.

3. Umgebungsvorbereitung

&&& Überwachen Sie die Hardwareressourcen des Servers: CPU 8 Kerne, Speicher 32 GB, Festplatte 250 GB, Netzwerkkarte.

Prometheus und andere Bereitstellungsvereinbarungen für Überwachungsdienste lauten wie folgt:

 

1. Überprüfen Sie die Betriebssystemversion

[root@node64 ~]# cat /etc/redhat-release

CentOS Linux-Version 7.1.1503 (Core)

[root@node64 ~]# getconf LONG_BIT

64

2. Überprüfen Sie die IP-Adresse und Konfiguration der Netzwerkkarte

[root@node64 ~]# ip a

eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000

link/ether fa:16:3e:a3:89:25 brd ff:ff:ff:ff:ff:ff

inet 192.168.0.91/24 brd 192.168.0.255 Geltungsbereich global eth1

gültig_lft für immer bevorzugt_lft für immer

inet6 fe80::f816:3eff:fea3:8925/64 Scope-Link

gültig_lft für immer bevorzugt_lft für immer

[root@node64 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1

NAME=eth1

TYPE=Ethernet

BOOTPROTO=dhcp

GERÄT=eth1

ONBOOT=ja

IPV4_ROUTE_METRIC=100

4. Installieren Sie Prometheus und Grafana

1. Erstellen Sie das Installationsverzeichnis mkir /data/prometheus

groupadd Prometheus

useradd -g prometheus -s /sbin/nologin prometheus

chown -R prometheus:prometheus prometheus

2. Laden Sie Prometheus, das Grafana-Installationspaket und das Prometheus-Plug-In-Paket herunter.

包括node_exporter、mysqld_exporter、nginx-vts-exporter、redis_exporter、alertmanager

Die Prometheus-Installationspaketreferenz lautet wie folgt:

wget https://github.com/prometheus/prometheus/releases/download/v2.20.0/prometheus-2.20.0.linux-amd64.tar.gz

   Die Grafana-Installationspaketreferenz lautet wie folgt:

wget  https://dl.grafana.com/oss/release/grafana-7.1.1.linux-amd64.tar.gz

3. Entpacken und installieren

Fünf, konfigurieren Sie Prometheus und Grafana

1. Prometheus konfigurieren

a) Ändern Sie die Konfigurationsdatei prometheus.yml

vi /data/prometheus/prometheus/prometheus.yml

scrape_configs:

    metrics_path: /prometheus/metrics

Statische_Konfigurationen:

      - Ziele: ['192.168.0.91:9090']

b. Überprüfen Sie die Konfigurationsdatei

/data/prometheus/prometheus

[root@node64 prometheus]# ./promtool check config prometheus.yml

Hinweis: Machen Sie die Prometheus-Konfiguration wirksam pgrep -fl prometheus

c. Registrieren Sie Prometheus als Systemdienst

[root@node64 prometheus]# cat /usr/lib/systemd/system/prometheus.service

[Einheit]

Beschreibung=Prometheus

After=network.target

[Service]

Typ=einfach

Benutzer=root

ExecStart=/data/prometheus/prometheus/prometheus --web.external-url=prometheus    --web.enable-admin-api --config.file=/data/prometheus/prometheus/prometheus.yml --storage.tsdb. path=/data/prometheus/prometheus/data --storage.tsdb.retention=15d --log.level=info --web.enable-lifecycle

Neustart=bei Fehler

[Installieren]

WantedBy=multi-user.target

d. Starten Sie den Prometheus-Dienst und zeigen Sie ihn an

systemctl aktiviert Prometheus

systemctl Prometheus starten

Systemctl-Status Prometheus

   [root@node64 prometheus]# netstat -anp | grep 9090

 

B. nginx, leitet den Prometheus-Dienst weiter

Der Node Exporter     von Prometheus bietet keine Authentifizierungsunterstützung. Mit Nginx als Reverse-Proxy-Server können wir Node Exporter jedoch problemlos HTTP Basic Auth-Funktionen hinzufügen.

yum -y installiere httpd

[root@node23 conf]# htpasswd -c .htpasswd_prometheus Prometheus

Iampwd

Standort /prometheus/ {

     Proxy_Set_Header X-Real-IP $remote_addr;

     Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     Proxy_set_header Host $http_host;

     proxy_set_header X-Nginx-Proxy true;

     Proxy_Pass http://192.168.0.91:9090;

     Proxy-Weiterleitung aus;

     Proxy_buffering aus;

     Proxy_read_timeout 90;

     proxy_send_timeout 90;

        auth_basic "Prometheus";

auth_basic_user_file ".htpasswd";

}

f. Internetzugriff prometheus

https://***.com:9091/prometheus/

Prometheus/Iampwd

 

2. Grafana konfigurieren

   a) Ändern Sie die Konfigurationsdatei default.ini

     vi /data/prometheus/grafana/conf/defaults.ini

     http_port = 3000

     root_url = %(protocol)s://%(domain)s:%(http_port)s/ grafana/

  

b. Grafana als Systemdienst registrieren

     [root@node64 conf]# cat /usr/lib/systemd/system/grafana-server.service

[Einheit]

Beschreibung=Grafana

After=network.target

[Service]

Typ=benachrichtigen

ExecStart=/data/prometheus/grafana/bin/grafana-server -homepath /data/prometheus/grafana

Neustart=bei Fehler

[Installieren]

WantedBy=multi-user.target

c. Starten Sie den Grafana-Dienst und zeigen Sie ihn an

systemctl aktiviert den Grafana-Server

systemctl grafana-server starten

systemctl-status grafana-server

  

   d. nginx leitet den grafana-Dienst weiter

     Standort /grafana/ {

          Proxy_Set_Header X-Real-IP $remote_addr;

          Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

          Proxy_set_header Host $http_host;

          proxy_set_header X-Nginx-Proxy true;

          Proxy_Pass http://192.168.0.91:3000/;

          Proxy-Weiterleitung aus;

          Proxy_buffering aus;

          Proxy_read_timeout 90;

          proxy_send_timeout 90;

       }

   B. Webzugriff auf Grafana und Datenquelle konfigurieren

     https://***.com:9091/grafana/

admin/Iampwd

     URL der Datenquelle: http://192.168.0.91:9090/prometheus

 

 

6. Hardwareressourcen der Maschine überwachen

Prometheus verwendet das node_exporter-Plug-in, um die Hardwareressourcen der Maschine zu überwachen, und Prometheus ruft aktiv die erforderlichen Daten von der Netzwerkinterkommunikationsmaschine ab, auf der der node_exporter-Dienst installiert ist

1. Installieren Sie node_exporter auf der zu überwachenden Maschine

2. Registrieren Sie node_exporter als Systemdienst

[root@node64 conf]# cat /usr/lib/systemd/system/node_exporter.service

[Einheit]

Description=node_exporter

Dokumentation=https://prometheus.io/

After=network.target

[Service]

Typ=einfach

Benutzer=root

ExecStart=/data/prometheus/node_exporter/node_exporter

Neustart=bei Fehler

[Installieren]

WantedBy=multi-user.target

3. Starten Sie den Dienst node_exporter und zeigen Sie ihn an

systemctl aktiviert node_exporter

systemctl startet node_exporter

systemctl-Status node_exporter

4. Ändern Sie prometheus.yml und starten Sie den Prometheus-Dienst neu

scrape_configs:

- job_name: 'node_exporter'

Statische_Konfigurationen:

-Ziele:['192.168.0.91:9100','192.168.0.92:9100'…]

   

5. Besuchen Sie Prometheus, um den Überwachungsstatus anzuzeigen

 6. Grafana-Überwachungspanel einführen

Dashboards | Grafana Labors

node_exporter 8919

mysql_exporter 11323

MySQL-Übersicht 7362

nginxvts 2949

redis 11835

 

Sieben, Überwachung der Grundversorgung

1. Überwachen Sie NGINX

Nginx erhält bestimmte Indexdaten von nginx über das Modul nginx-module-vts, und Prometheus sammelt nginx-Informationen über die Komponente nginx-vts-exporter.

a. Installieren Sie das Modul nginx-module-vts auf dem nginx-Server

./configure --prefix= /data/nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --add- module=/ data/nginx-module-vts

make && make install

  • Ändern Sie die Datei nginx.conf

http{

    vhost_traffic_status_zone;

    vhost_traffic_status_filter_by_host an;

Standort/Status {

vhost_traffic_status_display;

vhost_traffic_status_display_format html;

  }

}

 

b. Laden Sie das Plug-in nginx-vts-exporter herunter und installieren Sie es sowohl auf dem nginx-Server als auch auf dem Prometheus-Server

wget

https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz

c. Registrieren Sie nginx-vts-exporter als Systemdienst auf dem nginx-Server (192.168.0.71)

cat /etc/systemd/system/nginx-vts-exporter.service

[Einheit]

Description=nginx_exporter

After=network.target

[Service]

Typ=einfach

Benutzer=root

ExecStart=/data/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri= https://公网IP:9091 /status/format/json

Neustart=bei Fehler

[Installieren]

WantedBy=multi-user.target

d. Registrieren Sie nginx-vts-exporter als Systemdienst auf dem Prometheus-Server ( 192.168.0.91 ).

cat /etc/systemd/system/nginx-vts-exporter.service

[Einheit]

Description=nginx_exporter

After=network.target

[Service]

Typ=einfach

Benutzer=root

ExecStart=/data/prometheus/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri= https://192.168.0.71:9091 /status/format/json

Neustart=bei Fehler

[Installieren]

WantedBy=multi-user.target

e. Starten und zeigen Sie den Dienst nginx-vts-exporter auf dem nginx-Server und dem Prometheus-Server an

systemctl aktiviert nginx-vts-exporter

systemctl startet nginx-vts-exporter

systemctl-Status nginx-vts-exporter

f. Ändern Sie die Konfigurationsdatei prometheus.yml auf dem Prometheus-Server und starten Sie den Prometheus-Dienst neu

- job_name: 'nginx'

Statische_Konfigurationen:

      - Ziele: ['192.168.0.91:9913']

  

 https://öffentliches Netzwerk IP:9091/status g, Nginx-Seitenüberwachung anzeigen

https://öffentliche IP:9091/status

Importieren Sie das Nginx-Überwachungspanel nginx-vts-exporter 2949 auf Grafana und zeigen Sie das Panel an

       https://***.com:9091/grafana/d/5-RKCVxGk/nginx-vts-stats?orgId=1

 

 

2. Überwachen Sie MySQL

Prometheus sammelt Daten zu MySQL-Master- und Slave-Servern über die mysqld_exporter-Komponente.

1) Nachdem Sie mysql mit einem automatisierten Skript installiert haben, fügen Sie den mysql-Dienst zum Systemdienst hinzu und stellen Sie den Bootvorgang so ein, dass er automatisch startet

[root@centos7-min4 nginx]# cp /opt/mysql57/support-files/mysql.server /etc/rc.d/init.d/mysqld

chmod +x /etc/init.d/mysqld

chkconfig - mysqld hinzufügen

chkconfig --list

 # systemctl mysqld starten

# systemctl-Status mysqld

[mysql@centos7-min4 nginx]$ mysql -uroot -p —— 123456

mysql> Version auswählen ();

+------------+

| version() |

+------------+

| 5.7.24-log |

2) Installieren Sie die mysqld_exporter-Komponente auf dem Prometheus-Server

Prometheus überwacht mysql-Master-Slave-Server

    • Melden Sie sich bei mysql an, um ein Konto für den Exporteur zu erstellen und ihn zu autorisieren

Erstellen Sie den Benutzer „Exporteur“ @ „192.168.0.%“, identifiziert durch „Abc123“.

Gewähren Sie Prozess, Replikationsclient, wählen Sie auf *.* to 'exporter'@'192.168.0.%';

Flush-Privilegien;

   

    • Installieren Sie den mysqld_exporter-Dienst auf dem Prometheus-Server und überwachen Sie gleichzeitig den mysql-Master-Slave-Dienst

   ls -al /data/prometheus/mysqld_exporter/

   .my-master.cnf

   .mein-sklave.cnf

       root@node64 mysqld_exporter]# cat .my-master.cnf

[Klient]

Benutzer=Exporteur 

Passwort=Abc123

host=192.168.0.92

port=3306

[root@node64 mysqld_exporter]# cat .my-slave.cnf

[Klient]

Benutzer=Exporteur

Passwort=Abc123

host=192.168.0.93

port=3306

    • Starten Sie den Dienst mysqld_exporter

Starten Sie jeweils einen Dienst für die mysql-Master- und -Slave-Dienste:

Der MySQL-Master-Dienst wird gestartet

/data/prometheus/mysqld_exporter/mysqld_exporter --web.listen-address=192.168.0.91:9104 --config.my-cnf=/data/prometheus/mysqld_exporter/.my-master.cnf --collect.auto_increment.columns - -collect.binlog_size --collect.global_status --collect.engine_innodb_status --collect.global_variables --collect.info_schema.innodb_metrics --collect.info_schema.innodb_tablespaces --collect.info_schema.innodb_cmp --collect.info_schema.innodb_cmpmem --collect .info_schema.processlist --collect.info_schema.query_response_time --collect.info_schema.tables --collect.info_schema.tablestats --collect.info_schema.userstats --collect.perf_schema.eventswaits --collect.perf_schema.file_events --collect. perf_schema.indexiowaits --collect.perf_schema.tableiowaits --collect.perf_schema.tablelocks

MySQL startet vom Dienst

/data/prometheus/mysqld_exporter/mysqld_exporter --web.listen-address=192.168.0.91:9105 --config.my-cnf=/data/prometheus/mysqld_exporter/.my-slave.cnf

(Hinweis: Bitte halten Sie die anderen Parameter konsistent mit dem obigen Start des Mysql-Hauptdienstes.)

3) Ändern Sie die Informationen der Prometheus-Konfigurationsdatei und starten Sie Prometheus neu

prometheus.yml

- job_name: 'mysql_exporter'

    Statische_Konfigurationen:

    # - Ziele: ['192.168.0.92:9104','192.168.0.93:9104']

      - Etiketten:

          instance: master:3306 # Der Alias ​​der von grafana angezeigten Instanz

      - Ziele:

        - 192.168.0.91:9104 # Der von mysqld_exporter bereitgestellte Port

      - Etiketten:

          instance: slave:3306 # Der von grafana angezeigte Alias ​​der Instanz

      - Ziele:

        - 192.168.0.91:9105 # Der von mysqld_exporter bereitgestellte Port

4) Zeigen Sie die MySQL-Daten der Prometheus- und Grafana-Panels an und importieren Sie das MySQL-Überwachungspanel

mysql_exporter 11323

MySQL-Übersicht 7362

 

 

 

 

PS: Behandlung von MySQL- Synchronisationsfehlern: Slave_SQL_Running: Nein

Analyse: Ursachen für Fehler bei der Synchronisation von MySQL-Daten

  1. Das Programm hat möglicherweise eine Schreiboperation auf dem Slave durchgeführt
  2. Dies kann durch das Transaktions-Rollback nach dem Neustart des Slave-Computers verursacht werden

Lösung: Stoppen Sie zuerst den Slave-Dienst, überprüfen Sie den Status des Hosts auf dem Master-Server und synchronisieren Sie mit dem Slave-Server gemäß den Werten, die Datei und Position entsprechen, und starten Sie schließlich den Slave-Dienst, um den Synchronisierungsstatus zu überprüfen

Hauptserver:

mysql> Masterstatus anzeigen;

Vom Server:

mysql> Sklave stoppen;

Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,00 Sek.)

MySQL>

mysql> Master in master_host='192.168.0.92' ändern,

-> master_user='repl',

-> master_password=' 123456 ',

-> master_log_file='mysql-bin-T-prod-3306.000005',

-> master_log_pos=653020;

Abfrage OK, 0 Zeilen betroffen, 2 Warnungen (0,05 Sek.)

mysql> Slave starten;

 

3. Überwachen Sie REDIS

Verwenden Sie die Komponente redis_exporter, um den Redis-Cluster mit drei Mastern und drei Slaves zu überwachen.

     1) Verwenden Sie automatisierte Skripte, um Redis-Cluster mit drei Mastern und drei Slaves zu installieren

     2) Laden Sie den Dienst redis_exporter herunter und installieren Sie ihn auf dem Prometheus-Server

wget https://github.com/oliver006/redis_exporter/releases/download/v1.3.5/redis_exporter-v1.3.5.linux-amd64.tar.gz

    3) Überwachen Sie einen der Server im Redis-Cluster, um den gesamten erstellten Cluster zu überwachen

cd /data/prometheus/redis_exporter

./redis_exporter -redis.addr 192.168.0.93:7000 -redis.password 'zxcvb123' &

   4) Ändern Sie die Informationen der Prometheus-Konfigurationsdatei und starten Sie Prometheus neu

- job_name: 'redis_exporter_targets'

    Statische_Konfigurationen:

      - Ziele:

        - redis://192.168.0.3:7000

        - redis://192.168.0.2:7003

        - redis://192.168.0.72:7002

        - redis://192.168.0.35:7001

        - redis://192.168.0.14:7004

        - redis://192.168.0.13:7005

    Metrik_Pfad: /scrape

    relabel_configs:

      - source_labels: [__Adresse__]

        Zielbezeichnung: __param_Ziel

      - source_labels: [__param_target]

        target_label: Instanz

      - Zielbezeichnung: __Adresse__

        Ersatz: 192.168.0.91:9121

  - job_name: 'redis_exporter'

    Statische_Konfigurationen:

      - Ziele:

        - 192.168.0.91:9121

       5) Prometheus- und Grafana-Panel-Daten anzeigen, Panel Redis 11835 importieren

 

 

8. Überwachungsanwendung

Prometheus überwacht die Anwendung mithilfe der node_exporter-Komponente

     1) Installieren Sie die Process-Exporter-Komponente auf dem Anwendungsserver, der überwacht werden muss

wget

https://github.com/ncabatoff/process-exporter/releases/download/v0.5.0/process-exporter-0.5.0.linux-amd64.tar.gz

    2) Konfigurieren Sie die Anwendungsüberwachungsinformationen

process-conf.yml

 

      3) Starten Sie den Anwendungsüberwachungsdienst und geben Sie die Konfigurationsdatei an

./process-exporter -config.path process-conf.yml &

      4) Prometheus-Konfigurationsinformationen ändern und Prometheus neu starten

[root@node64 prometheus]# vi prometheus.yml

- job_name: Prozess

Statische_Konfigurationen:

- Ziele: ['192.168.0.35:9256','192.168.0.13:9256'…]

     5) Zeigen Sie Prometheus- und Grafana-Paneldaten an  

    Das dem Prozess-Exporteur entsprechende Dashboard lautet: Benannte Prozesse | Grafana Labs

 

 

 

9. Überwachung von Geschäftsschnittstellendaten

Konfigurieren Sie die Grafana-Datenanzeige gemäß den von der Entwicklung bereitgestellten Daten der Geschäftsüberwachungsschnittstelle.

https://***.com:9092/api

  • Notiz:

1. Grafana speichert keine Prometheus-Daten. Es fragt Prometheus ab und zeigt die Benutzeroberfläche an. In diesem Fall müssen Sie sich mit dem Löschen von Prometheus-Daten befassen.

Prometheus hat standardmäßig eine Aufbewahrungsfrist von 15 Tagen. Dies kann jedoch mit dem Flag -storage.local.retention an Ihre Bedürfnisse angepasst werden

2. Prometheus setzt die abgelaufenen Daten auf NaN, und die Summenfunktion sum() unterstützt NaN nicht, daher muss die Metrik angepasst werden:

sum(st_invoke_count{app_id=~'$appid',road_type='1'}>0)

3. Globale Grafana-Variablen

4. Grafana- Menükaskade

10. Alarmeinstellungen

1. Stellen Sie den Alarmmodus ein

> Prometheus

  Prometheus implementiert Warnmeldungen über die Komponente alertmanager. Alertmanager empfängt die von Prometheus gesendeten Warnmeldungen, führt eine Reihe von Verarbeitungen an den Warnmeldungen durch und sendet sie an die angegebenen Benutzer.

Prometheus--->Auslöseschwelle--->Überschreitung der Dauer--->Alertmanager--->Gruppe|unterdrücken|stumm--->Medientyp--->Mail, DingTalk, WeChat usw.

      1) Installieren Sie den Alertmanager

wget https://github.com/prometheus/alertmanager/releases/download/v0.16.2/alertmanager-0.16.2.linux-amd64.tar.gz

      2) Ändern Sie die Informationen der Alertmanager-Konfigurationsdatei alertmanager.yml

      3) Öffnen Sie den SMTP-Dienst

      4) Konfigurieren Sie die Alarmbenachrichtigungsvorlage

[root@centos7-min4 alertmanager-0.21.0]# cat-Vorlage/test.tmpl

{ { "test.html" definieren }}

<table border="5">

<tr>

<td>Alarmelement</td>

<td>Angelegenheit</td>

<td>Alarmschwelle</td>

<td>Startzeit</td>

</tr>

{ { Bereich $i, $alert := .Alerts }}

<tr>

<td>{ { index $alert.Labels "Alarmname" }}</td>

<td>{ { index $alert.Labels "Instanz" }}</td>

<td>{ { index $alert.Annotations "Wert" }}</td>

<td>{ { $alert.StartsAt }}</td>

</tr>

{ { Ende }}

</table>

{ { Ende }}

      5) Starten Sie den Alertmanager-Dienst

(1) Geben Sie die zu startende Konfigurationsdatei an

[root@centos7-min4 alertmanager-0.21.0]# ./alertmanager --config.file=alertmanager.yml &

(2) Als Systemdienststart konfiguriert

[root@centos7-min4 alertmanager-0.21.0]# cat /usr/lib/systemd/system/alertmanager.service

[Einheit]

Beschreibung=https://prometheus.io

[Service]

Neustart=bei Fehler

ExecStart=/opt/alertmanager-0.21.0/alertmanager --config.file=/opt/alertmanager-0.21.0/alertmanager.yml

[Installieren]

WantedBy=multi-user.target

systemctl aktiviert Alertmanager

systemctl alarmmanager starten

systemctl-Status-Alertmanager

      6) Ändern Sie die Prometheus-Konfigurationsdatei und starten Sie Prometheus neu

# Alertmanager-Konfiguration

Alarmierung:

  Alarmmanager:

  - static_configs:

    - Ziele:

       - 192.168.0.91:9093

# Regeln einmal laden und periodisch nach dem globalen 'evaluation_interval' auswerten.

Regeldateien:

    - "/data/prometheus/rules/node.yml"

    - "/data/prometheus/rules/redis.yml"

    - "/data/prometheus/rules/mysql.yml"

    - "/data/prometheus/rules/nginx.yml"

 - "/data/prometheus/rules/service-api.yml "

>Grafana

2. Legen Sie Alarmregeln fest

①/data/prometheus/rules/node.yml

Gruppen:

- Name: NodeProcess

  Regeln:

  - Warnung: Knotenstatus

    expr: hoch == 0

    für: 1m

    Etiketten:

      Schweregrad: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.instance}}: Der Server ist ausgefallen"

      description: "{ {$labels.instance}}: Die Serververzögerung überschreitet 5 Minuten"

  - Warnung: NodeFilesystemUsage

    expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 80

    für: 2m

    Etiketten:

      Schweregrad: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.instance}}: { {$labels.mountpoint }} Partitionsnutzung ist zu hoch"

      description: "{ {$labels.instance}}: { {$labels.mountpoint }} Partitionsnutzung ist größer als 80 % (aktueller Wert: { { $value }})"

  - Warnung: NodeMemoryUsage

    expr: 100 - (node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 > 80

    für: 2m

    Etiketten:

      Schweregrad: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.instance}}: Speicherverbrauch ist zu hoch"

      description: "{ { $labels.instance}}: Speicherauslastung ist größer als 80 % (aktueller Wert: { { $value }})"

  - Warnung: NodeCPUUsage

    expr: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100) > 80

    für: 2m

    Etiketten:

      Schweregrad: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.instance}}: CPU-Auslastung ist zu hoch"

      description: "{ { $labels.instance}}: CPU-Auslastung ist größer als 80 % (aktueller Wert: { { $value }})"

  - Warnung: LoadCPU

    expr: node_load5 > 5

    für: 2m

    Etiketten:

      Schweregrad: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.instance}}: Last ist zu hoch"

      description: "{ { $labels.instance}}: Der Lastdurchschnitt überschreitet 5 innerhalb von 5 Minuten (aktueller Wert: { { $value }})" 

  - Warnung: DiskIORead

    expr: irate(node_disk_read_bytes_total{device="sda"}[1m]) > 30000000

    für: 1m

    Etiketten:

      Schweregrad: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.instance}}: E/A-Leselast ist zu hoch"

      description: "{ {$labels.instance}}: I/O-Lesen pro Minute hat 30 MB/s überschritten (aktueller Wert: { { $value }})"

  - Warnung: DiskIOWrite

    expr: irate(node_disk_written_bytes_total{device="sda"}[1m]) > 30000000

    für: 1m

    Etiketten:

      Schweregrad: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.instance}}: E/A-Schreiblast ist zu hoch"

      description: "{ {$labels.instance}}: E/A-Schreibvorgänge pro Minute hat 30 MB/s überschritten (aktueller Wert: { { $value }})"

  - Warnung: eingehende Netzwerkbandbreite

    expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 18432

    für: 1m

    Etiketten:

      Zustand: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.mountpoint}} Bandbreite des eingehenden Netzwerks ist zu hoch!"

      description: "{ {$labels.mountpoint }}Die eingehende Netzwerkbandbreite ist 5 Minuten lang höher als 18 MB. RX-Bandbreitennutzung { {$value}}"

  - Warnung: Ausgehende Netzwerkbandbreite

    expr: ((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 18432

    für: 1m

    Etiketten:

      Zustand: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.mountpoint}} Die ausgehende Netzwerkbandbreite ist zu hoch!"

      description: "{ {$labels.mountpoint }} Die ausgehende Netzwerkbandbreite ist 5 Minuten lang höher als 18 MB. RX-Bandbreitennutzung { {$value}}"

  - Alarm: Anzahl der Netzwerkverbindungen

    expr: node_sockstat_TCP_inuse > 240

    für: 1m

    Etiketten:

      Zustand: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.mountpoint}} Die Anzahl der Verbindungen ist zu hoch!"

      description: "{ {$labels.mountpoint }}Aktuelle Verbindungsnummer{ {$value}}"

② /data/prometheus/rules/redis.yml

Gruppen:

- Name: Redis

  Regeln:

    - Warnung: RedisDown

      expr: redis_up == 0

      für: 5m

      Etiketten:

        Schweregrad: Warnung

      Anmerkungen:

        Zusammenfassung: "Redis down (Instanz { { $labels.instance }})"

        description: "Redis-Cluster-Knotenfehler\n WERT = { { $value }}\n LABELS: { { $labels }}"

    - Warnung: OutOfMemory

      expr: redis_memory_used_bytes / redis_total_system_memory_bytes * 100 > 90

      für: 5m

      Etiketten:

        Schweregrad: Warnung

      Anmerkungen:

        Zusammenfassung: "Nicht genügend Arbeitsspeicher (Instanz { { $labels.instance }})"

        description: "Redis hat keinen Speicher mehr (> 90 %)\n VALUE = { { $value }}\n LABELS: { { $labels }}"

    - Warnung: ReplicationBroken

      expr: delta(redis_connected_slaves[1m]) < 0

      für: 5m

      Etiketten:

        Schweregrad: Warnung

      Anmerkungen:

        Zusammenfassung: "Replikation defekt (Instanz { { $labels.instance }})"

        description: "Die Redis-Instanz hat einen Slave verloren\n VALUE = { { $value }}\n LABELS: { { $labels }}"

    - Warnung: TooManyConnections

      expr: redis_connected_clients > 1000

      für: 5m

      Etiketten:

        Schweregrad: Warnung

      Anmerkungen:

        Zusammenfassung: "Zu viele Verbindungen (Instanz { { $labels.instance }})"

        description: "Die Redis-Instanz hat zu viele Verbindungen\n VALUE = { { $value }}\n LABELS: { { $labels }}"     

    - Warnung: Abgelehnte Verbindungen

      Ausdruck: Erhöhung (redis_rejected_connections_total[1m]) > 0

      für: 5m

      Etiketten:

        Schweregrad: Warnung

      Anmerkungen:

        Zusammenfassung: "Abgelehnte Verbindungen (Instanz { { $labels.instance }})"

        description: "Einige Verbindungen zu Redis wurden abgelehnt\n VALUE = { { $value }}\n LABELS: { { $labels }}"

    - Warnung: AofSaveStatus

      expr: redis_aof_last_bgrewrite_status < 1

      für: 5m

      du kannst:

        Seriosität: Warnung

      Anmerkungen:

        Zusammenfassung: "Fehlende Sicherung (Instanz { { $labels.instance }})"

        description: „Redis AOF-Persistenz fehlgeschlagen\n WERT = { { $value }}\n LABELS: { { $labels }}“

③/data/prometheus/rules/mysql.yml

Gruppen:

    - Name: MySQL

      Regeln:

      - Warnung: MySQL-Status

        expr: mysql_up == 0

        für: 5s

        Etiketten:

          Schweregrad: Warnung

        Anmerkungen:

          Zusammenfassung: "{ {$labels.instance}}: MySQL hat aufgehört !!!"

          description: "Den laufenden Status der MySQL-Datenbank erkennen"

   

      - Warnung: MySQL-Slave-IO-Thread-Status

        expr: mysql_slave_status_slave_io_running != 1

        für: 5s

        Etiketten:

          Schweregrad: Warnung

        Anmerkungen:

          Zusammenfassung: "{ {$labels.instance}}: MySQL Slave IO Thread has stop !!!"

          Beschreibung: "Den laufenden Status des MySQL-Master-Slave-IO-Threads erkennen"

      - Warnung: MySQL-Slave-SQL-Thread-Status

        expr: mysql_slave_status_slave_sql_running != 1

        für: 5s

        Etiketten:

          Schweregrad: Warnung

        Anmerkungen:

          Zusammenfassung: '{ {$labels.instance}}: MySQL Slave SQL Thread has stop !!!' 

          Beschreibung: "Den laufenden Status des MySQL-Master-Slave-SQL-Threads erkennen"

      - Warnung: MySQL-Slave-Verzögerungsstatus

        expr: mysql_slave_status_sql_delay == 30

        für: 5s

        Etiketten:

          Schweregrad: Warnung

        Anmerkungen:

          Zusammenfassung: "{ {$labels.instance}}: MySQL Slave Delay hat mehr als 30s !!!"

          Beschreibung: "MySQL-Master-Slave-Verzögerungsstatus erkennen"

   

      - Warnung: Mysql_Too_Many_Connections

        expr: rate(mysql_global_status_threads_connected[5m]) > 200

        für: 2m

        Etiketten:

          Schweregrad: Warnung

        Anmerkungen:

          Zusammenfassung: "{ {$labels.instance}}: zu viele Verbindungen"

          description: "{ {$labels.instance}}: Zu viele Verbindungen, bitte kümmern Sie sich darum, (aktueller Wert ist: { { $value }})" 

④/data/prometheus/rules/nginx.yml

Gruppen:

-Name: nginx

  Regeln:

  - Warnung: Nginx-Status

    expr: up{instance="192.168.0.91:9913",job="nginx"} == 0

    für: 5s

    Etiketten:

      Schweregrad: Warnung

    Anmerkungen:

      Zusammenfassung: "{ {$labels.instance}}: Nginx hat aufgehört !!!"

      Beschreibung: „Erkenne anormalen Laufstatus von Nginx“

Acho que você gosta

Origin blog.csdn.net/Wemesun/article/details/126455053
Recomendado
Clasificación