如何监视NGINX服务器
NGINX正在成为越来越流行的HTTP服务器,并已部署在超过4亿个站点中。
如果无人看管,问题可能会不时出现。
因此,必须定期监视NGINX服务器的性能和故障排除的观点。
让我们看一下您可以定期进行的一些最常见,最简单的过程,以有效地监视和排除NGINX服务器的故障。
前提条件
- 按照此处的教程,您已经在服务器中安装了NGINX。
启用NGINX访问和错误日志
在NGINX中启用访问日志以监视实时流量。
为此,请编辑Nginx配置文件并添加以下access_log
指令。
server { ... ... access_log /var/log/nginx/access_log combined; ... ... }
也可能没有足够的信息记录到错误日志中。
在这种情况下,更改" error_log"指令的日志级别以在NGINX配置文件中进行调试。
server { ... ... error_log /var/log/nginx/error_log debug; ... ... }
完成启用访问日志和错误日志的日志级别调试后,重新启动Nginx并尾随日志文件即可实时查看它们。
# systemctl restart nginx # tail -f /var/log/nginx/access_log # tail -f /var/log/nginx/error_log
启用Nginx状态页面
NGINX指标的收集对于有效监控它至关重要。
这些指标可提供有关NGINX服务器活动的宝贵见解,例如每秒请求,响应时间,活动连接等,从而使您能够避免NGINX服务器可能面临的任何可能的问题。
ngx_http_stub_status_module(stub_status)模块通过公开有关NGINX活动的信息来为您完成此任务。
如果您通过源代码编译安装了NGINX,则默认情况下不会编译该模块。
只需使用以下命令来查找NGINX是否已使用stub_status模块构建:
# nginx -V 2>&1 | grep -o with-http_stub_status_module
如果以上命令产生空白输出,那么您需要通过将--with-http_stub_status_module
参数包含到configure
脚本中来从源代码重建NGINX。
现在,通过添加以下位置块,在nginx虚拟主机文件上启用状态模块。
通过添加allow
和deny
指令,确保只有您可以访问此页面。
... ... location /nginx_status { stub_status on; allow 127.0.0.1; deny all; } ... ...
重新加载NGINX以应用新设置:
# systemctl restart nginx
现在要获取状态度量,请使用URLhttps://SERVER_IP/nginx_status
向NGINX服务器进行CURL查询,如下所示的输出确认状态页面已正确配置:
# curl https://127.0.0.1/nginx_status Active connections: 1 server accepts handled requests 549 549 21583 Reading: 0 Writing: 1 Waiting: 0
Nginx状态页面将为您提供有关Nginx健康状况的实时数据,使您可以根据需要调整Nginx配置。
因此,通过监视NGINX指标,您将对nginx服务器中的活动和基本问题都有宝贵的见解。
使用Amplify监控NGINX
NGINX Amplify是用于NGINX和NGINX Plus的出色监视工具。
使用NGINX Amplify可以在可视仪表板中查看系统和NGINX性能指标。
Amplify使您不仅可以监视应用程序的性能,还可以监视NGINX服务器的整体运行状况和状态。
创建扩大账户
要开始使用amplify,请访问NGINX amplify的主页并创建一个帐户。
帐户创建过程成功完成后,将弹出一个屏幕,向您提供Amplify的下载URL以及API密钥。
创建扩大账户
只需在记事本中复制Amplify的安装命令,然后单击"继续"即可。
等待一会儿,同时Amplify连接到远程NGINX实例。
安装放大
返回终端以使用终端中的以下命令在终端中下载并运行安装脚本。
# wget https://github.com/nginxinc/nginx-amplify-agent/blob/master/packages/install.sh # chmod u+x install.sh # API_KEY='fae543a26f7664f84c61846f66d998f7' sh ./install.sh
成功安装放大
就像上面一样,您将获得在服务器中成功安装amplify的确认。
添加stub_status页面
Amplify利用stub_status模块通过HTTP访问NGINX服务器URL。
它通过在NGINX配置文件中查找包含stub_status指令的位置块来完成此操作。
# vi your_nginx_virtual_host.conf server { ... ... location /nginx_status { stub_status; allow 127.0.0.1; deny all; } ... ... }
配置日志记录格式
也可以记录您感兴趣的度量。
为此,请创建一个自定义日志格式,然后将其添加到NGINX配置文件的HTTP部分中。
下一节将使用名称custom_format定义自定义日志格式,该名称可以通过使用access_log
指令指定其名称来在任何NGINX服务器块中使用。
http { ... ... log_format custom_format '$remote_addr - $remote_user [$time_local]"$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" rt=$request_time rt="$upstream_response_time"'; ... ... }
接下来在您的特定NGINX虚拟主机文件中添加access_log
和error_log
指令
# vi your_nginx_virtual_host.conf server { ... ... access_log /var/log/nginx/access.log custom_format; error_log /var/log/nginx/error.log warn; ... ... }
检查配置文件中是否存在语法错误,然后重新启动NGINX。
# nginx -t # systemctl restart nginx
这些指标将立即在放大仪表板中提供。
使用页面顶部的标签查看适合您的指标。
NGINX放大仪表板
使用ngxtop监视NGINX日志
ngxtop是另一个很棒的实用程序,可以解析nginx访问日志并输出有关nginx服务器的一些重要指标。
使用ngxtop命令,您可以查看请求计数的摘要,请求的URI,状态代码的请求数等等。
一旦执行了ngxtop,您会发现它看起来很像top输出,但是带有Nginx相关信息。
要在Ubuntu 18.04中安装ngxtop,您需要事先安装Python PIP。
安装完python pip后,请使用它在服务器中安装ngxtop。
# apt-get install python-pip # pip install ngxtop
键入ngxtop命令以按状态代码查看请求计数,请求的URI和请求数的摘要。
# ngxtop
从此处查找有关ngxtop的更多用法。
使用日志分析服务
最后,您还可以从市场上免费提供的多种选项中选择一种日志分析服务,以分析和监视NGINX日志。
例如,使用syslog-ng或者filebeat,您可以存储NGINX日志并将其转发到任何日志分析服务。
这使您可以创建一个单独的专用实例来处理NGINX日志。
解析和过滤日志后,只需使用日志分析服务创建仪表板或者生成警报。
因此,通过使用任何日志分析服务,可以实时监视NGINX日志并在发现某些异常时采取纠正措施。