# [rsyslog](https://www.rsyslog.com/doc/index.html)
やんごとなき理由により某組織のネットワーク管理を予算ほぼゼロで保守する必要性があり,
数百のネットワーク機器のlogの収集・検索・可視化等を1箇所で行うため,rsyslogを使いsyslog受信からlogstashへlogをforwardingに関する備忘録である.
ChatGPTとかがない時代に試行錯誤して構築したので,最適化されていないと思うがデータフローの概念図はこんな感じ.

当然ならがらsyslogをUTPで受信できるようにファイヤーウォールには穴あけしている.
## rsyslog.conf
デフォルトの設定から変更したもののうちlogstashへのforwaidingに関するもののみ記載している.
まず,ログの取りこぼしがないようにburstとintervalを無制限にする.
```
module(load="imjournal"
StateFile="/var/lib/rsyslog/imjournal.state"
ratelimit.burst="0"
ratelimit.interval="0"
)
```
私の環境ではrsyslogとlogstashは同じホスト上で動いているので,転送先を"0.0.0.0"として
logstashの設定ファイルで定義した適当な待ち受けポートに転送する.
```
if ($fromhost-ip == "xxx.yyy.www.zzz") then {
action(
type="omfwd"
target="0.0.0.0"
port="5044"
protocol="udp"
)
}
```
ドメイン(192.168.11.0/24)で設定する場合は
```
if ($fromhost-ip startswith "192.168.11.") then {
*.*
action(
type="omfwd"
target="0.0.0.0"
port="6647"
protocol="udp"
)
}
```
のようにすれば良い.
geminiに設定に関してたづねるとどうやら最近は新しいRainerScript形式が採用されているらくし,
以下のように提案してきた.これが正しいかは未検証であるが参考までに
```
if ($fromhost-ip startswith "192.168.11.") then {
action(
type="omfwd"
target="0.0.0.0" # LogstashのIP
port="6647"
protocol="udp"
)
stop # これより下の処理(ローカルファイル保存など)を行わない場合は追加
}
```
```{toctree}
:maxdepth: 1
another_page