官方安装地址:https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html
整体架构:
一、Elasticserach安装:
服务器准备工作:
1. 准备三台服务器:
192.180.7.217、192.180.7.218、192.180.7.219
2. 软件工具列表:
apm-server-7.2.0-linux-x86_64.tar.gz
elasticsearch-7.2.0-linux-x86_64.tar.gz
filebeat-7.2.0-linux-x86_64.tar.gz
kibana-7.2.0-linux-x86_64.tar.gz
logstash-7.2.0.tar.gz
下载地址见【官方安装地址】如下图所示
3. 安装规划:
192.180.7.217 主节点 jdk elasticsearch kibana logstash
192.180.7.218 数据节点 jdk elasticsearch
192.180.7.219 数据节点 jdk elasticsearch
4. 操作系统调优设置:
由于Elasticsearch、Logstash、Kibana均不能以root账号运行。
但是Linux对非root账号可并发操作的文件、线程都有限制。
所以,部署ELK相关的机器都要调整:
- 修改文件限制
# 修改系统文件 vi /etc/security/limits.conf #增加的内容 * soft nofile 65536 * hard nofile 65536 * soft nproc 2048 * hard nproc 4096
- 调整进程数
#修改系统文件 vi /etc/security/limits.d/20-nproc.conf #调整成以下配置 * soft nproc 4096 root soft nproc unlimited
- 调整虚拟内存&最大并发连接
#修改系统文件 vi /etc/sysctl.conf #增加的内容 vm.max_map_count=655360 fs.file-max=655360
以上操作重启系统后生效
或者 sysctl -p
5. 配置hosts
配置三台机器的hosts文件内容如下:
$ vim /etc/hosts 192.180.7.217 elk-master-node 192.180.7.218 elk-data-node1 192.180.7.219 elk-data-node2
6. 查看防火墙是否开启,如开启则后需要开放端口,这里是测试则关闭防火墙。
sudo systemctl status firewalld
如果看到inactive(dead)就意味着防火墙关闭了,看到active(running)就意味着防火墙打开了。
7. 目录规划:
/home/app/elk
创建Elasticsearch数据目录 mkdir /home/app/elk/elasticsearch-7.2.0/data -p
创建Elasticsearch日志目录 mkdir /home/app/elk/elasticsearch-7.2.0/logs -p
8. elasticserach配置:
192.180.7.217 主节点配置:vi /home/app/elk/elasticsearch-7.2.0/config/elasticsearch.yml
# 集群名称 cluster.name: es # 节点名称 node.name: es-master # 存放数据目录,先创建该目录 path.data: /home/app/elk/elasticsearch-7.2.0/data # 存放日志目录,先创建该目录 path.logs: /home/app/elk/elasticsearch-7.2.0/logs # 节点IP network.host: 192.180.7.217 # tcp端口 transport.tcp.port: 9300 # http端口 http.port: 9200 # 种子节点列表,主节点的IP地址必须在seed_hosts中 discovery.seed_hosts: ["192.180.7.217:9300","192.180.7.218:9300","192.180.7.218:9300"] # 主合格节点列表,若有多个主节点,则主节点进行对应的配置 cluster.initial_master_nodes: ["192.180.7.217:9300"] # 主节点相关配置 # 是否允许作为主节点 node.master: true # 是否保存数据 node.data: true node.ingest: false node.ml: false cluster.remote.connect: false # 跨域 # http.cors.enabled: true # http.cors.allow-origin: "*"
192.180.7.218数据节点从配置:vi /home/app/elk/elasticsearch-7.2.0/config/elasticsearch.yml
# 集群名称 cluster.name: es # 节点名称 node.name: es-data1 # 存放数据目录,先创建该目录 path.data: /home/app/elk/elasticsearch-7.2.0/data # 存放日志目录,先创建该目录 path.logs: /home/app/elk/elasticsearch-7.2.0/logs # 节点IP network.host: 192.180.7.218 # tcp端口 transport.tcp.port: 9300 # http端口 http.port: 9200 # 种子节点列表,主节点的IP地址必须在seed_hosts中 discovery.seed_hosts: ["192.180.7.217:9300","192.180.7.218:9300","192.180.7.218:9300"] # 主合格节点列表,若有多个主节点,则主节点进行对应的配置 cluster.initial_master_nodes: ["192.180.7.217:9300"] # 主节点相关配置 # 是否允许作为主节点 node.master: false # 是否保存数据 node.data: true node.ingest: false node.ml: false cluster.remote.connect: false # 跨域 # http.cors.enabled: true # http.cors.allow-origin: "*"
192.180.7.219数据节点从配置:vi /home/app/elk/elasticsearch-7.2.0/config/elasticsearch.yml
# 集群名称 cluster.name: es # 节点名称 node.name: es-data2 # 存放数据目录,先创建该目录 path.data: /home/app/elk/elasticsearch-7.2.0/data # 存放日志目录,先创建该目录 path.logs: /home/app/elk/elasticsearch-7.2.0/logs # 节点IP network.host: 192.180.7.219 # tcp端口 transport.tcp.port: 9300 # http端口 http.port: 9200 # 种子节点列表,主节点的IP地址必须在seed_hosts中 discovery.seed_hosts: ["192.180.7.217:9300","192.180.7.218:9300","192.180.7.218:9300"] # 主合格节点列表,若有多个主节点,则主节点进行对应的配置 cluster.initial_master_nodes: ["192.180.7.217:9300"] # 主节点相关配置 # 是否允许作为主节点 node.master: false # 是否保存数据 node.data: true node.ingest: false node.ml: false cluster.remote.connect: false # 跨域 http.cors.enabled: true http.cors.allow-origin: "*"
9. 启动elasticserach
sh /home/app/elk/elasticsearch-7.2.0/bin/elasticsearch
提示错误信息要求java11及以上:future versions of Elasticsearch will require Java 11; your Java version from [/opt/java/jdk1.8.0_121/jre] does not meet this requirement
解决方案:使用elasticsearch自带的jdk12版本
设置环境变量:vi /home/app/elk/elasticsearch-7.2.0/bin/elasticsearch-env
JAVA_HOME=/home/app/elk/elasticsearch-7.2.0/jdk
再次启动报错:
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2019-07-26T11:50:09,899][INFO ][o.e.n.Node ] [es-master] stopping ...
[2019-07-26T11:50:09,931][INFO ][o.e.n.Node ] [es-master] stopped
[2019-07-26T11:50:09,931][INFO ][o.e.n.Node ] [es-master] closing ...
[2019-07-26T11:50:09,965][INFO ][o.e.n.Node ] [es-master] closed
解决方案:
#切换到root用户 vi /etc/sysctl.conf #在最后追加 vm.max_map_count=262144 fs.file-max=655360 #使用 sysctl -p 查看修改结果 sysctl -p
后台启动:
sh /home/app/elk/elasticsearch-7.2.0/bin/elasticsearch -d
警告JVM UseConcMarkSweepGC参数在9.0已弃用,在未来的版本可能会移除该参数。
查看进程:
ps -ef | grep elasticsearch
10. 健康检查
curl -X GET 'http://192.180.7.217:9200/_cluster/health?pretty'
如果返回status=green表示正常
'
二、安装Kibana:
在 192.180.7.217 安装
cd /home/app/elk/kibana-7.2.0-linux-x86_64/config vi kibana.yml server.port: 5601 # 配置kibana的端口 server.host: "192.180.7.217" # 配置监听ip elasticsearch.hosts: "http://192.180.7.217:9200/" # 配置es服务器的ip,如果是集群则配置该集群中主节点的ip logging.dest:/home/app/elk/kibana-7.2.0-linux-x86_64/logs/kibana.log # 配置kibana的日志文件路径,不然默认是messages里记录日志
运行kibana:
nohup /home/app/elk/kibana-7.2.0-linux-x86_64/bin/kibana &
查看是否启动:
ps -ef | grep kibana
浏览器访问地址:http://192.180.7.217:5601
三、安装Logstash
在 192.180.7.217 安装 解压 tar -zxvf logstash-7.2.0.tar.gz
修改logstash.conf
vi /home/app/elk/logstash-7.2.0/config/logstash.conf
input { beats { add_field => {"type"=>"apptest"} port => 5044 } } output { if [type] == "apptest" { elasticsearch { hosts => ["http://192.180.7.217:9200"] action => "index" index => "apptest-%{+YYYY.MM.dd}" #user => "elastic" #password => "changeme" } } stdout { codec => rubydebug } }
四、安装FileBeat
在 192.180.7.217 安装 解压 tar -zxvf filebeat-7.2.0-linux-x86_64.tar.gz
配置filebeat:
#=========================== Filebeat inputs ============================= filebeat.inputs: # Each - is an input. Most options can be set at the input level, so # you can use different inputs for various configurations. # Below are the input specific configurations. - type: tcp max_message_size: 10MiB host: "0.0.0.0:9000" #----------------------------- Logstash output --------------------------------# output.logstash: # The Logstash hosts hosts: ["192.180.7.217:5044"]
启动:nohup /home/app/elk/filebeat-7.2.0-linux-x86_64/filebeat -c /home/app/elk/filebeat-7.2.0-linux-x86_64/filebeat.yml &
五、集成SpringBoot logstash-logback
1 maven pom.xml configuration:
<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.1</version> </dependency>
2 logback-spring.xml configuration:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <!--引入在application.properties文件中的变量--> <property resource="application-config.properties"></property> <!--定义logstash 传输方式 以及地址--> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${eflk.filebeat.host}:${eflk.filebeat.port}</destination> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/> </appender> <root level="INFO"> <appender-ref ref="LOGSTASH"/> <appender-ref ref="CONSOLE"/> </root> </configuration>
application-config.properties configuration:
eflk.filebeat.host=192.180.7.217 eflk.filebeat.port=9000
六、配置kibana:
访问:http://192.180.7.217:5601/app/kibana
先查看下是否有生成日志:这里的index name 是logstash.conf配置的output index
创建 index pattern
查询:
没有帐号? 立即注册