在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:

  • Debian 9,Debian 10,
  • Ubuntu 16.04,Ubuntu 18.04
  • CentOS / RHEL 6,CentOS / RHEL 7,CentOS / RHEL 8

首先,在https://amplify.nginx.com上注册一个帐户

确认你的邮件地址。 接下来,您将需要在Linux服务器上安装Nginx Amplify代理。 SSH进入服务器并以root用户身份登录。 Nginx Amplify网站非常适合提供安装Nginx Amplify所需的命令,因此只需在服务器上复制并运行这些命令即可。

请注意,您需要以超级用户身份运行这些命令。

nginx放大安装脚本

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代理可以立即收集系统指标。 为了收集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日志格式

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秒,则您的网站将非常灵活。

nginx增强性能监控

如果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

更改 FalseTrue 启用此插件。

[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指标。 (您可能需要等待几分钟。)

nginx增强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代理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指标。

nginx放大php-fpm监控

放大概述页面

在概述页面上,您可以查看系统的总体应用程序运行状况得分和5个关键指标。

  • 要求总数
  • HTTP 5xx错误
  • 请求时间(您需要按照前面所述创建自定义日志格式,以显示该指标。)
  • Nginx使用多少带宽
  • CPU使用率

Nginx放大概述页面请求时间

应用程序运行状况得分受HTTP 5xx错误数量的影响。 如果没有HTTP 5xx错误,则分数将为100%。

图表

在“图形”页面中,您可以看到预定义的系统,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

在crontab文件中添加以下行。

@daily systemctl restart amplify-agent

保存并关闭文件。

包起来

我希望本文能帮助您安装和使用Nginx Amplify来监视CentOS 8 / RHEL 8上的Nginx或LEMP堆栈应用程序的性能。和往常一样,如果您发现这篇文章很有用,请订阅我们的免费时事通讯以获取更多提示和技巧。 保重🙂

Sidebar