syslog-ng を使用してログを収集し、Syslog プロトコル経由で Simple Log Service にアップロードできます。本トピックでは、Syslog プロトコルを使用して Simple Log Service にログをアップロードする方法について説明します。
制限事項
-
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。Simple Log Service プロジェクトが配置されているリージョンに応じて、適切なエンドポイントを選択してください。詳細については、「エンドポイント」をご参照ください。Syslog ポートは 10009 です。また、STRUCTURED-DATA フィールドに Simple Log Service のプロジェクト、Logstore、および AccessKey 情報を設定する必要があります。
|
パラメーター |
説明 |
例 |
|
STRUCTURED-DATA |
|
logservice |
|
project |
Simple Log Service プロジェクトの名前です。事前にプロジェクトを作成してください。詳細については、「プロジェクトの管理」をご参照ください。 |
test-project-1 |
|
logstore |
Simple Log Service Logstore の名前です。事前に Logstore を作成してください。詳細については、「Logstore の作成」をご参照ください。 |
test-logstore-1 |
|
access-key-id |
AccessKey ID です。RAM ユーザーの AccessKey ID の使用を推奨します。詳細については、「権限」をご参照ください。 |
LTAI**************** |
|
access-key-secret |
AccessKey シークレットです。RAM ユーザーの AccessKey シークレットの使用を推奨します。詳細については、「権限」をご参照ください。 |
yourAccessKeySecret |
例 1: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 構成ファイルの末尾に、以下の構成を追加します。
### Syslog-ng Logging Config for LogService ### 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); # default use s_sys destination(d_logservice); }; ### END Syslog-ng Logging Config for LogService ### -
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 フィールドが削除されます。

|
フィールド名 |
説明 |
|
__source__ |
元のログの |
|
__topic__ |
|
|
__facility__ |
ログを生成するデバイスやモジュールなど、ファシリティ情報を示します。 |
|
__program__ |
プロセス名です。 |
|
__severity__ |
ログの重大度レベルです。 |
|
__priority__ |
ログの優先度です。 |
|
__unixtimestamp__ |
元のログのタイムスタンプ(ナノ秒単位)です。 |
|
content |
元のログの |
よくある質問とトラブルシューティング
-
ログアップロードのテスト
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 コンソールでログをプレビューします。
詳細については、「ログのプレビュー」をご参照ください。

-
-
収集エラーの診断
ログアップロードが失敗した場合、収集エラーを診断することで詳細なエラーメッセージを確認できます。詳細については、「Logtail 収集エラーの表示」をご参照ください。