Azure Monitor エージェントを使用して Syslog イベントを収集する

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

Syslog は、Linux に共通のイベント ログ プロトコルです。 Linux デバイスおよびアプライアンスに組み込まれている Syslog デーモンを使用して、指定したタイプのローカル イベントを収集できます。 その後、それらのイベントを Log Analytics ワークスペースに送信させることができます。 アプリケーションでは、ローカル コンピューターへの保存または Syslog コレクターへの配信が可能なメッセージが送信されます。

Linux 用 Azure Monitor エージェントがインストールされると、データ収集ルール (DCR) で Syslog 収集が有効になっている場合に、エージェントにメッセージを転送するようにローカル Syslog デーモンが構成されます。 次に、Azure Monitor エージェントは、メッセージを Azure Monitor または Log Analytics ワークスペースに送信し、送信先で対応する Syslog レコードが Syslog テーブルに作成されます。

Syslog の収集を示す図。

Syslog デーモンと Azure Monitor エージェントの通信を示す図。

Syslog コレクターでは、次のファシリティがサポートされています。

  • なし
  • Kern
  • user
  • mail
  • daemon
  • auth
  • syslog
  • lpr
  • news
  • uucp
  • ftp
  • ntp
  • 監査
  • アラート
  • mark
  • local0
  • local1
  • local2
  • local3
  • local4
  • local5
  • local6
  • local7

Azure Monitor エージェントのローカル インストールを許可しない一部の種類のデバイスの場合は、代わりに、Linux ベースの専用ログ フォワーダーにエージェントをインストールできます。 転送元のデバイスは、ローカル デーモンではなく、このフォワーダー上の Syslog デーモンに Syslog イベントを送信するように構成されている必要があります。 詳細については、「Sentinel チュートリアル」をご覧ください。

Configure Syslog

Linux 用 Azure Monitor エージェントは、構成で指定されているファシリティと重大度のイベントだけを収集します。 Azure Portal を通じて、または Linux エージェントで構成ファイルを管理することによって、Syslog を構成できます。

Azure Portal での Syslog の構成

Azure Monitor の [データ収集ルール] メニューから Syslog を構成します。 この構成は、各 Linux エージェントの構成ファイルに配信されます。

  1. [Add data source (データ ソースの追加)]を選択します。
  2. [データ ソースの種類] で、[Linux syslog] を選択します。

ファシリティごとに異なるログ レベルで Syslog イベントを収集できます。 既定では、すべての Syslog のファシリティの種類が収集されます。 たとえば、auth の種類のイベントを収集したくない場合は、auth ファシリティの [最小ログ レベル] リスト ボックスで [なし] を選択し、変更を保存します。 Syslog イベントの既定のログ レベルを変更し、ログ レベルがNOTICE 以上の優先順位のイベントのみを収集する必要がある場合は、[最小ログ レベル] リスト ボックスで [LOG_NOTICE] を選択します。

既定では、すべての構成変更は、DCR で構成されているすべてのエージェントに自動的にプッシュされます。

データ収集ルールを作成する

Log Analytics ワークスペースと同じリージョンにデータ収集ルールを作成します。 DCR は、ワークスペースに取り込まれるデータの処理方法を定義できる Azure リソースです。

  1. Azure portal にサインインします。

  2. Monitor を検索して開きます。

  3. [設定] の下にある [データ収集ルール] を選択します。

  4. [作成] を選択します

    [作成] オプションが選択された [データ コレクション ルール] ウィンドウを示すスクリーンショット。

リソースを追加する

  1. [リソースの追加] を選択します。

  2. フィルターを使用して、ログの収集に使用したい仮想マシンを検索します。

    データ収集ルールの範囲を選択するページを示すスクリーンショット。

  3. 仮想マシンを選択します。

  4. [適用] を選択します。

  5. [次へ: 収集と配信] を選択します。

データ ソースの追加

  1. [Add data source (データ ソースの追加)]を選択します。

  2. [データ ソースの種類] で、[Linux syslog] を選択します。

    データ ソースの種類と最小ログ レベルを選択するページを示すスクリーンショット。

  3. [最小のログ レベル] は、既定値 LOG_DEBUG のままにします。

  4. [次へ: ターゲット] を選択します。

宛先の追加

  1. [ターゲットの追加] を選択します。

    [宛先を追加] オプションが選択された [宛先] タブを示すスクリーンショット。

  2. 次の値を入力します。

    フィールド
    変換先の型 Azure Monitor ログ
    サブスクリプション 適切なサブスクリプションを選択します
    アカウントまたは名前空間 適切な Log Analytics ワークスペースを選択します
  3. [Add data source (データ ソースの追加)]を選択します。

  4. 確認と作成 をクリックします。

