使用GCE创建的nginx Docker容器可以在Cloud Monitoring上进行监视

首先

    • 業務でGCEのVMを使って、nginxのリバースプロキシを作成する必要がありましたので、その際のCloud Monitoringの設定方法を説明したものになります。

 

    • Stackdriver公式からnginxのモニタリング用プラグインが提供されており、本記事ではそれを使用しています。

 

    以下の公式ドキュメントはVMに直接nginxをインストールするやり方を説明しているのですが、本記事ではDockerコンテナでnginxを作成する際の設定方法になります。

Nginx插件

GCP环境

本次验证的环境如下。需要构建相似的环境并可以通过SSH登录到虚拟机。

    • GCE VM N1 n1-standard-1 CentOS7

 

    • Docker version 20.10.3

 

    • ゾーン:asia-northeast1-b

 

    外部IPがあることも前提です(内部IPのみは検証していません)

在虚拟机上安装云监控代理。

请根据以下文章中的说明,在VM上安装Cloud Monitoring代理。

安装Cloud Monitoring代理到单个虚拟机

    エージェントのパッケージ リポジトリを追加します。
curl -sSO https://dl.google.com/cloudagents/add-monitoring-agent-repo.sh
sudo bash add-monitoring-agent-repo.sh
    エージェントのバージョン一覧を確認します。
sudo yum list --showduplicates stackdriver-agent
    今回は6.1.1のバージョンのエージェントをインストールしました。
sudo yum install -y stackdriver-agent-6.1.1
    エージェント サービスを開始します
sudo service stackdriver-agent start
    エージェントが期待どおりに動作していることを確認します
sudo service stackdriver-agent status
stackdriver-agent is running                               [  OK  ]
    正常にエージェントのインストールが終了すると、Monitoring > ダッシュボード画面でMonitoringエージェントのステータスが緑色であるのを確認できます。
image.png

启用Nginx监控插件。

根据以下文章的指示,安装Nginx监控插件。还有其他插件,如Apache和MySQL等。

    Nginx のステータス情報ハンドラを有効にする必要があります。まずは、以下からファイルstatus.confを取得する。
curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/nginx/conf.d/status.conf
server {
    listen 80;
    server_name local-stackdriver-agent.stackdriver.com;
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
    location / {
        root /dev/null;
    }
}
    • 以下のようなdefault.confファイルを用意し、上でダウンロードしてきたstatus.confの情報を記載します

VMにインストールされたエージェントがDockerコンテナ内のNginxのステータスを取得できるように、location /nginx_statusのallowにVMの内部IPを記載します。

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        allow xxx.xxx.xxx.xxx;  # ←VMの内部IPを記載する 
        deny all;
    }

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
    • NginxのDockerコンテナを以下のコマンドで起動します。

今回、–network=”host”を指定して起動することで、ホストのネットワークを利用するようにコンテナを作成しています。こうすることで、VMのMonitoringエージェントが、VMの内部IPを指定し、http://VM内部IP:80/nginx_statusと通信できるようにしました。

sudo docker run --name nginx-server \
-v $PWD/default.conf:/etc/nginx/conf.d/default.conf \
-d --network="host" nginx
    curlコマンドでnginxのステータス情報を取得してみます。
curl http://VMの内部IP/nginx_status
    以下のようなステータス情報が取得できます。
Active connections: 2
server accepts handled requests
 5 5 14
Reading: 0 Writing: 1 Waiting: 1
    nginxのモニタリングプラグインの設定ファイルを取得します。
(cd /etc/stackdriver/collectd.d/ && sudo curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/collectd.d/nginx.conf)
    取得したnginx.confのファイルを以下のように書き換えます。
sudo vi /etc/stackdriver/collectd.d/nginx.conf
# This is the monitoring configuration for Nginx.
# Make sure to enable stub_status in your Nginx configuration.
# Look for NGINX_HOST and NGINX_PORT to adjust your configuration file.
LoadPlugin nginx
<Plugin "nginx">
    # When using non-standard Nginx configurations, replace the below with
    #URL "http://NGINX_HOST:NGINX_PORT/nginx_status"
    #URL "http://local-stackdriver-agent.stackdriver.com:80/nginx_status"
    URL "http://VMの内部IP:80/nginx_status"
</Plugin>
    モニタリングエージェントを再起動します。
sudo service stackdriver-agent restart
    • GCPのMonitoring > ダッシュボード > VM Instances > VM名をクリックします。正常に設定できていると、以下のようにNGINXタブがありますので、クリックする。

nginxへのコネクション数やリクエスト数が確認できます。

nginxのエージェント指標を知りたい方は、このリンクを参照ください。

image.png

以上就是在Cloud Monitoring中监控Docker容器内的nginx的配置完成了。

请查阅文献

    • 単一のVMにCloud Monitoring エージェントをインストールする

 

    • Nginxプラグイン

 

    Dockerのbridgeとhostネットワークについて勉強する
广告
将在 10 秒后关闭
bannerAds