Nginx Amplify 是一種免費、靈活且強大的分析 Nginx 和 Nginx Plus Web 服務器的負載和性能的方法。易於安裝和使用。 Nginx Amplify 還附帶 MySQL/MariaDB、PHP-FPM 插件,因此您可以監控完整的 LEMP 堆棧應用程序。 (LEMP 代表 Linux、Nginx、MySQL/MariaDB、PHP。)

Nginx Amplify 由 Nginx, Inc 開發,該公司是 Nginx Web 服務器背後的公司。這是一個基於 SaaS 的解決方案。在您的服務器上安裝 Nginx Amplify 代理後,將收集指標並將其發送到 SaaS 服務。 Nginx Amplify Proxy 是開源且輕量級的。我們收集了許多指標,包括:

  • 系統指標(CPU、RAM 利用率、網絡流量、磁盤利用率、磁盤 I/O、磁盤延遲等)
  • Nginx 指標(連接、請求、HTTP 狀態、響應時間、流量等)
  • MySQL/MariaDB 指標(連接、選擇查詢、插入查詢、更新查詢、慢查詢等)
  • PHP-FPM 指標(連接、連接隊列、慢請求等)

你也可以 Nginx Amplify

  • 使用靜態分析器來改進你的 Nginx 配置。
  • 提醒您異常行為

在 CentOS 8/RHEL8 Linux 服務器上安裝 Nginx Amplify

Nginx Amplify 代理是開源的,您可以使用我們的安裝腳本在以下 Linux 發行版上安裝 Nginx Amplify:

  • Debian 9、Debian 10、
  • Ubuntu 16.04、Ubuntu 18.04
  • CentOS/RHEL6、CentOS/RHEL7、CentOS/RHEL8

首先在 https://amplify.nginx.com 註冊一個賬號

請檢查您的電子郵件地址。接下來,您需要在 Linux 服務器上安裝 Nginx Amplify Agent。 SSH 進入服務器並以 root 身份登錄。 Nginx Amplify 網站正確提供了安裝 Nginx Amplify 所需的命令,只需將這些命令複製到您的服務器並運行它們即可。

請注意,這些命令必須以 root 身份運行。

Nginx Amplify 需要 Python2。從默認的 CentOS 存儲庫安裝。

sudo dnf install python2

下載安裝腳本。

安裝-nginx-amplify-centos-8

然後運行安裝腳本。 (每個 Amplify 帳戶都有一個唯一的 API 密鑰。)

nginx 縮放 centos 8 rhel 8

安裝後,代理會自動啟動。您可以通過以下方式檢查狀態:

systemctl status amplify-agent

示例輸出:

 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

提示:如果上述命令沒有立即退出,請按 Q 重新控制終端。

要在啟動時啟用自動啟動,請運行

sudo systemctl enable amplify-agent

在 Nginx 中配置 Stub_status

Amplify Agent 已準備好收集系統指標。 要收集 Nginx 指標,您需要配置 Nginx stub_status。創建一個配置文件。

sudo nano /etc/nginx/conf.d/stub_status.conf

存在 http {...} 環境。

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;
     }
}

保存並關閉文件。然後重新加載 Nginx 以使更改生效。

sudo systemctl reload nginx

現在 Amplify Agent 可以開始收集 Nginx 指標了。

nginx 放大上游響應時間

創建自定義 Nginx 日誌格式

Nginx Amplify 代理還可以從 Nginx 日誌文件中收集信息。但是,默認日誌格式提供的信息有限。如果您真的關心應用程序的性能,您應該創建自定義日誌格式來顯示請求時間、上游響應時間、緩存命中等。

打開 nginx.conf 文檔。

sudo nano /etc/nginx/nginx.conf

存在 http {...} 上下文,以上 include 命令。在這裡,我們正在創建一個自定義的 Nginx 日誌格式。 apm 包含有關 request_time、upstream_response_time、upstream_connect_time、upstream_header_time(應用程序性能監控)的信息。這些都以秒和毫秒為單位。

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';

保存並關閉文件。接下來,打開 Nginx 虛擬主機配置文件。例如,

