教程:配置NGINX使用情况报告

NGINX | 2024年5月01日

NGINX Plus R31提供了一种更简单、更高效的NGINX Plus使用情况报告方式。原生集成的使用情况报告功能无需单独部署NGINX Agent,让F5灵活消费计划(FCP)客户以及采用定期订阅的非FCP客户都能顺畅、轻松地完成报告。此功能直接内置于NGINX Plus中,实例可以定期向NGINX Instance Manager传送必要的使用情况信息,且不会影响性能。该功能适用于虚拟机和NGINX Ingress Controller,但本博客重点介绍NGINX Plus实例。有关如何向NGINX Instance Manager报告NGINX Ingress Controller使用情况的指南,请参阅此处。

通过简化设置、提供自定义选项和备用方法,我们致力于帮助客户高效、灵活地实施必要的使用情况报告,并持续满足FCP合规要求。对于尚未使用R31或不打算升级的客户,可以通过安装NGINX Agent或配置HTTP运行状况检查等替代方法启用使用情况报告。

注意:要报告NGINX Plus使用情况,必须将NGINX Instance Manager安装在专用主机上。请参阅安装指南,了解不同的安装方法。

可通过以下三种方式之一向F5报告NGINX Plus实例。

  • NGINX Plus R31用户:配置原生NGINX使用情况报告
  • R31或R31之前版本的用户:安装NGINX Agent
  • R31之前版本的用户:为NGINX Plus配置HTTP运行状况检查

下面逐一介绍:

配置NGINX原生使用情况报告

安装后,NGINX Plus会通过默认DNS条目“nginx-mgmt.local”自动连接到NGINX Instance Manager。默认情况下,NGINX Plus每30分钟与Instance Manager通信一次并发送使用情况信息。如需更改Instance Manager的DNS条目或调整默认连接间隔以更好地满足需求,请在NGINX配置中添加mgmt{}块。此外,该模块还提供其他默认指令,例如UUID文件、mTLS、DNS解析器、使用情况报告间隔和usage_report端点。有关可自定义指令的完整列表,请参阅详细的mgmtmodule文档。借助ngx_mgmt_module,可以轻松自定义这些指令,从而提高灵活性和便利性。

以下各节将说明如何根据您的环境配置此功能。

配置 NGINX Plus

  1. 建议使用mTLS来增强系统安全性。为此,可分别为NGINX Plus实例和NGINX Instance Manager生成证书、密钥和CA密钥证书。有关如何生成密钥的更多信息,点击此处。
  2. 在配置文件 nginx.conf 的 management 块中指定客户端证书和私钥文件的路径。
		
   mgmt {
          ssl_protocols TLSv1.2 TLSv1.3;
          ssl_ciphers DEFAULT;
          ssl_certificate          /home/ubuntu/agent.crt;
          ssl_certificate_key      /home/ubuntu/agent.key
       }
  1. 为确保身份验证过程安全可靠,请指定CA证书链的路径,以验证证书的真实性。

   mgmt {
          ssl_trusted_certificate  /home/ubuntu/ca.pem;
          ssl_verify               on;
          ssl_verify_depth         2;
       }
  1. 对于自定义DNS解析器,请在mgmt{}block中使用resolver指令指定解析器地址。

   mgmt {
          resolver 3.X.X.X;
       }
  1. 要为NGINX Instance Manager配置自定义FQDN,请在usage_report指令中指定该FQDN。然后,在本地DNS中添加一条A记录,将该主机名与NGINX Instance Manager的IP地址关联。

   mgmt {
          resolver 3.X.X.X;
          usage_report endpoint=nms.local interval=15m;
       }

NGINX Plus 配置示例:


  mgmt {
         usage_report endpoint=nms.local interval=30m;
         resolver 3.X.X.X;
         ssl_protocols TLSv1.2 TLSv1.3;
         ssl_ciphers DEFAULT;
         ssl_certificate          /home/ubuntu/agent.crt;
         ssl_certificate_key      /home/ubuntu/agent.key;

         ssl_trusted_certificate  /home/ubuntu/ca.pem;
         ssl_verify               on;
         ssl_verify_depth         2;
     }

保存NGINX配置并重新加载NGINX Plus。

sudo nginx -s reload

配置 NGINX Instance Manager

在/etc/nginx/conf.d/nms-HTTP.conf的server块中添加SSL证书。点击此处了解如何在NGINX Management Suite服务器中配置SSL证书。


server {
    listen 443 ssl http2;
    root /var/www/nms;
    server_name _;
    ssl_protocols       TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_certificate         /etc/nms/certs/server.crt;
    ssl_certificate_key     /etc/nms/certs/server.key;
    ssl_client_certificate  /etc/nms/certs/ca.pem;
    ssl_verify_client on;
 }

要查看NGINX Plus使用情况,请在浏览器中登录NGINX Management Suite并转到NGINX Instance Manager模块。然后,选择页面左下角的NGINX Plus选项卡。

观看此视频教程,了解分步操作说明:

 

错误日志消息

如果无法在NGINX Instance Manager中查看使用情况数据,可根据以下错误消息列表排查NGINX Plus实例问题。以下是一些错误消息示例:

  • 动态解析器故障:无法解析DNS解析器。
2024/04/02 04:02:10 [error] 574079#574079: recv() failed (111: Connection refused) while resolving, resolver: 3.17.128.165:53
2024/04/02 04:02:35 [warn] 574079#574079: usage report: nginx-mgmt.locals could not be resolved (110: Operation timed out)
  • 系统解析器故障:无法解析NGINX Instance Manager主机名
