如何监视NGINX服务器

时间:2020-02-23 14:41:35  来源:igfitidea点击:

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虚拟主机文件上启用状态模块。
通过添加allowdeny指令,确保只有您可以访问此页面。

...
...
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_logerror_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日志并在发现某些异常时采取纠正措施。