sudo nano /etc/nginx/conf.d/linuxbabe.com.conf

裡面 server {...} 在上下文中,添加以下兩行以啟用訪問和錯誤日誌:訪問日誌正在使用中 apm 格式和錯誤日誌的使用 warn 日誌級別。

access_log /var/log/nginx/linuxbabe.com.access.log apm;
error_log /var/log/nginx/linuxbabe.com.error.log warn;

保存並關閉文件。然後重新加載 Nginx。

sudo systemctl reload nginx

現在,您可以在 Amplify 圖表中查看上游響應時間和其他與性能相關的指標。良好的上游響應時間小於 0.5 秒。否則,您的訪問者會發現您的網站運行緩慢。如果您可以將您的服務器調整為小於 0.2 秒的上游響應時間,您的網站將非常活躍。

nginx Zoom 性能監控

如果 Amplify 代理未報告 Nginx 指標,請確保 Amplify 代理以與 Nginx 工作進程相同的用戶身份運行。 放大代理日誌 (/var/log/amplify-agent/agent.log)。

如何從 Nginx 訪問日誌中排除我的 IP 地址

活動會影響 Nginx 指標。您可以通過從訪問日誌中排除您的 IP 地址來避免這種情況。首先,添加行 http Nginx 配置文件的上下文。 將 12.34.56.78 替換為您的 IP 地址。 如果 HTTP 請求來自我的 IP 地址,Nginx 將設置 $log_ip 可變為 0.

map $remote_addr $log_ip {
    "12.34.56.78" 0;
    default 1;
}

改成 access_log 以下是步驟:

access_log /var/log/nginx/linuxbabe.com.access.log apm if=$log_ip;

保存並關閉文件。然後將文本發送到 nginx 配置以重新加載它。

sudo nginx -t
sudo systemctl reload nginx

如何監控 MariaDB/MySQL 數據庫服務器

首先,我們需要在 MariaDB/MySQL 中創建一個用戶來收集指標。 登錄 MariaDB/MySQL 監視器。

mysql -u root -p

為 Amplify Proxy 創建一個新用戶。交換 your_password 使用您選擇的密碼。 (我們建議選擇不同於 MariaDB/MySQL 根密碼的密碼。)

create user 'amplify-agent'@'localhost' identified by 'your_password';

終止 MariaDB/MySQL 服務器。

exit;

接下來,我們需要在 Amplify 配置文件中啟用 Amplify MariaDB/MySQL 插件。

sudo nano /etc/amplify-agent/agent.conf

裡面 [extensions] 在該部分中,您可以看到默認情況下禁用了 mysql 插件。

[extensions]
phpfpm = True
mysql = False

改變 False 到達 True 激活這個插件。

[extensions]
phpfpm = True
mysql = True

下一個 [mysql] 在該部分中,找到以下行:

unix_socket = /var/run/mysqld/mysqld.sock
password = amplify-agent

CentOS 上的 MariaDB 包監視器 /var/lib/mysql/mysql.sock 這是一個 Unix 套接字,所以更改值 unix_socket 到達

unix_socket = /var/lib/mysql/mysql.sock

然後用你設置的密碼替換默認密碼 amplify-agent 用戶。保存並關閉文件。然後重新啟動 Amplify 代理以使更改生效。

sudo systemctl restart amplify-agent

Amplify 代理現在將開始收集 MariaDB/MySQL 指標。 (您可能需要等待幾分鐘。)

nginx zoom mariadb 性能監控

如何為 MariaDB 啟用慢查詢日誌記錄

慢查詢日誌可以顯示哪些查詢需要很長時間才能返迴響應。這是優化 MariaDB 性能的重要工具。 要啟用 MariaDB 慢查詢日誌記錄,請編輯服務器配置文件。

sudo nano /etc/my.cnf.d/mariadb-server.cnf

存在 [mysqld] 部門。

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

設置 long_query_time 到 1 秒的低計數。 您還可以指定較小的值,例如 0.5 秒。保存並關閉文件。重新啟動 MariaDB 以使更改生效。