2024/04/02 13:20:44 [info] 103888#0: usage report: host not found in resolver "nginx-mgmt.local"
  • SSL连接失败:无法验证SSL证书或证书已过期。
2024/04/02 13:13:50 [warn] 103877#0: usage report: peer SSL connection failed
  • 对等节点通信失败:无法连接到NGINX Instance Manager。
2024/04/02 13:15:25 [warn] 103877#0: usage report: peer connection failed (-1: Unknown error)
2024/04/02 13:23:32 [warn] 103877#0: usage report: failed (server returned: 404 Not Found)
2024/04/02 19:53:45 [warn] 4648#4648: usage report: connection timed out

安装NGINX Agent

如果尚未迁移到R31,或近期没有迁移计划,仍可将NGINX Plus实例上报至NGINX Instance Manager。为此,可在环境中安装NGINX Agent。安装完成后,即可连接到NGINX Instance Manager并开始传输使用情况数据。要安装NGINX Agent,请按照此链接中的说明操作。

要查看NGINX Plus使用情况,请在浏览器中登录NGINX Management Suite并转到NGINX Instance Manager模块。然后,选择页面左下角的NGINX Plus选项卡。

观看此视频教程,了解分步操作说明:

 

为 NGINX Plus 配置 HTTP 运行状况检查

如果不打算安装NGINX Agent或升级到R31,仍可报告NGINX Plus实例。为此,可通过NGINX配置文件配置HTTP运行状况检查。但要使用此选项,必须手动更新NGINX Plus配置文件。此方法可能既耗时又繁琐,尤其是在环境中有多个实例时。因此,建议在选择此选项前考虑这些因素。

配置 NGINX Plus

  1. 打开NGINX Plus配置,并在http {}块中插入以下代码:

   keyval_zone zone=uuid:32K state=/var/lib/nginx/state/instance_uuid.json;
   keyval 1 $nginx_uuid zone=uuid;
   upstream receiver {
    zone receiver 64k;

    # REQUIRED: Update NMS_FQDN with NGINX Management Suite IP Address or hostname.
    # If configuring with hostname, please ensure to uncomment the resolver
    # directive below and define a DNS server that can resolve the hostname.
    server NMS_FQDN:443;

    # OPTIONAL: Update DNS_UP with DNS server IP address that can resolve
    # the hostname defined above.
    #resolver DNS_IP;
   }  

map CERT $repo_crt {
    # OPTIONAL: Location of client certificate
      default /home/ubuntu/agent.crt;
   }  

map KEY $repo_key {
    # OPTIONAL: Location of client certificate private key
      default /home/ubuntu/agent.key; 
   }


 server {
    location @ngx_usage_https {
        # OPTIONAL: Configure scheme (http|https) here
        proxy_pass https://receiver;

        # REQUIRED: If using NGINX APP PROTECT (NAP) on this instance, set nap=active on the following line:
proxy_set_header Nginx-Usage "Version=$nginx_version;Hostname=$hostname;uuid=$nginx_uuid;nap=active";	 

        health_check uri=/api/nginx-usage interval=1800s;       # DO NOT MODIFY
        proxy_ssl_certificate     $repo_crt;                    # DO NOT MODIFY
        proxy_ssl_certificate_key $repo_key;                    # DO NOT MODIFY
    }

    location @self {
        health_check uri=/_uuid interval=1d;
        proxy_pass http://self;
    }

    location = /_uuid {
        if ($nginx_uuid !~ .) {
            set $nginx_uuid $request_id;
        }
        return 204;
    }

    listen unix:/tmp/ngx_usage.sock;
  }

 upstream self {
    zone self 64k;
    server unix:/tmp/ngx_usage.sock;
 }
  1. 将NMS FQDN更新为Instance Manager的主机名或IP地址。如果使用私有DNS,请取消相关注释并更新DNS IP地址。
  2. 为确保发送到NGINX Instance Manager的HTTP流量安全,必须在map CERT和map KEY块中指定SSL证书和密钥的位置。

保存更改并重新加载NGINX。

sudo nginx -s reload

要查看NGINX Plus使用情况,请在浏览器中登录NGINX Management Suite并转到NGINX Instance Manager模块。然后,选择页面左下角的NGINX Plus选项卡。

观看此视频教程,了解分步操作说明:

 

结论

我们致力于根据您的实际情况提供支持,帮助您轻松简化并自动完成使用情况报告。因此,我们提供多种选项,让报告方式更加灵活。近期发布的NGINX Plus R31更新进一步简化了NGINX Plus实例月度使用情况数据的报告流程并提高了效率,同时不会影响性能,并可确保符合F5的要求。

分享

相关博客文章

NGINX Plus R26 正式发布
NGINX | 2022/02/15

NGINX Plus R26 正式发布

NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
NGINX | 2022/02/10

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击

gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
NGINX | 2021/09/13

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划

了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。

NGINX Plus R19 正式发布
NGINX | 2019/09/03

NGINX Plus R19 正式发布

NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。

NGINX现已正式加入F5
NGINX | 2019/05/09

NGINX现已正式加入F5

NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

使用NGINX和NGINX Plus实现高性能缓存
NGINX | 2016/08/24

使用NGINX和NGINX Plus实现高性能缓存

我将介绍NGINX在内容缓存和性能方面的工作原理,并分享一些控制NGINX内容缓存方式的技巧。