Inhaltsverzeichnis
4. Installieren Sie Prometheus und Grafana
5. Konfigurieren Sie Prometheus und Grafana
Sechs, Maschinenhardware-Ressourcen überwachen... 7
7. Überwachung der Grundversorgung... 9
8. Überwachungsanwendung ... 18
Neun, Überwachung von Geschäftsschnittstellendaten ... 19
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.
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:
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.
&&& Ü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:
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
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
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
- https://github.com/vozlt/nginx-module-vts – (Zip-Paket zum Herunterladen auswählen)
- Kompilieren und installieren Sie nginx
./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
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
- Das Programm hat möglicherweise eine Schreiboperation auf dem Slave durchgeführt
- 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
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
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
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“