TD-Agent的配置和注意事项
工作环境
-
- OS: Amazon Linux2
- td-agent3(fluentd v1)
構成的中文是什麼?
-
- Fluentd Client数台
いつ入れ替わってもすべてのログを保存したいので、ほぼリアルタイムでServerにログを送って集約させます
Fluentd Server一台
ログの保存時間、コスト、検索の便利さなどを考慮して、一時間ごとにログをS3に転送します
在本地安裝和設置Fluentd客戶端
安装
您可以通过以下命令来安装td-agent3。
curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent3.sh | sh
设定
配置文件在这里:
/etc/td-agent/td-agent.conf
我将添加以下内容。
<source>
@type tail
format nginx
tag "nginx.access.#{Socket.gethostname}"
path /var/log/nginx/access.log
pos_file /var/log/td-agent/nginx.access.log.pos
</source>
<source>
@type tail
tag "nginx.error.#{Socket.gethostname}"
path /var/log/nginx/error.log
pos_file /var/log/td-agent/nginx.error.log.pos
format multiline
format_firstline /^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2} \[\w+\] (?<pid>\d+).(?<tid>\d+): /
format1 /^(?<time>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[(?<log_level>\w+)\] (?<pid>\d+).(?<tid>\d+): (?<message>.*)/
multiline_flush_interval 3s
</source>
<match nginx.**>
@type forward
<buffer tag>
flush_interval 3s
</buffer>
<server>
host x.x.x.x
port 24224
</server>
</match>
-
- source: ログを指定し、tagをつける
- match: tagをマッティングし、収集してきたログを処理する
※ 注意事项:可以使用#{Socket.gethostname}来获取主机名,但一定要加上””。如果不加,它将被视为普通字符串。
安装和配置Fluentd服务器端。
安装
您可以使用以下命令安装td-agent3和插件。
curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent3.sh | sh
td-agent-gem install fluent-plugin-forest
请注意:许多文章中提到需要使用fluent-plugin-s3插件,但该插件已经包含在td-agent中,无需安装。如果您安装了另一个fluent-plugin-s3插件,请务必卸载它。如果存在多个插件会导致错误,请注意。
插件的确认方法
您可以通过启动td-agent并查看日志来确认。
日志存储在 /var/log/td-agent/td-agent.log 文件中。
内容如下。
2019-12-10 11:41:04 +0900 [info]: gem 'fluent-plugin-elasticsearch' version '3.5.4'
2019-12-10 11:41:04 +0900 [info]: gem 'fluent-plugin-kafka' version '0.11.1'
2019-12-10 11:41:04 +0900 [info]: gem 'fluent-plugin-prometheus' version '1.5.0'
2019-12-10 11:41:04 +0900 [info]: gem 'fluent-plugin-record-modifier' version '2.0.1'
2019-12-10 11:41:04 +0900 [info]: gem 'fluent-plugin-rewrite-tag-filter' version '2.2.0'
2019-12-10 11:41:04 +0900 [info]: gem 'fluent-plugin-s3' version '1.1.11'
2019-12-10 11:41:04 +0900 [info]: gem 'fluent-plugin-td' version '1.0.0'
2019-12-10 11:41:04 +0900 [info]: gem 'fluent-plugin-td-monitoring' version '0.2.4'
2019-12-10 11:41:04 +0900 [info]: gem 'fluent-plugin-webhdfs' version '1.2.4'
2019-12-10 11:41:04 +0900 [info]: gem 'fluentd' version '1.7.0'
设定
<match nginx.**>
@type forest
subtype copy
<template>
<store>
@type s3
aws_key_id YOUR_KEY_ID
aws_sec_key YOUR_SECRIT_KEY
s3_bucket BUCKET_NAME
s3_region REGION
s3_enpoint s3.ap-northeast-1.amazonaws.com
path ${tag_parts[0]}/${tag_parts[1]}/%Y%m%d/${tag_parts[1]}.log.${tag_parts[2]}.
time_slice_format %Y%m%d%H
<buffer tag,time>
@type file
path /var/log/td-agent/s3/${tag_parts[0]}/${tag_parts[1]}.log.${tag_parts[2]}
timekey 3600 # 1 hour partition
timekey_wait 10s
</buffer>
</store>
</template>
</match>
说明:以tag为nginx.**的日志将先保存到buff文件中,每隔一小时传输到s3中。tag是在客户端设置的。有关插件forest的用法,请在谷歌上搜索。
请注意:关于缓冲区的路径,请将日志根据服务器分开。如果不分开,会导致日志收集失败。
调试日志的输出方法
如果您希望输出debug日志,请将以下内容添加到/etc/td-agent/td-agent.conf文件中并重新启动。
<system>
log_level debug
</system>