さくらのクラウド ネットワーク入門 12. エンハンスドロードバランサのアクセスログをsyslogへ送出

公開:最終更新日:

このネットワーク入門では、これまで第9回第10回第11回と「エンハンスドロードバランサ」アプライアンスについて解説してきました。2台のWebサーバーを負荷分散する環境を用意し、HTTPSでアクセスできるようにし、セッション維持を設定しました。

今回も引き続き「エンハンスドロードバランサ」を取り上げます。外部からアクセスできる環境が整ったところで、アクセスの状況を確認しましょう。サーバー運用にオブザーバビリティー(可観測性)やモニタリング(監視)は不可欠なものとなっていますが、その第一歩としてアクセスリクエストのログを送出して記録してみます。

目次
  1. ログの送出先は2種類:syslogとモニタリングスイート
    1. モニタリングスイートについて
  2. syslogサーバーのセットアップ
    1. 1. Dockerのセットアップ
    2. 2. Dockerでsyslogサーバーを起動
  3. エンハンスドロードバランサの設定変更
    1. ログが記録されていることを確認する
  4. ログの送出元をパケットフィルタで制限する
  5. 参考リンク

ログの送出先は2種類:syslogとモニタリングスイート

アクセスリクエストのログ送出方法には、主に次の2つがあります。

  1. 自前でsyslogサーバーを立てて転送する
  2. モニタリングスイートとの連携機能を利用する

モニタリングスイートは多機能で奥深いサービスであるため、詳細についてはあらためて解説します。今回は従来の方法として、自分がセットアップしたsyslogサーバーにログを送出する手順をまとめます。

モニタリングスイートについて

さくらのクラウドの「モニタリングスイート」はシステム監視のプラットフォームです。ここでは簡単な紹介だけしておきます。

👉 モニタリングスイート | さくらのクラウド

モニタリングスイートでは、さくらのクラウドだけでなくオンプレミスのサーバーから各種の仮想サーバー、さくら以外のクラウドまで、エージェントを導入することで多様な環境を監視できます。さくらのクラウドのマネージドサービスであれば、コントロールパネルからワンクリックで連携を設定できます。

👉 エンハンスドロードバランサにてモニタリングスイートと連携しアクセスログの取得が可能となりました | さくらのクラウドニュース

特徴として、ログストレージ、メトリクスストレージ、トレースストレージといった多様なストレージを用途に応じて利用できます(下記画像を参照)。

2025年を通してβ版やCR(コミットメントリリース)版として利用され、同年12月に正式サービスとして提供開始した比較的新しいサービスです。

syslogサーバーのセットアップ

本記事ではアクセスログをsyslogサーバーに送出します。syslogは、UNIX系プラットフォームにおける伝統的なログ記録システムです。さくらのクラウドでUNIX系の「サーバ」を立ち上げれば自動で起動しますが、今回は別のアプライアンスのログを受け取って記録するので、専用の環境をコンテナで起動します。

syslogを起動する「サーバ」には「エンハンスドロードバランサ」からのIP到達性が必要です。ログメッセージはUDPで送出されます。

1. Dockerのセットアップ

syslogをコンテナで立ち上げるため、まずコンテナそのものをインストールします。この「エンハンスドロードバランサ」の一連の記事ではUbuntu系のLinux環境を想定しているため、例えば次のような手順でDockerをセットアップできます。

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker

Dockerは、広く利用されている標準的なコンテナ環境です。公式では次のページで各種プラットフォームへのインストール方法が説明されています。

👉 Install Docker Engine | Docker Docs

インストールできたか確認してみましょう。

$ docker --version
Docker version xx.x.x, build xxxxxxx

2. Dockerでsyslogサーバーを起動

Dockerが用意できたので、syslogをコンテナで起動します。広く使われるsyslogの実装である「syslog-ng」のコンテナイメージが公式に用意されています。

👉 balabit/syslog-ng – Docker Image

これは次のコマンドで起動できます。ポート番号としてデフォルトの「514」を指定しています。

$ sudo docker run -d --name syslog \
  -p 514:514/udp \
  -p 514:514/tcp \
  balabit/syslog-ng

初めてのときには上記のコンテナイメージを自動でダウンロードします。

以下のコマンドで起動を確認できます。

