背景
现状
企业开发中会有很多服务,同时会发布多个环境,环境就代表着多个服务器,每次查看日志,先查看docker发布到了哪个服务器上,然后再找到服务器,很繁琐。
消息异步存储,通过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
这里呢,我后台启动go的job定时将日志文件达成压缩包