golang消费kafka实现聚合日志

golang消费kafka实现聚合日志_第1张图片

背景

现状

golang消费kafka实现聚合日志_第2张图片

企业开发中会有很多服务,同时会发布多个环境,环境就代表着多个服务器,每次查看日志,先查看docker发布到了哪个服务器上,然后再找到服务器,很繁琐。

golang消费kafka实现聚合日志_第3张图片
消息异步存储,通过kafka接受消息日志,用golang写的一个中间件去消费,生成对应的服务日志文件,然后将中间件改成linux 下 systemctl 命令,把配置发到服务外面,每次更新文件,重启systemctl 服务即可。就不用每次再到各个服务器上面查看日志了。

gokafka代码

https://github.com/fafeidou/go-kafka

部署到日志服务器

执行命令,打包,golang支持交叉编译,也是跨平台的。

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build go-kafka.go

配置systemctl 服务

脚本准备

gokafka-start.sh

#! /bin/sh
/root/go-kafka

gokafka-shutdown.sh

#! /bin/sh
kill -9 $(pidof go-kafka)

go-restart.sh

#! /bin/sh
kill -9 $(pidof go-kafka)
/root/go-kafka

编写systemctl 脚本

vim /usr/lib/systemd/system/gokafka.service

[Unit]
Description=go kafka
After=go kafka service
 
[Service]
Type=simple
ExecStart=/usr/bin/gokafka-start.sh
ExecReload=/use/bin/gokafka-restart.sh
ExecStop=/usr/bin/gokafka-shutdown.sh
 
[Install]
WantedBy=multi-user.target

启动服务

systemctl-daemon-reload
systemctl start gokafka

查看日志

tail -f /roo/xxx/xxxx.log

golang消费kafka实现聚合日志_第4张图片

这里呢,我后台启动go的job定时将日志文件达成压缩包

参考

添加链接linux之systemctl设置自定义服务

添加链接centos7编写自己的服务,运行systemctl后卡住了(即shell阻塞了)

你可能感兴趣的:(工具,go语言)