$ sudo docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS                   
PORTS                                                                                                 NAMES
a28c9ca98819   balabit/syslog-ng   "/usr/local/bin/entr…"   3 minutes ago   Up 3 minutes (healthy)   601/tcp, 0.0.0.0:514->514/tcp, 0.0.0.0:514->514/udp, [::]:514->514/tcp, [::]:514->514/udp, 6514/tcp   syslog

これでsyslogサーバーが用意できました。「エンハンスドロードバランサ」から接続するため、このコンテナを起動した「サーバ」に割り当てられたIPアドレスを控えておきましょう。

エンハンスドロードバランサの設定変更

さくらのクラウドのコントロールパネルに戻って「エンハンスドロードバランサ」の画面で、syslogサーバーのIPアドレスとポート番号を設定します。詳細表示で右上の「設定変更」をクリックし、次のように入力します。

設定できたら右上の「反映」をクリックしてください。

これで準備はすべて整いました。設定の詳細はマニュアルの次のページにも掲載されています。

👉 Syslog経由でのアクセスログ収集

ログが記録されていることを確認する

syslogサーバーを立ち上げた「サーバ」で次のコマンドを実行し、Webブラウザから「エンハンスドロードバランサ」にアクセスすると、アクセスログが確認できます。

$ sudo docker exec -it syslog tail -f /var/log/messages
Nov 30 21:01:27 153.125.175.243 elb-113702692611-113701806335[1879828]: {"resource_id":"113702692611","project_id":"113701806335","mode":"https","client_ip":"219.104.132.56","client_port":5174,"time":"[30/Nov/2025:21:01:27.603]","frontend":"113702692611-153.125.168.194:443~","backend":"113702692611-backend-default","upstream_server":"27.133.155.228:80","upstream_response_time":18,"upstream_connect_time":17,"session_duration":62,"response_time":35,"fix_response_code":"-","status_code":"200","size":829,"termination_state":"--","vhost":"153.125.168.194","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/142.0.0.0 Safari\/537.36","method":"GET","uri":"\/","protocol":"HTTP/1.1","ssl_version":"TLSv1.3","ssl_ciphers":"TLS_AES_128_GCM_SHA256"}

ログメッセージはJSON形式で送出されています。どういったキー名と内容になっているのかは、前述した「Syslog経由でのアクセスログ収集」のマニュアルで「ログ仕様」の表を参照してください。

ログの送出元をパケットフィルタで制限する

ここまででログを記録することはできましたが、このままではsyslogサーバーが外部に開放されているため、どこの誰でもログを送りつけて記録させることができてしまいます。記録したい「エンハンスドロードバランサ」からのログだけに送出元を制限しておくとよいでしょう。

さくらのクラウドでは、通信を制限するために「パケットフィルタ」を利用できます。この入門シリーズの第3回で取り上げているので参考にしてください。

👉 さくらのクラウド ネットワーク入門 3. パケットフィルタリングや内部へのSSHログイン

まず「エンハンスドロードバランサ」がログを送出するソースIPアドレスを確認します。コントロールパネルの「情報」タブにある「プロキシ元ネットワーク」の値を控えてください。これをもとに「パケットフィルタ」を作成します。

syslog用のルールで許可する「送信元ネットワーク」として、先ほど「プロキシ元ネットワーク」で確認したIPアドレスのブロックを指定します。syslogサーバーを「514:514/udp」のオプションでで起動しているため、プロトコルは「udp」でポート番号は「514」になります。

その他のルールとして、SSH(22番ポート)を許可し、それ以外のTCPおよびUDPの通信をすべて拒否しています。

参考リンク

本記事では、さくらのクラウドの「エンハンスドロードバランサ」のマニュアルで以下の項目を参照しています。

また、さくらのクラウドに関連する以下のページを参照しています。

それ以外にも以下のサイトを参照しました。

亀田治伸
制作者

クラウド事業本部

亀田治伸

兵庫県伊丹市出身、米国州立南イリノイ大学卒業。認証系独立ASP、 動画・音楽配信システム構築、決済代行事業者、外資クラウドエバンジェリスト数社を経て現職。得意領域は、認証、暗号、ネットワークを中心としたセキュリティ、 映像配信、開発手法に見る組織論、クラウドアーキテクチャ、プレゼンテーション。