CoreOS 上の全てのログをリモートサーバへ送る
概要
CoreOS 上で出る全てのログをリモートのログサーバへ送るという話。
CoreOS には systemd が入っており、全てのサービスを systemd 経由で管理すると systemd 付属の jounalctl によってログが一元管理できる。 CoreOS マシンを disposable にしておくために一元管理したログをリモートサーバへ送る
ログのルーティング
収集したログは ncat
のコネクトモードを使ってログ保存先の listen ポートへ UDP データとして送る。
$ journalctl -o short -f | ncat remote-destination.com 12345
ログのルーティング先は色々ある。
- Papertrail
- Logentries
- Loggly
- Datadog
- Splunk
- Fluentd (OSS)
- Logstash (OSS)
- Graylog2 (OSS)
Logentries へルーティングする例
Logentries は固有ポートへの Plain TCP, UDP 経由で送ると、送信元 IP で判別するので、CoreOS マシンを捨てられなくなる。Logentries へは Token ベースで送信する
core@core-01 ~ $ journalctl -o short -f | sed \"s/^/<YOUR_TOKEN> \\0/g\" | ncat data.logentries.com 10000"
json 形式で送る
core@core-01 ~ $ journalctl -o json -f | sed \"s/^/<YOUR_TOKEN> \\0/g\" | ncat data.logentries.com 10000"
Cloud-Config で起動する
#cloud-config
coreos:
update:
group: stable
etcd:
discovery: https://discovery.etcd.io/xxxxxxxxxxxxxxxxxxx
addr: $public_ipv4:4001
peer-addr: $public_ipv4:7001
fleet:
public-ip: $public_ipv4
units:
- name: journal-router-short.service
command: start
content: |
[Unit]
Description=Journal Router (short)
[Service]
TimeoutStartSec=0
ExecStart=/bin/sh -c '/usr/bin/journalctl -o short -f | sed \"s/^/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \\0/g\" | ncat data.logentries.com 10000'
[Install]
WantedBy=multi-user.target
- name: journal-router-json.service
command: start
content: |
[Unit]
Description=Journal Router (json)
[Service]
TimeoutStartSec=0
ExecStart=/bin/sh -c '/usr/bin/journalctl -o json -f | sed \"s/^/xxxxxxxxxxxxxxxxxxxxxxxxxxxx \\0/g\" | ncat data.logentries.com 10000'
[Install]
WantedBy=multi-user.target
- human readable なログとして short 、後で詳細を調べる、ログを使って何かするときのために json ログともに送信しておく
補足: Logentries の設定例
メモと感想
各コンテナの起動失敗等のログも欲しいので一番最初に起動するよう書く
units の一番上に書けばいいんだと思う
REF
- CoreOS logging to remote destinations
- CoreOSをLogentriesでログ監視してみた - uzyexeのノート - 自分も logentries ユーザなのでジャストな記事でした
Author And Source
この問題について(CoreOS 上の全てのログをリモートサーバへ送る), 我々は、より多くの情報をここで見つけました https://qiita.com/spesnova/items/631ffb5c13e1d0da258b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .