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>
广告
将在 10 秒后关闭
bannerAds