【Linux Ubuntu】Docker部署 ELK全家桶 镜像环境

本文详细介绍了如何使用Docker部署和管理Elasticsearch,包括安装指定版本、配置文件的修改、容器的启动与停止、日志查看,以及如何禁用认证和设置账号密码。同时,还涵盖了Kibana和Logstash的安装与配置,以及Kibana的中文设置和Logstash的输入输出配置。此外,提到了Elasticsearch-Head在高版本中的兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防火墙

1、查看防火墙状态

sudo systemctl status ufw

2、开启防火墙

sudo systemctl start ufw

3、关闭防火墙

sudo systemctl stop ufw

4、开机禁止开启防火墙

sudo systemctl disabled ufw

5、开启自启防火墙

sudo systemctl enabled ufw

Elasticsearch

1、安装指定版本 比如 8.2.0

docker pull elasticsearch:8.2.0

2、查看是否拉取成功

docker images

3、选择挂载硬盘创建四个目录,并设置目录权限为可读写。

mkdir es_docker
cd es_docker
mkdir config data logs plugins
chmod -R 777 config data logs plugins

4、先启动一个简单的容器

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.2.0

这里记录一下进入容器的方式

先查看正在运行的容器id。再docker exec -it <container_id>或者<container/name> /bin/bash。输入exit即可退出容器

5、将容器里的config文件夹的东西拷贝到宿主机上。

sudo docker cp elasticsearch:/usr/share/elasticsearch/config /home/niooooo/es_docker

6、删除临时容器

 docker stop elasticsearch
 docker rm -f elasticsearch

7、修改elasticsearch.yml文件

        关闭xpack认证机制(无需账号密码登陆)、关闭SSL认证。

8、构建容器命令

docker run --name es --privileged=true -p 9300:9300 -p 9200:9200 -e ES_JAVA_OPTS="-Xmx512m -Xmx512m" -e "discovery.type=single-node" -v /home/niooooo/es_docker/config:/usr/share/elasticsearch/config -v /home/niooooo/es_docker/data:/usr/share/elasticsearch/data -v /home/niooooo/es_docker/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:8.2.0
# 分行就是长这样 但需要copy上面到虚拟机中
docker run --name es --privileged=true -p 9300:9300 -p 9200:9200 
-e ES_JAVA_OPTS="-Xmx512m -Xmx512m" 
-e "discovery.type=single-node" 
-v /home/niooooo/es_docker/config:/usr/share/elasticsearch/config
-v /home/niooooo/es_docker/data:/usr/share/elasticsearch/data 
-v /home/niooooo/es_docker/plugins:/usr/share/elasticsearch/plugins
-d elasticsearch:8.2.0

9、使用docker ps -a检查es是否正常启动 并且启动es容器,然后使用docker logs来查看该容器的日志。

如果docker ps没有输出内容,而docker ps -a输出内容,表明:

  1. Elasticsearch 容器没有输出任何日志信息。
  2. Elasticsearch 容器没有正确启动。
  3. Elasticsearch 容器的日志输出被重定向到了其他地方。
  4. 于是需要docker start es启动一下容器
docker ps
docker ps -a

docker start <container_id>
docker ps

         下面是关于观看启动日志。

docker logs es

        以上是无需账号密码的情况下的Elasticsearch的配置。接下来我就需要做一下关于要账号密码登陆的笔记。首先进入先前创建好的 es_docker/config/elasticsearch.yml中进行修改

改好后需要重启这个容器

docker stop es
docker rm es
docker run --name es --privileged=true -p 9300:9300 -p 9200:9200 -e ES_JAVA_OPTS="-Xmx512m -Xmx512m" -e "discovery.type=single-node" -v /home/niooooo/es_docker/config:/usr/share/elasticsearch/config -v /home/niooooo/es_docker/data:/usr/share/elasticsearch/data -v /home/niooooo/es_docker/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:8.2.0

进入容器中的bin下设置账号密码

        需要注意的时,进去后需要12次密码,其中6次设置6次确认。默认账号是elastic。

参考文献:es设置账号密码及重制密码 --- 2022-07-01 - 简书

./elasticsearch-setup-passwords interactive

10、卸载镜像

docker rmi image <image_id>/<image_name>

        最后安装好之后通过IP:PORT即可访问。

Kibana

