Docker从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,专业叫法为 Application Container(应用容器)。Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程,不过是用来操作镜像文件的。所以Docker进程+构建的应用镜像文件就等于Docker容器。作为时下最热门的技术,docker轻量、便捷,极大的简化了后端开发/后期运维工作。同时,ELK+Filebeat的集中式日志解决方案也是大热。开发环境,Ubuntu 16.04
1、Docker安装
1.校验Linux内核版本
uname -ir
Linux内核版本高于3.10,64位系统
2.获取最新doker安装包
wget -qO- https://get.docker.com/ | sh
如上图,即安装完成
3.启动docker后台服务
sudo service docker start #启动守护进程
docker -v # 检查版本
如此docker即装好,具体的安装详情,教程很多,不赘述
2、安装elk镜像
1.拉取 sebp/elk镜像
sudo docker pull sebp/elk
镜像较大,差不多1.65G
2.说几个会用到的docker命令
sudo docker images // 查看本地已有镜像 sudo docker run [image] // 拉取并运行镜像 sudo docker ps -a // 查看容器状态
sudo docker stop [image_id] sudo docker rm [image_id] // 删除指定容器 sudo docker exec -it [image_id] /bin/bash // 进入容器,推荐bash //拷贝容器内文件至主机目录 sudo docker [image_id]:/etc/pki/tls/certs/logstash-beats.crt ~ exit // 退出容器
3.运行elk容器
运行elk容器的时候,需将宿主机的端口转发到该容器,其中ES端口为9200,kibana端口为5601,logstash为5044(注:可进入容器自行修改,再自由分配);建议将配置文件和数据存放在宿主机,便于后期维护,因此还需要将宿主机目录挂载在容器/data当中;最终构造的命令如下:
sudo docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -v /home/nya/dockerFile:/data -it -d --name elk sebp/elk
4.ELK服务端简单配置
这里是将ELK作为服务端,而sebp/elk镜像默认生成有ssl证书,将证书拷贝至客户端即可,容器中logstash的相关配置位于/etc/logstash/conf.d,输入默认配置如下:
input { beats { port => 5044 ssl => true ssl_certificate => "/etc/pki/tls/certs/logstash-beats.crt" ssl_key => "/etc/pki/tls/private/logstash-beats.key" } }
注:产生的数据文件及相关配置文件,可统一至于 之前挂载的 /data目录下
5.简单测试
一般不存在问题,可直接访问Kibana页面:
多数无法访问可能因为网络不通,即防火墙未打开:
sudo ufw allow 5601 // 开启5601端口
3、ELK客户端配置
ELK客户端配置核心在于Filebeat的相关配置
1.添加elastic key至客户端
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
2.安装apt-transport-https
由于将使用https传输的elastic数据,需安装apt-transport-https
sudo apt-get install -y apt-transport-https
3.添加elastic库并更新apt-get库
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update
4.安装Filebeat及相关配置
sudo apt-get install -y filebeat
sudo vi /etc/filebeat/filebeat.yml
简版相关配置:
filebeat.prospectors: - input_type: log paths: - /data/rosetta/logs/image-search.log - /data/rosetta/logs/summary.log document_type: syslog output.logstash: hosts: ["ip:5044"] bulk_max_size: 2048 # ssl.certificate_authorities: ["/etc/logstash/logstash.crt"] ssl.certificate_authorities: ["/home/nya/logstash-beats.crt"] template.name: "filebeat" template.path: "filebeat.template.json" template.overwrite: false
注意:配置文件为 .yml,格式特别重要,尤其是配置key: 后必须有一个空格,否则filebeat启动失败。
5.启动Filebeat
sudo systemctl start filebeat // 启动 sudo systemctl enable filebeat // 设置为开机启动 sudo systemctl status filebeat // 检查服务状态
执行检查服务状态,返回结果如下图即可:
4、校验并测试
此处无甚可说,组图展示:
1.
2.
3.
4.
5.大功告成 -- 结束