非阿里云主机如何通过Nginx代理服务器上报监控数据?

本文为您介绍非阿里云主机通过Nginx代理服务器上报监控数据至云监控的操作方法。

步骤一:部署Nginx代理服务器

由于云监控部署在Linux服务器上,因此建议您的代理服务器选用Linux服务器。本文以CentOS操作系统为例。

重要

您只能通过管理员账号root部署Nginx代理服务器。使用管理员账号具有一定风险,如果操作不当可能导致系统稳定性问题或数据安全问题,请谨慎操作。

  1. 下载并解压Nginx安装包,本文以nginx-1.19.6版本为例。

    1. 进入指定安装目录路径下,下载安装包,其它版本自行到Nginx官网下载。

      cd /usr/local
      wget http://nginx.org/download/nginx-1.19.6.tar.gz
    2. 解压安装包。

      tar -zxvf nginx-1.19.6.tar.gz
  2. 安装依赖工具。

    yum install -y git patch pcre pcre-devel gcc zlib zlib-devel openssl openssl-devel
  3. 下载并安装Nginx补丁包,本文以安装Nginx补丁包proxy_connect_rewrite_1018.patch为例。

    1. 进入解压后的nginx-1.19.6包的目录下。

    2. 执行以下命令,下载Nginx补丁包。

      git clone https://github.com/chobits/ngx_http_proxy_connect_module.git
      重要

      请下载与安装的Nginx版本对应的补丁包版本,本文Nginx版本为nginx-1.19.6, 所以选择的对应的补丁包版本是proxy_connect_rewrite_1018.patch,具体详情请到GitHub查看。

    3. 开始安装Nginx补丁包,安装补丁包前请确认在/usr/local/nginx-1.19.6路径下。

      patch -p1 < ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1018.patch
      说明

      patch:通过补丁文件,对原文件打补丁。

      -p1:参数表示忽略补丁文件路径的第几部分,“1”表示忽略第一个。

  4. 开始编译安装Nginx,然后启动Nginx。

    1. 在Nginx的安装包/usr/local/nginx-1.19.6路径下,执行编译命令。

      ./configure --prefix=/usr/local/nginx-1-19 --with-http_stub_status_module --with-http_ssl_module --add-module=ngx_http_proxy_connect_module
      说明

      --prefix=/usr/local/nginx-1-19 表示设置Nginx编译安装后的路径目录位置。

    2. 执行安装命令。

      make && make install
    3. 执行启动Nginx命令。

      /usr/local/nginx-1-19/sbin/nginx
  5. 在浏览器的地址栏输入代理服务器的IP地址:80,显示如下,说明安装成功。image

  1. 配置Nginx代理。

    1. 在Nginx编译安装后的conf目录下,新建forward.conf配置文件。

      cd /usr/local/nginx-1-19/conf
      vi forward.conf
    2. 在forward.conf文中配置正向代理和反向代理。

      1. 正向代理配置内容如下:

        server {
             listen                         8080; #设置Nginx代理服务器自定义端口。
             server_name                    xxx.xx.xx.xxx; #设置代理服务器的IP地址。
             # dns resolver used by forward proxying
             resolver                       114.114.114.114;  #设置DNS地址。
        
             # forward proxy for CONNECT request
             proxy_connect;
             proxy_connect_allow            443;
             proxy_connect_connect_timeout  10s;
             proxy_connect_read_timeout     10s;
             proxy_connect_send_timeout     10s;
        
             # forward proxy for non-CONNECT request
             location / {
                 proxy_pass http://$http_host$request_uri;  #设定代理服务器的协议和地址,均使用默认值。
                 proxy_set_header Host $host;
             }
         }
        说明

        正向代理:如果将局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

        Nginx的正向代理不支持HTTPS协议,需要进行打补丁支持HTTPS协议。

      2. 反向代理配置内容如下:

        server {
            listen              443 ssl;
            server_name         192.168.XX.XX; #设置代理服务器的IP地址。
            ssl_certificate     XXXX.pem; #SSL证书。
            ssl_certificate_key XXXX.key; #SSL证书的密码。
        
            location / {
                proxy_pass  https://www.aliyun.com; #设置代理服务器访问的URL地址。
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forward`ed-For $proxy_add_x_forwarded_for;
            }
        }
        说明

        反向代理:如果局域网向Internet提供资源服务,让Internet上的其它客户端来访问局域网内的资源,使他们必须通过一个代理服务器进行访问,这种服务就称为反向代理。

        重要

        关于如何申请SSL证书。具体操作请参见申请免费DV单域名试用证书提交证书申请

    3. 按Esc键,输入:wq,再按Enter键,保存并退出forward.conf配置文件。

    4. 打开nginx的主配置文件nginx.conf。

      cd /usr/local/nginx-1-19/conf
      vi nginx.conf
    5. 将forward.conf配置文件,使用include引入nginx.conf主配置文件中。

      http {
        ......
          include /usr/local/nginx-1-19/conf/forward.conf;
        ......
      }
    6. 按Esc键,输入:wq,再按Enter键,保存并退出文件nginx.conf。

    7. 重启Nginx代理服务器。

      /usr/local/nginx-1-19/sbin/nginx -s reload
  2. 测试Nginx代理服务器结果。

    1. 正向代理测试,执行以下命令,可以访问任意网址,表示安装成功。

      curl -x 192.168.XX.XX(代理服务器的IP地址):<代理服务器的端口> http://example.aliyundoc.com(任意网址)
    2. 反向代理测试,执行以下命令,输入任何网址后,可以访问文件nginx.conf中指定的网址,表示安装成功。

      curl -x 192.168.XX.XX(代理服务器的IP地址):<代理服务器的端口> https://example.aliyundoc.com(任意网址)

步骤二:安装和配置云监控插件

重要

云监控仅支持通过管理员账号root操作云监控插件。使用管理员账号具有一定风险,如果操作不当可能导致系统稳定性问题或数据安全问题,请谨慎操作。

  1. 在非阿里云主机上安装云监控插件。

    具体操作,请参见安装和卸载C++版本插件

  2. 在云监控插件中配置Nginx代理服务器。

    1. 以root用户登录云监控插件所在的非阿里云主机。

    2. 执行以下命令,打开文件agent.properties

      cd /usr/local/cloudmonitor/conf
      vi agent.properties
    3. 在云监控插件中配置Nginx代理服务器的相关信息。

      http.proxy.auto=false
      #手动配置代理
      http.proxy.host=192.168.XX.XX
      #Nginx代理服务器的IP地址。
      http.proxy.port=8080
      #Nginx代理服务器的端口。
      #http.proxy.user=user  #Nginx代理服务器的HTTP服务无用户名。
      #http.proxy.password=password  #Nginx代理服务器的HTTP服务无用户密码。
    4. 按Esc键,输入:wq,再按Enter键,保存并退出文件agent.properties

    5. 执行以下命令,重启云监控插件。

      ./cloudmonitorCtl.sh restart

步骤三:查看非阿里云主机的监控数据

  1. 登录云监控控制台

  2. 在左侧导航栏,单击主机监控

  3. 主机监控页面,单击目标主机的实例名称链接,或单击目标主机对应操作列的监控图表

    查看非阿里云主机的监控数据。