1、安装指定版本 比如8.2.0

docker pull kibana:8.2.0

2、查看是否拉取成功

docker images

3、选择挂载硬盘创建四个目录,并设置目录权限为可读写。

mkdir kibana_docker
cd kibana_docker
mkdir config
chmod -R 777 config

4、启动临时容器(为了拷贝文件)

docker run --name ki -p 5601:5601 -d kibana:8.2.0

5、拷贝文件

sudo docker cp ki:/usr/share/kibana/config /home/niooooo/kibana_docker

6、删除临时容器

docker stop ki
docker rm -f ki

7、修改拷贝后的yml

        IP为安装Elasticsearch的机器地址。

        这里如果有设置账号密码。并且由于页面打开都是英文。所以多设置以下三行。

elsaticseach.username: "kibana_system"
elasticseach.password: "..."
i18n.locale: "zh-CN" 

8、启动容器

docker run --name kibana --privileged=true -p 5601:5601 -v /home/niooooo/kibana_docker/config:/usr/share/kibana/config -d kibana:8.2.0
# 分行就是长这样 但需要copy上面到虚拟机中
docker run --name kibana --privileged=true \
-p 5601:5601 \
-v /home/niooooo/kibana_docker/config:/usr/share/kibana/config \
-d kibana:8.2.0

9、访问Kibana

        http:IP:5601。需要注意的是虽然上面填写的账号是kibana_system。但是登录的话账号是elastic。这是个超级管理员的账号,但是不允许yml中直接配置账号为elastic,否则会报错。

        这里如果配置了Elasticsearch的账号密码的话需要验证。后面需要一个六位Code,输入以下命令即可查看。

docker logs <contains_id>或者<contaions_name>

Logstash

1、拉取镜像

docker pull logstash:8.2.0

2、查看是否拉取成功

docker images

3、创建目录 赋予权限

mkdir logstash_docker
chmod 777 -R logstash_docker

4、开启临时容器

docker run --name=logstash -d logstash:8.2.0

5、拷贝文件 并且赋予权限

sudo docker cp logstash:/usr/share/logstash/config /home/niooooo/logstash_docker
sudo docker cp logstash:/usr/share/logstash/pipeline /home/niooooo/logstash_docker

suto chmod -R 777 config pipeline

4、配置config/logstash.yml

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.217.128:9200" ]
# 如果有配置Elasticseacher账号密码的情况下还需要下面两条配置语句
xpack.monitoring.elasticsearch.username: "elastic"
xpack.monitoring.elasticsearch.password: "..."

5、配置pipeline/logstash.conf

input {
  #beat { port => 5044 } 这样子我是会开启后秒关闭的
  file {
    #标签
    type => "systemlog-localhost"
    #采集点
    path => "/var/log/messages"
    #开始收集点
    start_position => "beginning"
    #扫描间隔时间,默认是1s,建议5s
    stat_interval => "5"
  }
}

output {
  elasticsearch {
    hosts => ["http://192.168.217.128:9200"]
    index => "logstash-system-localhost-%{+YYYY.MM.dd}"
    # 如果有配置Elasticseacher账号密码的情况下还需要配置下面两条语句
    user => "elastic"
    password => "..."
 }
}

6、启动容器

docker run -it --name=logstash -p 9600:9600 -p 5044:5044 -v /home/niooooo/logstash_docker/config:/usr/share/logstash/config -v /home/niooooo/logstash_docker/pipeline:/usr/share/logstash/pipeline -d logstash:8.2.0

Elasticsearch-Head

        注:高版本的Elasticsearch似乎不支持此可视化了。所以8.x以上的版本就不用安装了。亲测8.2.0连接不上此可视化界面。如果你们测试可以的话麻烦评论区探讨一下。

1、拉取镜像

docker pull mobz/elasticsearch-head:5

2、查看镜像是否拉取成功

docker images

3、在使用前还需要修改Es的yml并重启

#开启跨域支持
http.cors.enabled: true
#允许所有人跨域访问
http.cors.allow-origin: "*"

4、 启动容器

docker run -d --name es-header -p 9100:9100 mobz/elasticsearch-head:5

5、访问网址

①未设置Elasticseach密码的情况下直接访问:IP:9100

②设置密码的情况下访问:IP:9100/?auth_user=elastic&auth_password=密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值