rsyslogおよびsyslog-ngユーティリティを使用してログを収集できます。 ログが収集されたら、syslogプロトコルを使用してログをLog Serviceにアップロードできます。 このトピックでは、syslogプロトコルを使用してログをLog Serviceにアップロードする方法について説明します。

制限事項

  • Syslogログは、RFC 5424プロトコルに基づいて保存する必要があります。
  • 各ログの最大サイズは64 KBです。
  • データ送信のセキュリティを確保するには、TLS (Transport Layer Security) 1.2を使用する必要があります。

設定

重要 ほとんどの場合、TLSプロトコルまたはRFC 5424プロトコルを使用して、オンプレミスのVPNやルーターなどのデバイスからログデータを収集することはできません。 デバイスからデータを収集するには、Logtailのsyslogプラグインを使用することを推奨します。 詳細については、「syslogの収集」をご参照ください。

syslogプロトコルを使用してログをアップロードする場合は、ログをアップロードするエンドポイントを指定する必要があります。 アドレスは <Project name>.<Log Service endpoint >:< Syslog protocol port number> 形式です。 例: test-project-1.cn-hangzhou-intranet.log.aliyuncs.com:10009。 Log Serviceプロジェクトが存在するリージョンに基づいてエンドポイントを指定します。 詳細については、「エンドポイント」をご参照ください。 syslogポートは10009です。 また、Log Serviceプロジェクト、Logstore、およびAccessKeyペアをSTRUCTURED-DATAフィールドで指定する必要があります。 次の表は、各パラメーターの説明です。

項目説明例:
STRUCTURED-DATA値はLogserviceに設定されます。 Logservice
Projectプロジェクトの名前。 ログを収集する前に、プロジェクトを作成する必要があります。 詳細については、「プロジェクトの作成」をご参照ください。 test-project-1
ログストアLogstoreの名前。 ログを収集する前に、Logstoreを作成する必要があります。 詳細については、「Logstore の作成」をご参照ください。 test-logstore-1
access-key-idLog Serviceへのアクセスに使用されるAccessKey ID。 RAMユーザーのAccessKeyペアを使用することを推奨します。 詳細については、「RAMユーザーを作成し、RAMユーザーにLog Serviceへのアクセスを許可する」をご参照ください。 LT **** 9k
{access-key-secret}Log Serviceへのアクセスに使用されるAccessKeyシークレット。 RAMユーザーのAccessKeyペアを使用することを推奨します。 詳細については、「RAMユーザーを作成し、RAMユーザーにLog Serviceへのアクセスを許可する」をご参照ください。 Wp **** bA

例1: rsyslogユーティリティを使用してsyslogログをLog Serviceにアップロードする

