通过上一篇从etcd中获取配置信息, 现在要拿着这些配置项进行日志收集
根据etcd的配置项创建多个tailtask
项目结构:
1 | . |
新增tools包, 包含SetConf
里的main.go
将设置的配置信息导入到etcd中
1 | package main |
直接运行文件
connect succ
/backend/logagent/config/192.168.0.11 : [{"path":"E:/nginx/logs/access.log","topic":"nginx_log"},{"path":"E:/nginx/logs/error.log","topic":"nginx_log_err"}]
成功将配置信息导入到etcd中, 下一步需要根据etcd中的配置项, 创建多个tailtask
我们想要实现的是
E:/nginx/logs/access.log 日志文件发送到kafka的nginx_log中
E:/nginx/logs/error.log 日志文件发送到kafka的nginx_log_err中
main包中新建etcd.go文件
用于初始化连接etcd与从etcd中取出配置信息
因为存入etcd时传入的是json格式,所以取出使用时需要反序列化json.Unmarshal(v.Value, &collectConf)
1 | package main |
修改logagent.conf配置文件
1 | [logs] |
main包中新建ip.go文件
使用net
包取出本机所有的网卡ip去连接etcd
考虑到以后添加新服务器时不需要手动添加ip,这里将ip信息全部存入localIPArray
数组中
1 | package main |
config.go加入etcd配置
1 | // etcd |
1 | // 日志配置 |
tail.go修改序列化
1 | type CollectConf struct { |
main.go函数
将initEtcd
初始化etcd函数放到InitTail
函数之前, 使etcd中的配置项与tailf连接起来
1 | package main |
运行, 成功将etcd中的配置项经过tailf得到配置, 创建了多个tailtask
1 | [169.254.109.181 169.254.30.148 192.168.106.1 192.168.0.1 192.168.0.11 169.254.153.68] |