🚀

さくらのクラウド やってみたシリーズ(19) アクセスログの syslog への送出

に公開

https://zenn.dev/sakura_internet/articles/fe92b2f5e3c52b
https://zenn.dev/sakura_internet/articles/33c2caa5dd642c
https://zenn.dev/sakura_internet/articles/74d32789754e0f

今日は引き続きエンハンスドロードバランサーを触っていきます。今日のテーマはアクセスリクエストのログ送出です。

2つのログ送出先:Syslog と モニタリングスイート

https://manual.sakura.ad.jp/cloud/appliance/enhanced-lb/index.html?gad_source=1&gad_campaignid=20784344296&gbraid=0AAAAADrEfxQzPH_l3KbGcNReOUXGhlRFK&gclid=EAIaIQobChMIwr-42OOZkQMVk1wPAh1afwTcEAAYASAAEgKuXvD_BwE#syslog

アクセスリクエストのログ送出方法には、主に次の 2 つがあります。
1 つ目は自前の syslog サーバへログを転送する方法、2 つ目は モニタリングスイートとの連携機能を利用する方法です。モニタリングスイートは2025年9月にリリースされた新しい機能で、さくらのクラウドのマネージドサービスだけでなく、エージェントを導入した仮想サーバや、同様のエージェントがインストールされたオンプレミス/他クラウド環境からのログも一元的に受信できます。マネージドサービスであれば、コンソール上からワンクリックで連携設定が可能です。

モニタリングスイートは非常に多機能で奥深いサービスであるため、詳細については別途連載ブログで解説していきたいと考えています。

このブログでは従来化の方法である自前のsyslogサーバにログを送出する手順を纏めます。

さっそくやってみる

syslogサーバは自前で準備する必要があるため、まずは適当な仮想サーバを起動します。syslogサーバはエンハンスドロードバランサーからのIP到達性が必要で、UDPでログが送出されてきます。

1. syslog サーバでdockerのセットアップ

この手順ではsyslogを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 --version

2. docker / syslog サーバの起動

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

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

エンハンスドロードバランサーの詳細画面にsyslogサーバのIPアドレスとポートを入力して設定を反映させます。

4. テスト

ブラウザから数度アクセスを行うと以下の様なアクセスログが確認できます。

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"}

ログは以下の仕様で出力されます。

4. パケットフィルタの適応

今の状態だとsyslogサーバは外部に開放されているためパケットフィルタでログの送出元を制限します。
https://zenn.dev/sakura_internet/articles/c2a10c62679409

ロードバランサーのネット枠を送信元としてIP/プロトコル/ポートを以下の様に制限します。

さくらインターネット株式会社

Discussion