fluidd 3 分钟烹饪如何将日志转发到 swift 对象存储
目录
大家好,我是佐藤,最近经常玩 Fluentd。
我们正在为某个项目使用GMO App Cloud,我们收到一个请求,要求使用fluidd将正在运行的服务器的日志划分为每小时的块并将它们保存在对象存储中。
“它是对象存储!它可能与 S3 兼容,所以这是一个轻松的胜利!”
我把这件事闹大了。 。 。 。 。
对象存储使用 OpenStack 的基于 Swift 的 API 从客户管理的服务器进行操作。
什么?斯威夫特呢? ?
我突然从一开始就迷茫了……GMO App Cloud的对象存储参考有使用curl、Python-swiftclient和Cyberduck的操作示例,但是它们都不适合与fluidd链接,我必须自己登录。考虑制定一个转移计划。 。 。
有东西有用!
我要感谢作者创建了一个可以帮助解决这个困难领域的插件。
这就是为什么
Fluentd 3 分钟烹饪(GMO App Cloud)Swift 对象存储版
这是材质
1.fluidd及所需插件
- fluidd(td-agent) 新鲜(最新版本)
- 流利插件 Swift
- 流畅插件森林
*这是您的偏好,但此食谱假设使用森林。
2. 访问swift对象存储所需的信息
请从 GMO App Cloud 控制面板 > 服务 > API 信息检查以下内容
服务信息: 租户名称 以app开头的20位数字
*还有称为租户ID的信息,但我们这次不会使用它
端点:identity v2.0(身份验证)
*端点信息有多种,但这次我们将使用这个。
您还需要 GMO App Cloud 控制面板的登录 ID/密码
准备好所有原料后,我们就可以开始烹饪了。
3.安装fluidd
在安装前已完成推荐设置,请按照官方页面上的说明进行安装。
#curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
4.安装插件
让我们安装 Fluent-plugin-swift 和 Fluent-plugin-forest。
# /opt/td-agent/embedded/bin/gem 安装 Fluent-plugin-swift Fluent-plugin-forest
5. 准备配置文件
编辑/etc/td-agent/td-agentd.conf
定义源(传输源日志)标签
这次,我们将使用标签 syslog.messages 定义 /var/log/messages。
<source>类型 tail 格式 无 标记 syslog.messages 路径 /var/log/messages pos_file /var/tmp/messages.pos</source>
匹配(swift 对象存储目标)标签定义
/hostname/YYYYMM/hostname_log 文件名_YYYYMMDD-HH_NN.gz 的
格式保存在对象存储容器(S3 中的 Bucket)
<match syslog.*>类型 森林 亚型 swift<template> auth_url https://ident-r2nd1001.app-sys.jp/v2.0/tokens auth_user "GMO App Cloud 控制面板登录 ID" auth_api_key "GMO App Cloud 控制面板登录密码" auth_tenant "租户名称" swift_container "swift 容器名称" swift_object_key_format %{path}${主机名}_${tag_parts[0]}.${tag_parts[1]}_%{time_slice}_%{index}.%{file_extension} 路径 %{主机名}/%Y% m/ ssl_verify false buffer_path /var/log/ Fluent/swift/${tag_parts[0]}.${tag_parts[1]} time_slice_format %Y%m%d-%H time_slice_wait 10m</template></match>
预先创建 swift_containter 中指定的容器名称即可,但如果不存在,则会自动创建。
6. 运行测试
# td-agent-vv &
您可以一次性启动它,但首先,在调试模式下检查状态大约一个小时,然后检查以下内容。
- 配置文件的格式没有错误。
- 日志正在传输到对象存储
*如果 td-agent 已在运行,并且您只想测试计划添加的设置,请准备一个具有不同名称的配置文件(例如 td-agent.conf.test)。
# td-agent -vv -c /etc/td-agent/td-agent.conf.test &
如果这样做,则可以在不影响现有 td-agent 运行的情况下进行测试。
如果日志转移到对象存储,会出现这样的日志
YYYY-mm-dd HH:MM:SS +0900 [info]: 将日志放入 Swift.container="容器名称" object=主机名/YYYYMM/主机名_日志文件名_YYYYMMDD-HH_NN.gz
7.启动td-agent并设置自动启动
# chkconfig td-agent on && 服务 td-agent 启动
如今基于 Swift 的对象存储很少见,但插件设置与 S3 插件非常相似,所以我认为设置起来并不困难。
祝你生活愉快。