关于linux使用docker部署ELK带安全认证并配置logstash同步mysql到ES

本文档详细介绍了如何使用Docker在Linux环境中部署Elasticsearch、Kibana和Logstash的7.6.1版本,并配置安全认证。首先,拉取相关镜像,创建网络。接着,启动Elasticsearch容器并修改配置以启用安全认证,设置用户密码。然后,部署Kibana容器并调整配置文件以连接Elasticsearch。最后,配置Logstash从MySQL同步数据到Elasticsearch,并观察同步效果。整个过程包括容器创建、配置修改、日志查看等步骤。

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

关于Linux使用docker部署ELK带安全认证并配置logstash同步mysql到ES

1.拉取ELK镜像

一、拉取es:7.6.1、kibana:7.6.1、logstash7.6.1的镜像
在这里插入图片描述
二、创建docker中elk的network

docker network create elk_network

查看网络

docker network ls

在这里插入图片描述

2.安装elasticserach

一、创建容器

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name es --net elk_network -d elasticsearch:7.6.1

创建成功后查看
在这里插入图片描述
二、进入容器内修改配置文件,添加安全认证

[root@VM-12-5-centos ~]# docker exec -it es bash
[root@7efcdd48229b elasticsearch]# ls
LICENSE.txt  README.asciidoc  config  jdk  logs     plugins
NOTICE.txt   bin              data    lib  modules
[root@7efcdd48229b elasticsearch]# cd config/
[root@7efcdd48229b config]# ls
elasticsearch.keystore  jvm.options        role_mapping.yml  users
elasticsearch.yml       log4j2.properties  roles.yml         users_roles
[root@7efcdd48229b config]# vi elasticsearch.yml 

修改elasticsearch.yml文件,开启安全认证

cluster.name: "docker-cluster"
network.host: 0.0.0.0

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

重启es并设置密码

docker restart es
cd bin
elasticsearch-setup-passwords interactive
// 输出
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]Y
 
 
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana_system]:
Reenter password for [kibana_system]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

退出重启es

exit
docker restart es

访问界面 地址 http://ip:9200
在这里插入图片描述

3.安装kibana

一、创建容器

docker run -d --name kibana --privileged=true --net elk_network -p 5601:5601    kibana:7.6.1

二、进入容器内修改配置文件

[root@VM-12-5-centos ~]# docker exec -it kibana bash
bash-4.2$ ls
LICENSE.txt  bin	   data		 optimize      src
NOTICE.txt   built_assets  node		 package.json  webpackShims
README.txt   config	   node_modules  plugins       x-pack
bash-4.2$ cd config/
bash-4.2$ ls
apm.js	kibana.yml
bash-4.2$ vi kibana.yml 

修改kibana.yml文件(注:elasticsearch.hosts 修改为自己的IP地址以及密码)

server.name: kibana
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://x.x.x.x:9200" ] 
xpack.monitoring.ui.container.elasticsearch.enabled: true

elasticsearch.username: "elastic"
elasticsearch.password: "123456a" 
i18n.locale: "zh-CN"

退出重启

exit
docker restart kibana

访问界面 地址 http://ip:5601
在这里插入图片描述

4.安装logstash并配置从mysql同步数据到es

一、创建挂载目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

logstash.yml配置文件

http.host: "0.0.0.0"

xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: 123456a
xpack.monitoring.elasticsearch.hosts: ["http://x.x.x.x:9200"]

logstash.conf配置文件

input {
    stdin {
    }
    jdbc {
      jdbc_connection_string => "jdbc:mysql://x.x.x.x:3307/MSDI_PLUS?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
      jdbc_user => "*"
      jdbc_password => "*"
      jdbc_driver_library => "/usr/share/logstash/config/mysql-connector-java-8.0.18.jar"
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "300000"
      statement => "SELECT id, ID as code,NAME as name FROM T_PARTNER"
      schedule => "* * * * *"
    }
}
 
output {
    elasticsearch {
        hosts => ["x.x.x.x:9200"]
        index => "t_partner1"
        document_id => "%{id}"
        user => "elastic"
        password => "123456a"
    }
    stdout {
        codec => json_lines
    }
}

注:logstash.conf文件中不要出现中文,会解析失败,
这里我将配置文件目录挂载到外部方便随时更改,因为配置文件容易出错,另外mysql-connector-java-8.0.18.jar 需要手动到网页下载,

二、创建容器

docker run -it -d --privileged=true -p 5044:5044 --name logstash --net elk_network    -v /data/elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml -v /data/elk/logstash/config/mysql-connector-java-8.0.18.jar:/usr/share/logstash/config/mysql-connector-java-8.0.18.jar -v /data/elk/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash:7.6.1

设置完成后查看效果
数据库新增数据
在这里插入图片描述
查看logstash容器日志

docker logs -f -t --tail 1000 logstash 

在这里插入图片描述
注:logstash同步数据的原理是通过设置cron表达式 定时通过sql脚本查询对增量数据进行操作

查看kibana界面es数据是否写入
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值