Docker搭建ELK6.X以及Elasticsearch6.X集群(两个节点)并同步MySql

ELK6.4.1以及Elasticsearch6.4.1集群Docker搭建
环境

192.168.0.111
192.168.0.112

搭建Elasticsearch集群(两个节点)
创建文件夹

两台虚拟机都执行

mkdir -p /usr/local/elasticsearch/conf
mkdir -p /usr/local/elasticsearch/data
mkdir -p /usr/local/elasticsearch/plugins/ik
chmod  777 /usr/local/elasticsearch/plugins/ik
chmod  777 /usr/local/elasticsearch/data
chmod  777 /usr/local/elasticsearch/conf

拉取镜像
两台虚拟机都执行

官网

docker pull elasticsearch:6.5.4

修改配置

两台虚拟机都执行

修改配置 sysctl.conf
vi /etc/sysctl.conf

. 添加下面配置:
 vm.max_map_count=655360

. 执行命令:

sysctl -p  

修改配置 limits.conf
vim /etc/security/limits.conf

添加下面配置:

* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

3.修改配置 **20-nproc.conf **
vim /etc/security/limits.d/20-nproc.conf

添加下面配置:

* soft nproc 4096

准备配置文件

192.168.0.111

vim /usr/local/elasticsearch/conf/es.yml

es.yml

#集群名
cluster.name: MyES

#节点名
node.name: node-111

#设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
#指绑定这台机器的任何一个ip
network.bind_host: 0.0.0.0

#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,
#值必须是个真实的ip地址    修改为自己虚拟机的ip地址
network.publish_host: 192.168.0.111 
 
 
#设置对外服务的http端口,默认为9200
http.port: 9200
#设置节点之间交互的tcp端口,默认是9300
transport.tcp.port: 9300
 
#是否允许跨域REST请求
http.cors.enabled: true
#允许 REST 请求来自何处
http.cors.allow-origin: "*"
 
 
 
#节点角色设置
node.master: true
node.data: true

#集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1)
# (totalnumber of master-eligible nodes / 2 + 1)
discovery.zen.minimum_master_nodes: 

192.168.0.112
vim /usr/local/elasticsearch/conf/es.yml

es.yml

#集群名 
cluster.name: MyES

#节点名
node.name: node-112
 
#设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0, 
#指绑定这台机器的任何一个ip
network.bind_host: 0.0.0.0
 
#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,
#值必须是个真实的ip地址  
network.publish_host: 192.168.0.112
 
#设置对外服务的http端口,默认为9200
http.port: 9200
#设置节点之间交互的tcp端口,默认是9300
transport.tcp.port: 9300

#是否允许跨域REST请求
http.cors.enabled: true
 
#允许 REST 请求来自何处
http.cors.allow-origin: "*"

#节点角色设置
node.master: false
node.data: true
 
#有成为主节点资格的节点列表 
discovery.zen.ping.unicast.hosts: ["192.168.0.111:9300"]

#集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1)
# (totalnumber of master-eligible nodes / 2 + 1)
discovery.zen.minimum_master_nodes: 1

配置ik中文分词器
两台虚拟机都执行

去GitHub页面下载对应的ik分词zip包
把ik压缩包复制到你的liunx系统 (我是用xftp)/usr/local/elasticsearch/plugins/ 路径下

cd /usr/local/elasticsearch/plugins/

yum -y install unzip

unzip  -d /usr/local/elasticsearch/plugins/ik/ elasticsearch-analysis-ik-6.5.4.zip 

最后把elasticsearch-analysis-ik-x.x.x.zip 删除

rm -rf  /usr/local/elasticsearch/plugins/elasticsearch-analysis-ik-6.5.4.zip

放行端口号

两台虚拟机都执行

firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
firewall-cmd --reload

创建容器并运行
两台虚拟机都执行

docker run -d --name es -p 9200:9200 -p 9300:9300 -v /usr/local/elasticsearch/conf/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/elasticsearch/data:/usr/share/elasticsearch/data  -v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins  --privileged=true  elasticsearch:6.5.4

查看ik分词是否加载成功

docker logs es

出现以下信息,则成功
在这里插入图片描述

测试 Elasticsearch 是否启动成功 http://ip:9200 (ip为自己虚拟机的ip)页面会显示以下信息

在这里插入图片描述

安装head插件
放行端口号

irewall-cmd --zone=public --add-port=9100/tcp --permanent
firewall-cmd --reload

docker pull mobz/elasticsearch-head:5  

docker run --name eshead -p 9100:9100  -d  docker.io/mobz/elasticsearch-head:5

head可视化界面 http://ip:9100/

安装kibana

拉取镜像
官网

docker pull kibana:6.5.4

放行端口号

firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload

创建运行docker容器
docker run -d --name kibana -e "ELASTICSEARCH_URL=http://192.168.0.111:9200"   -p 5601:5601 kibana:6.5.4
安装logstash

官网
详情
拉取镜像

docker pull docker.elastic.co/logstash/logstash:6.5.4

创建文件夹

