Nginx Amplify ist eine kostenlose, flexible und leistungsstarke Möglichkeit, die Auslastung und Leistung von Nginx- und Nginx Plus-Webservern zu analysieren. Es ist einfach einzurichten und zu verwenden. Nginx Amplify wird auch mit MySQL/MariaDB, PHP-FPM-Plugins geliefert, sodass Sie eine vollständige LEMP-Stack-Anwendung überwachen können. (LEMP steht für Linux, Nginx, MySQL/MariaDB, PHP.)
Nginx Amplify wird von Nginx, Inc entwickelt, dem Unternehmen hinter dem Nginx-Webserver. Es ist eine SaaS-basierte Lösung. Sie installieren den Nginx Amplify-Agenten auf Ihrem Server und er sammelt und sendet Metriken an den SaaS-Dienst. Der Nginx Amplify-Agent ist Open Source und leichtgewichtig. Es sammelt viele Metriken, darunter:
- Systemmetriken (CPU, RAM-Nutzung, Netzwerkverkehr, Festplattennutzung, Festplatten-E/A, Festplattenlatenz usw.)
- Nginx-Metriken (Verbindungen, Anfragen, HTTP-Status, Antwortzeit, Datenverkehr und mehr)
- MySQL/MariaDB-Metriken (Verbindungen, Abfragen auswählen, Abfragen einfügen, Abfragen aktualisieren, langsame Abfragen usw.)
- PHP-FPM-Metriken (Verbindungen, Verbindungswarteschlange, langsame Anfragen usw.)
Nginx Amplify kann das auch
- Verwenden Sie den statischen Analysator, um die Nginx-Konfiguration zu verbessern.
- Warnen Sie bei ungewöhnlichem Verhalten
Installieren von Nginx Amplify auf Ihrem CentOS 8/RHEL8-Linux-Server
Der Nginx Amplify-Agent ist Open Source und es gibt ein Installationsskript, mit dem Sie Nginx Amplify auf den folgenden Linux-Distributionen installieren können:
- Debian 9, Debian 10,
- Ubuntu 16.04, Ubuntu 18.04
- CentOS/RHEL 6, CentOS/RHEL 7, CentOS/RHEL 8
Registrieren Sie zunächst ein Konto unter https://amplify.nginx.com
Bestätige deine Email-Adresse. Als nächstes müssen Sie den Nginx Amplify Agent auf Ihrem Linux-Server installieren. Verbinden Sie sich per SSH mit Ihrem Server und melden Sie sich als root an. Die Nginx Amplify-Website ist sehr nett, um die Befehle zu geben, die Sie ausführen müssen, um Nginx Amplify zu installieren, also kopieren Sie einfach diese Befehle und führen Sie sie auf Ihrem Server aus.
Beachten Sie, dass Sie diese Befehle als root ausführen müssen.
Nginx Amplify erfordert Python2. Installieren Sie es aus dem standardmäßigen CentOS-Repository.
sudo dnf install python2
Laden Sie das Installationsskript herunter.
Führen Sie dann das Installationsskript aus. (Jedes Amplify-Konto hat einen eindeutigen API-Schlüssel.)
Nach der Installation wird der Agent automatisch gestartet. Sie können den Status überprüfen mit:
systemctl status amplify-agent
Beispielausgabe:
● amplify-agent.service - NGINX Amplify Agent Loaded: loaded (/usr/lib/systemd/system/amplify-agent.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-06-12 02:38:09 EDT; 2min 49s ago Docs: https://amplify.nginx.com/docs/ Process: 13768 ExecStart=/etc/init.d/amplify-agent start (code=exited, status=0/SUCCESS) Main PID: 13820 (amplify-agent) Tasks: 2 (limit: 5059) Memory: 48.0M CGroup: /system.slice/amplify-agent.service └─13820 amplify-agent
Hinweis:Wenn der obige Befehl nicht sofort beendet wird, drücken Sie Q, um die Kontrolle über das Terminal zurückzugewinnen.
Um den automatischen Start beim Booten zu aktivieren, führen Sie
aussudo systemctl enable amplify-agent
Stub_status in Nginx konfigurieren
Der Amplify-Agent kann sofort einsatzbereite Systemmetriken erfassen. Um Nginx-Metriken zu erfassen, müssen Sie Nginx stub_status konfigurieren. Erstellen Sie eine Konfigurationsdatei.
sudo nano /etc/nginx/conf.d/stub_status.conf
Fügen Sie den folgenden Serverblock in http {...}
hinzu Kontext.
server { listen 127.0.0.1:80; server_name 127.0.0.1; location /nginx_status { stub_status on; allow 127.0.0.1; deny all; } }
Speichern und schließen Sie die Datei. Laden Sie dann Nginx neu, damit die Änderungen wirksam werden.
sudo systemctl reload nginx
Jetzt kann der Amplify-Agent mit dem Sammeln von Nginx-Metriken beginnen.
Erstellen eines benutzerdefinierten Nginx-Protokollformats
Der Nginx Amplify-Agent kann auch Informationen aus Nginx-Protokolldateien sammeln. Das Standardprotokollformat gibt uns jedoch nur begrenzte Informationen. Wenn Ihnen die Anwendungsleistung wirklich wichtig ist, sollten Sie ein benutzerdefiniertes Protokollformat erstellen, um die Anforderungszeit, Upstream-Antwortzeit, Cache-Treffer usw. anzuzeigen.
Öffnen Sie die nginx.conf
Datei.
sudo nano /etc/nginx/nginx.conf
Fügen Sie die folgenden Zeilen im http {...}
hinzu Kontext über dem include
Richtlinien. Hier erstellen wir ein benutzerdefiniertes Nginx-Protokollformat namens apm
(Überwachung der Anwendungsleistung), die Informationen über request_time enthält , Upstream_Response_time , upstream_connect_time und upstream_header_time . Alle werden in Sekunden mit Millisekundenauflösung gemessen.
log_format apm '"$time_local" client=$remote_addr ' 'method=$request_method request="$request" ' 'request_length=$request_length ' 'status=$status bytes_sent=$bytes_sent ' 'body_bytes_sent=$body_bytes_sent ' 'referer=$http_referer ' 'user_agent="$http_user_agent" ' 'upstream_addr=$upstream_addr ' 'upstream_status=$upstream_status ' 'request_time=$request_time ' 'upstream_cache_status="$upstream_cache_status" ' 'upstream_response_time=$upstream_response_time ' 'upstream_connect_time=$upstream_connect_time ' 'upstream_header_time=$upstream_header_time';
Datei speichern und schließen. Öffnen Sie dann Ihre Konfigurationsdatei für den virtuellen Nginx-Host. Zum Beispiel
sudo nano /etc/nginx/conf.d/linuxbabe.com.conf
Auf dem server {...}
Kontext, fügen Sie die folgenden zwei Zeilen hinzu, um das Zugriffsprotokoll und das Fehlerprotokoll zu aktivieren. Das Zugriffsprotokoll verwendet den apm
Format und Fehlerprotokoll verwendet den warn
Protokollebene.
access_log /var/log/nginx/linuxbabe.com.access.log apm; error_log /var/log/nginx/linuxbabe.com.error.log warn;
Speichern und schließen Sie die Datei. Laden Sie dann Nginx neu.
sudo systemctl reload nginx
Jetzt kann ich die Upstream-Antwortzeit und andere leistungsbezogene Metriken in den Amplify-Diagrammen sehen. Eine gute Upstream-Reaktionszeit liegt unter 0,5 Sekunden. Andernfalls können Ihre Besucher das Gefühl haben, dass Ihre Website langsam ist. Wenn Sie Ihren Server so einstellen können, dass die Upstream-Antwortzeit unter 0,2 Sekunden liegt, wird Ihre Website sehr schnell.
Wenn der Amplify-Agent keine Nginx-Metriken meldet, überprüfen Sie, ob der Amplify-Agent als derselbe Benutzer wie der Nginx-Arbeitsprozess ausgeführt wird. Sie können auch das Amplify Agent-Protokoll überprüfen (/var/log/amplify-agent/agent.log
).
So schließen Sie Ihre eigene IP-Adresse im Nginx-Zugriffsprotokoll aus
Manchmal kann Ihre Aktivität die Nginx-Metriken verzerren. Sie können Ihre eigene IP-Adresse im Zugriffsprotokoll ausschließen, um dies zu vermeiden. Fügen Sie zunächst die folgenden Zeilen im http
hinzu Kontext der Nginx-Konfigurationsdatei. Ersetzen Sie 12.34.56.78 durch Ihre eigene IP-Adresse. Wenn die HTTP-Anfrage von Ihrer eigenen IP-Adresse kommt, setzt Nginx den Wert von $log_ip
Variable auf 0
.
map $remote_addr $log_ip { "12.34.56.78" 0; default 1; }
Ändern Sie dann das access_log
Anweisung wie folgt.
access_log /var/log/nginx/linuxbabe.com.access.log apm if=$log_ip;
Speichern und schließen Sie die Datei. Dann nginx configuration per SMS senden und neu laden.
sudo nginx -t sudo systemctl reload nginx
Überwachen des MariaDB/MySQL-Datenbankservers
Zuerst müssen wir einen Benutzer in MariaDB/MySQL erstellen, um Metriken zu sammeln. Melden Sie sich beim MariaDB/MySQL-Monitor an.
mysql -u root -p
Erstellen Sie einen neuen Benutzer für den Amplify-Agenten. Ersetzen Sie your_password
mit Ihrem bevorzugten Passwort. (Es wird empfohlen, ein anderes Passwort als das MariaDB/MySQL-Root-Passwort zu wählen.)
create user 'amplify-agent'@'localhost' identified by 'your_password';
Verlassen Sie den MariaDB/MySQL-Server.
exit;
Als nächstes müssen wir das Amplify MariaDB/MySQL-Plugin in der Amplify-Konfigurationsdatei aktivieren.
sudo nano /etc/amplify-agent/agent.conf
In den [extensions]
Abschnitt sehen Sie, dass das MySQL-Plugin standardmäßig deaktiviert ist.
[extensions] phpfpm = True mysql = False
Ändern Sie False
auf True
um dieses Plugin zu aktivieren.
[extensions] phpfpm = True mysql = True
Dann in [mysql]
finden Sie die folgende Zeile.
unix_socket = /var/run/mysqld/mysqld.sock password = amplify-agent
Das MariaDB-Paket auf CentOS lauscht auf /var/lib/mysql/mysql.sock
Unix-Socket, also ändern Sie den Wert von unix_socket
zu
unix_socket = /var/lib/mysql/mysql.sock
Ersetzen Sie dann das Standardpasswort durch das Passwort, das Sie für den amplify-agent
festgelegt haben Benutzer. Speichern und schließen Sie die Datei. Starten Sie dann den Amplify-Agenten neu, damit die Änderungen wirksam werden.
sudo systemctl restart amplify-agent
Jetzt beginnt der Amplify-Agent mit dem Sammeln von MariaDB/MySQL-Metriken. (Möglicherweise müssen Sie einige Minuten warten.)
So aktivieren Sie das MariaDB-Protokoll für langsame Abfragen
Das Protokoll für langsame Abfragen kann Ihnen zeigen, welche Abfragen lange brauchen, um eine Antwort zu geben. Es ist ein wichtiges Tool zur Optimierung der Leistung von MariaDB. Um das MariaDB-Protokoll für langsame Abfragen zu aktivieren, bearbeiten Sie die Serverkonfigurationsdatei.
sudo nano /etc/my.cnf.d/mariadb-server.cnf
Fügen Sie die folgenden Zeilen in [mysqld]
hinzu Abschnitt.
slow_query_log = 1 slow_query_log_file = /var/log/mariadb/mariadb-slow.log long_query_time = 1 log_slow_rate_limit = 1000 log_slow_verbosity = query_plan log-queries-not-using-indexes
Ich setze die long_query_time
zu einer niedrigen Zahl 1 Sekunde. Sie können auch einen kleineren Wert wie 0,5 Sekunden angeben. Speichern und schließen Sie die Datei. Starten Sie MariaDB neu, damit die Änderungen wirksam werden.
sudo systemctl restart mariadb
Jetzt kann Nginx Amplify Ihnen langsame Abfragen in den Diagrammen anzeigen.
Wie man PHP-FPM überwacht
Das Amplify-Agent-PHP-FPM-Plugin ist standardmäßig aktiviert, aber wir müssen den PHP-FPM-Status aktivieren, um Metriken zu erfassen. Bearbeiten Sie die Konfigurationsdatei des PHP-FPM-Pools.
sudo nano /etc/php-fpm.d/www.conf
Suchen Sie die folgende Zeile und entfernen Sie das Semikolon, um den PHP-FPM-Status zu aktivieren.
;pm.status_path = /status
Das langsame PHP-Protokoll ist standardmäßig aktiviert, wie die folgende Zeile zeigt.
slowlog = /var/log/php-fpm/www-slow.log
Suchen Sie dann die folgende Zeile.
;request_slowlog_timeout = 0
Entfernen Sie das Semikolon und setzen Sie die Timeout-Sekunden auf 1s.
request_slowlog_timeout = 1s
Speichern und schließen Sie die Datei. Erstellen Sie ein Verzeichnis für PHP-FPM-Protokolle.
sudo mkdir -p /var/log/php-fpm/
Starten Sie PHP-FPM neu, damit die Änderungen wirksam werden.
sudo systemctl restart php-fpm
Jetzt beginnt der Amplify-Agent mit dem Sammeln von PHP-FPM-Metriken, einschließlich des Protokolls für langsame Anforderungen.
Die Amplify-Übersichtsseite
Auf der Übersichtsseite sehen Sie den Gesamtstatus der Anwendung und 5 wichtige Kennzahlen für Ihr System.
- Anfragen insgesamt
- HTTP 5xx-Fehler
- Anfragezeit (Sie müssen ein benutzerdefiniertes Protokollformat wie zuvor beschrieben erstellen, um diese Metrik anzuzeigen.)
- Wie viel Bandbreite Nginx verwendet
- CPU-Auslastung
Der Application Health Score wird durch die Anzahl der HTTP 5xx-Fehler beeinflusst. Wenn es keine HTTP 5xx-Fehler gibt, beträgt die Punktzahl 100 %.
Grafiken
Auf der Seite „Grafiken“ können Sie vordefinierte System-, Nginx-, MariaDB/MySQL- und PHP-FPM-Metriken sehen.
Nginx Amplify-Dashboards
Mit Amplify-Dashboards können Sie benutzerdefinierte Grafiken und Diagramme erstellen und diese auf einer Seite gruppieren. Beispielsweise können Sie alle leistungsbezogenen Diagramme auf einer Seite zusammenstellen oder alle Messwerte für eine bestimmte URL anzeigen.
Wenn Sie den Nginx FastCGI-Cache konfiguriert haben, können Sie im Dashboard auch Diagramme für die Nginx-Cache-Trefferquote und den Cache-Ablauf erstellen.
Analysator
Eines der nützlichen Werkzeuge im Analysator ist die statische Analyse. Amplify kann Ihre Nginx-Konfigurationsdatei analysieren und Empfehlungen zu Leistung, Sicherheit und Zuverlässigkeit abgeben. Sie können es verwenden, um Fehler zu identifizieren und Konfigurationen zu verbessern.
Wie Sie sehen können, gibt es 5 Warnungen für meinen Nginx-Server, also klicke ich auf den Link Öffnen, um zu sehen, wie ich meine Nginx-Konfigurationen anpassen kann.
Nachdem Sie die Anpassungen vorgenommen haben, warten Sie einige Minuten und die Warnung verschwindet.
Warnungen
Wenn der Amplify-Agent nicht mehr funktioniert, wird standardmäßig eine Benachrichtigung an Ihre E-Mail-Adresse gesendet. Auf der Alerts-Seite können Sie verschiedene Alerts für Ihren Server einstellen. Beispielsweise kann ich Amplify anweisen, mir eine E-Mail zu senden, wenn die Upstream-Antwortzeit in den letzten 2 Minuten über 1 Sekunde lag.
Wenn Ihrem Server der RAM ausgeht, könnte er den MySQL/MariaDB-Prozess beenden. Sie können eine Warnregel erstellen, um die Verfügbarkeit von MySQL/MariaDB wie unten zu überwachen. Wenn die Betriebszeit in den letzten 2 Minuten unter 120 Sekunden lag, senden Sie eine E-Mail-Benachrichtigung.
Amplify-Agent funktioniert nicht mehr
Oft habe ich festgestellt, dass der Amplify-Agent aus unbekannten Gründen keine Leistungsmetriken mehr sendet. Ich erstelle einen Cron-Job, um den Amplify-Agent einmal täglich neu zu starten, um dieses Problem zu lösen.
sudo crontab -e
Fügen Sie die folgende Zeile in die crontab-Datei ein.
@daily systemctl restart amplify-agent
Speichern und schließen Sie die Datei.