【ProxmoxVE】rsyslogの導入と設定

Proxmoxを本番利用しようと考えたときに、監視は必須になります。
Proxmoxは素の状態だとGotify・Sendmail・SMTPの3種類の通知方法が利用できますが、環境制約や利用中の監視ソフトによってはこれらでは対応できないこともあると思います。
というよりも、私が業務上利用してきた監視ソフトでは対応できない可能性が高いです。（Sendmail・SMTPは使えるような気もしますが、監視ソフトとの連携ではあまり使われないような・・・？？）

なので、比較的利用されることが多いと思われるrsyslog・snmpdの導入をしてみようと思います。今回はrsyslogです。

### 前提
ProxmoxVEバージョンは8.2-1です。
本番利用の際は、セキュリティ制約でインターネット接続不可であることも少なくないと思いますので、非インターネット環境を想定して、apt-get以外の方法で導入してみます。

### 環境
以下のような環境にて試しています。
![PVE検証イメージ図v2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3868024/42d73de1-395c-c9bc-9a6b-d967ea0dbcc9.png)
監視ソフトとしてZabbixを準備していますが、今回は出てきません。

### debパッケージの入手
rsyslogの導入にあたり、下記パッケージをダウンロードし、Proxmoxへscpで配置しました。
・libc6_2.36-9+deb12u8_amd64.deb
・libestr0_0.1.11-1_amd64.deb
・libfastjson4_1.2304.0-1_amd64.deb
・liblognorm5_2.0.6-4_amd64.deb
・libsystemd0_252.30-1~deb12u2_amd64.deb
・libuuid1_2.38.1-5+deb12u1_amd64.deb
・libzstd1_1.5.4+dfsg2-5_amd64.deb
・zlib1g_1.2.13.dfsg-1_amd64.deb
・rsyslog_8.2302.0-1_amd64.deb

