Nginx Amplify je bezplatný, flexibilní a výkonný způsob analýzy zatížení a výkonu webových serverů Nginx a Nginx Plus. Snadno se nastavuje a používá. Nginx Amplify také přichází s MySQL/MariaDB, pluginy PHP-FPM, takže můžete sledovat celou aplikaci LEMP stack. (LEMP znamená Linux, Nginx, MySQL/MariaDB, PHP.)
Nginx Amplify je vyvinut společností Nginx, Inc, která stojí za webovým serverem Nginx. Je to řešení založené na SaaS. Nainstalujete agenta Nginx Amplify na svůj server a bude shromažďovat a odesílat metriky do služby SaaS. Agent Nginx Amplify je open source a lehký. Shromažďuje mnoho metrik, včetně:
- Systémové metriky (CPU, využití RAM, síťový provoz, využití disku, vstup/výstup disku, latence disku atd.)
- Metriky Nginx (připojení, požadavky, stav HTTP, doba odezvy, provoz a další)
- Metriky MySQL/MariaDB (připojení, výběrové dotazy, vkládání dotazů, aktualizační dotazy, pomalé dotazy atd.)
- Metriky PHP-FPM (připojení, fronta připojení, pomalé požadavky atd.)
Nginx Amplify umí také
- Použijte statický analyzátor, který vám pomůže zlepšit konfiguraci Nginx.
- Upozornit vás na abnormální chování
Instalace Nginx Amplify na váš CentOS 8/RHEL8 Linux Server
Agent Nginx Amplify je open source a existuje instalační skript, který můžete použít k instalaci Nginx Amplify na následujících distribucích Linuxu:
- Debian 9, Debian 10,
- Ubuntu 16.04, Ubuntu 18.04
- CentOS /RHEL 6, CentOS/RHEL 7, CentOS/RHEL 8
Nejprve si zaregistrujte účet na https://amplify.nginx.com
Ověřte svou e-mailovou adresu. Dále budete muset nainstalovat Nginx Amplify Agent na váš Linux server. SSH na váš server a přihlaste se jako root. Web Nginx Amplify je velmi pěkný, protože poskytuje příkazy, které potřebujete spustit k instalaci Nginx Amplify, takže stačí zkopírovat a spustit tyto příkazy na vašem serveru.
Všimněte si, že tyto příkazy musíte spouštět jako root.
Nginx Amplify vyžaduje Python2. Nainstalujte jej z výchozího úložiště CentOS.
sudo dnf install python2
Stáhněte si instalační skript.
Poté spusťte instalační skript. (Každý účet Amplify má jedinečný klíč API.)
Jakmile je nainstalován, agent se automaticky spustí. Jeho stav můžete zkontrolovat pomocí:
systemctl status amplify-agent
Ukázkový výstup:
● 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
Tip:Pokud se výše uvedený příkaz okamžitě neukončí, stiskněte Q, abyste získali zpět kontrolu nad terminálem.
Chcete-li povolit automatické spouštění při spouštění, spusťte
sudo systemctl enable amplify-agent
Konfigurace Stub_status v Nginx
Agent Amplify může shromažďovat systémové metriky ihned po vybalení. Abyste mohli shromažďovat metriky Nginx, musíte nakonfigurovat Nginx stub_status. Vytvořte konfigurační soubor.
sudo nano /etc/nginx/conf.d/stub_status.conf
Přidejte následující blok serveru do http {...}
kontextu.
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; } }
Uložte a zavřete soubor. Poté znovu načtěte Nginx, aby se změny projevily.
sudo systemctl reload nginx
Nyní může agent Amplify začít shromažďovat metriky Nginx.
Vytvoření vlastního formátu protokolu Nginx
Agent Nginx Amplify může také shromažďovat informace ze souborů protokolu Nginx. Výchozí formát protokolu nám však poskytuje omezené informace. Pokud vám opravdu záleží na výkonu aplikace, měli byste si vytvořit vlastní formát protokolu, který bude zobrazovat dobu požadavku, dobu odezvy upstream, přístupy do mezipaměti atd.
Otevřete soubor nginx.conf
soubor.
sudo nano /etc/nginx/nginx.conf
Přidejte následující řádky do http {...}
kontextu, nad include
směrnice. Zde vytváříme vlastní formát protokolu Nginx s názvem apm
(monitorování výkonu aplikace), který zahrnuje informace o request_time , upstream_response_time , upstream_connect_time a upstream_header_time . Všechny jsou měřeny v sekundách s rozlišením milisekund.
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';
Uložte a zavřete soubor. Poté otevřete konfigurační soubor virtuálního hostitele Nginx. Například,
sudo nano /etc/nginx/conf.d/linuxbabe.com.conf
V server {...}
kontextu, přidejte následující dva řádky, abyste povolili protokol přístupu a protokol chyb. Přístupový protokol používá apm
formát a protokol chyb používá warn
úroveň protokolu.
access_log /var/log/nginx/linuxbabe.com.access.log apm; error_log /var/log/nginx/linuxbabe.com.error.log warn;
Uložte a zavřete soubor. Poté znovu načtěte Nginx.
sudo systemctl reload nginx
Nyní v grafech Amplify vidím dobu odezvy upstream a další metriky související s výkonem. Dobrá doba odezvy upstream je pod 0,5 sekundy. V opačném případě budou mít návštěvníci pocit, že je váš web pomalý. Pokud dokážete vyladit svůj server tak, aby doba odezvy upstreamu byla nižší než 0,2 sekundy, váš web bude velmi svižný.
Pokud agent Amplify nehlásí metriky Nginx, zkontrolujte, zda agent Amplify běží jako stejný uživatel jako pracovní proces Nginx. Můžete také zkontrolovat protokol Amplify Agent (/var/log/amplify-agent/agent.log
).
Jak vyloučit svou vlastní IP adresu v protokolu přístupu Nginx
Někdy může vaše aktivita zkreslit metriky Nginx. Abyste tomu zabránili, můžete v protokolu přístupu vyloučit svou vlastní IP adresu. Nejprve přidejte následující řádky do http
kontextu konfiguračního souboru Nginx. Nahraďte 12.34.56.78 svou vlastní IP adresou. Pokud požadavek HTTP přichází z vaší vlastní IP adresy, Nginx nastaví hodnotu $log_ip
proměnná na 0
.
map $remote_addr $log_ip { "12.34.56.78" 0; default 1; }
Poté změňte access_log
směrnice takto.
access_log /var/log/nginx/linuxbabe.com.access.log apm if=$log_ip;
Uložte a zavřete soubor. Poté napište text o konfiguraci nginx a znovu načtěte.
sudo nginx -t sudo systemctl reload nginx
Jak monitorovat databázový server MariaDB/MySQL
Nejprve musíme vytvořit uživatele v MariaDB/MySQL, který bude shromažďovat metriky. Přihlaste se k monitoru MariaDB/MySQL.
mysql -u root -p
Vytvořte nového uživatele pro agenta Amplify. Nahraďte your_password
s vaším preferovaným heslem. (Doporučujeme zvolit heslo, které se liší od root hesla MariaDB/MySQL.)
create user 'amplify-agent'@'localhost' identified by 'your_password';
Ukončete server MariaDB/MySQL.
exit;
Dále musíme povolit plugin Amplify MariaDB/MySQL v konfiguračním souboru Amplify.
sudo nano /etc/amplify-agent/agent.conf
V [extensions]
sekce, můžete vidět, že mysql plugin je ve výchozím nastavení zakázán.
[extensions] phpfpm = True mysql = False
Změňte False
na True
pro povolení tohoto pluginu.
[extensions] phpfpm = True mysql = True
Poté v [mysql]
najděte následující řádek.
unix_socket = /var/run/mysqld/mysqld.sock password = amplify-agent
Balíček MariaDB na CentOS naslouchá na /var/lib/mysql/mysql.sock
Unixový socket, změňte tedy hodnotu unix_socket
do
unix_socket = /var/lib/mysql/mysql.sock
Poté nahraďte výchozí heslo heslem, které jste nastavili pro amplify-agent
uživatel. Uložte a zavřete soubor. Poté restartujte agenta Amplify, aby se změny projevily.
sudo systemctl restart amplify-agent
Nyní agent Amplify začne shromažďovat metriky MariaDB/MySQL. (Možná budete muset několik minut počkat.)
Jak povolit protokol pomalých dotazů MariaDB
Protokol pomalých dotazů vám může ukázat, na které dotazy trvá odpověď dlouho. Je to důležitý nástroj pro optimalizaci výkonu MariaDB. Chcete-li povolit protokol pomalých dotazů MariaDB, upravte konfigurační soubor serveru.
sudo nano /etc/my.cnf.d/mariadb-server.cnf
Přidejte následující řádky do [mysqld]
sekce.
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
Nastavil jsem long_query_time
na nízké číslo 1 sekundu. Můžete také zadat menší hodnotu, například 0,5 sekundy. Uložte a zavřete soubor. Restartujte MariaDB, aby se změny projevily.
sudo systemctl restart mariadb
Nyní vám Nginx Amplify může ukázat pomalé dotazy v grafech.
Jak monitorovat PHP-FPM
Plugin PHP-FPM Amplify agent je ve výchozím nastavení povolen, ale abychom mohli shromažďovat metriky, musíme povolit stav PHP-FPM. Upravte konfigurační soubor fondu PHP-FPM.
sudo nano /etc/php-fpm.d/www.conf
Najděte následující řádek a odeberte středník, abyste aktivovali stav PHP-FPM.
;pm.status_path = /status
Pomalý protokol PHP je ve výchozím nastavení povolen, jak ukazuje následující řádek.
slowlog = /var/log/php-fpm/www-slow.log
Pak najděte následující řádek.
;request_slowlog_timeout = 0
Odstraňte středník a nastavte sekundy časového limitu jako 1s.
request_slowlog_timeout = 1s
Uložte a zavřete soubor. Vytvořte adresář pro protokoly PHP-FPM.
sudo mkdir -p /var/log/php-fpm/
Restartujte PHP-FPM, aby se změny projevily.
sudo systemctl restart php-fpm
Nyní agent Amplify začne shromažďovat metriky PHP-FPM včetně protokolu pomalých požadavků.
Stránka Amplify Overview
Na stránce přehledu můžete vidět celkové skóre stavu aplikace a 5 klíčových metrik pro váš systém.
- Celkový počet požadavků
- Chyby HTTP 5xx
- Čas požadavku (Chcete-li zobrazit tuto metriku, musíte vytvořit vlastní formát protokolu, jak bylo popsáno výše.)
- Kolik šířky pásma využívá Nginx
- Využití CPU
Skóre stavu aplikace je ovlivněno počtem chyb HTTP 5xx. Pokud nejsou žádné chyby HTTP 5xx, bude skóre 100 %.
Grafy
Na stránce Grafy můžete vidět předdefinované metriky systému, Nginx, MariaDB/MySQL a PHP-FPM.
Nginx Amplify Dashboards
Ovládací panely Amplify umožňují vytvářet vlastní grafy a tabulky a seskupovat je na jednu stránku. Můžete například sestavit všechny grafy související s výkonem na jedné stránce nebo možná budete chtít zobrazit všechny metriky pro konkrétní adresu URL.
Pokud jste nakonfigurovali mezipaměť Nginx FastCGI, můžete také na řídicím panelu vytvořit grafy poměru zásahů mezipaměti Nginx a vypršení platnosti mezipaměti.
Analyzátor
Jedním z užitečných nástrojů v analyzátoru je statická analýza. Amplify může analyzovat váš konfigurační soubor Nginx a dávat doporučení týkající se výkonu, zabezpečení a spolehlivosti. Můžete jej použít k identifikaci chyb a vylepšení konfigurace.
Jak můžete vidět, pro můj server Nginx je 5 varování, takže kliknu na odkaz Otevřít, abych zjistil, jak upravit své konfigurace Nginx.
Po provedení úprav počkejte několik minut a varování zmizí.
Upozornění
Ve výchozím nastavení, pokud agent Amplify přestane fungovat, bude na vaši e-mailovou adresu odesláno upozornění. Na stránce upozornění můžete nastavit různá upozornění pro váš server. Mohu například říct Amplify, aby mi poslala e-mail, pokud doba odezvy upstream za poslední 2 minuty přesahuje 1 sekundu.
Pokud vašemu serveru dojde RAM, může to zabít proces MySQL/MariaDB. Můžete vytvořit pravidlo výstrahy pro sledování dostupnosti MySQL/MariaDB, jak je uvedeno níže. Pokud je doba provozuschopnosti nižší než 120 sekund za poslední 2 minuty, zašlete e-mailové upozornění.
Agent Amplify přestane fungovat
Často jsem zjistil, že agent Amplify z neznámého důvodu přestává odesílat metriky výkonu. Abych tento problém vyřešil, vytvořím úlohu Cron pro restart Amplify-agenta jednou denně.
sudo crontab -e
Přidejte následující řádek do souboru crontab.
@daily systemctl restart amplify-agent
Uložte a zavřete soubor.