Nginx Amplify è un modo gratuito, flessibile e potente per analizzare il carico e le prestazioni dei server web Nginx e Nginx Plus. È facile da configurare e utilizzare. Nginx Amplify include anche plugin MySQL/MariaDB e PHP-FPM in modo da poter monitorare un'applicazione stack LEMP completa. (LEMP sta per Linux, Nginx, MySQL/MariaDB, PHP.)
Nginx Amplify è sviluppato da Nginx, Inc, la società dietro il server web Nginx. È una soluzione basata su SaaS. Installi l'agente Nginx Amplify sul tuo server e raccoglierà e invierà le metriche al servizio SaaS. L'agente Nginx Amplify è open source e leggero. Raccoglie molte metriche, tra cui:
- Metriche di sistema (CPU, utilizzo della RAM, traffico di rete, utilizzo del disco, I/O del disco, latenza del disco, ecc.)
- Metriche Nginx (connessioni, richieste, stato HTTP, tempo di risposta, traffico e altro)
- Metriche MySQL/MariaDB (connessioni, query di selezione, query di inserimento, query di aggiornamento, query lente, ecc.)
- Metriche PHP-FPM (connessioni, coda di connessioni, richieste lente, ecc.)
Nginx Amplify può anche
- Utilizza l'analizzatore statico per migliorare la configurazione di Nginx.
- Avvisa di comportamenti anomali
Installazione di Nginx Amplify sul tuo server Linux CentOS 8/RHEL8
L'agente Nginx Amplify è open source e c'è uno script di installazione che puoi utilizzare per installare Nginx Amplify sulle seguenti distribuzioni Linux:
- Debian 9, Debian 10,
- Ubuntu 16.04, Ubuntu 18.04
- CentOS/RHEL 6, CentOS/RHEL 7, CentOS/RHEL 8
Innanzitutto, registra un account su https://amplify.nginx.com
Verifica il tuo indirizzo email. Successivamente, dovrai installare Nginx Amplify Agent sul tuo server Linux. SSH nel tuo server e accedi come root. Il sito Web Nginx Amplify è molto utile per fornire i comandi necessari per l'installazione di Nginx Amplify, quindi copia ed esegui questi comandi sul tuo server.
Nota che devi eseguire questi comandi come root.
Nginx Amplify richiede Python2. Installalo dal repository CentOS predefinito.
sudo dnf install python2
Scarica lo script di installazione.
Quindi esegui lo script di installazione. (Ogni account Amplify ha una chiave API univoca.)
Una volta installato, l'agente si avvierà automaticamente. Puoi verificarne lo stato con:
systemctl status amplify-agent
Esempio di output:
● 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
Suggerimento:se il comando precedente non si chiude immediatamente, premi Q per riprendere il controllo del terminale.
Per abilitare l'avvio automatico all'avvio, esegui
sudo systemctl enable amplify-agent
Configurazione di Stub_status in Nginx
L'agente Amplify può raccogliere immediatamente le metriche di sistema. Per raccogliere le metriche di Nginx, devi configurare Nginx stub_status. Crea un file di configurazione.
sudo nano /etc/nginx/conf.d/stub_status.conf
Aggiungi il seguente blocco server in http {...}
contesto.
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; } }
Salva e chiudi il file. Quindi ricarica Nginx per rendere effettive le modifiche.
sudo systemctl reload nginx
Ora l'agente Amplify può iniziare a raccogliere le metriche Nginx.
Creazione di un formato registro Nginx personalizzato
L'agente Nginx Amplify può anche raccogliere informazioni dai file di registro Nginx. Tuttavia, il formato di registro predefinito fornisce informazioni limitate. Se sei davvero interessato alle prestazioni dell'applicazione, dovresti creare un formato di registro personalizzato per mostrare il tempo della richiesta, il tempo di risposta a monte, i risultati della cache, ecc.
Apri il nginx.conf
file.
sudo nano /etc/nginx/nginx.conf
Aggiungi le seguenti righe in http {...}
contesto, sopra include
direttive. Qui stiamo creando un formato di registro Nginx personalizzato chiamato apm
(monitoraggio delle prestazioni dell'applicazione) che include informazioni su request_time , upstream_response_time , upstream_connect_time e upstream_header_time . Tutti sono misurati in secondi con risoluzione in millisecondi.
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';
Salva e chiudi file. Quindi apri il file di configurazione dell'host virtuale Nginx. Ad esempio,
sudo nano /etc/nginx/conf.d/linuxbabe.com.conf
Nel server {...}
contesto, aggiungere le due righe seguenti per abilitare il registro degli accessi e il registro degli errori. Il registro di accesso utilizza apm
formato e registro errori utilizza il warn
livello di registro.
access_log /var/log/nginx/linuxbabe.com.access.log apm; error_log /var/log/nginx/linuxbabe.com.error.log warn;
Salva e chiudi il file. Quindi ricarica Nginx.
sudo systemctl reload nginx
Ora posso vedere il tempo di risposta a monte e altre metriche relative alle prestazioni nei grafici Amplify. Un buon tempo di risposta a monte è inferiore a 0,5 secondi. Altrimenti i tuoi visitatori possono sentire che il tuo sito web è lento. Se riesci a ottimizzare il tuo server per ottenere un tempo di risposta a monte inferiore a 0,2 secondi, il tuo sito Web sarà molto scattante.
Se l'agente Amplify non segnala le metriche Nginx, verifica che l'agente Amplify venga eseguito come lo stesso utente del processo di lavoro Nginx. Puoi anche controllare il registro Amplify Agent (/var/log/amplify-agent/agent.log
).
Come escludere il tuo indirizzo IP nel registro di accesso di Nginx
A volte, la tua attività può distorcere le metriche di Nginx. Puoi escludere il tuo indirizzo IP nel registro di accesso per evitarlo. Innanzitutto, aggiungi le seguenti righe in http
contesto del file di configurazione di Nginx. Sostituisci 12.34.56.78 con il tuo indirizzo IP. Se la richiesta HTTP proviene dal tuo indirizzo IP, Nginx imposterà il valore di $log_ip
variabile a 0
.
map $remote_addr $log_ip { "12.34.56.78" 0; default 1; }
Quindi cambia il access_log
direttiva come segue.
access_log /var/log/nginx/linuxbabe.com.access.log apm if=$log_ip;
Salva e chiudi il file. Quindi invia un SMS alla configurazione di nginx e ricarica.
sudo nginx -t sudo systemctl reload nginx
Come monitorare il server di database MariaDB/MySQL
Innanzitutto, dobbiamo creare un utente in MariaDB/MySQL per raccogliere le metriche. Accedi al monitor MariaDB/MySQL.
mysql -u root -p
Crea un nuovo utente per l'agente Amplify. Sostituisci your_password
con la tua password preferita. (Si consiglia di scegliere una password diversa dalla password principale di MariaDB/MySQL.)
create user 'amplify-agent'@'localhost' identified by 'your_password';
Esci dal server MariaDB/MySQL.
exit;
Successivamente, dobbiamo abilitare il plug-in Amplify MariaDB/MySQL nel file di configurazione Amplify.
sudo nano /etc/amplify-agent/agent.conf
Nel [extensions]
sezione, puoi vedere che il plugin MySQL è disabilitato per impostazione predefinita.
[extensions] phpfpm = True mysql = False
Cambia False
a True
per abilitare questo plugin.
[extensions] phpfpm = True mysql = True
Quindi in [mysql]
sezione, trova la riga seguente.
unix_socket = /var/run/mysqld/mysqld.sock password = amplify-agent
Il pacchetto MariaDB su CentOS è in ascolto su /var/lib/mysql/mysql.sock
socket Unix, quindi cambia il valore di unix_socket
a
unix_socket = /var/lib/mysql/mysql.sock
Quindi sostituisci la password predefinita con la password che hai impostato per amplify-agent
utente. Salva e chiudi il file. Quindi riavvia l'agente Amplify per rendere effettive le modifiche.
sudo systemctl restart amplify-agent
Ora l'agente Amplify inizia a raccogliere le metriche MariaDB/MySQL. (Potrebbe essere necessario attendere qualche minuto.)
Come abilitare il registro delle query lente di MariaDB
Il registro delle query lente può mostrarti quali query richiedono molto tempo per fornire una risposta. È uno strumento importante per ottimizzare le prestazioni di MariaDB. Per abilitare il registro delle query lente di MariaDB, modificare il file di configurazione del server.
sudo nano /etc/my.cnf.d/mariadb-server.cnf
Aggiungi le seguenti righe in [mysqld]
sezione.
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
Ho impostato il long_query_time
a un numero basso 1 secondo. Puoi anche specificare un valore più piccolo come 0,5 secondi. Salva e chiudi il file. Riavvia MariaDB per rendere effettive le modifiche.
sudo systemctl restart mariadb
Ora Nginx Amplify può mostrarti query lente nei grafici.
Come monitorare PHP-FPM
Il plug-in PHP-FPM dell'agente Amplify è abilitato per impostazione predefinita, ma è necessario abilitare lo stato PHP-FPM per raccogliere le metriche. Modifica il file di configurazione del pool PHP-FPM.
sudo nano /etc/php-fpm.d/www.conf
Trova la riga seguente e rimuovi il punto e virgola per abilitare lo stato PHP-FPM.
;pm.status_path = /status
Lo slow log di PHP è abilitato per impostazione predefinita, come indicato dalla riga seguente.
slowlog = /var/log/php-fpm/www-slow.log
Quindi trova la riga seguente.
;request_slowlog_timeout = 0
Rimuovi il punto e virgola e imposta i secondi di timeout come 1s.
request_slowlog_timeout = 1s
Salva e chiudi il file. Crea una directory per i log PHP-FPM.
sudo mkdir -p /var/log/php-fpm/
Riavvia PHP-FPM per rendere effettive le modifiche.
sudo systemctl restart php-fpm
Ora l'agente Amplify inizia a raccogliere le metriche PHP-FPM incluso il registro delle richieste lente.
La pagina Panoramica Amplifica
Nella pagina di panoramica, puoi vedere il punteggio di integrità generale dell'applicazione e 5 metriche chiave per il tuo sistema.
- Richieste totali
- Errori HTTP 5xx
- Tempo di richiesta (è necessario creare un formato di registro personalizzato come descritto in precedenza per mostrare questa metrica.)
- Quanta larghezza di banda utilizza Nginx
- Utilizzo della CPU
Il punteggio di integrità dell'applicazione è influenzato dal numero di errori HTTP 5xx. Se non ci sono errori HTTP 5xx, il punteggio sarà del 100%.
Grafici
Nella pagina Grafici, puoi vedere le metriche di sistema predefinite, Nginx, MariaDB/MySQL e PHP-FPM.
Dashboard di amplificazione Nginx
Le dashboard Amplify ti consentono di creare grafici e grafici personalizzati e di raggrupparli in un'unica pagina. Ad esempio, puoi assemblare tutti i grafici relativi al rendimento in una pagina, o forse vuoi visualizzare tutte le metriche per un determinato URL.
Se hai configurato la cache Nginx FastCGI, puoi anche creare grafici per l'hit ratio della cache di Nginx e la scadenza della cache nella dashboard.
Analizzatore
Uno degli strumenti utili nell'analizzatore è l'analisi statica. Amplify può analizzare il tuo file di configurazione Nginx e fornire consigli su prestazioni, sicurezza e affidabilità. Puoi usarlo per identificare errori e migliorare le configurazioni.
Come puoi vedere, ci sono 5 avvisi per il mio server Nginx, quindi faccio clic sul collegamento Apri per vedere come modificare le mie configurazioni Nginx.
Dopo aver effettuato le regolazioni, attendi qualche minuto e l'avviso scomparirà.
Avvisi
Per impostazione predefinita, se l'agente Amplify smette di funzionare, verrà inviato un avviso al tuo indirizzo e-mail. Nella pagina degli avvisi, puoi impostare vari avvisi per il tuo server. Ad esempio, posso dire ad Amplify di inviarmi un'email se il tempo di risposta a monte è superiore a 1 secondo negli ultimi 2 minuti.
Se il tuo server esaurisce la RAM, potrebbe uccidere il processo MySQL/MariaDB. Puoi creare una regola di avviso per monitorare il tempo di attività di MySQL/MariaDB come di seguito. Se il tempo di attività è inferiore a 120 secondi negli ultimi 2 minuti, invia un'email di notifica.
Amplify Agent smette di funzionare
Spesso ho scoperto che l'agente Amplify smette di inviare le metriche delle prestazioni per ragioni sconosciute. Creo un lavoro Cron per riavviare Amplify-agent una volta al giorno per risolvere questo problema.
sudo crontab -e
Aggiungi la seguente riga nel file crontab.
@daily systemctl restart amplify-agent
Salva e chiudi il file.