在Ubuntu 18.04 / 16.04上使用Nginx Amplify進行LEMP堆棧性能監控

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

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

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

Nginx Amplify也可以

  • 使用靜態分析器可以幫助您改善Nginx配置。
  • 提醒您異常行為

在Ubuntu 18.04 / 16.04 Linux服務器上安裝Nginx Amplify

Nginx Amplify代理是開源的,有一個安裝腳本可用於在以下Linux發行版上安裝Nginx Amplify:

首先,在https://amplify.nginx.com上註冊一個帳戶

確認你的郵件地址。 接下來,您將需要在Linux服務器上安裝Nginx Amplify代理。 SSH進入服務器並以root用戶身份登錄。 Nginx Amplify網站非常適合提供安裝Nginx Amplify所需的命令,因此只需在服務器上複製並運行這些命令即可。

請注意,您需要以超級用戶身份運行這些命令。

nginx放大安裝腳本

下載安裝腳本。

安裝nginx放大

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

nginx放大Ubuntu 18.04

安裝完成後,代理將自動啟動。 您可以通過以下方式查看其狀態:

systemctl status amplify-agent

輸出:

● amplify-agent.service - LSB: Stop/start nginx-amplify-agent
   Loaded: loaded (/etc/init.d/amplify-agent; generated)
   Active: active (running) since Wed 2019-02-27 03:37:05 UTC; 1min 17s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 9306 ExecStop=/etc/init.d/amplify-agent stop (code=exited, status=0/SU
  Process: 9341 ExecStart=/etc/init.d/amplify-agent start (code=exited, status=0/
    Tasks: 3 (limit: 2361)
   CGroup: /system.slice/amplify-agent.service
           └─9407 amplify-agent

提示:運行上述命令後,按Q鍵即可獲得對終端的控制權。

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

sudo systemctl enable amplify-agent

在Nginx中配置Stub_status

Amplify代理可以立即收集系統指標。 為了收集Nginx指標,您需要配置Nginx stub_status。 打開 nginx.conf 文件。

sudo nano /etc/nginx/nginx.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代理可以開始收集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

您的Nginx虛擬主機配置文件可能位於 /etc/nginx/sites-enabled/ 目錄。 我喜歡用 /etc/nginx/conf.d/ 目錄。

在裡面 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

現在,我可以在“放大”圖中看到上游響應時間和其他與性能相關的指標。 良好的上游響應時間應低於0.5秒。 否則您的訪客會覺得您的網站很慢。 如果您可以調整服務器以使上游響應時間低於0.2秒,則您的網站將非常靈活。

nginx增強性能監控

如果Amplify代理未報告Nginx指標,請檢查Amplify代理是否以與Nginx工作進程相同的用戶身份運行。 您可能還需要檢查是否有可用的Amplify-agent新版本。

如何在Nginx訪問日誌中排除您自己的IP地址

有時,您的活動可能會使Nginx指標產生偏差。 您可以在訪問日誌中排除自己的IP地址來避免這種情況。 首先,在 http Nginx配置文件的上下文。 用您自己的IP地址替換12.34.56.78。 如果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監視器。

sudo mysql -u root

為Amplify代理創建一個新用戶。 更換 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

更改 FalseTrue 啟用此插件。

[extensions]
phpfpm = True
mysql = True

然後在 [mysql] 部分,找到以下行。

password = amplify-agent

將默認密碼替換為您為放大代理用戶設置的密碼。 保存並關閉文件。 然後重新啟動Amplify agent,以使更改生效。

sudo systemctl restart amplify-agent

現在,Amplify代理開始收集MariaDB / MySQL指標。

nginx增強mariadb性能監控

如何啟用MariaDB慢查詢日誌

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

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

找到以下3行:

#slow_query_log_file = /var/log/mysql/mariadb-slow.log
#long_query_time = 10
#log-queries-not-using-indexes

刪除#符號並更改其值 long_query_time 減少到1秒 (您可以指定一個較小的值,例如0.5。)

slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 1
log-queries-not-using-indexes

另外,添加以下行以啟用慢速查詢日誌。

slow_query_log = 1

保存並關閉文件。 重新啟動MariaDB,以使更改生效。

sudo systemctl restart mariadb

要麼

sudo systemctl restart mysql

現在,Nginx Amplify可以在圖中顯示緩慢的查詢。

nginx放大mariadb慢查詢日誌

如何監視PHP-FPM

默認情況下,Amplify代理PHP-FPM插件處於啟用狀態,但是我們需要啟用PHP-FPM狀態才能收集指標。 編輯PHP-FPM池配置文件。

Ubuntu PHP7.2

sudo nano /etc/php/7.2/fpm/pool.d/www.conf

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

;pm.status_path = /status

啟用PHP慢日誌也是一個好主意,它可以向您顯示哪些請求花費的時間太長。 找到以下行:

;slowlog = log/$pool.log.slow

刪除分號並設置日誌路徑。

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

然後找到以下行。

;request_slowlog_timeout = 0

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

request_slowlog_timeout = 1s

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

sudo mkdir /var/log/php-fpm/

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

sudo systemctl restart php7.2-fpm

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

nginx放大php-fpm監控

請注意,如果您安裝新版本的PHP-FPM,例如PHP7.3-FPM,則需要在 /etc/php/7.3/fpm/pool.d/www.conf 文件。

放大概述頁面

在概述頁面上,您可以查看系統的總體應用程序運行狀況得分和5個關鍵指標。

  • 要求總數
  • HTTP 5xx錯誤
  • 請求時間(您需要按照前面所述創建自定義日誌格式,以顯示該指標。)
  • Nginx使用多少帶寬
  • CPU使用率

Nginx放大概述頁面

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

如果單擊服務器圖標,則可以查看系統上已使用了多少CPU和RAM,以及Nginx使用了多少。

nginx放大ubuntu系統指標

圖表

在“圖形”頁面中,您可以看到預定義的系統,Nginx,MariaDB / MySQL和PHP-FPM指標。

nginx放大圖

Nginx放大儀錶板

放大儀錶板使您可以創建自定義圖形和圖表並將它們分組在一頁上。 例如,您可以在一頁上組合所有與性能相關的圖形,或者您可能想顯示特定URL的所有指標。

nginx放大儀錶板

如果已配置Nginx FastCGI緩存,則還可以在儀錶板中為Nginx緩存命中率和緩存過期創建圖表。

分析儀

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

nginx放大靜態分析

如您所見,我的Nginx服務器有5條警告,因此我單擊“打開”鏈接以查看如何調整我的Nginx配置。

nginx放大配置分析

進行調整後,請等待幾分鐘,警告將消失。

快訊

默認情況下,如果Amplify代理停止工作,則會向您的電子郵件地址發送警報。 在警報頁面中,可以為服務器設置各種警報。 例如,如果過去2分鐘內上游響應時間超過1秒,我可以告訴Amplify給我發送電子郵件。

Nginx放大警報

放大代理停止工作

通常,我發現Amplify代理由於未知原因而停止發送性能指標。 我創建了一個Cron作業來每天重啟Amplify-agent來解決此問題。

sudo crontab -e

添加以下行。

@daily systemctl restart amplify-agent

結論

我希望本文能幫助您在Ubuntu 18.04或16.04上安裝和使用Nginx Amplify監視Nginx或LEMP堆棧應用程序的性能。 與往常一樣,如果您發現這篇文章很有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。 保重🙂

Sidebar