在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所需的命令,因此只需在服務器上複製並運行這些命令即可。
請注意,您需要以超級用戶身份運行這些命令。
下載安裝腳本。
運行安裝腳本。 (每個Amplify帳戶都有一個唯一的API密鑰。)
安裝完成後,代理將自動啟動。 您可以通過以下方式查看其狀態:
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 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秒,則您的網站將非常靈活。
如果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
更改 False
至 True
啟用此插件。
[extensions] phpfpm = True mysql = True
然後在 [mysql] 部分,找到以下行。
password = amplify-agent
將默認密碼替換為您為放大代理用戶設置的密碼。 保存並關閉文件。 然後重新啟動Amplify agent,以使更改生效。
sudo systemctl restart amplify-agent
現在,Amplify代理開始收集MariaDB / MySQL指標。
如何啟用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可以在圖中顯示緩慢的查詢。
如何監視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指標。
請注意,如果您安裝新版本的PHP-FPM,例如PHP7.3-FPM,則需要在 /etc/php/7.3/fpm/pool.d/www.conf
文件。
放大概述頁面
在概述頁面上,您可以查看系統的總體應用程序運行狀況得分和5個關鍵指標。
- 要求總數
- HTTP 5xx錯誤
- 請求時間(您需要按照前面所述創建自定義日誌格式,以顯示該指標。)
- Nginx使用多少帶寬
- CPU使用率
應用程序運行狀況得分受HTTP 5xx錯誤數量的影響。 如果沒有HTTP 5xx錯誤,則得分將為100%。
如果單擊服務器圖標,則可以查看系統上已使用了多少CPU和RAM,以及Nginx使用了多少。
圖表
在“圖形”頁面中,您可以看到預定義的系統,Nginx,MariaDB / MySQL和PHP-FPM指標。
Nginx放大儀錶板
放大儀錶板使您可以創建自定義圖形和圖表並將它們分組在一頁上。 例如,您可以在一頁上組合所有與性能相關的圖形,或者您可能想顯示特定URL的所有指標。
如果已配置Nginx FastCGI緩存,則還可以在儀錶板中為Nginx緩存命中率和緩存過期創建圖表。
分析儀
分析儀中有用的工具之一是靜態分析。 Amplify可以解析您的Nginx配置文件並提出性能,安全性和可靠性建議。 您可以使用它來識別錯誤並改進配置。
如您所見,我的Nginx服務器有5條警告,因此我單擊“打開”鏈接以查看如何調整我的Nginx配置。
進行調整後,請等待幾分鐘,警告將消失。
快訊
默認情況下,如果Amplify代理停止工作,則會向您的電子郵件地址發送警報。 在警報頁面中,可以為服務器設置各種警報。 例如,如果過去2分鐘內上游響應時間超過1秒,我可以告訴Amplify給我發送電子郵件。
放大代理停止工作
通常,我發現Amplify代理由於未知原因而停止發送性能指標。 我創建了一個Cron作業來每天重啟Amplify-agent來解決此問題。
sudo crontab -e
添加以下行。
@daily systemctl restart amplify-agent
結論
我希望本文能幫助您在Ubuntu 18.04或16.04上安裝和使用Nginx Amplify監視Nginx或LEMP堆棧應用程序的性能。 與往常一樣,如果您發現這篇文章很有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。 保重🙂