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堆栈应用程序的性能。
成都联想服务器代理【公司名称】成都鸿盛广达科技有限公司
【代理级别】成都联想服务器总代理
【销售经理】成都鸿盛广达科技有限公司
【联系方式】座机:028-85952921 手机:13981931555
【公司地址】成都市武侯区人民南路四段一号时代数码广场A座17楼