在CentOS 8 / RHEL 8上安装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配置。
- 提醒您异常行为
在CentOS 8 / RHEL8 Linux服务器上安装Nginx Amplify
Nginx Amplify代理是开源的,有一个安装脚本可用于在以下Linux发行版上安装Nginx Amplify:
首先,在https://amplify.nginx.com上注册一个帐户
确认你的邮件地址。 接下来,您将需要在Linux服务器上安装Nginx Amplify代理。 SSH进入服务器并以root用户身份登录。 Nginx Amplify网站非常适合提供安装Nginx Amplify所需的命令,因此只需在服务器上复制并运行这些命令即可。
请注意,您需要以超级用户身份运行这些命令。
Nginx Amplify需要Python2。 从默认的CentOS存储库安装它。
sudo dnf install python2
下载安装脚本。
然后运行安装脚本。 (每个Amplify帐户都有一个唯一的API密钥。)
安装完成后,代理将自动启动。 您可以通过以下方式查看其状态:
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代理可以立即收集系统指标。 为了收集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代理可以开始收集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
现在,我可以在“放大”图中看到上游响应时间和其他与性能相关的指标。 良好的上游响应时间应低于0.5秒。 否则您的访客会觉得您的网站很慢。 如果您可以调整服务器以使上游响应时间低于0.2秒,则您的网站将非常灵活。
如果Amplify代理未报告Nginx指标,请检查Amplify代理是否以与Nginx工作进程相同的用户身份运行。 您也可以检查Amplify Agent日志(/var/log/amplify-agent/agent.log
)。
如何在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监视器。
mysql -u root -p
为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]
部分,找到以下行。
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 agent,以使更改生效。
sudo systemctl restart amplify-agent
现在,Amplify代理开始收集MariaDB / MySQL指标。 (您可能需要等待几分钟。)
如何启用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可以在图中显示缓慢的查询。
如何监视PHP-FPM
默认情况下,Amplify代理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
删除分号,并将超时秒数设置为1s。
request_slowlog_timeout = 1s
保存并关闭文件。 为PHP-FPM日志创建目录。
sudo mkdir -p /var/log/php-fpm/
重新启动PHP-FPM,以使更改生效。
sudo systemctl restart php-fpm
现在,Amplify代理开始收集包括缓慢请求日志在内的PHP-FPM指标。
放大概述页面
在概述页面上,您可以查看系统的总体应用程序运行状况得分和5个关键指标。
- 要求总数
- HTTP 5xx错误
- 请求时间(您需要按照前面所述创建自定义日志格式,以显示该指标。)
- Nginx使用多少带宽
- CPU使用率
应用程序运行状况得分受HTTP 5xx错误数量的影响。 如果没有HTTP 5xx错误,则分数将为100%。
图表
在“图形”页面中,您可以看到预定义的系统,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
在crontab文件中添加以下行。
@daily systemctl restart amplify-agent
保存并关闭文件。
包起来
我希望本文能帮助您安装和使用Nginx Amplify来监视CentOS 8 / RHEL 8上的Nginx或LEMP堆栈应用程序的性能。和往常一样,如果您发现这篇文章很有用,请订阅我们的免费时事通讯以获取更多提示和技巧。 保重🙂