すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Linux syslogの収集

最終更新日:Feb 12, 2025

このトピックでは、Simple Log ServiceコンソールでLogtail設定を作成してsyslogを収集する方法について説明します。

実装

实现原理

Linuxサーバーでは、rsyslogなどのsyslogエージェントを使用して、特定のIPアドレスとポートを使用してオンプレミスのsyslogをサーバーに転送できます。 LogtailはIPアドレスとポートをリッスンし、TCPまたはUDPを介して転送されたsyslogを受信し、特定のsyslogプロトコルに基づいてsyslogを解析してから、syslogからファシリティ、タグ (プログラム) 、重大度、コンテンツなどのフィールドを抽出します。

RFC 3164およびRFC 5424で定義されているsyslogプロトコルがサポートされています。 詳細については、「RFC3164」および「RFC5424」をご参照ください。

前提条件

手順

このトピックでは、syslogはElastic Compute Service (ECS) インスタンスから収集されます。

  1. にログインします。Simple Log Serviceコンソール.

  2. [データのインポート] ダイアログボックスで、[カスタムデータプラグイン] を選択します。image

  3. プロジェクトとLogstoreを選択します。 [次へ] をクリックします。

  4. マシングループを作成します。

    • マシングループが利用可能な場合は、[既存のマシングループを使用] をクリックします。

    • 使用可能なマシングループがない場合は、次の手順を実行してマシングループを作成します。 この例では、Elastic Compute Service (ECS) インスタンスが使用されています。

      1. [ECSインスタンス] タブで、[手動でインスタンスを選択] を選択します。 次に、使用するECSインスタンスを選択し、[作成] をクリックします。

        詳細については、「ECSインスタンスへのLogtailのインストール」をご参照ください。

        重要

        お使いのサーバーが、Simple Log Serviceとは異なるAlibaba Cloudアカウントに属するECSインスタンス、データセンター内のサーバー、またはサードパーティのクラウドサービスプロバイダーのサーバーの場合、サーバーにLogtailを手動でインストールする必要があります。 詳細については、「LinuxサーバーにLogtailをインストールする」または「WindowsサーバーにLogtailをインストールする」をご参照ください。 Logtailを手動でインストールした後、サーバーのユーザー識別子を設定する必要があります。 詳細については、「ユーザー識別子の設定」をご参照ください。

      2. 設定を確認したら、[OK] をクリックします。

      3. Logtailをインストールしたら、[インストールの完了] をクリックします。

      4. [マシングループの作成] ステップで、[名前] パラメーターを設定し、[次へ] をクリックします。

        Simple Log Serviceでは、IPアドレスベースのマシングループとカスタム識別子ベースのマシングループを作成できます。 詳細については、「IPアドレスベースのマシングループの作成」および「カスタム識別子ベースのマシングループの作成」をご参照ください。

  5. [応用サーバーグループ] セクションにマシングループが表示されていることを確認し、[次へ] をクリックします。

    重要

    マシングループを作成した直後にマシングループを適用すると、マシングループのハートビートステータスがFAILになる可能性があります。 この問題は、マシングループがSimple Log Serviceに接続されていないために発生します。 この問題を解決するには、[自動再試行] をクリックします。 問題が解決しない場合は、Logtailでハートビート接続が検出されない場合はどうすればよいですか?

  6. データのインポートウィザードの [データソースの設定] ステップで、[設定名] パラメーターを設定し、次の設定スクリプトをコピーして [プラグイン設定] フィールドに貼り付け、[次へ] をクリックします。

    {
         "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"
                 }
             }
         ]
     }

    次の表に、設定スクリプトのパラメーターを示します。

    パラメーター

    必須 / 任意

    説明

    タイプ

    String

    はい

    データソースのタイプ。 値はservice_syslogとして固定されています。

    アドレス

    String

    いいえ

    Logtailのリスナープロトコル、IPアドレス、ポート。 Logtailはログソースをリッスンし、Logtail設定に基づいてログを取得します。 値は [tcp/udp]://[ ip ]:[ port] 形式です。 デフォルト値: tcp:// 127.0.0.1:9999。これは、LogtailがLogtailサーバーに転送されるログのみを受信することを示します。

    説明
    • Logtail設定で指定するリスナープロトコル、IPアドレス、およびポートは、rsyslogの設定ファイルに追加された転送ルールで指定されたものと同じである必要があります。

    • Logtailがインストールされているサーバーが複数のIPアドレスを使用してログを受信する場合は、アドレスを0.0.0.0に設定します。これは、LogtailがサーバーのすべてのIPアドレスをリッスンすることを示します。

    ParseProtocol

    String

    いいえ

    Logtailがログの解析に使用するプロトコル。 このパラメーターはデフォルトでは空のままです。これは、ログが解析されないことを示します。 有効な値:

    • Empty: Logtailはsyslogを解析しません。

    • rfc3164: RFC 3164プロトコルを使用してログを解析します。

    • rfc5424: RFC 5424プロトコルを使用してログを解析します。

    • auto: Logtailは、ログの内容に基づいてプロトコルを自動的に選択します。

    IgnoreParseFailure

    Boolean

    いいえ

    ログの解析に失敗した後、ログに対して操作を実行するかどうかを指定します。 有効な値は、true および false です。 デフォルト値: true。これは、システムがログを解析せず、ログをコンテンツフィールドに追加することを示します。 このパラメーターをfalseに設定すると、ログの解析に失敗した後、システムはログを破棄します。

  7. データのインポートウィザードのクエリと分析の設定ステップで、[自動インデックス生成] をクリックします。 この設定を設定すると、データは収集されません。 データを収集するには、[次へ] をクリックしてLogtail設定を完了します。

  8. syslogを収集するECSインスタンスにログインし、rsyslog転送を設定します。

    1. ECSインスタンスのrsyslogの /etc/rsyslog.conf設定ファイルを変更します。 設定ファイルの末尾に転送ルールを追加します。

      転送ルールが追加されると、rsyslogはsyslogを特定のIPアドレスとポートに転送します。

      • LogtailがECSインスタンスに存在する場合、転送ルールのLogtail設定で指定したIPアドレス127.0.0.1とポートを指定する必要があります。

      • LogtailがECSインスタンスとは異なるサーバーにある場合、サーバーのパブリックIPアドレスと、転送ルールのLogtail設定で指定したポートを指定する必要があります。

      次のサンプルコードは、TCP経由ですべてのsyslogを127.0.0.1:9000に転送できる転送ルールの例を示しています。 設定ファイルの詳細については、「RSyslogドキュメント」をご参照ください。

      *.* @@127.0.0.1:9000
    2. 次のコマンドを実行してrsyslogを再起動し、転送ルールを検証します。

      sudo service rsyslog restart
  9. Simple Log Serviceコンソールにログインし、必要なLogstoreで収集されたsyslogを表示します。 詳細については、「ログクエリと分析のガイド」をご参照ください。image

