目前生产环境的日志基本都是采用 Flask 文件日志写入 + Gunicorn 文件日志写入 + logrotate做按日切割,日志文件保留30天的数量,这样的方案比较适合简单的场景,长时间下来就有以下几个问题:
- 服务程序都是分布式部署,所以每个服务器都有自己的本地日志,如果有问题需要查看日志,需要连接到每个服务器来查看
- 日志是按日切割的,所以排查日志跨度比较大,则需要查看多个日志文件切换排查
- 日志下载则受限服务器出口带宽下载慢,在线查看vim的搜索机制比较单一
所以根据资料查询,目前确定将日志都统一使用 ELK 收集, 对于以上的问题都有比较好的解决,除此之外还可以保留更长时间的日志及美观的可视化操作,ElasticSearch提供比较优秀的开源关键字搜索,而且这个方案已经被很多人验证,又有商业公司专门维护开源版本,所以是一个很好的选择。
1. 服务器版本是 Centos 7.2 版本,ELK 则直接使用 Docker 来安装,并且可以通过Docker直接托管进程,非常的方便。我们使用的是一个开源的 ELK 镜像配置项目,该项目要求 Docker 17.05+
yum自带的Docker 版本比较低,需要安装更新版本的 Docker,如果已经安装了旧版本的Docker,需要先手动卸载
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
然后安装Docker 必须的依赖库及、添加Dokcer官方的yum源及安装 Docker
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install -y docker-ce
安装完成后输入docker -v 可以查看 Docker 的版本