Simple Log Service (SLS) コンソールで Logtail 構成を作成し、Linux サーバーから Syslog データを収集します。
仕組み

Linux サーバーでは、rsyslog などの Syslog エージェントがローカルの Syslog データを指定された IP アドレスとポートに転送します。Logtail はそのアドレスとポートでリッスンし、TCP または UDP 経由でデータを受信し、設定された Syslog プロトコルに従って解析して、ファシリティ、タグ (プログラム)、セベリティ、コンテンツなどのフィールドを抽出します。
前提条件
プロジェクトと標準 Logstore が作成されていること。詳細については、「プロジェクトの管理」および「基本的な Logstore の作成」をご参照ください。
この機能は Linux のみをサポートし、最新バージョンの Logtail が必要です。「Linux サーバーに Logtail をインストールする」をご参照ください。
操作手順
以下の手順では、Elastic Compute Service (ECS) インスタンスを例として使用します。
SLS コンソールにログインします。
データのインポート セクションで、カスタムデータプラグイン を選択します。
-
プロジェクトと Logstore を選択します。次に、[次へ] をクリックします。
-
マシングループを作成します。
-
利用可能なマシングループがある場合は、[既存のマシングループを使用] をクリックします。
-
利用可能なマシングループがない場合は、以下の手順でマシングループを作成します。この例では、ECS インスタンスを使用します。
-
[ECS インスタンス] タブで、[インスタンスの手動選択] を選択します。次に、使用する ECS インスタンスを選択し、[作成] をクリックします。
詳細については、「ECS インスタンスに Logtail をインストールする」をご参照ください。
重要お使いのサーバーが SLS とは異なる Alibaba Cloud アカウントに属する ECS インスタンス、データセンター内のサーバー、またはサードパーティのクラウドサービスプロバイダーのサーバーである場合は、サーバーに Logtail を手動でインストールする必要があります。詳細については、「Linux サーバーに Logtail をインストールする」または「Windows サーバーに Logtail をインストールする」をご参照ください。Logtail を手動でインストールした後、サーバーのユーザー識別子を設定する必要があります。詳細については、「ユーザー識別子の設定」をご参照ください。
-
設定を確認したら、[OK] をクリックします。
-
Logtail のインストール後、[インストールを完了] をクリックします。
-
[マシングループの作成] ステップで、[名前] パラメーターを設定し、[次へ] をクリックします。
SLS では、IP アドレスベースのマシングループとカスタム識別子ベースのマシングループを作成できます。詳細については、「IP アドレスベースのマシングループの作成」および「カスタム識別子ベースのマシングループの作成」をご参照ください。
-
-
-
マシングループが [適用済みサーバーグループ] セクションに表示されていることを確認し、[次へ] をクリックします。
重要マシングループを作成した直後に適用すると、マシングループのハートビートステータスが [FAIL] になることがあります。この問題は、マシングループが SLS に接続されていないために発生します。この問題を解決するには、[自動再試行] をクリックします。問題が解決しない場合は、「Logtail でハートビート接続が検出されない場合の対処法」をご参照ください。
データソースの設定 タブで、設定名 を設定し、次のスクリプトをコピーして プラグイン設定 フィールドに貼り付け、次へ をクリックします。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "tcp://0.0.0.0:9000", "ParseProtocol": "rfc3164" } }, { "type": "service_syslog", "detail": { "Address": "udp://0.0.0.0:9001", "ParseProtocol": "rfc3164" } } ] }パラメーター:
パラメーター
タイプ
必須
説明
type文字列
はい
データソースのタイプ。
service_syslogに設定します。Address文字列
いいえ
リッスンするエンドポイント。フォーマット:
[tcp/udp]://[ip]:[port]。デフォルト:tcp://127.0.0.1:9999(ローカルサーバーのみ)。説明Logtail 構成で指定されたプロトコル、アドレス、ポート番号は、rsyslog 設定ファイルの転送ルールと一致している必要があります。
Logtail がインストールされているサーバーにログを受信できる複数の IP アドレスがある場合、アドレスを
0.0.0.0に設定して、サーバーのすべての IP アドレスでリッスンできます。
ParseProtocol文字列
いいえ
解析プロトコル。デフォルト:空 (解析なし)。有効な値:
空:ログは解析されません。
rfc3164:RFC 3164 プロトコルを使用してログを解析します。
rfc5424:RFC 5424 プロトコルを使用してログを解析します。
auto:ログの内容に基づいて適切なプロトコルが自動的に選択されます。
IgnoreParseFailureboolean
いいえ
解析が失敗した場合のアクション。デフォルト:
true(解析をスキップし、生ログをcontentフィールドに書き込みます)。解析不可能なログを破棄するにはfalseに設定します。AutoConfigRsyslogboolean
いいえ
rsyslog 転送を自動的に設定するかどうかを指定します。デフォルト:
false。trueに設定すると、LoongCollectorは自動的に/etc/rsyslog.d/に転送設定ファイルを作成し、rsyslogd を再起動します。LoongCollector3.3.9 以降が必要です。LoongCollectorが root 以外のユーザーとして実行されている場合、この機能は自動的にスキップされ、警告ログが出力されます。通常のログ収集には影響しません。RsyslogFiltersstring[]
いいえ
収集するログのファシリティとセベリティレベルをフィルタリングするための rsyslog 転送ルールを指定します。標準の rsyslog フィルター構文 (
facility.severity) を使用します。デフォルト:*.*(すべてのログ)。例:["auth.warning","authpriv.warning","kern.err","daemon.info"]。AutoConfigRsyslogがtrueに設定されている場合にのみ有効です。重要root 権限が必要 —
/etc/rsyslog.d/への書き込みと rsyslogd の再起動には root 権限が必要です。LoongCollectorが root 以外のユーザーとして実行されている場合、この機能は自動的にスキップされ、警告ログが出力されます。通常のログ収集には影響しません。デフォルトで無効 —
AutoConfigRsyslogのデフォルトはfalseであり、既存の動作を変更しません。この機能は、明示的にtrueに設定された場合にのみ有効になります。設定の更新 —
AddressまたはRsyslogFiltersが変更されると、LoongCollectorは自動的に rsyslog 転送設定を更新し、rsyslogd を再起動します。新しい設定と既存の設定が同一である場合、不要なサービスの中断を避けるために再起動はスキップされます。手動設定との関係 — すでに rsyslog 転送を手動で設定している場合は、
AutoConfigRsyslogを有効にする前に手動設定を削除して、ログの重複転送を防いでください。複数の収集設定 — 複数の
service_syslog収集設定で同時にAutoConfigRsyslogを有効にできます。各設定は個別の rsyslog 転送設定ファイルを生成します (ファイル名にはconfigNameが含まれます)。これらのファイルは互いに競合しません。rsyslogd のみサポート — 自動設定と再起動は rsyslogd のみでサポートされています。syslog-ng などの他の syslog 転送デーモンはサポートされていません。
転送設定の詳細
自動生成される rsyslog 転送設定ファイルは、次の命名規則に従います:
10-loongcollector-{configName}.conf10- プレフィックス — rsyslog ファイルの読み込み順序を制御します。
/etc/rsyslog.d/内のファイルはアルファベット順に読み込まれます。10-プレフィックスにより、転送ルールがシステムのデフォルトルール (通常は50-default.conf) の前に読み込まれるため、ローカルルールが適用される前にログが転送されます。転送ルールは、後続のルール (ローカルファイルへの書き込みなど) をブロックしません。{configName} —
LoongCollectorの収集設定名に対応します。複数の収集設定で同時に自動転送を有効にしても競合は発生しません。ファイル権限 —
0644(所有者:root、他のユーザーによる読み取り可能) であり、/etc/rsyslog.d/配下の既存ファイルと一致します。
rsyslog の再起動シナリオ
AutoConfigRsyslogが有効な場合の各シナリオで rsyslogd が再起動されるかどうかを次の表に示します。シナリオ
rsyslog の再起動
収集設定の初回配信
はい
差分のある設定変更 (Address のプロトコル、IP、またはポートの変更、あるいは
RsyslogFiltersの変更)はい
差分のない設定変更 (内容の変更なし)
いいえ
収集設定の削除
はい
LoongCollectorの終了いいえ (転送設定は保持されます。rsyslog はキューを使用してログをバッファリングし、
LoongCollectorの再起動後に転送が自動的に再開されます)クエリと分析の設定 タブで、自動インデックスの生成 をクリックします。この時点ではデータは収集されません。次へ をクリックして Logtail 構成を完了します。
送信先の Logstore で、収集された Syslog データを表示します。クエリと分析のクイックスタート
ログフィールド
フィールド | 説明 |
| ログで提供されていない場合、現在のホストのホスト名がデフォルトになります。 |
| Syslog プロトコルのタグフィールド。 |
| Syslog プロトコルの優先度フィールド。 |
| Syslog プロトコルのファシリティフィールド。 |
| Syslog プロトコルのセベリティフィールド。 |
| ログのタイムスタンプ。 |
| ログのコンテンツ。解析が失敗した場合、このフィールドには生ログの完全なコンテンツが含まれます。 |
| 現在のホストの IP アドレス。 |
| ログを送信するクライアントの IP アドレス。 |
その他の例
Nginx ログ
Nginx は、Syslog プロトコルを介したアクセスログの転送をネイティブにサポートしています。Nginx のアクセスログを含むすべてのサーバーデータを Syslog 経由で SLS に一元的に収集するには、Logtail 構成を作成します。
「Linux Syslog の収集」で説明されているように Logtail 構成を作成します。
次のコードは、プラグイン設定 スクリプトのサンプルです。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "udp://127.0.0.1:9001", "ParseProtocol": "rfc3164" } } ] }Nginx の転送ルールを追加します。
nginx.conf に転送ルールを追加します。設定構造については、Nginx の公式ドキュメントをご参照ください。
例:
server { ... # Add this line. access_log syslog:server=127.0.0.1:9001,facility=local7,tag=nginx,severity=info combined; ... }次のコマンドを実行して Nginx サービスを再起動し、設定を有効にします。
sudo service nginx restart
ファイアウォールログ
ファイアウォールは通常、Syslog プロトコルを介したログの転送をサポートしています。ファイアウォールログを SLS に一元的に収集する (たとえば、SIEM を構築する) には、Logtail 構成を作成します。
「Linux Syslog の収集」で説明されているように Logtail 構成を作成します。
次のコードは、プラグイン設定 スクリプトのサンプルです。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "udp://0.0.0.0:9001", "ParseProtocol": "rfc3164" } } ] }お使いのファイアウォールのドキュメントに従って転送ルールを追加します。この例では、Logtail サーバーの IP は 10.20.30.40 です。

トラブルシューティング
Logtail の設定後にデータが表示されない場合は、logger コマンドを実行してテストデータをローカルの Logtail インスタンスに送信します。これにより、問題がデータソース、ネットワーク、または Logtail のいずれにあるかを切り分けることができます。
ローカルの Logtail インスタンスがデータを受信した場合、問題はデータソースまたはネットワークにある可能性が高いです。
logger -n localhost -P 9000 -T "This is a TCP syslog message"
logger -n localhost -P 9001 -d "This is a UDP syslog message"