このトピックでは、フォワードプロキシサーバーを設定し、企業イントラネット内のサーバーからプロキシモードのSimple Log Serviceにログを収集する方法について説明します。 このトピックでは、NGINXを例として使用します。
前提条件
プロジェクトと Logstore が作成済みである必要があります。 詳細については、「プロジェクトの作成」および「Logstore の作成」をご参照ください。
Logtail V1.5.0以降がLinuxサーバーにインストールされるか、Logtail V1.5.0.0以降がWindowsサーバーにインストールされます。 詳細については、「LinuxサーバーにLogtailをインストールする」および「WindowsサーバーにLogtailをインストールする」をご参照ください。
背景情報
たとえば、企業イントラネットに複数のサーバーを展開し、サーバーがインターネットにアクセスできないとします。 クエリと分析のためにサーバーからSimple Log Serviceにログを収集する場合は、いずれかのサーバーがインターネットにアクセスし、他のサーバーからプロキシモードでSimple Log Serviceにログを収集することを許可できます。 インターネットにアクセスできるイントラネットサーバーを、転送プロキシサーバーとして構成できます。
実装
Logtailは、制御データ、サービスデータ、モニタリングデータなどのデータをSimple Log Serviceと交換します。 制御データには、Logtail設定の配信と認証に関連する情報が含まれます。 デフォルトでは、サービスデータとモニタリングデータはHTTP経由で送信されます。 HTTPSもサポートされています。 したがって、プロキシサーバーはHTTPとHTTPSの両方をサポートする必要があります。
NGINXは、オープンソースで高性能なHTTPプロキシサーバーです。 デフォルトでは、NGINXはHTTPをサポートしていますが、認証関連の理由によりHTTPSはサポートしていません。 NGINXがHTTPSをサポートできるようにするには、NGINXのHTTPSパッチをインストールする必要があります。
手順1: プロキシサーバーの設定
次の手順では、NGINXを使用して、企業イントラネット内のインターネットにアクセスできるサーバーをフォワードプロキシサーバーとして構成する方法について説明します。
転送プロキシサーバーとして構成するサーバーにログオンします。
NGINXインストールパッケージとHTTPSパッチをダウンロードします。
HTTPSパッチをダウンロードします。
git clone https://github.com/chobits/ngx_http_proxy_connect_module.git
NGINXインストールパッケージをダウンロードし、パッケージを解凍します。
${version} はNGINXのバージョンを指定します。 ${version} を実際の値に置き換える必要があります。 NGINXの最新バージョンの詳細については、「nginx: download」をご参照ください。
wget http://nginx.org/download/nginx-${version}.tar.gz tar -xzvf nginx-${version}.tar.gz cd nginx-${version}/
NGINXにHTTPSパッチを追加します。
${patchfile} は、HTTPSパッチファイルへのパスを指定します。 NGINXのバージョンに基づいてパッチファイルを指定する必要があります。 詳細については、「パッチの選択」をご参照ください。
patch -p1 < ../ngx_http_proxy_connect_module/patch/${patchfile}.patch
NGINX をインストールします。
./configure --add-module=../ngx_http_proxy_connect_module make && make install
nginx.confファイルに次の設定を追加します。
${プロキシサーバーのリスニングポート} と ${DNSサーバーアドレス} を実際の値に置き換える必要があります。
server { listen ${Listening port of the proxy server}; resolver ${DNS server address}; # Specify the proxy for non-HTTP requests. proxy_connect; proxy_connect_allow 443; proxy_connect_connect_timeout 10s; proxy_connect_data_timeout 10s; # Specify the proxy for HTTP requests. location / { proxy_pass http://$host; proxy_set_header Host $host; } }
NGINXサーバを起動します。
手順2: プロキシ関連の環境変数の設定
Linux OS
次の表に、プロキシ関連の環境変数を設定するために使用できるソリューションを示します。
解決策 | 利点 | デメリット | シナリオ |
ソリューション 1 | 設定はLogtailプロセスに対してのみ有効になります。 影響は許容範囲内にあります。 | 構成方法は比較的複雑である。 | サーバーネットワーク全体に精通していないサーバーユーザーに適しています。 |
ソリューション 2 | 設定方法は簡単です。 | 設定はサーバー全体で有効になります。 影響は重要です。 | サーバー上のすべてのプロセスのリクエストステータスに精通しているサーバー管理者に適しています。 |
ソリューション 1
企業イントラネットのサーバーにログオンします。
/etc/init.d/ilogtaild
ファイルを開き、次の環境変数をstart()
関数に追加して保存します。環境変数の詳細については、「付録: プロキシ関連の環境変数」をご参照ください。
start() { cd $BIN_DIR umask $UMASK # $BIN_DIR/ilogtailの前にプロキシ関連の環境変数を追加します。 # この例では、ALL_PROXY環境変数が追加されています。 プロキシサーバーのIPアドレスは192.168.1.0で、リスニングポートは9000です。 # 企業イントラネット内のサーバーは、HTTP経由でプロキシサーバーと通信します。 ALL_PROXY=http:// 192.168.1.0:9000 $BIN_DIR/ilogtail RETVAL=$? }
次のコマンドを実行して、Logtailを再起動します。
/etc/init.d/ilogtaild再起動
ソリューション 2
このソリューションは、プロキシサーバーを使用して企業イントラネット内のサーバーのすべての要求を転送する場合に使用できます。 プロキシサーバーを使用してLogtailプロセスからのリクエストのみを転送する場合にも、このソリューションを使用できます。 このソリューションを使用するには、サーバー上の他のプロセスからリクエストが送信されるアドレスに精通していることを確認してください。 他のシナリオでは、ソリューション1を使用します。
企業イントラネットのサーバーにログオンします。
export
コマンドを実行して、プロキシ関連の環境変数を~/.bash_profile
または/etc/profile
起動ファイルに追加します。環境変数の詳細については、「付録: プロキシ関連の環境変数」をご参照ください。
次のコマンドを実行して、環境変数を有効にします。
この例では、
~/.bash_profile
スタートアップファイルを使用します。source ~/.bash_profile
次のコマンドを実行して、Logtailを再起動します。
/etc/init.d/ilogtaild再起動
Windows オペレーティングシステム
[実行] ウィンドウを開き、[開く] フィールドにregeditと入力し、[OK] をクリックします。
レジストリエディターウィンドウで、Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\LogtailDaemonを検索し、LogtailDaemonをクリックします。
LogtailDaemonを右クリックし、
を選択します。 次に、Value nameにEnvironmentを指定します。[環境] をダブルクリックします。 [文字列の編集] ダイアログボックスで、[値のデータ] フィールドにプロキシ関連の環境変数を入力し、[OK] をクリックします。
この例では、ALL_PROXY環境変数が追加されています。 プロキシサーバーのIPアドレスは192.168.1.0で、リスニングポートは9000です。 企業イントラネット内のサーバーは、HTTPを介してプロキシサーバーと通信します。 環境変数の詳細については、「付録: プロキシ関連の環境変数」をご参照ください。
[実行] ウィンドウを開き、[開く] フィールドにservices.mscと入力し、[OK] をクリックします。
[サービス] ウィンドウで、必要なLogtailサービスをクリックします。
Logtail V0.x.x.xの場合、LogtailWorkerサービスをクリックします。
Logtail V1.0.0.0以降の場合は、LogtailDaemonサービスをクリックします。
サービスを右クリックし、[再起動] をクリックします。
ステップ3: ネットワーク接続のテスト
企業イントラネットのサーバーにログオンします。
次のコマンドを実行します。
次のコマンドでは、${region} は使用するプロジェクトのリージョンを指定し、${project_name} はプロジェクトの名前を指定します。 変数を実際の値に置き換えます。
curl http://logtail.${region}.log.aliyuncs.com curl https://logtail.${region}.log.aliyuncs.com curl http://${project_name}.${region}.log.aliyuncs.com curl http://ali-${region}-sls-admin.${region}.log.aliyuncs.com
次のような情報が返された場合、ネットワークは接続されています。
{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"62591BC7C08B7BD4AA99FCD4"}}
付録: プロキシ関連の環境変数
このセクションでは、イントラネットサーバー用に構成できる環境変数について説明します。
環境変数は大文字または小文字にすることができます。 大文字の環境変数が優先されます。
HTTPおよびHTTPSデータを同じプロキシサーバーに送信するには、環境変数
ALL_proxy
を追加します。ALL_PROXY: ${Address of the forward proxy server}
HTTPおよびHTTPSデータを別のプロキシサーバーに送信するには、環境変数
HTTP_PROXY
およびHTTPS_proxy
を追加します。HTTP_PROXY: ${Address of the HTTP proxy server} HTTPS_PROXY: ${Address of the HTTPS proxy server}
プロキシサーバーのアドレスは、
[Protocol://[Username:Password @]] address [:Port]
形式である必要があります。プロトコル: 企業イントラネット内の現在のサーバーとプロキシサーバーの間で使用される通信プロトコル。 有効な値: http、https、socks5。 このフィールドはオプションです。 このフィールドを設定しない場合、デフォルトでhttpが使用されます。
Username and Password: プロキシサーバーへのログインに使用されるユーザー名とパスワード。 これらのフィールドはオプションです。
Address: プロキシサーバーのIPアドレス。 このフィールドは必須です。
ポート: nginx.confファイルで構成されているプロキシサーバーのリスニングポート。 このフィールドはオプションです。 詳細については、「プロキシサーバーの構成」セクションの手順5をご参照ください。 このフィールドを設定しない場合、デフォルトでポート80が使用されます。
企業イントラネット内のサーバーからプロキシサーバーに特定のデータを送信しない場合は、NO_PROXY環境変数を追加できます。 NO_PROXY環境変数は、プロキシサーバーを使用せずにデータを送信できるアドレスを指定します。 複数のアドレスをコンマ (,) で区切る必要があります。 サポートされる形式:
IPアドレス
ドメイン名。 ドメイン名はピリオド (.) で始めることができます。 ドメイン名とそのサブドメインを一致させることができます。
アスタリスク (*) 。 アスタリスクを指定すると、プロキシサーバーは無効になります。