Logtail は、バイナリファイルから Linux systemd journal ログを収集します。このトピックでは、Simple Log Service コンソールで Logtail 構成を作成して systemd journal ログを収集する方法について説明します。
前提条件
Linux サーバーに Logtail 0.16.18 以降がインストールされていること。詳細については、「Linux サーバーに Logtail をインストールする」をご参照ください。
概要
systemd は、Linux オペレーティングシステムのシステムおよびサービスマネージャーです。init プロセス (PID=1) として実行されると、ユーザースペースサービスを起動および維持する初期化システムとして機能します。systemd は、カーネルログやアプリケーションログなど、すべてのユニットのログを一元管理します。構成ファイルは通常 /etc/systemd/journald.conf です。
オペレーティングシステムは journal ログフォーマットをサポートしている必要があります。
機能
初期収集位置を設定できます。チェックポイントは後続のデータ収集のために自動的に保存され、プロセスはアプリケーションの再起動の影響を受けません。
指定したユニットをフィルターできます。
カーネルログを収集できます。
ログレベルは自動的に解析されます。
コンテナー内のホストから journal ログを収集できます。この機能は、Docker および Kubernetes のシナリオで役立ちます。
シナリオ
カーネルイベントを監視し、例外に対するアラートを自動的にトリガーします。
すべてのシステムログを収集して長期ストレージに保存し、ディスク領域の使用量を削減します。
分析またはアラートのために、ソフトウェア (ユニット) から出力ログを収集します。
すべての journal ログを収集して、ログをすばやく取得したり、キーワードを検索したりします。これにより、journalctl と比較してクエリ効率が大幅に向上します。
手順
Simple Log Service コンソールにログインします。
[データ収集] エリアで、[カスタムデータプラグイン] を選択します。
プロジェクトと Logstore を選択します。次に、[次へ] をクリックします。
[マシングループ構成] ステップで、マシングループを構成します。
必要に応じて、シナリオとインストール環境のパラメーターを構成します。
重要マシングループが利用可能かどうかにかかわらず、シナリオとインストール環境のパラメーターを構成する必要があります。パラメーター設定は、後続の構成に影響します。
[適用済みサーバーグループ] セクションにマシングループが表示されていることを確認し、[次へ] をクリックします。
利用可能なマシングループ
[ソースマシングループ] セクションからマシングループを選択します。