依存関係やバージョンの調べ方は以前の記事（[【ProxmoxVE】apt-get出来ない環境での追加パッケージ確認方法](https://qiita.com/i_bushclover/items/8cf6aaa2ac6280254898)）を参考にどうぞ。

### パッケージのインストール
dpkg -iにて一つずつ導入しました。
インストール順は上で書いたパッケージの順序です。
<details><summary>dpkg -iでのrsyslog導入・コマンドと結果</summary>

```
root@pve104:/var/tmp/20240909_install_rsyslog# dpkg -i libc6_2.36-9+deb12u8_amd64.deb
(Reading database ... 47925 files and directories currently installed.)
Preparing to unpack libc6_2.36-9+deb12u8_amd64.deb ...
Unpacking libc6:amd64 (2.36-9+deb12u8) over (2.36-9+deb12u6) ...
Setting up libc6:amd64 (2.36-9+deb12u8) ...
Processing triggers for libc-bin (2.36-9+deb12u6) ...
root@pve104:/var/tmp/20240909_install_rsyslog#

root@pve104:/var/tmp/20240909_install_rsyslog# dpkg -i libestr0_0.1.11-1_amd64.deb
Selecting previously unselected package libestr0:amd64.
(Reading database ... 47925 files and directories currently installed.)
Preparing to unpack libestr0_0.1.11-1_amd64.deb ...
Unpacking libestr0:amd64 (0.1.11-1) ...
Setting up libestr0:amd64 (0.1.11-1) ...
Processing triggers for libc-bin (2.36-9+deb12u6) ...
root@pve104:/var/tmp/20240909_install_rsyslog#

root@pve104:/var/tmp/20240909_install_rsyslog# dpkg -i libfastjson4_1.2304.0-1_amd64.deb
Selecting previously unselected package libfastjson4:amd64.
(Reading database ... 47931 files and directories currently installed.)
Preparing to unpack libfastjson4_1.2304.0-1_amd64.deb ...
Unpacking libfastjson4:amd64 (1.2304.0-1) ...
Setting up libfastjson4:amd64 (1.2304.0-1) ...
Processing triggers for libc-bin (2.36-9+deb12u6) ...
root@pve104:/var/tmp/20240909_install_rsyslog#

root@pve104:/var/tmp/20240909_install_rsyslog# dpkg -i liblognorm5_2.0.6-4_amd64.deb
Selecting previously unselected package liblognorm5:amd64.
(Reading database ... 47937 files and directories currently installed.)
Preparing to unpack liblognorm5_2.0.6-4_amd64.deb ...
Unpacking liblognorm5:amd64 (2.0.6-4) ...
Setting up liblognorm5:amd64 (2.0.6-4) ...
Processing triggers for libc-bin (2.36-9+deb12u6) ...
root@pve104:/var/tmp/20240909_install_rsyslog#

root@pve104:/var/tmp/20240909_install_rsyslog# dpkg -i libsystemd0_252.30-1~deb12u2_amd64.deb
(Reading database ... 47943 files and directories currently installed.)
Preparing to unpack libsystemd0_252.30-1~deb12u2_amd64.deb ...
Unpacking libsystemd0:amd64 (252.30-1~deb12u2) over (252.22-1~deb12u1) ...
Setting up libsystemd0:amd64 (252.30-1~deb12u2) ...
Processing triggers for libc-bin (2.36-9+deb12u6) ...
root@pve104:/var/tmp/20240909_install_rsyslog#

root@pve104:/var/tmp/20240909_install_rsyslog# dpkg -i libuuid1_2.38.1-5+deb12u1_amd64.deb
(Reading database ... 47943 files and directories currently installed.)
Preparing to unpack libuuid1_2.38.1-5+deb12u1_amd64.deb ...
Unpacking libuuid1:amd64 (2.38.1-5+deb12u1) over (2.38.1-5+deb12u1) ...
Setting up libuuid1:amd64 (2.38.1-5+deb12u1) ...
Processing triggers for libc-bin (2.36-9+deb12u6) ...
root@pve104:/var/tmp/20240909_install_rsyslog#

root@pve104:/var/tmp/20240909_install_rsyslog# dpkg -i libzstd1_1.5.4+dfsg2-5_amd64.deb
(Reading database ... 47943 files and directories currently installed.)
Preparing to unpack libzstd1_1.5.4+dfsg2-5_amd64.deb ...
Unpacking libzstd1:amd64 (1.5.4+dfsg2-5) over (1.5.4+dfsg2-5) ...
Setting up libzstd1:amd64 (1.5.4+dfsg2-5) ...
Processing triggers for libc-bin (2.36-9+deb12u6) ...
root@pve104:/var/tmp/20240909_install_rsyslog#

root@pve104:/var/tmp/20240909_install_rsyslog# dpkg -i zlib1g_1.2.13.dfsg-1_amd64.deb
(Reading database ... 47943 files and directories currently installed.)
Preparing to unpack zlib1g_1.2.13.dfsg-1_amd64.deb ...
Unpacking zlib1g:amd64 (1:1.2.13.dfsg-1) over (1:1.2.13.dfsg-1) ...
Setting up zlib1g:amd64 (1:1.2.13.dfsg-1) ...
Processing triggers for libc-bin (2.36-9+deb12u6) ...
root@pve104:/var/tmp/20240909_install_rsyslog#

root@pve104:/var/tmp/20240909_install_rsyslog# dpkg -i rsyslog_8.2302.0-1_amd64.deb
(Reading database ... 47943 files and directories currently installed.)
Preparing to unpack rsyslog_8.2302.0-1_amd64.deb ...
Unpacking rsyslog (8.2302.0-1) over (8.2302.0-1) ...
Setting up rsyslog (8.2302.0-1) ...
Created symlink /etc/systemd/system/syslog.service → /lib/systemd/system/rsyslog.service.
Created symlink /etc/systemd/system/multi-user.target.wants/rsyslog.service → /lib/systemd/system/rsyslog.service.
Processing triggers for man-db (2.11.2-2) ...
root@pve104:/var/tmp/20240909_install_rsyslog#
```
</details>

### syslog転送の簡易設定
１．/etc/rsyslog.confファイルにもともと記載されている定義をすべてコメントアウト
２．「*.* @@<転送先IP>:514」を追加
３．rsyslogサービスの再起動（systemctl restart rsyslog）

<details><summary>修正したrsyslog.conf全量</summary>

```
root@pve104:/var/tmp/20240909_install_rsyslog# cat /etc/rsyslog.conf
# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
#module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")


###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf


###############
#### RULES ####
###############

#
# Log anything besides private authentication messages to a single log file
#
#*.*;auth,authpriv.none         -/var/log/syslog

#
# Log commonly used facilities to their own log file
#
#auth,authpriv.*                        /var/log/auth.log
#cron.*                         -/var/log/cron.log
#kern.*                         -/var/log/kern.log
#mail.*                         -/var/log/mail.log
#user.*                         -/var/log/user.log

#
# Emergencies are sent to everybody logged in.
#
#*.emerg                                :omusrmsg:*

*.* @@192.168.100.208:514
root@pve104:/var/tmp/20240909_install_rsyslog#
```
</details>

１については、ProxmoxVE8.2-1はもともとrsyslogは導入されていない環境ですので、不用意にログを増やさないようコメントアウトしました。ログ管理設定をしっかい行ったうえであれば、コメントアウトしなくても良いと思います。

２については、今回はとりあえずのテストなので全ログを転送対象としましたが、本番環境でもログ保管などを考慮すると絞り込まなくても良いと思います。ログ保管の要件が定められている場合もありますし。

またPriorityで絞り込む場合は、warn以上ではなくinfo以上にした方が良いと思います。NWが冗長化されている環境限定かもしれませんが、LinkDownがinfoレベルで出力されます。
検証環境でLinkDown/Upした際のログはこんな感じでした。（syslog受信側でpriorityを出力するようにしています。）

■LinkDown
```
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037343] bond0: (slave ens18): link status definitely down, disabling slave
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037350] bond0: (slave ens19): making interface the new active one
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037354] virtio_net virtio1 ens18: left promiscuous mode
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037532] virtio_net virtio1 ens18: left allmulticast mode
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037583] virtio_net virtio2 ens19: entered promiscuous mode
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037624] virtio_net virtio2 ens19: entered allmulticast mode
```

■LinkUp
```
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037343] bond0: (slave ens18): link status definitely down, disabling slave
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037350] bond0: (slave ens19): making interface the new active one
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037354] virtio_net virtio1 ens18: left promiscuous mode
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037532] virtio_net virtio1 ens18: left allmulticast mode
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037583] virtio_net virtio2 ens19: entered promiscuous mode
Sep 16 23:56:53 pve104 kern.info kernel: [618397.037624] virtio_net virtio2 ens19: entered allmulticast mode
```