在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堆栈应用程序的性能。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 保重🙂