本文介绍在Ubuntu 18.04、Ubuntu 16.04上安装及使用Nginx Amplify进行LEMP Stack性能监控。Nginx Amplify是一种免费,灵活且功能强大的工具,用于分析Nginx和Nginx Plus Web服务器的负载和性能,它易于设置和使用,Nginx Amplify还自带MySQL/MariaDB、PHP-FPM插件,因此你可以监控完整的LEMP Stack应用程序。LEMP代表Linux、Nginx、MySQL/MariaDB、PHP,安装请参考在Ubuntu 18.04 Server中安装LEMP的方法[Nginx、MariaDB、PHP7.2]一文。
在Ubuntu 18.04/16.04 Linux服务器上安装Nginx Amplify Nginx Amplify代理是开源的,你可以使用安装脚本在Debian 8、Debian 9、Ubuntu 16.04、Ubuntu 18.04、RHEL/CentOS 6,RHEL/CentOS 7上安装Nginx Amplify。 首先,在https://amplify.nginx.com注册一个帐户:
确认你的邮件地址,接下来,你需要在Linux服务器上安装Nginx Amplify Agent,SSH进入你的服务器并以root身份登录(在Ubuntu 18.04系统中启用SSH登录的方法),Nginx Amplify网站非常适合提供运行安装Nginx Amplify所需的命令,因此只需在服务器上复制并运行这些命令即可。 请注意,你需要以root身份运行这些命令:
下载安装脚本:
运行安装脚本(每个Amplify帐户都有一个唯一的API密钥):
安装完成后,代理将自动启动,可以通过以下方式检查其状态: systemctl status 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 {...}上下文中添加以下行,这里我们创建一个名为apm(应用程序性能监视)的自定义Nginx日志格式,其中包含有关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_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 请定义自己的名称,比如云网牛站使用:sudo nano /etc/nginx/conf.d/ywnz.com.conf。 你的Nginx虚拟主机配置文件可能位于/etc/nginx/sites-enabled/目录下,我喜欢使用/etc/nginx/conf.d/目录。 在服务器{...}上下文中,添加以下两行以启用访问日志和错误日志,访问日志使用apm格式,错误日志使用警告日志级别: 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图中看到上游响应时间和其他与性能相关的指标:
监控MariaDB/MySQL数据库 首先,我们需要在MariaDB/MySQL中创建用户来收集指标,登录MariaDB/MySQL监视器: sudo mysql -u root 为Amplify代理创建一个新用户,将your_password替换为您的首选密码(建议选择与MariaDB/MySQL root密码不同的密码): create user 'amplify-agent'@'localhost' identified by 'your_password'; 退出MariaDB/MySQL服务器: exit; 接下来,我们需要在Amplify configuariton文件中启用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用户设置的密码,保存并关闭文件,然后重新启动Amplify代理以使更改生效: 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 删除分号并将超时秒设置为1秒: 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文件中再次配置它。 参考:在Ubuntu 18.04或CentOS 7系统上安装PHP 7.3。
放大概述页面、图表、Nginx放大仪表板、分析仪、警报 在概述页面上,你可以查看整个应用程序运行状况评分和系统的5个关键指标:总请求数、HTTP 5xx错误、请求时间(需要创建自定义日志格式,如前所述,以显示此度量标准)、Nginx使用多少带宽、CPU使用率:
应用程序运行状况评分受HTTP 5xx错误数量的影响,如果没有HTTP 5xx错误,则分数将为100%。 如果单击服务器图标,则可以看到系统上使用了多少CPU和RAM以及Nginx使用了多少:
同时在Graphs页面中,你可以看到预定义的系统、Nginx、MariaDB/MySQL和PHP-FPM指标,以下为图表截图:
通过Amplify仪表板,你可以创建自定义图形和图表,并将它们分组到一个页面上,例如,你可以在一个页面上组合所有与性能相关的图形,或者你可能希望显示特定URL的所有度量标准,以下为Nginx放大仪表板截图:
分析仪中有用的工具之一是静态分析,Amplify可以解析你的Nginx配置文件,并提出性能,安全性和可靠性建议,可以使用它来识别错误并改进配置:
如上所见,我的Nginx服务器有5个警告,因此我单击Open链接以查看如何调整我的Nginx配置:
进行调整后,等待几分钟,警告就会消失。 默认情况下,如果Amplify代理停止工作,则会向你的电子邮件地址发送警报,在警报页面中,你可以为服务器设置各种警报,例如,如果过去2分钟的上游响应时间超过1秒,我可以告诉Amplify给我发电子邮件:
至此,安装和使用Nginx Amplify来监控Ubuntu 18.04/16.04上Nginx或LEMP stack应用程序的性能就讲完了。
相关主题 |