規則を作成する

  1. [作成] を選択します
  2. 20 分待ってから、次のセクションに進んでください。

VM に Azure Monitor エージェントがインストールされていない場合、DCR デプロイによって VM へのエージェントのインストールがトリガーされます。

Linux エージェントでの Syslog の構成

Azure Monitor エージェントが Linux マシンにインストールされると、DCR で Syslog が有効になっている場合に収集されるメッセージのファシリティと重大度を定義する既定の Syslog 構成ファイルがインストールされます。 クライアントにインストールされている Syslog デーモンによって、構成ファイルは異なります。

Rsyslog

多くの Linux ディストリビューションでは、rsyslogd デーモンは、Linux Syslog API を使用して送信されたログ メッセージの使用、格納、ルーティングの役割を担います。 Azure Monitor エージェントは、rsyslog の TCP 転送出力モジュール (omfwd) を使用して、ログ メッセージを Azure Monitor エージェントに転送します。

Azure Monitor エージェントのインストールには、次のディレクトリに配置される既定の構成ファイルが含まれています: /etc/opt/microsoft/azuremonitoragent/syslog/rsyslogconf/

Syslog が DCR に追加されると、これらの設定ファイルは etc/rsyslog.d システム ディレクトリにインストールされ、変更を有効にするために rsyslog が自動的に再起動されます。 これらのファイルは、出力モジュールを読み込み、定義されたルールを使用して Azure Monitor エージェント デーモンにイベントを転送するために、rsyslog によって使用されます。

既定の内容を次の例に示します。 この例では、ローカル エージェントから送信された、すべてのログ レベルのすべてのファシリティの Syslog メッセージを収集します。

$ cat /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
# 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")

CentOS 7.3 などの一部のレガシ システムでは、従来の転送形式を使用して Syslog イベントを Azure Monitor エージェントに送信すると、rsyslog ログの形式に関する問題が発生することが確認されています。 これらのシステムの場合、Azure Monitor エージェントは代わりに従来のフォワーダー テンプレートを自動的に配置します。

template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%\n")

Syslog-ng

syslog-ng の構成ファイルは、/etc/opt/microsoft/azuremonitoragent/syslog/syslog-ngconf/azuremonitoragent-tcp.conf にインストールされます。 Syslog 収集が DCR に追加されると、この設定ファイルは /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf システム ディレクトリに配置され、変更を有効にするために syslog-ng が自動的に再起動されます。

既定の内容を次の例に示します。 この例では、ローカル エージェントから送信された、すべてのファシリティのすべての重大度の Syslog メッセージを収集します。

$ cat /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf 
# Azure MDSD configuration: syslog forwarding config for mdsd agent
options {};

# during install time, we detect if s_src exist, if it does then we
# replace it by appropriate source name like in redhat 's_sys'
# Forwrding using tcp
destination d_azure_mdsd {
	network("127.0.0.1" 
	port(28330)
	log-fifo-size(25000));			
};

log {
	source(s_src); # will be automatically parsed from /etc/syslog-ng/syslog-ng.conf
	destination(d_azure_mdsd);
	flags(flow-control);
};

Note

Azure Monitor では、rsyslog または syslog-ng によって送信されたメッセージの収集がサポートされています。rsyslog は既定のデーモンです。 Syslog イベントの収集に関して、バージョン 5 の Red Hat Enterprise Linux、CentOS、Oracle Linux 版の既定の Syslog デーモン (sysklog) はサポートされません。 このバージョンの各種ディストリビューションから Syslog データを収集するには、rsyslog デーモンをインストールし、sysklog を置き換えるように構成する必要があります。

Syslog 構成を編集した場合、変更を有効にするには、Syslog デーモンを再起動する必要があります。

前提条件

必要なもの:

Syslog レコードのプロパティ

Syslog レコードの型は Syslog になり、次の表に示すプロパティがあります。

プロパティ 説明
Computer イベントが収集されたコンピューター。
Facility メッセージを生成したシステムの部分を定義します。
HostIP メッセージを送信するシステムの IP アドレスです。
HostName メッセージを送信するシステムの名前です。
SeverityLevel イベントの重大度レベルです。
SyslogMessage メッセージのテキストです。
ProcessID メッセージを生成したプロセスの ID です。
EventTime イベントが生成された日時です。

Syslog レコードのログ クエリ

次の表は、Syslog レコードを取得するログ クエリのさまざまな例をまとめたものです。

クエリ 説明
syslog すべての Syslog
Syslog | where SeverityLevel == "error" 重大度がエラーであるすべての Syslog レコード
Syslog | where Facility == "auth" ファシリティの種類が auth (認証) であるすべての Syslog レコード
Syslog | summarize AggregatedValue = count() by Facility ファシリティごとの Syslog レコードの数

次のステップ

各項目の詳細情報