さくらのクラウド DBアQプライアンスのsyslog転送機能を使ってみた

さくらのクラウドでは、MySQL、PostgreSQL、MariaDB などのマネージドDBサービス(DBアプライアンス)を簡単に利用できます。
Web管理画面上で直接ログを確認可能ですが、運用規模の拡大に伴い、「アプリケーションログと合わせて一元的に管理したい」「監査要件に対応するため外部ストレージにログを保管したい」といったご要望が生じるケースもあります。

そんなときに便利なのが syslog転送機能 です。
現在データベースエンジンがMariaDBの場合のみ利用できますが、
DBアプライアンスから任意のサーバにログを転送し、保存することが可能になります。
今回は、この機能を実際に試し、仮想サーバ上の rsyslog に保存してみた手順を紹介します。

前提として、さくらのクラウド上の仮想サーバ(OS: Almalinux9 )とDBアプライアンス間の接続ができる状態とします。

DBアプライアンス側の設定手順

1.  コントロールパネルさくらのクラウドの管理画面で対象の DBアプライアンスを開きます。
1-Oct-04-2025-01-31-47-6901-PM

2. 設定タブから「syslog転送」を選択し「追加」を選択します。
2-Oct-04-2025-01-31-47-6901-PM

3. 以下項目が表示されるため、各項目を選択します。
3-Oct-04-2025-01-31-47-6901-PM
Facility : ログ送信時のファシリティを local1 , local2 , local3 から選択します。
IPAddress : syslogサーバのIPアドレスを指定します。
LogFile: RDBMSが出力するログファイルから転送対象のログを指定します。
Severity level : 転送対象とする最低ログレベルを指定します。

仮想サーバ側の設定(例: Almaliux9)

1. rsyslogのインストールを行います。

仮想サーバ側の設定(例: Ubuntu / CentOS)
rsyslogの準備

# CentOS / RHEL 系
sudo dnf install -y rsyslog

2. UDPポートを開放します。/etc/rsyslog.d/remote.conf に以下を追加します。
※DB_APPLIANCE_IP は実際のDBアプライアンスのプライベートIPアドレスに置き換えてください。

# UDP受信有効化
module(load="imudp")
input(type="imudp" port="514")

## DBアプライアンス専用のログ保存先を定義
if ($fromhost-ip == "DB_APPLIANCE_IP") then {
    action(type="omfile" file="/var/log/dbappliance.log")
    stop
}

3. rsyslogを再起動し、ファイアウォールの設定を行います。

# rsyslogを再起動
sudo systemctl enable rsyslog

sudo systemctl restart rsyslog

ファイアウォールの設定
sudo firewall-cmd --add-port=514/udp --permanent
sudo firewall-cmd --reload

動作確認

今回はsyslog転送が有効になったかを確認するために、一度DBアプライアンスを再起動し、
サーバー側で起動ログが転送されてきているか確認したところ、問題なくログが転送されていました。

上記設定SQLエラーで表示されない場合、
データベースのパラメータ設定で、log_warningsの値が、Warningsなどになっているかもしれないので、
None等に変更してみて動作を確認してみてください。