揮発性のメモ2

http://d.hatena.ne.jp/iww/

rsyslogで、ログのフォーマットを設定する

rsyslog.conf にログフォーマットを追加したい大会

f:id:iww:20220406154829p:plain

2022-04-06 15:06:21 foobarbaz(172.16.0.50) INFO<6> UNKO_APP[28204] うんこー!

とりあえずこんな感じにするには

# /etc/rsyslog.d/hoge.conf

# ログファイル名テンプレート
$template HOGE_LOGNAME, "/var/log/hoge/%fromhost-ip%.log"

# ログフォーマットテンプレート
$template HOGE_FORMAT, "%TIMESTAMP:1:10:date-rfc3339% %TIMESTAMP:12:19:date-rfc3339% %hostname%(%fromhost-ip%) %syslogseverity-text:::uppercase%<%syslogseverity%> %syslogtag% %msg%\n"

:fromhost-ip, startswith, "172.16." -?HOGE_LOGNAME;HOGE_FORMAT
& stop

こう


linux.die.net
f:id:iww:20220406154829p:plain

変数名 説明 電文との対応
msg 本文 うんこー!
hostname 電文中のホスト名 foobarbaz
FROMHOST 送信元ホスト名
fromhost-ip 送信元IPアドレス ※マニュアルに載ってない
syslogtag 電文中のアプリ名+PID UNKO_APP[28204]
programname 電文中のアプリ名 UNKO_APP
PRI 電文中のプライオリティ 134
PRI-text 電文中のプライオリティ
のテキスト
local0.info<134>
syslogfacility ファシリティ 16
syslogfacility-text ファシリティのテキスト local0
syslogseverity 重大度 6
syslogseverity-text 重大度のテキスト info
timegenerated ログ受信日時
timereported 電文中の日時 Apr 6 15:06:21
TIMESTAMP 電文中の日時(エイリアス) 同上
STRUCTURED-DATA 構造化データ [unko]
APP-NAME 電文中のアプリ名 UNKO_APP
PROCID 電文中のPID 28204
MSGID 電文中のMSGID 3061

変数のオプションと文字列操作

TIMESTAMP

%TIMESTAMP:::date-rfc3339%で、TIMESTAMPをRFC3339形式で表示。
YYYY-MM-DDThh:mm:ss.xxx+09:00 みたいなやつ

%TIMESTAMP:1:10:date-rfc3339%で、1文字目から10文字目まで(YYYY-MM-DD部分)を取得
%TIMESTAMP:12:19:date-rfc3339%で、12文字目から19文字目まで(hh:mm:ss)を取得

送信元がミリ秒も含めて送信しているときは、12文字目から23文字目までで(hh:mm:ss.xxx)も取得できるけど、ミリ秒が無いときはおかしくなるので注意する

重大度

%syslogseverity-text:::uppercase% で大文字にする(infoをINFOに)



参考: