使用 docker 搭建 ELK 分布式日志同步方案
ELK 作为业界最常用日志同步方案,我们今天尝试一下使用 docker 快速搭建一套 ELK 方案。ELK 使用国内加速源拉取的镜像比较旧,有条件的朋友可以拉取官网的源。elasticsearch 作为日志储存库(数据库),kibana 的作用通过 elasticsearch 的 API 接口调取其中数据作可视化分析,logstash 的作用就是将程序生成的日志同步到 elasticsearch。
搭建 Elasticsearch
其中 discovery.type 必填,不然启动失败,简单选择单节点规模,如果在内网建议填写 xpack.security.enabled 为 false,因为默认值是 true,默认 elasticsearch 需要授权访问,内网网络这一步可以省掉。
搭建 kibana
通过 docker 的 link 参数,与刚刚搭建的 elasticsearch 容器关联起来,默认数据就会关联起来,elasticsearch 通过 API 进行数据访问,如果刚才搭建 elasticsearch 容器 xpack.security.enabled 没有填写 false,此时则需要配置授权。
搭建 Web 站点
拉取网站镜像启动容器,切记同步一下主机的时间和时区,容器默认是国际标准时间和时区,会有 8 个小时的差值。-v /etc/localtime:/etc/localtime 的作用是同步主机时间,-e TimeZone=Asia/Shanghai 的作用是同步主机时区。
-v /Logs:/app/Logs 作用是挂载点,将容器的日志文件夹挂载到主机文件上面,这一步很重要,logstash 同步日志需要挂载这个主机的日志文件夹。
搭建 Logstash
logstash 需要先配置参数,才可以启动镜像。
input 是输入源,选择文件,地址应该是与程序容器日志挂载点相同。
output 是输出源,选择 elasticsearch,填写刚刚启动的 elasticsearch 容器,如果搭建 elasticsearch 容器 xpack.security.enabled 没有填写 false,此时则需要配置授权。
将主机的日志挂载点传进容器,将 logstash.conf 配置文件挂载进去。
四个容器启动之后,ELK 日志收集方案就基本搭建完毕,程序生产的日志通过挂载同步到主机,再同步进 logstash 的容器,由 logstash 定时读取将数据通过 elasticsearch 的 API 写入库,再通过 kibana 的可视化界面进行分析。
访问 kibana 可视化界面可以就进行日志实时同步分析,根据我的容器端口和 IP 地来看,我的 kibana 站点地址是:http://192.168.3.105:5601
文章转载自:老猿新码
评论