iLogtail¶
インストールと設定¶
DataKit でコレクターを有効化¶
cd /usr/local/datakit/conf.d/samples
cp logstreaming.conf.sample logstreaming.conf
sysemctl restart datakit
iLogtail の設定¶
iLogtail をダウンロード¶
wget https://ilogtail-community-edition.oss-cn-shanghai.aliyuncs.com/latest/ilogtail-latest.linux-amd64.tar.gz
設定ファイルを作成¶
解凍後、ilogtail-1.7.1/user_yaml_config.d ディレクトリに file_sample.yaml を作成します。
ここでは /usr/local/df-demo/log-demo/logs/log.log のファイルログを収集するように設定します。
enable: true
inputs:
- Type: file_log
LogPath: /usr/local/df-demo/log-demo/logs # ファイルパス
FilePattern: log.log # ファイル名
flushers:
- Type: flusher_stdout
OnlyStdout: true
- Type: flusher_http
RemoteURL: "http://localhost:9529/v1/write/logstreaming"
iLogtail を起動¶
手動でログを入力する
この時点でGuanceには、iLogtail が送信したログが届いています。
pipeline の設定¶
今回使用するログは JAVA アプリケーションが生成したログファイル /usr/local/df-demo/log-demo/logs/log.log です。ログ形式が異なるため、下図の content の値は変わり、pipeline もそれに応じて変更する必要があります。
Java の logback.xml で出力するログ形式は次のとおりで、出力内容は上図の content の値に対応します。
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - [%X{dd.service}][%X{dd.trace_id}][%X{dd.span_id}] - %msg%n
以下では Pipeline を作成してログ全体を分割し、主に host、host_ip、trace_id などの情報をログから抽出します。
【ログ】->【テキスト処理(Pipeline)】-> 新規 Pipeline を作成します。ログソース入力は「default」にし、解析ルールを入力して保存します。
json_data = load_json(_)
contents = json_data["contents"]
tags = json_data["tags"]
content = contents["content"]
grok(content, "%{TIMESTAMP_ISO8601:time}%{SPACE}\\[%{NOTSPACE:thread_name}\\]%{SPACE}%{LOGLEVEL:status}%{SPACE}%{NOTSPACE:class_name}%{SPACE}%{SPACE}-%{SPACE}\\[%{NOTSPACE:method_name},%{NUMBER:line}\\]%{SPACE}-%{SPACE}\\[%{DATA:service_name}\\]\\[%{DATA:trace_id}\\]\\[%{DATA:span_id}\\]%{SPACE}-%{SPACE}%{GREEDYDATA:msg}")
add_key(message, content)
add_key(host_ip, tags["host.ip"])
add_key(host, tags["host.name"])
add_key(filepath, tags["log.file.path"])
JAVA アプリケーションを起動してログを生成すると、iLogtail のログ収集が自動的にトリガーされます。
Guance に入ると、ログがすでに収集されており、pipeline も正常に有効になっていることが確認できます。