使用docker部署ELK日志框架-Elasticsearch

一、ELK知识了解

1-ELK组件

工作原理:

(1)在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。

(2)Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。

(3)Elasticsearch 对格式化后的数据进行索引和存储。

(4)Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

2- ELK部署

1、环境
(1) 操作系统版本:

root@kk \~# cat /etc/redhat-release

CentOS Linux release 7.9.2009 (Core)

(2) docker版本( docker安装 --参考-http://t.csdnimg.cn/wiQTu

root@kk \~# docker -v

Docker version 24.0.7, build afdd53b

(3) 本次ELK三个组件选择官网最新8.7.1版本

root@kk \~# systemctl start docker //启动docker

//拉取镜像文件

root@kk \~# docker pull docker.elastic.co/elasticsearch/elasticsearch:8.11.1 //这是最新版本

root@kk \~# docker pull elasticsearch:8.7.1 //本文用8.7版本

查看镜像 docker images

root@kk \~# docker images

2.创建一个ELK容器通信专用网络

root@kk \~# docker network create elastic

6d32f1379cdbe03a44fafd7445aae8dcb15c79825d9ec6f2e34234abcd633f26

查看建立的信道情况:docker network ls

如下图所示:

3.创建ELK目录,方便容器启动后目录挂载

root@kk \~# mkdir -p /etc/{elasticsearch,kibana,logstash}

4. 拉取配置文件

启动elasticsearch

root@kk \~# docker run -d --name es --net elastic -P -e "discovery.type=single-node" elasticsearch:8.7.1

50d2ef8abc301f370664b137c6d6f93bf8dd72b2b7539d4509d8571a04591515

进入容器内

进入配置文件目录

root@kk \~# docker exec -it es /bin/bash

elasticsearch@50d2ef8abc30:~$ cd /usr/share/elasticsearch/config

( 容器内工作目录为/usr/share/elasticsearch/config)

退出容器

elasticsearch@50d2ef8abc30:~/config$ exit

exit

复制文件

root@kk \~# docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /etc/elasticsearch/config

Successfully copied 2.56kB to /etc/elasticsearch/config

修改权限

chmod -R 777 /etc/elasticsearch

5.重新启动容器并挂载目录

查看运行的容器

root@kk \~# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c2a3a23141dd elasticsearch:8.7.1 "/bin/tini -- /usr/l..." 9 minutes ago Up 9 minutes 0.0.0.0:32769->9200/tcp, :::32769->9200/tcp, 0.0.0.0:32768->9300/tcp, :::32768->9300/tcp es

删除临时启动容器

vibrant_blackwell

root@kk \~# docker rm -f es

es

启动容器挂载目录

docker run -d --name es --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /etc/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /etc/elasticsearch/data/:/usr/share/elasticsearch/data -v /etc/elasticsearch/plugins/:/usr/share/elasticsearch/plugins --privileged=true elasticsearch:8.7.1

root@kk \~# docker run -d elasticsearch:8.7.1

e48d06b30424b9d345431152cc69d0870fcbf2e0cbe60f48e3a3e9b51684788e

若无加载的容器,那么需要重启docker

sudo systemctl restart docker

查看容器状态

docker ps

查看容器日志状态

docker logs -f es

总算启动成功。

插曲:

期间出现下面问题,删除容器docker 重装不成功,之后把容器删除,重新挂载,后再次启动容器反复尝试。

复制代码
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/etc/elasticsearch/config/elasticsearch.yml" to rootfs at "/usr/share/elasticsearch/config/elasticsearch.yml": stat /etc/elasticsearch/config/elasticsearch.yml: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

查询解决方案:

这个错误通常是由于容器无法启动导致的。错误信息中提到了一个文件路径的问题,可能是由于文件路径不存在或者文件类型不匹配导致的。建议您检查一下容器的配置文件,确保文件路径正确,并且文件类型与容器内部的文件类型匹配。如果文件路径正确,但是文件类型不匹配,您可以尝试将文件复制到容器内部,并将其类型更改为正确的类型。如果问题仍然存在,您可以尝试重新安装Docker或者更新Docker版本,以确保Docker的正常运行。

没办法,只能重新安装下docker 版本再从头来。

6.验证elasticsearch是否正常启动

curl 172.20.193.85:9200

相关推荐
呆萌的代Ma7 分钟前
解决docker网络问题,通过GitHub Actions打包dockerfile
docker·容器·github
qq_4523962315 分钟前
第十七篇:《Docker 日志管理:驱动配置与集中收集》
运维·docker·容器
Dontla44 分钟前
WSL2 docker-desktop发行版介绍(用于运行Docker引擎(Docker Engine))(docker-desktop-data)
运维·docker·容器
小蜗牛的路1 小时前
Linux redhat 7在线安装docker、下载docker依赖、离线安装docker
linux·运维·docker
qq_452396231 小时前
第十六篇:《Docker 安全基础:容器隔离与权限控制》
安全·docker·容器
Plastic garden1 小时前
Docker Compose 的 RuoYi nginx exporter Prometheus + Alertmanager + 钉钉告警
nginx·docker·prometheus
Jul1en_2 小时前
【Redis】Docker 部署集群补充说明
redis·docker·eureka
Irene199112 小时前
Win11 自动更新导致 Docker Desktop 无法正常启动,Oracle SQL Developer 启动时报错
docker·更新
darkdragonking14 小时前
OpenEuler 22.03 ,以docker ce 安装 Milvus 及可视化工具
docker·容器·milvus
我叫张土豆16 小时前
V100 显卡部署 Qwen3-ASR-1.7B 语音识别模型(vLLM + Docker 完整教程)
docker·语音识别·vllm