利用可能なマシングループなし
[マシングループの作成] をクリックします。[マシングループの作成] パネルで、パラメーターを構成します。[マシングループ識別子] パラメーターを [IP アドレス] または [カスタム識別子] に設定できます。詳細については、「カスタム識別子ベースのマシングループを作成する」または「IP アドレスベースのマシングループを作成する」をご参照ください。
重要マシングループを作成した直後に適用すると、マシングループのハートビートステータスが [FAIL] になる場合があります。この問題は、マシングループが Simple Log Service に接続されていないために発生します。この問題を解決するには、[自動再試行] をクリックします。問題が解決しない場合は、「Logtail でハートビート接続が検出されない場合の対処方法」をご参照ください。
[データソース設定] タブで、[構成名] と [プラグイン構成] を設定し、[次へ] をクリックします。
{ "inputs": [ { "detail": { "JournalPaths": [ "/var/log/journal" ], "Kernel": true, "ParsePriority": true, "ParseSyslogFacility": true }, "type": "service_journal" } ] }パラメーター
タイプ
必須
説明
type
文字列
はい
データソースのタイプ。これを service_journal に設定します。
JournalPaths
文字列配列
はい
journal ログのパス。これを、/var/log/journal など、journal ログが保存されているディレクトリに設定することをお勧めします。
SeekPosition
文字列
いいえ
Logtail が初めてログの収集を開始する位置。これを head または tail に設定できます。デフォルト値は tail です。
head: 既存のすべてのデータを収集します。
tail: Logtail 構成が適用された後に生成された新しいデータのみを収集します。
Kernel
boolean
いいえ
カーネルログを収集するかどうかを指定します。デフォルト値は true で、カーネルログが収集されることを示します。
Units
文字列配列
いいえ
ログを収集するユニットのリスト。デフォルトでは、このパラメーターは空で、すべてのユニットからログが収集されることを示します。
ParseSyslogFacility
boolean
いいえ
syslog ログの facility フィールドを解析するかどうかを指定します。デフォルト値は false です。このパラメーターを構成しない場合、フィールドは解析されません。
ParsePriority
boolean
いいえ
Priority フィールドを解析するかどうかを指定します。デフォルト値は false です。このパラメーターを構成しない場合、フィールドは解析されません。
これを true に設定すると、Priority フィールドは次のマッピングに基づいて解析されます。
"0": "emergency" "1": "alert" "2": "critical" "3": "error" "4": "warning" "5": "notice" "6": "informational" "7": "debug"UseJournalEventTime
boolean
いいえ
journal ログのフィールドをログ時間として使用するかどうかを指定します。デフォルト値は false です。このパラメーターを構成しない場合、収集時間がログ時間として使用されます。
リアルタイムログ収集の場合、時間差は通常 3 秒以内です。
インデックスを作成し、データをプレビューします。次に、[次へ] をクリックします。デフォルトでは、Simple Log Service でフルテキストインデックスが有効になっています。収集したログのフィールドインデックスを手動で作成するか、[インデックスの自動生成] をクリックすることもできます。その後、Simple Log Service はフィールドインデックスを生成します。詳細については、「インデックスの作成」をご参照ください。
重要ログ内のすべてのフィールドをクエリする場合は、フルテキストインデックスを使用することをお勧めします。特定のフィールドのみをクエリする場合は、フィールドインデックスを使用することをお勧めします。これにより、インデックストラフィックを削減できます。フィールドを分析する場合は、フィールドインデックスを作成する必要があります。分析には、クエリ文に SELECT 文を含める必要があります。
[ログのクエリ] をクリックします。Logstore のクエリおよび分析ページにリダイレクトされます。
インデックスが有効になるまで約 1 分待つ必要があります。その後、[Raw ログ] タブで収集されたログを表示できます。ログのクエリと分析の方法の詳細については、「ログのクエリと分析のガイド」をご参照ください。
例
例 1
デフォルトの
/var/log/journalディレクトリから journal ログを収集します。収集構成は次のとおりです。{ "inputs": [ { "detail": { "JournalPaths": [ "/var/log/journal" ] }, "type": "service_journal" } ] }ログのサンプル:
MESSAGE: rejected connection from "192.168.0.250:43936" (error "EOF", ServerName "") PACKAGE: embed PRIORITY: 6 SYSLOG_IDENTIFIER: etcd _BOOT_ID: fe919cd1268f4721bd87b5c18afe59c3 _CAP_EFFECTIVE: 0 _CMDLINE: /usr/bin/etcd --election-timeout=3000 --heartbeat-interval=500 --snapshot-count=50000 --data-dir=data.etcd --name 192.168.0.251-name-3 --client-cert-auth --trusted-ca-file=/var/lib/etcd/cert/ca.pem --cert-file=/var/lib/etcd/cert/etcd-server.pem --key-file=/var/lib/etcd/cert/etcd-server-key.pem --peer-client-cert-auth --peer-trusted-ca-file=/var/lib/etcd/cert/peer-ca.pem --peer-cert-file=/var/lib/etcd/cert/192.168.0.251-name-3.pem --peer-key-file=/var/lib/etcd/cert/192.168.0.251-name-3-key.pem --initial-advertise-peer-urls https://192.168.0.251:2380 --listen-peer-urls https://192.168.0.251:2380 --advertise-client-urls https://192.168.0.251:2379 --listen-client-urls https://192.168.0.251:2379 --initial-cluster 192.168.0.249-name-1=https://192.168.0.249:2380,192.168.0.250-name-2=https://192.168.0.250:2380,192.168.0.251-name-3=https://192.168.0.251:2380 --initial-cluster-state new --initial-cluster-token abac64c8-baab-4ae6-8412-4253d3cfb0cf _COMM: etcd _EXE: /opt/etcd-v3.3.8/etcd _GID: 995 _HOSTNAME: iZbp1f7y2ikfe4l8nx95amZ _MACHINE_ID: f0f31005fb5a436d88e3c6cbf54e25aa _PID: 10926 _SOURCE_REALTIME_TIMESTAMP: 1546854068863857 _SYSTEMD_CGROUP: /system.slice/etcd.service _SYSTEMD_SLICE: system.slice _SYSTEMD_UNIT: etcd.service _TRANSPORT: journal _UID: 997 __source__: 172.16.1.4 __tag__:__hostname__: logtail-ds-8kqb9 __topic__: _monotonic_timestamp_: 1467135144311 _realtime_timestamp_: 1546854068864309例 2
説明コンテナーを使用してホストから journal ログを収集する場合、次の制限が適用されます。
コンテナー内の systemd バージョンが 247 以前の場合、systemd バージョン 249 以降のホストによって生成された journal ログを収集することはできません。
コンテナー内の systemd バージョンが 249 以降の場合、古いフォーマットと新しいフォーマットの両方を読み取ることができます。
Kubernetes シナリオでは、DaemonSet モードを使用してホストからシステムログを収集できます。ログには重要でないフィールドが多数含まれているため、処理プラグインを使用して重要なログフィールドのみを選択できます。収集構成は次のとおりです。
{ "inputs": [ { "detail": { "JournalPaths": [ "/logtail_host/var/log/journal" ], "ParsePriority": true, "ParseSyslogFacility": true }, "type": "service_journal" } ], "processors": [ { "detail": { "Exclude": { "UNIT": "^libcontainer.*test" } }, "type": "processor_filter_regex" }, { "detail": { "Include": [ "MESSAGE", "PRIORITY", "_EXE", "_PID", "_SYSTEMD_UNIT", "_realtime_timestamp_", "_HOSTNAME", "UNIT", "SYSLOG_FACILITY", "SYSLOG_IDENTIFIER" ] }, "type": "processor_pick_key" } ] }ログのサンプル:
MESSAGE: rejected connection from "192.168.0.251:48914" (error "EOF", ServerName "") PRIORITY: informational SYSLOG_IDENTIFIER: etcd _EXE: /opt/etcd-v3.3.8/etcd _HOSTNAME: iZbp1i0czq3zgvxlx7u8ueZ _PID: 10590 _SYSTEMD_UNIT: etcd.service __source__: 172.16.0.141 __tag__:__hostname__: logtail-ds-dp48x __topic__: _realtime_timestamp_: 1547975837008708
トラブルシューティング
Logtail を使用してログを収集した後、プレビューページまたはクエリページにデータが表示されない場合は、「Logtail を使用してログを収集するときにエラーが発生した場合の対処方法」に記載されている手順に基づいてエラーのトラブルシューティングを行うことができます。