9

Google Compute Engine (GCE) で複数の CoreOS インスタンスを実行しています。CoreOS は systemd のジャーナル ロギング機能を使用します。すべてのログをリモートの宛先にプッシュするにはどうすればよいですか? 私が理解しているように、systemd ジャーナルにはリモート ロギング機能が付属していません。私の現在の回避策は次のようになります。

journalctl -o short -f | ncat <addr> <ip>

TCP 経由でトークンベースの入力を使用するhttps://logentries.comの場合:

journalctl -o short -f | awk '{ print "<token>", $0; fflush(); }' | ncat data.logentries.com 10000

より良い方法はありますか?

編集: https://medium.com/coreos-linux-for-massive-server-deployments/defb984185c5

4

5 に答える 5

10

systemd の過去のバージョン 216 には、クライアント/サーバー プロセスのペアを介したリモート ロギング機能が含まれています。

http://www.freedesktop.org/software/systemd/man/systemd-journal-remote.html

于 2014-11-22T19:18:54.363 に答える
7

使用することの欠点-o shortは、形式が解析しにくいことです。short-iso優れている。ELK スタックを使用している場合は、JSON としてエクスポートするとさらに優れています。次のような systemd サービスは、JSON 形式のログをリモート ホストに送信します。

[Unit]
Description=Send Journalctl to Syslog

[Service]
TimeoutStartSec=0
ExecStart=/bin/sh -c '/usr/bin/journalctl -o json -f | /usr/bin/ncat syslog 515'

Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

反対側にはlogstash.conf、私にとっては次のものが含まれます。

input {
  tcp {
    port  => 1515
    codec => json_lines
    type  => "systemd"
  }
}

filter {
  if [type] == "systemd" {
    mutate { rename => [ "MESSAGE", "message" ] }
    mutate { rename => [ "_SYSTEMD_UNIT", "program" ] }
  }
}

これにより、journalctl データ構造全体が Kibana/Elasticsearch で使用できるようになります。

于 2015-02-11T18:41:00.013 に答える
0

rsyslog-kafka内でモジュールを使用することもできますRsyslog

Rsyslog with moduels:
 - imfile - input file
 - omkafka - output to Kafka

json テンプレートを定義し、それらを Apache Kafka にプッシュします。ログが Kafka にある場合...

于 2019-06-17T04:26:34.430 に答える