rsyslogでのAMA絞り込み収集方法
Azure Monitor Agent(AMA)をLinuxにインストールが成功すると以下のディレクトリと設定ファイルが作成されます。
etc/rsyslog.d/
10-azuremonitoragent-omfwd.conf
「10-azuremonitoragent-omfwd.conf」ファイルはrsyslogにて転送する設定ファイルです。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/agents/data-collection-syslog
# Azure Monitor Agent configuration: forward logs to azuremonitoragent
template(name=”AMA_RSYSLOG_TraditionalForwardFormat” type=”string” string=”<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%”)
# queue.workerThreads sets the maximum worker threads, it will scale back to 0 if there is no activity
# Forwarding all events through TCP port
*.* action(type=”omfwd”
template=”AMA_RSYSLOG_TraditionalForwardFormat”
queue.type=”LinkedList”
queue.filename=”omfwd-azuremonitoragent”
queue.maxFileSize=”32m”
action.resumeRetryCount=”-1″
action.resumeInterval=”5″
action.reportSuspension=”on”
action.reportSuspensionContinuation=”on”
queue.size=”25000″
queue.workerThreads=”100″
queue.dequeueBatchSize=”2048″
queue.saveonshutdown=”on”
target=”127.0.0.1″ Port=”28330″ Protocol=”tcp”)
「*.* action(type=”omfwd”」の行「*.*」部分が、ファシリティ、ログレベルを表しています。
既定では、全選択されているため、DCRで選択したファシリティとログレベルをそのまま取得できます。
今回紹介する方法は、例えばDCRでLocal0のファシリティ、ログレベルをINFOにし、さらにログを取捨選別したときに役立つ方法です。
INFOを取得するが、そのままではログが多すぎて予算オーバーするためログを選別したいときに使う方法です。
*.* action{
➡
rsyslog構文を入力します。
action{
# 具体例
if (
(($syslogfacility-text == 'local0')
and ($msg contains ':53'))
) then
{
action(
… 省略
解説
*.*箇所を消し、rsyslog構文に置き換えます。
具体例の解説をすると ファシリティの「local0」に対し、メッセージ部分は「:53」のみを選択し、actionへ渡す構文となります。
注意
DCRが基本であるため、DCRにファシリティ複数設定したのにもかかわらず、
AMA設定ファイルにてDCRで設定していないファシリティの絞り込み、DCRのファシリティより少ないファシリティをAMAに設定した場合、AMAの設定ファイルに左右されログが転送されなくなりますので設定は自己責任にて行ってください。