rsyslogユーティリティは、Linuxサーバーにプリインストールされています。 rsyslogユーティリティを使用して、システムログを収集できます。 次に、syslogプロトコルを使用してログをLog Serviceにアップロードできます。 rsyslogの異なるバージョンは異なる設定ファイルを使用します。 man rsyslogdコマンドを実行すると、rsyslogのバージョンを表示できます。
説明 rsyslogユーティリティには、gnutlsモジュールを含める必要があります。 ユーティリティにモジュールが含まれていない場合は、sudo apt-get install rsyslog-gnutlsコマンドまたはsudo yum install rsyslog-gnutlsコマンドを実行してモジュールをインストールします。
  1. rsyslog設定ファイルを開きます。
    rsyslog設定ファイルのデフォルトパスは /etc/rsyslog.confです。
  2. rsyslogのバージョンに基づいて次の設定を構成し、その設定をrsyslog構成ファイルに追加します。
    • Rsyslog v8以降

      $DefaultNetstreamDriverCAFileパラメーターをシステムのルート証明書のパスに設定します。

      # セットアップディスク支援キュー
      $WorkDirectory /var/spool/rsyslog# スプールファイルを配置する場所
      $ActionQueueFileName fwdRule1# スプールファイルの一意の名前プレフィックス
      $ActionQueueMaxDiskSpace 1g # 1gbスペース制限 (可能な限り使用)
      $ActionQueueSaveOnShutdown on# シャットダウン時にメッセージをディスクに保存する
      $ActionQueueType LinkedList# 非同期で実行
      $ActionResumeRetryCount -1# ホストがダウンしている場合の無限の再試行
      $ActionSendTCPRebindInterval 100# メッセージが送信される100ごとに、リモートホストへの接続を閉じて再度開きます。 
      # RsyslogGnuTLSデフォルトに設定caパス
      $DefaultNetstreamDriverCAFile /など /ssl /本命 /ca-bundle.crt
      テンプレート (名="LogServiceFormat" タイプ="文字列"
      文字列="<% pri %>1% タイムスタンプ:::date-rfc3339 % % HOSTNAME % % app名 % % procid % % msgid % [logserviceプロジェクト=" 試験プロジェクト-1 "logstore=" test-logstore-1 "アクセスキーid="<yourAccessKeyId> "アクセスキー秘密="<yourAccessKeySecret> "] % msg % n"
      )
      # テンプレートを使用してTCP経由でLogglyにメッセージを送信します。 
      アクション (type="omfwd" protocol="tcp" target="test-project-1.cn-hangzhou.log.aliyuncs.com" port="10009" template="LogServiceFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="* .cn-hangzhou.log.aliyuncs.com")
    • Rsyslog v7以前

      $DefaultNetstreamDriverCAFileパラメーターをシステムのルート証明書のパスに設定します。

      # セットアップディスク支援キュー
      $WorkDirectory /var/spool/rsyslog# スプールファイルを配置する場所
      $ActionQueueFileName fwdRule1# スプールファイルの一意の名前のプレフィックス $ActionQueueMaxDiskSpace 1g # 1gbスペース制限 (可能な限り使用) $ActionQueueSaveOnShutdown on# シャットダウン時にディスクにメッセージを保存する
      $ActionQueueType LinkedList# 非同期で実行
      $ActionResumeRetryCount -1# ホストがダウンしている場合は無限に再試行します。$ActionSendTCPRebindInterval 100 # closeメッセージの100ごとにリモートホストへの接続を再度開きます。 
      # RsyslogGnuTLSをデフォルトのcaパスに設定
      $DefaultNetstreamDriverCAFile /etc/ssl/certs/ca-bundle.crt
      $ActionSendStreamDriver gtls
      $ActionSendStreamDriverMode 1
      $ActionSendStreamDriverAuthMode x509 /名
      $ActionSendStreamDriverPermittedPee r test-project-1.cn-hangzhou.log.aliyuncs.com
      テンプレート (name="LogServiceFormat" type="string" string "string="<% pri %>1% timestamp ::: date-rfc3339 % % HOSTNAME % % app-name % % procid % % msgid % [logservice project=\"test-project-1\" logstore=\"test-logstore-1\" access-key-id=\"<yourKeyAccessId> \<yourAccessKeySecret>\"] % msg %\n ")
      *.* アクション (type="omfwd" protocol="tcp" target="test-project-1.cn-hangzhou.log.aliyuncs.com" port="10009" template="LogServiceFormat")
  3. rsyslogユーティリティを再起動します。
    sudo service rsyslog restartコマンド、sudo /etc/init.d/syslog-ng restartコマンド、またはsystemctl restart rsyslogコマンドを実行してrsyslogユーティリティを再起動します。
  4. loggerコマンドを実行してテストログを生成します。
    たとえば、ロガーhello worldを実行することができます! コマンドを実行してログを生成します。

例2: syslog-ngユーティリティを使用してsyslogログをLog Serviceにアップロードする

Syslog-ngは、UNIXおよびUNIXライクなシステムで実行されるオープンソースユーティリティです。 このユーティリティはsyslogプロトコルに基づいています。 syslog-ngユーティリティをインストールするには、sudo yum install syslog-ngコマンドまたはsudo apt-get install syslog-ngコマンドを実行します。
説明 rsyslogユーティリティは、Linuxサーバーにプリインストールされています。 このユーティリティはsyslog-ngユーティリティと互換性がありません。 syslog-ngユーティリティを使用する前に、rsyslogユーティリティをアンインストールする必要があります。
  1. syslog-ng設定ファイルを開きます。
    syslog-ng設定ファイルのデフォルトパスは /etc/syslog-ng/syslog-ng.confです。
  2. 次の設定を設定し、その設定をsyslog-ng設定ファイルに追加します。
    ### Syslog-ng LogServiceの構成 ###
    テンプレートLogServiceFormat { 
        テンプレート ("<${ PRI}>1 ${ISODATE} ${HOST:--} ${PROGRAM:--} ${PID:--} ${MSGID:--} [logservice project=\" test-project-1\"logstore=\" test-logstore-1\"access-key-id=\"<yourAccessKeyId>\"access-key-secret=\"<yourAccessKeySecret>\"] $MSG\n"); template_escape(no);
    };
    destination d_logservice { 
         tcp (「test-project-1.cn-hangzhou.log.aliyuncs.com」ポート (10009) 
         tls(peer-verify(required-untrusted)) 
         テンプレート (LogServiceFormat);
    };
    log { 
         source(s_sys); # default use s_sys 
         宛先 (d_logservice);
    };
    ### END Syslog-ng LogServiceの構成 ###
  3. syslog-ngユーティリティを再起動します。
    sudo /etc/init.d/syslog-ng restartコマンド、sudo service syslog-ng restartコマンド、またはsudo systemctl restart syslog-ngコマンドを実行して、syslog-ngユーティリティを再起動します。
  4. loggerコマンドを実行してテストログを生成します。
    たとえば、ロガーhello worldを実行することができます! コマンドを実行してログを生成します。

サンプルログ

ログをLog Serviceにアップロードした後、ログのインデックスを設定する必要があります。 次に、Log Serviceコンソールでログを表示できます。 詳細については、「インデックスの作成」をご参照ください。

ログフィールドの詳細については、「RFC 5424プロトコル」をご参照ください。
重要 デフォルトでは、Log ServiceはLogserviceフィールドを削除して、AccessKeyペアが漏洩しないようにします。
サンプルログ
ログフィールド説明
__source__生ログ内のホスト名。
__topic__値はsyslog-forwarderに設定されます。
__facility__The施設情報、デバイスとモジュールの情報など。
__program__プロセスの名前。
__serverity__The重症度レベルのsyslogログ。
__priority__Theの優先度をsyslogログ。
__unixtimestamp__生ログのUNIXタイムスタンプ。 Unit: ナノ秒。
contentThe msgで生ログ。

よくある質問

  • ログのアップロードをシミュレートする方法?

    You使用することができNetcatシミュレートにログアップロード。 この方法で、ネットワーク接続が正常であるかどうか、およびAccessKeyペアがsyslogログの送信を許可されているかどうかを確認できます。

    1. Logにシミュレートしたいサーバログアップロード。
    2. Run次のコマンドにNetcatインストール:
      sudo yumインストールnmap-ncat
    3. 次のコマンドを実行してLog Serviceに接続します。
      ncat -- ssl <yourProject> 。<yourEndpoint> 10009
      例:
      ncat -- ss l test-project-1.cn-hangzhou.log.aliyuncs.com 10009
    4. Netcatは、ネットワーク接続が中断されたかどうかをチェックしません。 ncatコマンドを実行した後、送信する情報を入力し、30秒以内にenterキーを押します。
      <34>1 2019-03-28T03:00:15。003Z mymachine.example.com su - ID47 [logserviceプロジェクト="<yourProject>" logstore="<yourLogstore>" アクセスキーid="<yourAccessKeyID>" アクセスキー秘密="<yourAccessKeySecret>"] これはテストメッセージ
      例:
      <34>1 2019-03-28T03:00:15。003Z mymachine.example.com su - ID47 [logserviceプロジェクト="トレースのdoc-テスト" logstore="doc-test-001-logs" アクセスキーid="LTAI4 * * *" アクセスキー秘密="HfJEw * * *"] これはテストメッセージ
    5. syslogログを送信した後、log Serviceコンソールでログをプレビューできます。

      詳細については、「プレビューログ」をご参照ください。

      ncat_output
  • ログのアップロードに失敗した場合はどうすればよいですか?

    エラーメッセージに基づいて障害をトラブルシューティングします。 詳細については、「Logtail収集エラーの表示方法?」をご参照ください。

  • rsyslogエラーログの表示方法?
    vimコマンドを実行すると、rsyslogエラーログを表示できます。 デフォルトでは、rsyslogエラーログは /var/log/messageディレクトリに保存されます。
    • エラーメッセージ 1
      dlopen: /usr/lib64/rsyslog/lmnsd_gtls.so: cannot open shared object file: No such file or directory

      rsyslog-gnutlsモジュールがインストールされていない場合、このエラーメッセージが返されます。 モジュールをインストールするには、sudo apt-get install rsyslog-gnutlsコマンドまたはsudo yum install rsyslog-gnutlsコマンドを実行します。 モジュールをインストールした後、rsyslogユーティリティを再起動します。

    • エラーメッセージ 2
      unexpected GnuTLS error -53 - this could be caused by a broken connection. GnuTLS reports:Error in the push function

      このエラーメッセージは、長時間アクションが実行されないためにTCP接続が終了した場合に返されます。 rsyslogは接続を再確立するため、このエラーは無視できます。

  • syslog-ngエラーログの表示方法?

    syslog-ngエラーログを表示するには、systemctl status syslog-ng.serviceコマンドまたはjournalctl-xeコマンドを実行します。 デフォルトでは、syslog-ngエラーログはジャーナルログに保存されます。

    次のエラーメッセージが返された場合は、構成ファイルの形式が有効かどうか、または構成の競合が存在するかどうかを確認します。 たとえば、複数のinternal() ソースを設定することはできません。
    Job for syslog-ng.service failed because the control process exited with error code. See "systemctl status syslog-ng.service" and "journalctl -xe" for details