こんにちは ログどうしてますか?
普段はあまり見なくても支障はありませんが、いざというときに読めないと困りもの
どの程度保存が必要なのかは環境や、各社ごとのポリシーによりけりですが、大量にログ出力が行われるサーバだと、本来のコンテンツ容量以上に、ログ保管用のディスクが必要になってしまう場合があります。
そういった場合の対策としていくつか方法があります
別のサーバを用意し、ログを集約するサーバにする
追加でディスクを用意し、ログ保管のディスクとして利用する
オブジェクトストレージにログを保管する
ログの保存期間を短くなるように調整する
ログを収集できるマネージドサービスを探す
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.yamlreceivers:
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形式で出力されます。
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 と同じようなことをしたい
というときに有効かと思います。
ぜひご検討ください。
ここまで読んでいただきありがとうございました。