帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 在CentOS 8服务器上安装Nginx Amplify监控LEMP性能

在CentOS 8服务器上安装Nginx Amplify监控LEMP性能

发布时间:2020年06月13日 10:33:53    来源: A5互联

Nginx Amplify是一个免费的、灵活的、强大的方式来分析Nginx和Nginx Plus网站服务器的负载和性能。它很容易设置和使用。Nginx Amplify还带有MySQL/MariaDB、PHP-FPM插件,所以你可以监控一个完整的LEMP栈应用。LEMP代表Linux、Nginx、MySQL/MariaDB、PHP)。

Nginx Amplify是由Nginx公司开发的,该公司是Nginx Web服务器背后的公司。它是一个基于SaaS的解决方案。你在服务器上安装Nginx Amplify Agent,它将收集并发送指标到SaaS服务。Nginx Amplify Agent是开源和轻量级的。它收集了许多指标,包括

①系统指标(CPU、RAM使用量、网络流量、磁盘使用量、磁盘I/O、磁盘延迟等)。

②Nginx指标(连接、请求、HTTP状态、响应时间、流量等)。

③MySQL/MariaDB指标(连接、选择查询、插入查询、更新查询、慢速查询等)。

④PHP-FPM指标(连接数、连接队列、慢速请求等)。

Nginx Amplify还可以:

①使用静态分析器帮助您改进Nginx配置。

②提醒异常行为

一、在CentOS 8/RHEL8 Linux服务器上安装Nginx Amplify

Nginx Amplify Agent是开源的,你可以使用安装脚本在以下Linux发行版上安装Nginx Amplify:

Debian 9,Debian 10。

Ubuntu 16.04, Ubuntu 18.04

CentOS /RHEL 6, CentOS/RHEL 7, CentOS/RHEL 8。

首先,在amplify.nginx.com注册一个账号。

验证你的电子邮件地址。接下来,你需要在Linux服务器上安装Nginx Amplify Agent。通过SSH进入服务器,以root身份登录。Nginx Amplify官网给出了安装Nginx Amplify所需要运行的命令,所以只要复制并在服务器上运行这些命令即可。

注意,你需要以root身份运行这些命令。

Nginx Amplify需要Python2。从默认的CentOS存储库安装它。

sudo dnf install python2

下载安装脚本。

然后运行安装脚本。(每个Amplify帐户都有一个唯一的API密钥。)

安装完成后,Agent将自动启动。您可以通过以下方式查看其状态:

systemctl status amplify-agent

样本输出:

提示:如果上述命令没有立即退出,请按Q以获得对终端的控制权。

要在引导时启用自动启动,请运行

sudo systemctl enable amplify-agent

二、在Nginx中配置Stub_status

Amplify Agent可以立即收集系统指标。为了收集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 Agent可以开始收集Nginx指标。

三、创建自定义Nginx日志格式

Nginx Amplify Agent还可以从Nginx日志文件中收集信息。但是,默认日志格式为我们提供了有限的信息。如果您确实关心应用程序的性能,则应创建一个自定义日志格式以显示请求时间,上游响应时间,缓存命中率等。

打开nginx.conf文件。

sudo nano /etc/nginx/nginx.conf

http {...}在include指令上方的上下文中添加以下行。在这里,我们正在创建一种称为apm(应用程序性能监视)的自定义Nginx日志格式,其中包括有关request_time,streaming_response_time,streaming_connect_time和streaming_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

现在我可以在Amplify图中看到上游响应时间和其他性能相关指标。良好的上游响应时间小于0.5秒。否则你的访客会觉得你的网站很慢。如果你能调整你的服务器,使上游响应时间低于0.2秒,你的网站将非常快。

如果Amplify Agent未报告Nginx指标,请检查Amplify Agent是否以与Nginx工作进程相同的用户身份运行。您也可以检查Amplify Agent日志(/var/log/amplify-agent/agent.log)。

四、如何在Nginx访问日志中排除您自己的IP地址

有时,您的活动可能会使Nginx指标产生偏差。您可以在访问日志中排除自己的IP地址来避免这种情况。首先,在httpNginx配置文件的上下文中添加以下行。用您自己的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 Agent创建一个新用户。替换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.sockUnix套接字上侦听,因此将的值更改unix_socket为

unix_socket = /var/lib/mysql/mysql.sock

然后将默认密码替换为您为amplify-agent用户设置的密码。保存并关闭文件。然后重新启动Amplify agent,以使更改生效。

sudo systemctl restart amplify-agent

现在,Amplify Agent开始收集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 AgentPHP-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指标,包括慢请求日志。

八、Amplify概述页面

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

请求总数

HTTP 5xx错误

请求时间(您需要按照前面所述创建自定义日志格式,以显示该指标。)

Nginx使用多少带宽

CPU使用率

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

九、图表

在“图形”页面中,您可以查看预定义的系统,Nginx,MariaDB / MySQL和PHP-FPM指标。

十、Nginx Amplify仪表盘

Amplify仪表盘允许您创建自定义的图形和图表,并将它们组合在一个页面上。例如,您可以在一页上组合所有与性能相关的图形,或者您可能想显示特定URL的所有指标。

如果已配置Nginx FastCGI缓存,则还可以在仪表板上为Nginx缓存命中率和缓存过期创建图表。

十一、分析器

分析器中有用的工具之一是静态分析。Amplify可以解析你的Nginx配置文件,并提出性能、安全和可靠性建议。你可以用它来识别错误并改进配置。

如您所见,我的Nginx服务器有5条警告,因此我单击“打开”链接以查看如何调整我的Nginx配置。

进行调整后,请等待几分钟,警告将消失。

十二、警报提醒

默认情况下,如果Amplify Agent停止工作,则会将警报发送到您的电子邮件地址。在警报页面中,可以为服务器设置各种警报。例如,如果过去2分钟内上游响应时间超过1秒,我可以让Amplify给我发送电子邮件。

十三、Amplify Agent停止工作

我发现Amplify Agent有时候因为未知原因停止发送性能指标。我创建了一个Cron定时作业,每天重启一次Amplify-agent来解决这个问题。

sudo crontab -e

在crontab文件中添加以下行。

@daily systemctl restart amplify-agent

保存并关闭文件。

总结

我希望本文能帮助您安装和使用Nginx Amplify来监视CentOS 8 / RHEL 8上的Nginx或LEMP堆栈应用程序的性能。