mkdir -p   /usr/local/logstash/conf
chmod  777  /usr/local/logstash/conf
mkdir -p  /usr/local/logstash/plugin
chmod  777  /usr/local/logstash/plugin
mkdir -p  /usr/local/logstash/pipeline
chmod  777  /usr/local/logstash/pipeline
MySql中的数据同步到Elasticsearch

下载jar
mysql-connector-java

cd /usr/local/logstash/plugin
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar

配置文件logstash.conf
vim /usr/local/logstash/pipeline/logstash.conf

input {
    jdbc {
        jdbc_connection_string => "jdbc:mysql://192.168.0.109:3306/estest?characterEncoding=UTF-8&useSSL=false"
        jdbc_user => "root"
        jdbc_password => "123456"
        jdbc_driver_library => "/plugin/mysql-connector-java-5.1.47.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
		jdbc_default_timezone =>"Asia/Shanghai" ## 默认时区设置
        statement => "SELECT * FROM test"
        ## 定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
        schedule => "* * * * *"
    }
	file {
		path => "/tmp/access_log"
		start_position => "beginning"
	 }
} output {
	     stdout {
	        codec => json_lines
	    }
	    elasticsearch {
	        hosts => ["192.168.0.111:9200"]  ## ES集群主机ip地址
		    user => "root"  ## elasticsearch用户名
		    password => "root"  ## elasticsearch密码
	        index => "estest" ## ES 索引 名称(自己定义)
	        document_type => "test" ## ES type 名称 (自己定义)
	        document_id => "%{id}"   ## 自增ID编号
	    }
}

如果不同步数据库

input {
file {
path => "/tmp/access_log"
start_position => "beginning"
}
}
output {
  elasticsearch {
    hosts => ["192.168.0.128:9200"]
    user => "root"
    password => "root"
  }
}

配置文件logstash.yml
vim /usr/local/logstash/conf/logstash.yml

http.host: "0.0.0.0"
path.config: /usr/share/logstash/pipeline
xpack.monitoring.elasticsearch.url: http://192.168.0.111:9200
xpack.monitoring.elasticsearch.username: root
xpack.monitoring.elasticsearch.password: root

放行端口号

firewall-cmd --zone=public --add-port=5000/tcp --permanent
firewall-cmd --zone=public --add-port=5044/tcp --permanent
firewall-cmd --zone=public --add-port=9600/tcp --permanent
firewall-cmd --reload

创建运行容器

docker run -v /usr/local/logstash/pipeline:/usr/share/logstash/pipeline -v /usr/local/logstash/conf/logstash.yml:/usr/share/logstash/config/logstash.yml -v /usr/local/logstash/plugin:/plugin -p 5000:5000 -p 5044:5044 -p 9600:9600   --name logstash --privileged=true -d  docker.elastic.co/logstash/logstash:6.5.4 -f /usr/share/logstash/pipeline/logstash.conf 

如果不同步数据库

docker run -v /usr/local/logstash/pipeline:/usr/share/logstash/pipeline -v /usr/local/logstash/conf/logstash.yml:/usr/share/logstash/config/logstash.yml  -p 5000:5000 -p 5044:5044 -p 9600:9600   --name logstash --privileged=true -d  docker.elastic.co/logstash/logstash:6.5.4 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于部署ELK(Elasticsearch, Logstash, Kibana)7.16.1的Docker环境,可以按照以下步骤进行操作: 1. 安装DockerDocker Compose:确保系统上已经安装了DockerDocker Compose。可以通过官方文档或适用于您操作系统的其他资源来完成安装。 2. 创建Docker Compose文件:创建一个名为docker-compose.yml的文件,并添加以下内容: ```yaml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.16.1 environment: - discovery.type=single-node ports: - 9200:9200 - 9300:9300 networks: - elk logstash: image: docker.elastic.co/logstash/logstash:7.16.1 volumes: - ./logstash/config:/usr/share/logstash/config - ./logstash/pipeline:/usr/share/logstash/pipeline ports: - 5000:5000 networks: - elk kibana: image: docker.elastic.co/kibana/kibana:7.16.1 environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 ports: - 5601:5601 networks: - elk networks: elk: ``` 3. 创建配置文件和管道文件夹:在与docker-compose.yml相同的目录中创建名为`logstash/config`和`logstash/pipeline`的文件夹。 4. 配置Logstash:在`logstash/config`文件夹中创建一个名为`logstash.yml`的文件,并添加以下内容: ```yaml http.host: "0.0.0.0" ``` 5. 创建Logstash管道:在`logstash/pipeline`文件夹中创建一个名为`pipeline.conf`的文件,并根据您的需求配置Logstash的管道。例如,以下是一个简单的例子: ```conf input { tcp { port => 5000 codec => json } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "logs-%{+YYYY.MM.dd}" } } ``` 6. 启动ELK容器:在终端中导航到包含docker-compose.yml文件的目录,并运行以下命令启动容器: ```shell docker-compose up -d ``` 7. 等待一段时间,直到容器启动完毕。然后,您可以通过浏览器访问Kibana界面,地址为`http://localhost:5601`,查看和分析日志。 请注意,这只是一个基本的ELK部署示例,您可以根据自己的需求进行进一步的配置和定制化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值