java运行过程中日志收集上传_浅谈日志收集

36fc97314ad5ffdbb20d04120b6b68a3.png

由于想把多台AppServer上的日志集中到一台机器,那么应用程序的日志输出位置应该是有规律的、固定的(和研发人员商定), 下面用我做过的一个具体需求举例分析:

日志目录结构:

├── public│ └── release-v0.2.20│ └── sys_log.log

├── serv_arena

│ └── release-v0.1.10├── serv_guild

│ └── release-v0.1.10│ └── sys_log.log

├── serv_name

│ └── release-v0.1.10│ └── sys_log.log

通过日志目录结构可以发现,服务器上运行了public、serv_arena等微服务,微服务目录里是程序版本,程序版本目录可能有多个,程序版本目录中是最终log。

日志原始格式:

这里输出的日志是纯文件格式,有些日志则可能是Json等其它格式,对于不同格式,可以选则不同的parser来处理

研发人员的需求是:

日志到LogServer后,目录结果不变。

下面是具体配置过程

step1:

在三台App Server上和LogServer上都安装Fluentd:

$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh

我当前的版本在安装完成后,会在/etc/td-agent/目录下生成td-agent.conf文件和plugin目录,我通常会再建立一个conf.d目录,并把所有配置文件细分放进去,并在td-agent.d里include进来,这是个人习惯,感觉很清爽。所以目录结构最后为:

# tree /etc/td-agent/

/etc/td-agent/├── conf.d

├── plugin

└── td-agent.conf

step2:

Fluentd已经安装好了,下面就要对其进行配置,三台App Server上的配置是一样的,但是 LogServer上的配置略有不同,因为Fluentd在Logserver

端的角色是接收端。

LogServer端Fluentd配置:

# cat td-agent.conflog_levelinfo

@type forward

port24224bind0.0.0.0

@include/etc/td-agent/conf.d/*.conf

# cat conf.d/raid.conf@typefilepath/mnt/logs/raid/%Y%m%d/${tag[4]}/${tag[5]}.${tag[6]}.${tag[7]}/${tag[8]}_%Y%m%d%H

appendtrue

@typefilepath/mnt/logs/raid/buffer/timekey 1h

chunk_limit_size 5MB

flush_interval 5s

flush_mode interval

flush_thread_count8flush_at_shutdowntrue

这里值得一说的是path选项,这里用到了tag选项来获取一些信息,而tag信息是从AppServer端的Fluentd配置中传过来的,最后path的结果如下:

# tree /mnt/logs/

/mnt/logs/└── raid

├──20200623│ ├── public

│ └── serv_guild

│ └── release-v0.1.10│ └── sys_log_2020062307.log

└── buffer

AppServer端Fluentd配置:

# cat td-agent.conf

@include/etc/td-agent/conf.d/*.conf

@typetailpath/mnt/logs/raid/public/*/*

pos_file /var/log/td-agent/public.log.pos

tag raid.*

@type none

time_format %Y-%m-%dT%H:%M:%S.%L

refresh_interval 5s

@type tail

path /mnt/logs/raid/serv_arena/*/*pos_file/var/log/td-agent/serv_arena.log.pos

tag raid.*

@type none

time_format%Y-%m-%dT%H:%M:%S.%L

@typetailpath/mnt/logs/raid/serv_guild/*/*

pos_file /var/log/td-agent/serv_guild.log.pos

tag raid.*

@type none

time_format %Y-%m-%dT%H:%M:%S.%L

@type tail

path /mnt/logs/raid/serv_name/*/*pos_file/var/log/td-agent/serv_name.log.pos

tag raid.*

@type none

time_format%Y-%m-%dT%H:%M:%S.%L

@type record_transformerhost_param"#{Socket.gethostname}"

@type forwardname raid-logserver

host10.83.36.106port24224

@type single_value

message_key message

add_newlinetrue

这时值得一说的仍然是path和tag选项,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值