更新时间:2023-11-29 GMT+08:00
分享

准备Docker环境和镜像

本实践使用官方最新稳定版的Docker镜像(基于Docker、Docker-Compose)部署Filebeat和ELK。

前提条件

  • 准备一台可连接公网的本地PC,系统为Linux,用于拉取Docker镜像。
  • 已根据资源规划,完成服务器资源的准备,且ELK所部署的服务器与APIC的SHUBAO组件所在节点网络互通。

操作步骤

  1. 确认SHUBAO组件所在节点。
    1. 登录ROMA Connect控制台,在左侧导航栏选择“Site实例”。
    2. 在要监控日志的Site协同版实例上,单击站点名称,打开站点信息弹窗。

    3. 在弹窗中单击边缘节点的名称,进入该边缘节点的详细信息页面。

    4. 在节点信息页面单击“应用”页签,如果存在名称为“shubao-xxxxxx”的容器应用,则该节点为SHUBAO组件所在节点,记录该节点的IP地址。

    5. 重复步骤1.c-1.d,确认并记录所有SHUBAO组件所在节点的IP地址。
  2. 安装Docker环境。
  3. 在本地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
  4. 执行以下命令查询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   ************   ********   ******
    ...
  5. 修改python镜像。
    1. 执行以下命令进入python镜像。
      docker run -it python_image_id bash

      其中,python_image_id4中查询到的python镜像的镜像ID。

    2. 执行以下命令在镜像内安装依赖。
      pip install requests
    3. 执行以下命令检查安装的依赖是否存在。
      #启动Python交互式输入,若使用的Python 3,则执行的命令为python3
      python
      import requests
      import json
      import http

      如果安装的依赖存在,则无回显;如果安装的依赖不存在,则返回“module not found”,需执行5.b重新安装依赖。

    4. 执行以下命令退出Python交互式输入和退出镜像。
      exit()
      exit
    5. 执行以下命令查询python镜像所对应的容器ID。
      docker ps -a

      执行命令后返回如下回显信息,其中CONTAINER ID即为容器ID,IMAGE为镜像名称或镜像ID。根据4中查询到的python镜像的镜像ID,找到其对应的容器ID。

      CONTAINER ID     IMAGE        COMMAND        CREATED        STATUS      PORTS      NAMES
      ******           ******       "********"     ********       ********               **********
      ******           ******       "********"     ********       ********               **********
      ...
    6. 执行以下命令保存镜像。
      docker commit container_id python

      其中,container_id5.e中查询到的python镜像的容器ID。

  6. 执行以下命令导出镜像文件。
    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_idlogstash_image_idelasticsearch_image_idkibana_image_idpython_image_id4中查询到的对应组件的镜像ID。

  7. 把导出的镜像文件上传到服务器中。
    • 把镜像文件filebeat_image.tar上传到SHUBAO组件所在节点,步骤1查询到的所有SHUBAO所在的节点都要上传。
    • 把镜像文件logstash_image.tar、elasticsearch_image.tar、kibana_image.tar和python_image.tar上传到ELK所部署的服务器。
  8. 登录SHUBAO组件所在节点,切换root用户,执行以下命令导入Docker镜像。步骤1查询到的所有SHUBAO所在的节点都要执行。

    假设镜像文件所在路径为/tmp。

    cd /tmp
    docker load < filebeat_image.tar
  9. 登录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

相关文档