syslog-ng ユーティリティを使用して、syslog プロトコルで Simple Log Service にログを収集できます。このトピックでは、syslog プロトコルを使用して Simple Log Service にログをアップロードする方法について説明します。
制限事項
Syslog は RFC 5424 プロトコルに基づいて保存する必要があります。他の syslog プロトコルを使用することもできます。詳細については、「Linux syslog を収集する」をご参照ください。
各ログの最大サイズは 64 KB です。
データ転送のセキュリティを確保するために、Transport Layer Security (TLS) 1.2 を使用する必要があります。
構成方法
ほとんどの場合、オンプレミスの VPN やルーターなどのデバイスから TLS プロトコルまたは RFC 5424 プロトコルを使用してログを収集することはできません。これらのデバイスからログを収集するには、Logtail の syslog プラグインを使用することをお勧めします。詳細については、「Linux syslog を収集する」をご参照ください。
syslog プロトコルを使用してログをアップロードする場合は、プロジェクト名.Simple Log Service エンドポイント:Syslog プロトコルポート番号 形式で、ログのアップロード先エンドポイントを指定する必要があります。例: test-project-1.cn-hangzhou-intranet.log.aliyuncs.com:10009。Simple Log Service プロジェクトが存在するリージョンに基づいてエンドポイントを指定することをお勧めします。詳細については、「エンドポイント」をご参照ください。syslog ポートは 10009 です。また、STRUCTURED-DATA フィールドに Simple Log Service プロジェクト、ログストア、および AccessKey ペアを指定する必要があります。次の表にパラメーターを示します。
パラメーター | 説明 | 例 |
STRUCTURED-DATA | 値は logservice に固定されています。 | logservice |
Project | Simple Log Service プロジェクトの名前。ログを収集する前に、プロジェクトを作成する必要があります。詳細については、「プロジェクトを作成する」をご参照ください。 | test-project-1 |
Logstore | Simple Log Service ログストアの名前。ログを収集する前に、ログストアを作成する必要があります。詳細については、「ログストアを作成する」をご参照ください。 | test-logstore-1 |
access-key-id | AccessKey ID。Resource Access Management (RAM) ユーザーの AccessKey ペアを使用することをお勧めします。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。 | yourAccessKeyID |
access-key-secret | AccessKey シークレット。RAM ユーザーの AccessKey ペアを使用することをお勧めします。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。 | yourAccessKeySecret |
例 1: syslog-ng を使用してログを収集する
Syslog-ng は、UNIX および UNIX 系システムで実行される、syslog プロトコルベースのオープンソースユーティリティです。sudo yum install syslog-ng コマンドまたは sudo apt-get install syslog-ng コマンドを実行して、syslog-ng ユーティリティをインストールできます。
rsyslog ユーティリティは Linux サーバーにプリインストールされています。rsyslog ユーティリティは syslog-ng ユーティリティと互換性がありません。syslog-ng ユーティリティを使用する前に、rsyslog ユーティリティをアンインストールする必要があります。
syslog-ng 構成ファイルを開きます。
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 にログをアップロードした後、Simple Log Service コンソールでログを表示する前に、ログのインデックスを作成する必要があります。詳細については、「インデックスを作成する」をご参照ください。
ログフィールドの詳細については、RFC 5424 をご参照ください。
デフォルトでは、Simple Log Service は AccessKey ペアの漏洩を防ぐために Logservice フィールドを削除します。

フィールド | 説明 |
__source__ | 生のログのホスト名。 |
__topic__ | 値は syslog-forwarder に固定されています。 |
__facility__ | 設備情報 (デバイスやモジュールに関する情報など)。 |
__program__ | プロセス名。 |
__serverity__ | ログの重大度レベル。 |
__priority__ | ログの優先度。 |
__unixtimestamp__ | 生のログの UNIX タイムスタンプ。単位: ナノ秒。 |
content | 生のログの msg フィールド。 |
FAQ とトラブルシューティング
ログのアップロードをシミュレートするにはどうすればよいですか?
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 10009Netcat は、ネットワーク接続が中断されているかどうかを自動的に検出しません。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 messageSimple Log Service コンソールでログをプレビューして、ログがアップロードされているかどうかを確認します。
詳細については、「ログをプレビューする」をご参照ください。

ログのアップロードに失敗した場合はどうすればよいですか?
ログのアップロードに失敗した場合は、エラーメッセージに基づいて障害のトラブルシューティングを行うことができます。詳細については、「Logtail 収集エラーを表示する方法」をご参照ください。