class="hljs-ln-code"> class="hljs-ln-line">- **作用**:以后台模式(detached mode)运行容器。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="3"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`-d` 参数表示容器在后台运行,不会占用当前终端。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="4"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="5"> class="hljs-ln-code"> class="hljs-ln-line">### `--name elasticsearch`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="6"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:为容器指定一个名称。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="7"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`elasticsearch` 是容器的名称,方便后续管理和引用。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="8"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="9"> class="hljs-ln-code"> class="hljs-ln-line">### `--env cluster.name=es-app-cluster`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="10"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:设置 Elasticsearch 集群的名称。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="11"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`es-app-cluster` 是集群的名称,用于标识和管理多个集群。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="12"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="13"> class="hljs-ln-code"> class="hljs-ln-line">### `--env bootstrap.memory_lock=true`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="14"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:启用内存锁定。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="15"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`true` 表示 Elasticsearch 将锁定内存,防止操作系统交换内存到磁盘,从而提高性能。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="16"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="17"> class="hljs-ln-code"> class="hljs-ln-line">### `--env node.name=node-01`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="18"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:设置节点的名称。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="19"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`node-01` 是节点的名称,用于标识集群中的不同节点。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="20"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="21"> class="hljs-ln-code"> class="hljs-ln-line">### `--env discovery.type=single-node`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="22"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:设置发现类型为单节点模式。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="23"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`single-node` 表示这是一个单节点的 Elasticsearch 实例,适用于开发和测试环境。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="24"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="25"> class="hljs-ln-code"> class="hljs-ln-line">### `--env xpack.security.enabled=true`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="26"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:启用 X-Pack 安全功能。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="27"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`true` 表示启用 X-Pack 安全功能,包括用户认证、授权等。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="28"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="29"> class="hljs-ln-code"> class="hljs-ln-line">### `--env xpack.security.http.ssl.enabled=false`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="30"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:禁用 HTTP SSL/TLS 加密。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="31"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`false` 表示不启用 HTTP SSL/TLS 加密,适用于内部网络或开发环境。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="32"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="33"> class="hljs-ln-code"> class="hljs-ln-line">### `--env xpack.security.transport.ssl.enabled=false`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="34"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:禁用传输层 SSL/TLS 加密。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="35"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`false` 表示不启用传输层 SSL/TLS 加密,适用于内部网络或开发环境。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="36"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="37"> class="hljs-ln-code"> class="hljs-ln-line">### `--env ingest.geoip.downloader.enabled=false`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="38"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:禁用 GeoIP 下载器。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="39"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`false` 表示不启用 GeoIP 下载器,减少不必要的资源消耗。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="40"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="41"> class="hljs-ln-code"> class="hljs-ln-line">### `--env ELASTIC_USERNAME=elastic`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="42"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:设置 Elasticsearch 的用户名。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="43"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`elastic` 是默认的超级管理员用户名。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="44"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="45"> class="hljs-ln-code"> class="hljs-ln-line">### `--env ELASTIC_PASSWORD=elastic`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="46"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:设置 Elasticsearch 的密码。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="47"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`elastic` 是默认的超级管理员密码。在生产环境中,建议使用更复杂的密码。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="48"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="49"> class="hljs-ln-code"> class="hljs-ln-line">### `--env ES_JAVA_OPTS="-Xms256m -Xmx256m"`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="50"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:设置 JVM 的堆内存大小。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="51"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`-Xms256m` 设置初始堆内存大小为 256MB,`-Xmx256m` 设置最大堆内存大小为 256MB。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="52"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="53"> class="hljs-ln-code"> class="hljs-ln-line">### `--ulimit memlock=-1:-1`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="54"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:设置内存锁定限制。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="55"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`-1:-1` 表示不限制内存锁定,允许 Elasticsearch 锁定所有分配的内存。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="56"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="57"> class="hljs-ln-code"> class="hljs-ln-line">### `--volume /etc/localtime:/etc/localtime:ro`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="58"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:挂载宿主机的 `/etc/localtime` 到容器的 `/etc/localtime`,并且以只读方式挂载。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="59"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:确保容器使用宿主机的系统时间。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="60"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="61"> class="hljs-ln-code"> class="hljs-ln-line">### `--volume /etc/timezone:/etc/timezone:ro`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="62"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:挂载宿主机的 `/etc/timezone` 到容器的 `/etc/timezone`,并且以只读方式挂载。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="63"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:确保容器使用宿主机的时区设置。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="64"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="65"> class="hljs-ln-code"> class="hljs-ln-line">### `--publish 9200:9200`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="66"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:将容器的 9200 端口映射到宿主机的 9200 端口。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="67"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**9200 端口是 Elasticsearch 的 HTTP API 端口。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="68"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="69"> class="hljs-ln-code"> class="hljs-ln-line">### `--publish 9300:9300`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="70"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:将容器的 9300 端口映射到宿主机的 9300 端口。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="71"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**9300 端口是 Elasticsearch 的传输层通信端口,用于节点间通信。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="72"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="73"> class="hljs-ln-code"> class="hljs-ln-line">### `--network elk-net`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="74"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:将容器连接到指定的 Docker 网络。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="75"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`elk-net` 是之前创建的专用 Docker 网络,用于连接 ELK 组件。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="76"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="77"> class="hljs-ln-code"> class="hljs-ln-line">### `--restart always`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="78"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:设置容器的重启策略。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="79"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`always` 表示无论容器退出状态如何,都会自动重启容器。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="80"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="81"> class="hljs-ln-code"> class="hljs-ln-line">### `--privileged`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="82"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:赋予容器特权模式。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="83"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`--privileged` 表示容器具有几乎所有的内核能力,适用于需要高级权限的场景。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="84"> class="hljs-ln-code"> class="hljs-ln-line">
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="85"> class="hljs-ln-code"> class="hljs-ln-line">### `docker.elastic.co/elasticsearch/elasticsearch:8.6.2`
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="86"> class="hljs-ln-code"> class="hljs-ln-line">- **作用**:指定要使用的 Docker 镜像。
  • class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="87"> class="hljs-ln-code"> class="hljs-ln-line">- **解释**:`docker.elastic.co/elasticsearch/elasticsearch:8.6.2` 是 Elasticsearch 的官方镜像,版本为 8.6.2
  • class="hide-preCode-box"> class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    4、运行kibana容器

    docker run -d \
    --name kibana \
    --env ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
    --env ELASTICSEARCH_USERNAME=kibana_system \
    --env ELASTICSEARCH_PASSWORD=elastic \
    --env XPACK_SECURITY_ENABLED=true \
    --env SERVER_NAME=kibana \
    --volume /etc/localtime:/etc/localtime:ro \
    --volume /etc/timezone:/etc/timezone:ro \
    --publish 5601:5601 \
    --network elk-net \
    --restart always \
    --privileged \
    docker.elastic.co/kibana/kibana:8.6.2

    注意:请耐心等待下载完成并运行即可

    参数说明

    1. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="1"> class="hljs-ln-code"> class="hljs-ln-line">docker run -d
    2. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="2"> class="hljs-ln-code"> class="hljs-ln-line">作用:以后台模式(detached mode)运行容器。
    3. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="3"> class="hljs-ln-code"> class="hljs-ln-line">解释:-d 参数表示容器在后台运行,不会占用当前终端。
    4. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="4"> class="hljs-ln-code"> class="hljs-ln-line">--name kibana
    5. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="5"> class="hljs-ln-code"> class="hljs-ln-line">作用:为容器指定一个名称。
    6. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="6"> class="hljs-ln-code"> class="hljs-ln-line">解释:kibana 是容器的名称,方便后续管理和引用。
    7. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="7"> class="hljs-ln-code"> class="hljs-ln-line">--env ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    8. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="8"> class="hljs-ln-code"> class="hljs-ln-line">作用:设置 Kibana 连接的 Elasticsearch 实例的地址。
    9. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="9"> class="hljs-ln-code"> class="hljs-ln-line">解释:http://elasticsearch:9200 表示 Kibana 将连接到名为 elasticsearch 的主机上的 Elasticsearch 服务,端口为 9200。这通常用于 Docker 容器或 Kubernetes 集群中的服务发现。
    10. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="10"> class="hljs-ln-code"> class="hljs-ln-line">--env ELASTICSEARCH_USERNAME=kibana_system
    11. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="11"> class="hljs-ln-code"> class="hljs-ln-line">作用:设置 Kibana 连接 Elasticsearch 时使用的用户名。
    12. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="12"> class="hljs-ln-code"> class="hljs-ln-line">解释:kibana_system 是 Kibana 用于连接 Elasticsearch 的用户名。
    13. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="13"> class="hljs-ln-code"> class="hljs-ln-line">--env ELASTICSEARCH_PASSWORD=elastic
    14. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="14"> class="hljs-ln-code"> class="hljs-ln-line">作用:设置 Kibana 连接 Elasticsearch 时使用的密码。
    15. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="15"> class="hljs-ln-code"> class="hljs-ln-line">解释:elastic 是 Kibana 用于连接 Elasticsearch 的密码。在生产环境中,建议使用更复杂的密码。
    16. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="16"> class="hljs-ln-code"> class="hljs-ln-line">--env XPACK_SECURITY_ENABLED=true
    17. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="17"> class="hljs-ln-code"> class="hljs-ln-line">作用:启用 X-Pack 安全功能。
    18. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="18"> class="hljs-ln-code"> class="hljs-ln-line">解释:true 表示启用 X-Pack 安全功能,包括用户认证、授权等。
    19. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="19"> class="hljs-ln-code"> class="hljs-ln-line">--env SERVER_NAME=kibana
    20. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="20"> class="hljs-ln-code"> class="hljs-ln-line">作用:设置 Kibana 服务器的名称。
    21. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="21"> class="hljs-ln-code"> class="hljs-ln-line">解释:kibana 是 Kibana 服务器的名称,用于标识和管理。
    22. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="22"> class="hljs-ln-code"> class="hljs-ln-line">--volume /etc/localtime:/etc/localtime:ro
    23. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="23"> class="hljs-ln-code"> class="hljs-ln-line">作用:挂载宿主机的 /etc/localtime 到容器的 /etc/localtime,并且以只读方式挂载。
    24. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="24"> class="hljs-ln-code"> class="hljs-ln-line">解释:确保容器使用宿主机的系统时间。
    25. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="25"> class="hljs-ln-code"> class="hljs-ln-line">--volume /etc/timezone:/etc/timezone:ro
    26. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="26"> class="hljs-ln-code"> class="hljs-ln-line">作用:挂载宿主机的 /etc/timezone 到容器的 /etc/timezone,并且以只读方式挂载。
    27. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="27"> class="hljs-ln-code"> class="hljs-ln-line">解释:确保容器使用宿主机的时区设置。
    28. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="28"> class="hljs-ln-code"> class="hljs-ln-line">--publish 5601:5601
    29. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="29"> class="hljs-ln-code"> class="hljs-ln-line">作用:将容器的 5601 端口映射到宿主机的 5601 端口。
    30. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="30"> class="hljs-ln-code"> class="hljs-ln-line">解释:5601 端口是 Kibana 的默认 HTTP 服务端口,用于访问 Kibana 用户界面。
    31. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="31"> class="hljs-ln-code"> class="hljs-ln-line">--network elk-net
    32. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="32"> class="hljs-ln-code"> class="hljs-ln-line">作用:将容器连接到指定的 Docker 网络。
    33. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="33"> class="hljs-ln-code"> class="hljs-ln-line">解释:elk-net 是之前创建的专用 Docker 网络,用于连接 ELK 组件。
    34. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="34"> class="hljs-ln-code"> class="hljs-ln-line">--restart always
    35. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="35"> class="hljs-ln-code"> class="hljs-ln-line">作用:设置容器的重启策略。
    36. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="36"> class="hljs-ln-code"> class="hljs-ln-line">解释:always 表示无论容器退出状态如何,都会自动重启容器。
    37. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="37"> class="hljs-ln-code"> class="hljs-ln-line">--privileged
    38. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="38"> class="hljs-ln-code"> class="hljs-ln-line">作用:赋予容器特权模式。
    39. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="39"> class="hljs-ln-code"> class="hljs-ln-line">解释:--privileged 表示容器具有几乎所有的内核能力,适用于需要高级权限的场景。在大多数情况下,Kibana 不需要特权模式,除非有特殊需求。
    40. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="40"> class="hljs-ln-code"> class="hljs-ln-line">docker.elastic.co/kibana/kibana:8.6.2
    41. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="41"> class="hljs-ln-code"> class="hljs-ln-line">作用:指定要使用的 Docker 镜像。
    42. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="42"> class="hljs-ln-code"> class="hljs-ln-line">解释:docker.elastic.co/kibana/kibana:8.6.2 是 Kibana 的官方镜像,版本为 8.6.2
    class="hide-preCode-box"> class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    5、启动filebeat容器

    docker run -d \
    --name filebeat \
    --volume /etc/localtime:/etc/localtime:ro \
    --volume /etc/timezone:/etc/timezone:ro \
    --network elk-net \
    --restart always \
    --privileged \
    --user root \
    docker.elastic.co/beats/filebeat:8.6.2

    参数说明

    1. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="1"> class="hljs-ln-code"> class="hljs-ln-line">docker run -d
    2. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="2"> class="hljs-ln-code"> class="hljs-ln-line">作用:以后台模式(detached mode)运行容器。
    3. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="3"> class="hljs-ln-code"> class="hljs-ln-line">解释:-d 参数表示容器在后台运行,不会占用当前终端。
    4. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="4"> class="hljs-ln-code"> class="hljs-ln-line">--name filebeat
    5. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="5"> class="hljs-ln-code"> class="hljs-ln-line">作用:为容器指定一个名称。
    6. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="6"> class="hljs-ln-code"> class="hljs-ln-line">解释:filebeat 是容器的名称,方便后续管理和引用。
    7. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="7"> class="hljs-ln-code"> class="hljs-ln-line">--volume /etc/localtime:/etc/localtime:ro
    8. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="8"> class="hljs-ln-code"> class="hljs-ln-line">作用:挂载宿主机的 /etc/localtime 到容器的 /etc/localtime,并且以只读方式挂载。
    9. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="9"> class="hljs-ln-code"> class="hljs-ln-line">解释:确保容器使用宿主机的系统时间。
    10. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="10"> class="hljs-ln-code"> class="hljs-ln-line">--volume /etc/timezone:/etc/timezone:ro
    11. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="11"> class="hljs-ln-code"> class="hljs-ln-line">作用:挂载宿主机的 /etc/timezone 到容器的 /etc/timezone,并且以只读方式挂载。
    12. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="12"> class="hljs-ln-code"> class="hljs-ln-line">解释:确保容器使用宿主机的时区设置。
    13. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="13"> class="hljs-ln-code"> class="hljs-ln-line">--network elk-net
    14. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="14"> class="hljs-ln-code"> class="hljs-ln-line">作用:将容器连接到指定的 Docker 网络。
    15. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="15"> class="hljs-ln-code"> class="hljs-ln-line">解释:elk-net 是之前创建的专用 Docker 网络,用于连接 ELK 组件。这样可以确保 Filebeat 能够与 Elasticsearch 和 Kibana 通信。
    16. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="16"> class="hljs-ln-code"> class="hljs-ln-line">--restart always
    17. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="17"> class="hljs-ln-code"> class="hljs-ln-line">作用:设置容器的重启策略。
    18. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="18"> class="hljs-ln-code"> class="hljs-ln-line">解释:always 表示无论容器退出状态如何,都会自动重启容器。这有助于确保 Filebeat 服务的高可用性。
    19. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="19"> class="hljs-ln-code"> class="hljs-ln-line">--privileged
    20. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="20"> class="hljs-ln-code"> class="hljs-ln-line">作用:赋予容器特权模式。
    21. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="21"> class="hljs-ln-code"> class="hljs-ln-line">解释:--privileged 表示容器具有几乎所有的内核能力,适用于需要高级权限的场景。在大多数情况下,Filebeat 不需要特权模式,除非有特殊需求。
    22. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="22"> class="hljs-ln-code"> class="hljs-ln-line">--user root
    23. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="23"> class="hljs-ln-code"> class="hljs-ln-line">作用:指定容器以特定用户身份运行。
    24. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="24"> class="hljs-ln-code"> class="hljs-ln-line">解释:root 表示容器将以 root 用户身份运行。这通常是出于权限管理的考虑,确保 Filebeat 有足够的权限访问日志文件。
    25. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="25"> class="hljs-ln-code"> class="hljs-ln-line">docker.elastic.co/beats/filebeat:8.6.2
    26. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="26"> class="hljs-ln-code"> class="hljs-ln-line">作用:指定要使用的 Docker 镜像。
    27. class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="27"> class="hljs-ln-code"> class="hljs-ln-line">解释:docker.elastic.co/beats/filebeat:8.6.2 是 Filebeat 的官方镜像,版本为 8.6.2
    class="hide-preCode-box"> class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">

    6、查看上述三个服务运行状态

    docker ps  如上图所示,表示三个服务都已正常启动

    7、复制elasticsearch、kibana、filebeat配置文件

    将elasticsearch、kibana容器内的config、data、logs这三个目录复制到宿主机咱们刚才第一步创建的目录中,具体操作如下

    8、修改elasticsearch、kibana、filebeat配置文件 

     9、修改完成配置文件后,再次分别修改三个容器服务的启动命令

    在我们修改三个容器服务的启动命令之前,先将它们停止并删除

    docker stop filebeat kibana elasticsearch
    docker rm filebeat kibana elasticsearch
     

    修改elasticsearch启动命令,并最终以此命令为最终执行启动容器的命令(多加入了三个volume映射目录),然后执行此命令
    docker run -d \
    --name elasticsearch \
    --env cluster.name=es-app-cluster \
    --env bootstrap.memory_lock=true \
    --env node.name=node-01 \
    --env discovery.type=single-node \
    --env xpack.security.enabled=true \
    --env xpack.security.http.ssl.enabled=false \
    --env xpack.security.transport.ssl.enabled=false \
    --env ingest.geoip.downloader.enabled=false \
    --env ELASTIC_USERNAME=elastic \
    --env ELASTIC_PASSWORD=elastic \
    --env ES_JAVA_OPTS="-Xms256m -Xmx256m" \
    --ulimit memlock=-1:-1 \
    --volume /usr/local/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    --volume /usr/local/elk/elasticsearch/data:/usr/share/elasticsearch/data \
    --volume /usr/local/elk/elasticsearch/logs:/usr/share/elasticsearch/logs \
    --volume /etc/localtime:/etc/localtime:ro \
    --volume /etc/timezone:/etc/timezone:ro \
    --publish 9200:9200 \
    --publish 9300:9300 \
    --network elk-net \
    --restart always \
    --privileged \
    docker.elastic.co/elasticsearch/elasticsearch:8.6.2

     接下来,修改kibana启动命令(多加入了三个volume映射目录)

    docker run -d \
    --name kibana \
    --env ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
    --env ELASTICSEARCH_USERNAME=kibana_system \
    --env ELASTICSEARCH_PASSWORD=elastic \
    --env XPACK_SECURITY_ENABLED=true \
    --env SERVER_NAME=kibana \
    --volume /usr/local/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
    --volume /usr/local/elk/kibana/data:/usr/share/kibana/data \
    --volume /usr/local/elk/kibana/logs:/usr/share/kibana/logs \
    --volume /etc/localtime:/etc/localtime:ro \
    --volume /etc/timezone:/etc/timezone:ro \
    --publish 5601:5601 \
    --network elk-net \
    --restart always \
    --privileged \
    docker.elastic.co/kibana/kibana:8.6.2

    最后,修改filebeat启动容器命令 (多加入了三个volume映射目录,同时为了filebeat有足够的权限,给filebeat容器配置用户为root)

    docker run -d \
    --name filebeat \
    --volume /usr/local/elk/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml \
    --volume /usr/local/elk/filebeat/data:/usr/share/filebeat/data \
    --volume /usr/local/elk/filebeat/logs:/usr/share/filebeat/logs \
    --volume /usr/workspace/logs/third-data-send:/host/var/log/third-data-send \
    --volume /usr/workspace/logs/third-data-send-manager:/host/var/log/third-data-send-manager \
    --volume /etc/localtime:/etc/localtime:ro \
    --volume /etc/timezone:/etc/timezone:ro \
    --network elk-net \
    --restart always \
    --privileged \
    --user root \
    docker.elastic.co/beats/filebeat:8.6.2

    上述三个服务启动命令修改并成功运行后,查看服务状态
    docker ps 

    如图所示status都是Up开头则表示启动成功,且正常运行

    10、修改elasticsearch系统用户密码 

    进入elasticsearch容器

    docker exec -it elasticsearch /bin/bash

    执行下面的代码
    ./bin/elasticsearch-setup-passwords interactive

    回车后选择“y”后再回车,然后就是漫长的输入密码-确认密码的过程了,要耐心,一直输下去,直至最终结束,在此过程中,为了方便,我所有的用户的密码,我都设置为elastic,你可以设置其它密码也行,密码要求最低6个字符

    修改密码结束后exit退出容器

    重启服务

    docker restart elasticsearch kibana filebeat

    11、浏览器访问服务

    我的ip是192.168.7.46,

    打开浏览器访问http://服务器IP:9200/ 查看elasticsearch状态,提示登录,

     

    输入刚才你设定的密码,就可以登录,比如我给elastic用户设定的密码是elastic,然后就可以登录了,登录成功后如下图

    然后访问kibana服务

    打开浏览器访问http://服务器IP:5601/,注意ip是你的服务器ip,端口就是5601,首次访问页面如下,需要先配置Elastic,我们选择自己手动配置一下,然后配置Elastic服务地址,修改下ip和端口,如我就是配置的是192.168.7.46:9200,访问后提示登录,同上一步一样,我使用elastic用户,密码我设定的elastic,然后登录即可

    12、配置和使用Kibana

    登录成功进入首页

    查看索引

    进入索引管理,就能看到我们配置的数据流数据、索引模板数据了

    配置kibana,进行日志查看

    创建数据视图

    然后如上图所示:名称自己可以自定义一个名称,索引模式必须按之前filebeat.yml里配置的索引,格式为:索引-*,正确配置好索引模式后,右边会显示适配的结果,如上图: 您的索引模式匹配 1 个源,third-data-send-api-2024.12.13数据流,最后保存即可。

    然后按照此步骤我又创建了third-data-send-manager视图,共两个视图

    创建好视图后,左侧菜单Discover进入日志查询界面

    进入Discover日志查询界面,可切换不同项目,查看日志

    显示区域里的日志内容太乱,我们没必要显示那么多字段,只需显示message即可,如下配置:

    添加完成message字段以后,如下图,显示的日志更清晰了

    如果日志内容太多,我们想精确查询,可以使用KQL语法进行查询,列如,我想查询message里包含“温湿度”的日志,输入语法为 message:温湿度,如下图

    关于更具体的KQL语法,可自行百度学习,此处不再赘述。

    关于查询条件,我们可以根据自己的需要自己设置查询时间,刷新频率等

    至此,docker安装ELK完成。

    data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/wangchange/article/details/144371858","extend1":"pc","ab":"new"}">>
    注:本文转载自blog.csdn.net的WCL-JAVA的文章"https://blog.csdn.net/wangchange/article/details/144371858"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
    复制链接

    评论记录:

    未查询到任何数据!