elasticsearch(一)docker多机部署elasticsearch集群及elk搭建(7.4.2)

前言

本篇为elasticseach系列片第一章,大家一起先把es的环境搭建起来,有需要elk整合方式的见文章最后部分(注:本篇整合elk为简单版本,没有对后续大规模日志输出带来性能压力的处理,适用于自学或开发测试阶段)

搭建es集群

1.准备好es的宿主机上的映射路径赋予最高权限

准备三台机器,本篇所涉及192.168.182.242,192.168.182.243,192.168.182.231为三台虚拟机,内存为16g,涉及es启动命令的内存设置可根据自身机器做调整

mkdir /opt/es
cd /opt/es
mkdir data config plugins   #data:存放数据的目录 config:存放配置文件的目录 plugins:存放插件的目录

chmod 777 -R /opt/es  #递归式赋权

2.编写elasticsearch.yml

cluster.name: nssa_elasticsearch
node.name: es243
network.bind_host: 0.0.0.0
network.publish_host: 192.168.182.243
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.182.242:9300","192.168.182.243:9300","192.168.182.231:9300"]
cluster.initial_master_nodes: ["192.168.182.242:9300","192.168.182.243:9300","192.168.182.231:9300"]
参数说明
cluster.name集群名称,相同名称为一个集群
node.name节点名称,集群模式下每个节点名称唯一
node.master当前节点是否可以被选举为master节点,是:true、否:false
node.data当前节点是否用于存储数据,是:true、否:false
path.data索引数据存放的位置
path.logs日志文件存放的位置
bootstrap.memory_lock需求锁住物理内存,是:true、否:false
bootstrap.system_call_filterSecComp检测,是:true、否:false
network.host监听地址,用于访问该es
network.publish_host可设置成内网ip,用于集群内各机器间通信
http.portes对外提供的http端口,默认 9200
discovery.seed_hostses7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
cluster.initial_master_nodeses7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
http.cors.enabled是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.allow-origin“*” 表示支持所有域名

启动命令:

docker run -d --name es01 -p 9200:9200 -p 9300:9300  \
-e ES_JAVA_OPTS="-Xms4g -Xmx4g"  \
-v /opt/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  \
-v /opt/es/data:/usr/share/elasticsearch/data \
-v /opt/es/plugins:/usr/share/elasticsearch/plugins  \
--restart=always elasticsearch:7.4.2

在每台机器上分别执行以上步骤: 注意配置yml文件时记得修改 publish_host 和 nodename

启动kibana

(如果有目录需要映射,那么启动命令记得加上映射路径)

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.182.243:9200 -p 5601:5601 -d kibana:7.4.2

elk整合

配置文件 (新建文件 /xxx/logstash.conf )

input {
	tcp {
		mode => "server"
		host => "0.0.0.0"
		# 定义logstash的端口
		port => 5000
		codec => json_lines
	}
}
output {
	elasticsearch {
		# 输出到es的地址
		hosts => ["192.168.182.243:9200"]
		action => "index"
		# 索引名称
		index => "dscnlog-%{+YYYY.MM.dd}"
	}
	stdout {
		codec => rubydebug
	}
}

启动命令

docker run --name logstash -p 5000:5000 \
-v /data/logstash/logstash.conf:/etc/logstash.conf \
--link es01:elasticsearch \
-d logstash:7.4.2 \
logstash -f /etc/logstash.conf

微服务
pom添加依赖

 <dependency>
      <groupId>net.logstash.logback</groupId>
      <artifactId>logstash-logback-encoder</artifactId>
      <version>5.2</version>
 </dependency>

创建logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
    <springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue=""/>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    	<!-- logstash的host:port -->
        <destination>192.168.182.243:5000</destination>
        <!-- encoder-->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>
	<!-- 日志输出级别 -->
    <root level="info">
        <appender-ref ref="stash" />
    </root>
</configuration>

在kibana中创建index patterns(索引模式)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建索引模式成功(index Patterns)后,便可以在Discover中检索微服务的日志了
在这里插入图片描述

总结

以上便是使用docker搭建跨主机es集群以及将微服务整合elk日志分析系统, 由于工作时间关系一直没有发布线上博客,后续会将大量的工作笔记同步至线上博客,有需要的小伙伴可以持续关注,下一章,elasticsearch原理篇章
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值