本トピックでは、そのために必要な手順について説明します。
制限事項
-
Syslog プロトコルは、標準の RFC 5424 である必要があります。他の Syslog プロトコルを使用する場合は、「Linux システムからの Syslog の収集」をご参照ください。
-
ログエントリの最大サイズは 64 KB です。
-
データ伝送のセキュリティを確保するため、Transport Layer Security (TLS) 1.2 を使用して TCP 経由でデータを送信する必要があります。
設定
VPN やルーターなどのほとんどのオンプレミスデバイスは、TLS プロトコルや RFC 5424 フォーマットをサポートしていません。これらのデバイスからデータを収集するには、Logtail の Syslog プラグインを使用することを推奨します。詳細については、「Linux システムからの Syslog の収集」をご参照ください。
Syslog プロトコルを使用してログをアップロードするには、ProjectName.Endpoint:SyslogPort フォーマットでログアップロードアドレスを設定する必要があります。例:test-project-1.cn-hangzhou-intranet.log.aliyuncs.com:10009。プロジェクトが配置されているリージョンに基づいてエンドポイントを選択します。詳細については、「エンドポイント」をご参照ください。Syslog ポートは 10009 です。また、Simple Log Service のプロジェクトや LogStore、ご利用の Alibaba Cloud アカウントの AccessKey ペアなど、STRUCTURED-DATA フィールドのパラメーターも設定する必要があります。
|
パラメーター |
説明 |
例 |
|
STRUCTURED-DATA |
SD-ID は |
|
|
project |
Simple Log Service プロジェクトの名前です。事前にプロジェクトを作成しておく必要があります。詳細については、「プロジェクトの管理」をご参照ください。 |
test-project-1 |
|
logstore |
LogStore の名前です。事前に LogStore を作成しておく必要があります。詳細については、「LogStore の作成」をご参照ください。 |
test-LogStore-1 |
|
access-key-id |
AccessKey ID です。RAM ユーザーの AccessKey ペアを使用することを推奨します。詳細については、「権限承認」をご参照ください。 |
LTAI**************** |
|
access-key-secret |
AccessKey Secret です。RAM ユーザーの AccessKey ペアを使用することを推奨します。詳細については、「権限承認」をご参照ください。 |
yourAccessKeySecret |
例:syslog-ng を使用したログの収集
syslog-ng は、UNIX および UNIX ライクシステム向けの Syslog プロトコルのオープンソース実装です。sudo yum install syslog-ng または sudo apt-get install syslog-ng コマンドを実行して syslog-ng をインストールできます。
デフォルトでは、Linux サーバーに Rsyslog がインストールされています。Rsyslog と syslog-ng は同時に実行できません。syslog-ng を使用する場合は、まず Rsyslog をアンインストールする必要があります。
-
syslog-ng の設定ファイルを開きます。
設定ファイルは通常、/etc/syslog-ng/syslog-ng.conf にあります。
-
syslog-ng 設定ファイルの末尾に次の設定ブロックを追加し、ビジネス要件に基づいてその中のパラメーターを設定します。
### LogService 用の syslog-ng ログ設定 ### template LogServiceFormat { template("<${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" port(10009) tls(peer-verify(required-untrusted)) template(LogServiceFormat)); }; log { source(s_sys); # デフォルトでは s_sys を使用 destination(d_logservice); }; ### LogService 用の syslog-ng ログ設定の終了 ### -
syslog-ng を再起動します。
sudo /etc/init.d/syslog-ng restart、sudo service syslog-ng restart、または sudo systemctl restart syslog-ng コマンドを実行して syslog-ng を再起動します。
-
logger コマンドを実行してテストログを生成します。
例:logger hello world! コマンドを実行してログを生成します。
ログの例
ログをアップロードした後、Simple Log Service コンソールでログを表示するには、インデックスを設定する必要があります。詳細については、「インデックスの作成」をご参照ください。
ログフィールドの詳細については、「RFC 5424」をご参照ください。
AccessKey ペアの漏洩を防ぐため、Simple Log Service はデフォルトで logservice フィールドを削除します。
03-28 11:01:01 __source__: xxx
__topic__: syslog-forwarder
_facility_: 3
_hostname_: xxx
_priority_: 30
_program_: systemd
_severity_: 6
_unixtimestamp_: 1553742061117098000
content: Started Session 59532 of user root.
03-28 11:00:15 __source__: mymachine.example.com
__topic__: syslog-forwarder
_facility_: 4
_hostname_: mymachine.example.com
_message_id_: ID47
_priority_: 34
_program_: su
_severity_: 2
_unixtimestamp_: 1553742015003000000
content: this is a test message
|
フィールド |
説明 |
|
__source__ |
生ログの hostname フィールドの値。 |
|
__topic__ |
値は syslog-forwarder に固定されています。 |
|
__facility__ |
ログを生成したデバイスまたはモジュールを示すファシリティ情報。 |
|
__program__ |
プロセス名。 |
|
__severity__ |
ログの重大度。 |
|
__priority__ |
ログの優先度。 |
|
__unixtimestamp__ |
生ログからのタイムスタンプ (ナノ秒単位)。 |
|
content |
生ログの msg フィールドの値。 |
よくある質問
-
ログアップロードのテスト
Netcat を使用してログのアップロードをテストし、ネットワーク接続を確認して、AccessKey にアップロード権限があることを確認できます。
-
ログアップロードをテストするサーバーにログインします。
-
次のコマンドを実行して Netcat をインストールします:
sudo yum install nmap-ncat -
次のコマンドを実行して Simple Log Service に接続します:
ncat --ssl <yourProject>.<yourEndpoint> 10009コマンドの例:
ncat --ssl 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 project="<yourProject>" logstore="<yourLogstore>" access-key-id="<yourAccessKeyID>" access-key-secret="<yourAccessKeySecret>"] this is a test messageコマンドの例:
<34>1 2019-03-28T03:00:15.003Z mymachine.example.com su - ID47 [logservice project="trace-doc-test" logstore="doc-test-001-logs" access-key-id="<yourAccessKeyID>" access-key-secret="<yourAccessKeySecret>"] this is a test message -
Simple Log Service コンソールでログをプレビューし、ログがアップロードされたかどうかを確認します。
詳細については、「ログのプレビュー」をご参照ください。
タイムスタンプが
2019-03-28 11:00:15でソースがmymachine.example.comのログエントリがプレビュー結果に表示されます。コンテンツ列の Syslog フィールド (_hostname_、_severity_、_facility_、_message_id_、_unixtimestamp_、_program_、_priority_など) が解析されます。これは、ログが正常にアップロードされ、解析されたことを示します。
-
-
ネットワーク接続の確認
前の手順の
ncatコマンドがまったく出力を生成しない場合 (エラーメッセージなしでncatプロセスがすぐに終了する場合)、ネットワークが問題であると判断する前に、まずtelnetを使用してポート 10009 が到達可能かどうかを確認してください。-
次のコマンドを実行してポートの接続性を確認します:
telnet <yourProject>.<yourEndpoint> 10009コマンドの例:
telnet test-project-1.cn-hangzhou.log.aliyuncs.com 10009 -
出力に
Connected to...が含まれている場合、ネットワークは到達可能です。この場合、問題は AccessKey またはプロジェクトの設定が正しくない可能性があります。ログアップロードのテストのncatテストを続行するか、このセクションのSyslog アップロードの失敗のトラブルシューティングをご参照ください。 -
接続がタイムアウトするか拒否された場合、ネットワークは到達不能です。セキュリティグループ、ファイアウォール、またはネットワークルートの設定を確認してください。
説明Simple Log Service は共有アクセス層を使用しています。プロジェクト名が正しくない場合でも、
telnetはConnectedを返すことがあります。telnetはネットワーク層の接続性のみを検証します。ネットワークが到達可能であってもログのアップロードが失敗する場合は、AccessKey とプロジェクト名を確認してください。 -
-
収集エラーの診断
Logtail Syslog プラグインを介して Syslog データを収集し、手動でのログアップロードが失敗した場合、収集エラーを診断することで特定のエラーメッセージを表示できます。詳細については、「Logtail 収集エラー情報の表示方法」をご参照ください。この診断機能は、Logtail 収集シナリオにのみ適用されます。本トピックで説明されているように、Syslog プロトコルを使用して直接ログをアップロードする場合、データは Logtail を経由しないため、この診断機能は適用されません。代わりに、このセクションのSyslog アップロードの失敗のトラブルシューティングをご参照ください。
-
Syslog アップロードの失敗のトラブルシューティング
Syslog プロトコルを使用して送信されたログが
LogStoreで受信されない場合は、次の項目を順に確認してください:-
STRUCTURED-DATA の SD-ID が
logserviceに固定されていることを確認します。slsやsls@17055などの他の識別子を使用すると、接続は成功しますが、ログはサイレントにドロップされます。 -
データが TLS 1.2 を使用して TCP 経由で送信されていることを確認します。
-
対象の
LogStoreに対するAccessKeyペアの書き込み権限があることを確認します。 -
ncat --ssl <ProjectName>.<Endpoint> 10009を実行して、ポートが到達可能であることを確認します。 -
Simple Log Service コンソールの
LogStoreクエリページに移動し、ログを検索して到着したかどうかを確認します。
-