准备Docker环境和镜像
本实践使用官方最新稳定版的Docker镜像(基于Docker、Docker-Compose)部署Filebeat和ELK。
前提条件
- 准备一台可连接公网的本地PC,系统为Linux,用于拉取Docker镜像。
- 已根据资源规划,完成服务器资源的准备,且ELK所部署的服务器与APIC的SHUBAO组件所在节点网络互通。
操作步骤
- 确认SHUBAO组件所在节点。
- 安装Docker环境。
- 参考安装Docker Engine,为本地PC安装Docker。
- 参考安装Docker Engine和安装Docker Compose为ELK所部署的服务器安装Docker和Docker Compose。
- 参考安装Docker Compose为APIC的SHUBAO组件所在节点安装Docker Compose。
- 在本地PC上,切换root用户,并执行以下命令拉取Docker镜像。
docker pull docker.elastic.co/beats/filebeat:8.7.1 docker pull docker.elastic.co/logstash/logstash:8.7.1 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.7.1 docker pull docker.elastic.co/kibana/kibana:8.7.1 docker pull python:3.8.17
- 执行以下命令查询3中拉取的Docker镜像的镜像ID。
docker images
执行命令后返回如下信息,其中IMAGE ID即为镜像ID。REPOSITORY TAG IMAGE ID CREATED SIZE docker.elastic.co/beats/filebeat 8.7.1 ************ ******** ****** docker.elastic.co/logstash/logstash 8.7.1 ************ ******** ****** docker.elastic.co/elasticsearch/elasticsearch 8.7.1 ************ ******** ****** docker.elastic.co/kibana/kibana 8.7.1 ************ ******** ****** python 3.8.17 ************ ******** ****** ...
- 修改python镜像。
- 执行以下命令进入python镜像。
docker run -it python_image_id bash
其中,python_image_id为4中查询到的python镜像的镜像ID。
- 执行以下命令在镜像内安装依赖。
pip install requests
- 执行以下命令检查安装的依赖是否存在。
#启动Python交互式输入,若使用的Python 3,则执行的命令为python3 python import requests import json import http
如果安装的依赖存在,则无回显;如果安装的依赖不存在,则返回“module not found”,需执行5.b重新安装依赖。
- 执行以下命令退出Python交互式输入和退出镜像。
exit() exit
- 执行以下命令查询python镜像所对应的容器ID。
docker ps -a
执行命令后返回如下回显信息,其中CONTAINER ID即为容器ID,IMAGE为镜像名称或镜像ID。根据4中查询到的python镜像的镜像ID,找到其对应的容器ID。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ****** ****** "********" ******** ******** ********** ****** ****** "********" ******** ******** ********** ...
- 执行以下命令保存镜像。
docker commit container_id python
其中,container_id为5.e中查询到的python镜像的容器ID。
- 执行以下命令进入python镜像。
- 执行以下命令导出镜像文件。
docker save filebeat_image_id > filebeat_image.tar docker save logstash_image_id > logstash_image.tar docker save elasticsearch_image_id > elasticsearch_image.tar docker save kibana_image_id > kibana_image.tar docker save python_image_id > python_image.tar
其中filebeat_image_id、logstash_image_id、elasticsearch_image_id、kibana_image_id和python_image_id为4中查询到的对应组件的镜像ID。
- 把导出的镜像文件上传到服务器中。
- 把镜像文件filebeat_image.tar上传到SHUBAO组件所在节点,步骤1查询到的所有SHUBAO所在的节点都要上传。
- 把镜像文件logstash_image.tar、elasticsearch_image.tar、kibana_image.tar和python_image.tar上传到ELK所部署的服务器。
- 登录SHUBAO组件所在节点,切换root用户,执行以下命令导入Docker镜像。步骤1查询到的所有SHUBAO所在的节点都要执行。
假设镜像文件所在路径为/tmp。
cd /tmp docker load < filebeat_image.tar
- 登录ELK所部署的服务器,切换root用户,执行以下命令导入Docker镜像。
假设镜像文件所在目录为/tmp。
cd /tmp docker load < logstash_image.tar docker load < elasticsearch_image.tar docker load < kibana_image.tar docker load < python_image.tar