rsyslogおよびsyslog-ngユーティリティを使用してログを収集できます。 ログが収集されたら、syslogプロトコルを使用してログをLog Serviceにアップロードできます。 このトピックでは、syslogプロトコルを使用してログをLog Serviceにアップロードする方法について説明します。
制限事項
- Syslogログは、RFC 5424プロトコルに基づいて保存する必要があります。
- 各ログの最大サイズは64 KBです。
- データ送信のセキュリティを確保するには、TLS (Transport Layer Security) 1.2を使用する必要があります。
設定
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-id | Log 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設定ファイルを開きます。 rsyslog設定ファイルのデフォルトパスは /etc/rsyslog.confです。
- 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")
- Rsyslog v8以降
- rsyslogユーティリティを再起動します。 sudo service rsyslog restartコマンド、sudo /etc/init.d/syslog-ng restartコマンド、またはsystemctl restart rsyslogコマンドを実行してrsyslogユーティリティを再起動します。
- loggerコマンドを実行してテストログを生成します。 たとえば、ロガーhello worldを実行することができます! コマンドを実行してログを生成します。
例2: syslog-ngユーティリティを使用してsyslogログをLog Serviceにアップロードする
- syslog-ng設定ファイルを開きます。 syslog-ng設定ファイルのデフォルトパスは /etc/syslog-ng/syslog-ng.confです。
- 次の設定を設定し、その設定を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の構成 ###
- syslog-ngユーティリティを再起動します。 sudo /etc/init.d/syslog-ng restartコマンド、sudo service syslog-ng restartコマンド、またはsudo systemctl restart syslog-ngコマンドを実行して、syslog-ngユーティリティを再起動します。
- loggerコマンドを実行してテストログを生成します。 たとえば、ロガーhello worldを実行することができます! コマンドを実行してログを生成します。
サンプルログ
ログをLog Serviceにアップロードした後、ログのインデックスを設定する必要があります。 次に、Log Serviceコンソールでログを表示できます。 詳細については、「インデックスの作成」をご参照ください。
ログフィールド | 説明 |
---|---|
__source__ | 生ログ内のホスト名。 |
__topic__ | 値はsyslog-forwarderに設定されます。 |
__facility__ | The施設情報、デバイスとモジュールの情報など。 |
__program__ | プロセスの名前。 |
__serverity__ | The重症度レベルのsyslogログ。 |
__priority__ | Theの優先度をsyslogログ。 |
__unixtimestamp__ | 生ログのUNIXタイムスタンプ。 Unit: ナノ秒。 |
content | The msgで生ログ。 |
よくある質問
- ログのアップロードをシミュレートする方法?
You使用することができNetcatシミュレートにログアップロード。 この方法で、ネットワーク接続が正常であるかどうか、およびAccessKeyペアがsyslogログの送信を許可されているかどうかを確認できます。
- Logにシミュレートしたいサーバログアップロード。
- Run次のコマンドにNetcatインストール:
sudo yumインストールnmap-ncat
- 次のコマンドを実行してLog Serviceに接続します。
ncat -- ssl <yourProject> 。<yourEndpoint> 10009
例:ncat -- ss l test-project-1.cn-hangzhou.log.aliyuncs.com 10009
- 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 * * *"] これはテストメッセージ
- syslogログを送信した後、log Serviceコンソールでログをプレビューできます。
詳細については、「プレビューログ」をご参照ください。
- ログのアップロードに失敗した場合はどうすればよいですか?
エラーメッセージに基づいて障害をトラブルシューティングします。 詳細については、「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は接続を再確立するため、このエラーは無視できます。
- エラーメッセージ 1
- 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