ログフィールドの説明

フィールド

説明

_hostname_

ホスト名。 ログにホスト名が含まれていない場合、現在のホストのホスト名が取得されます。

_program_

syslogプロトコルのタグフィールド。

_priority_

syslogプロトコルの優先順位フィールド。

_facility_

syslogプロトコルのfacilityフィールド。

_重大度_

syslogプロトコルの重大度フィールド。

_unixtimestamp_

ログのタイムスタンプ。

_content_

ログのコンテンツ。 ログの解析に失敗した場合、このフィールドには生ログの内容が含まれます。

_ip_

現在のホストのIPアドレス。

_client_ip_

ログを転送するLogtailのIPアドレス。

NGINXログの収集

NGINXサーバーを使用すると、特定のsyslogプロトコルを使用して、アクセスログを特定のIPアドレスとポートに直接転送できます。 サーバーのすべてのデータをsyslogとしてSimple Log Serviceに配信する場合は、Logtail設定を作成してデータを収集できます。 データにはNGINXアクセスログが含まれます。

  1. Logtail設定を作成します。 詳細については、「Linux syslogの収集」をご参照ください。

    次のサンプルコードは、[プラグイン設定] フィールドの設定スクリプトの例を示しています。

    {
         "inputs": [
             {
                 "type": "service_syslog",
                 "detail": {
                     "Address": "udp://127.0.0.1:9001",
                     "ParseProtocol": "rfc3164"
                 }
             }
         ]
     }
  2. NGINXの転送ルールを追加します。

    1. nginxサーバー上のNGINX. confファイルを見つけ、ファイルに転送ルールを追加します。 詳細については、「NGINX初心者向けガイド」をご参照ください。

      次のサンプルコードは、転送ルールの例を示しています。

      server {
          ...
      
          # Add this line.
          access_log syslog:server=127.0.0.1:9001,facility=local7,tag=nginx,severity=info combined;
      
          ...
      }
                                      
    2. 次のコマンドを実行してNGINXを再起動し、転送ルールを検証します。

      sudo service nginx restart

ファイアウォールログの収集

ほとんどの場合、ファイアウォールを使用すると、特定のsyslogプロトコルを使用して、アクセスログを特定のIPアドレスとポートに直接転送できます。 ファイアウォールのログをsyslogとしてSimple Log Serviceに配信してセキュリティ情報およびイベント管理 (SIEM) ソリューションを構築する場合は、Logtail設定を作成してログを収集できます。

  1. Logtail設定を作成します。 詳細については、「Linux syslogの収集」をご参照ください。

    次のサンプルコードは、[プラグイン設定] フィールドの設定スクリプトの例を示しています。

    {
         "inputs": [
             {
                 "type": "service_syslog",
                 "detail": {
                     "Address": "udp://0.0.0.0:9001",
                     "ParseProtocol": "rfc3164"
                 }
             }
         ]
     }
  2. ファイアウォールマニュアルに基づいて、ファイアウォールの転送ルールを追加します。 この例では、LogtailがインストールされているサーバーのIPアドレスは10.20.30.40です。image.png

トラブルシューティング

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"

詳細については、「」をご参照ください。Logtailを使用してログを収集するときにエラーが発生した場合はどうすればよいですか?