モニタリングスイートのログストレージにサーバのログを保管する

さくらのクラウド # モニタリングスイート # ログストレージ

こんにちは ログどうしてますか?

普段はあまり見なくても支障はありませんが、いざというときに読めないと困りもの

どの程度保存が必要なのかは環境や、各社ごとのポリシーによりけりですが、大量にログ出力が行われるサーバだと、本来のコンテンツ容量以上に、ログ保管用のディスクが必要になってしまう場合があります。

そういった場合の対策としていくつか方法があります

別のサーバを用意し、ログを集約するサーバにする
追加でディスクを用意し、ログ保管のディスクとして利用する
オブジェクトストレージにログを保管する
ログの保存期間を短くなるように調整する
ログを収集できるマネージドサービスを探す
etc...

あたり前ではありますが、サーバという単位である以上資源は有限なため、なにかしら保存領域を用意する必要があります。

さくらのクラウドではモニタリングスイートいうサービスがあり、ログを保管する機能があります。

以前 VPNルータのログを保管する記事を掲載しておりますが、今回はサーバのログを転送してみたいと思います。

ログストレージ側設定

ログストレージはすでに作成がすんでいるとします。

マニュアルにしたがって進めます。

https://manual.sakura.ad.jp/cloud/appliance/monitoring-suite/tutorial.html

アクセスキー発行
対象のログストレージを選択後、 画面右下の追加ボタンを押してください

以下のようなIDとエンドポイントが発行されるかと思います。

ID	
AAAAAA-BBBB-CCCC-DDDD-EEEEEEEEE
説明	
amiy-log

エンドポイント	
1234567890.logs.monitoring.global.api.sacloud.jp
設定例	
[OUTPUT]
  Name         opentelemetry
  Match        *
  Host         1234567890.logs.monitoring.global.api.sacloud.jp
  Port         443
  Tls          On
  Logs_URI     /v1/logs
  Header       Authorization Bearer log-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

サーバ側設定

sacloud-otel-collector をインストールします。

https://github.com/sacloud/sacloud-otel-collector/releases

# wget https://github.com/sacloud/sacloud-otel-collector/releases/download/v0.7.6/sacloud-otel-collector_0.7.6_linux_amd64.rpm
# dnf install -y sacloud-otel-collector_0.7.6_linux_amd64.rpm
# ll /etc/sacloud-otel-collector/
# ll /etc/default/sacloud-otel-collector

ll は打たなくてもよいです。

バックアップ取って編集します。

ログは一旦わかりやすい、messageログを送りつけます。

# cp -ip /etc/sacloud-otel-collector/config.yaml /etc/sacloud-otel-collector/config.yaml.back
# vim /etc/sacloud-otel-collector/config.yaml
YAML
receivers:
  filelog/messages:
    include:
      - /var/log/messages
    start_at: end

processors:
  resourcedetection:
    detectors: [system]
    system:
      hostname_sources: [os]

# You should set environment variables SACLOUD_*
exporters:
  debug:
  sacloud:
    logs:
      endpoint: "${SACLOUD_LOGS_ENDPOINT}"
      token: "${SACLOUD_LOGS_TOKEN}"

service:
  pipelines:
    logs:
      receivers:
        - filelog/messages
      processors:
        - resourcedetection
      exporters:
        - sacloud

ログストレージのキーを作ったときの値を入力します。

# cp -ip /etc/default/sacloud-otel-collector /etc/default/sacloud-otel-collector.back
# vim /etc/default/sacloud-otel-collector

OTELCOL_OPTIONS="--config=/etc/sacloud-otel-collector/config.yaml"
# SACLOUD_METRICS_ENDPOINT=123456789012
# SACLOUD_METRICS_TOKEN=met-xxxx
 SACLOUD_LOGS_ENDPOINT=1234567890
 SACLOUD_LOGS_TOKEN=log-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
# SACLOUD_TRACES_ENDPOINT=123456789012
# SACLOUD_TRACES_TOKEN=trc-xxxx

起動させます。

# systemctl enable sacloud-otel-collector
# systemctl start sacloud-otel-collector

問題なさそうならしばらく放っておきます。

実際に出力されたログ

json形式で出力されます。

JSON



8 items
log_name:"default"
resource_labels
:
{
}
0 items
timestamp:"2026-08-19T07:21:18.372513Z"
severity:"DEFAULT"
labels
:
{
}
0 items
text_payload:"Aug 19 16:21:17 XXXXXXXXXXXXXXXXXX systemd[1]: Removed slice User Slice of UID 26."
resource_attributes
:
{
2 items
host.name:"XXXXXXXXXXXXXXXXXX "
os.type:"linux"
}
attributes
:
{
1 item
log.file.name:"messages"
}
}

出力されています。

まとめ

サーバのログをさくらのクラウド環境に保管することができました。

ログの集約や、ログからのアラート設定などが可能になります。

AWSでいうと CloudWatch logs です。

メトリクスの作成もできるので、cloudwatch の設定を自分で作るというのが概念として理解しやすいかもしれません。

  • さくらの環境でサーバを用意せずにログを集約、保管したい
  • AWSからさくらの環境に移した際にCloudwatch と同じようなことをしたい

というときに有効かと思います。

ぜひご検討ください。

ここまで読んでいただきありがとうございました。

この記事を書いた人

アミー

ネットアシスト案件チーム所属

さくらのクラウド検定 2024年 第1回試験 合格済み

AWS SAA