sudo systemctl restart mariadb

Nginx Amplify 現在可以在圖表中顯示慢查詢。

Nginx增長mariadb慢查詢日誌

如何監控 PHP-FPM

Amplify Proxy PHP-FPM 插件默認啟用,但必須啟用 PHP-FPM 狀態才能收集指標。 編輯 PHP-FPM 池配置文件。

sudo nano /etc/php-fpm.d/www.conf

找到以下行並刪除分號以啟用 PHP-FPM 狀態。

;pm.status_path = /status

默認情況下啟用 PHP 慢日誌記錄,如下行所示。

slowlog = /var/log/php-fpm/www-slow.log

然後找到這一行:

;request_slowlog_timeout = 0

刪除分號並將超時秒數設置為 1 秒。

request_slowlog_timeout = 1s

保存並關閉文件。 為 PHP-FPM 日誌創建一個目錄。

sudo mkdir -p /var/log/php-fpm/

重新啟動 PHP-FPM 以使更改生效。

sudo systemctl restart php-fpm

Amplify 代理現在將開始收集 PHP-FPM 指標,包括慢速請求日誌。

nginx zoom php-fpm 監控

展開概覽頁面

在概覽頁面上,您可以查看系統的整體應用程序健康評分和五個關鍵指標。

  • 請求總數
  • HTTP 5xx 錯誤
  • 請求時間(要查看此指標,您必須創建如上所述的自定義日誌格式。)
  • Nginx 使用的帶寬
  • CPU 利用率

Nginx-amplify-overview-page-request-time

應用程序運行狀況評分受 HTTP 5xx 錯誤數的影響。 如果沒有 HTTP 5xx 錯誤,則得分為 100%。

圖表

[グラフ]在頁面上,您可以看到預定義的系統、Nginx、MariaDB/MySQL 和 PHP-FPM 指標。

nginx 縮放

Nginx 縮放儀表板

Amplify Dashboard 允許您創建自定義圖形和圖表並將它們分組在一個頁面上。例如,您可以在一個頁面上組合所有與性能相關的圖表,或查看特定 URL 的所有指標。

儀表板上的 nginx 縮放

如果您配置了 Nginx FastCGI 緩存,您還可以在儀表板中繪製 Nginx 緩存命中率和緩存過期時間。

分析儀

分析器的有用工具之一是靜態分析。 Amplify 可以解析 Nginx 配置文件並提出性能、安全性和可靠性建議。您可以使用它來識別錯誤並改進您的配置。

nginx放大靜態分析

如您所見,我的 Nginx 服務器有 5 個警告。是因為,[開く]我點擊鏈接查看如何調整 Nginx 配置。

nginx縮放配置分析

調整後,等待幾分鐘讓警告消失。

警報

默認情況下,當 Amplify 代理停止工作時,會向您的電子郵件地址發送警報。[アラート]該頁面允許您為服務器配置各種警報。例如,如果您的上游響應時間在過去 2 分鐘內超過 1 秒,您可以告訴 Amplify 向您發送電子郵件。

Nginx 縮放警報

如果服務器內存不足,可以殺死 MySQL/MariaDB 進程。您可以創建一個警報規則來監控 MySQL/MariaDB 的正常運行時間,如下所示。如果最後 2 分鐘的正常運行時間少於 120 秒,請發送電子郵件通知。

增加 nginx mysql.global.uptime

放大劑停止工作

Amplify 代理經常因未知原因停止發送性能指標。為了解決這個問題,我創建了一個每天重啟一次 Amplify-agent 的 Cron 作業。

sudo crontab -e

將以下行添加到您的 crontab 文件中:

@daily systemctl restart amplify-agent

保存並關閉文件。

包起來

我希望這篇文章可以幫助您安裝和使用 Nginx Amplify 來監控您的 Nginx 或 LEMP 堆棧應用程序在 CentOS 8/RHEL 8 上的性能。與往常一樣,如果您發現本文對您有幫助,請註冊我們的免費時事通訊以獲取提示和技巧。照顧好自己?