ELK就是一款非常优秀的、开源的、用于搭建实时日志分析平台的组件。ELK由Elasticsearch、Logstash和Kibana这三款开源框架组成;
Elasticsearch:
是一个实时的分布式搜索和分析引擎,建立在全文搜索引擎Apache Lucene基础之上,使用Java语言编写,具有分布式、高可用性、易扩展、具有副本和索引自动分片动能、提供基于HTTP协议以JSON为数据交互格式的REST风格API、多数据源、实时分析存储特点;
Logstash:
其功能类似于Flume,用于对日志进行收集、过滤,对数据进行格式化处理,并将所搜集的日志传输到相关系统进行存储,如存储到HDFS、Kafka等。Logstash是用Ruby语言开发的,由数据输入端、过滤器和输出端3部分组成。其中数据输入端可以从数据源采集数据,常见的数据源包括文件、Syslog、Kafka等;过滤器是数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式;数据输出端是将Logstash收集的数据经由过滤器处理之后输出到其他系统,如Kafka、HDFS、Elasticsearch等。
Kibana:
是一款针对Elasticsearch开源分析以及可视化平台,使用node.js开发,可以用来搜索,展示存储在Elasticsearch中的数据。同时提供了丰富的图标模板,只需要通过简单的配置就可以方便的进行高级数据分析和绘制各种图表。在Kibana界面我们可以通过拖拽各个图表进行排版,同时Kibana也支持条件查询、过滤检索等,还支持导入相应插件的仪表盘,如Metricbeat仪表盘;
Kafka:
数据缓冲队列。作为消息队列解耦了处理过程,同时提高了可扩展性。具有峰值处理能力,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
部署前操作
Elk-84操作
vim /etc/hosts
192.168.0.84 elk-84
192.168.0.85 elk-85
192.168.0.86 elk-86
ssh-keygen
ssh-copy-id -i root@192.168.0.85
ssh-copy-id -i root@192.168.0.86
scp /etc/hosts 192.168.0.85:/etc/
scp /etc/hosts 192.168.0.86:/etc/
三台都操作
安装java
yum -y install java
java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
创建安装elk的目录
mkdir /home/elk
调整系统文件描述符的软硬限制
vim /etc/security/limits.conf
#末尾添加
#打开文件的软限制,ES要求系统文件描述符大于65535
* soft nofile 655360
#打开文件的硬限制
* hard nofile 655360
#用户可用进程数软限制
* soft nproc 2048
#用户可用进程数硬限制
* hard nproc 4096
#JVM能够使用最大线程数
echo "vm.max_map_count=655360" >> /etc/sysctl.conf
sysctl -p
配置Elasticsearch服务环境
useradd es
mkdir -p /home/data/{
data,logs} # 日志及数据存放目录
chown -R es:es /home /home # 使用es用户启动时,权限不对也会报错
安装elasticsearch
Elk-84操作
从elastic 的官网 elastic.co/downloads/elasticsearch 获取最新版本的 Elasticsearch
拉取elasticsearch-7.12.1-linux-x86_64.tar.gz到/home/elk下
[root@elk-84 elk]# tar -zxf elasticsearch-7.12.1-linux-x86_64.tar.gz
[root@elk-84 opt]# vim elk/elasticsearch-7.12.1/config/elasticsearch.yml
cluster.name: my-elk #集群名称
node.name: elk-84 #本机名
path.data: /home/data/data
path.logs: /home/data/logs
network.host: 192.168.0.84 #本机ip
http.port: 9200
discovery.seed_hosts: ["elk-84", "elk-85", "elk-86"]
cluster.initial_master_nodes: ["elk-84"] #集群master ip
保存退出
[root@elk-84 opt]# scp /home/elk/elasticsearch-7.12.1-linux-x86_64.tar.gz 192.168.0.85:/home/elk/
Elk-85
[root@elk-85 elk]# tar -zxf elasticsearch-7.12.1-linux-x86_64.tar.gz
Elk-86
[root@elk-86 elk]# tar -zxf elasticsearch-7.12.1-linux-x86_64.tar.gz
Elk-84
[root@elk-84 opt]# scp /home/elk/elasticsearch-7.12.1/config/elasticsearch.yml 192.168.0.85:/home/elk/elasticsearch-7.12.1/config/
[root@elk-84 opt]# scp /home/elk/elasticsearch-7.12.1/config/elasticsearch.yml 192.168.0.86:/home/elk/elasticsearch-7.12.1/config/
Elk-85
[root@elk-85 opt]# vim elk/elasticsearch-7.12.1/config/elasticsearch.yml
node.name: elk-85 #本机名
path.data: /home/data/data
path.logs: /home/data/logs
network.host: 192.168.0.85 #本机ip
Elk-86
[root@elk-86 opt]# vim elk/elasticsearch-7.12.1/config/elasticsearch.yml
node.name: elk-86 #本机名
path.data: /home/data/data
path.logs: /home/data/logs
network.host: 192.168.0.86 #本机ip
三台启动elasticsearch
[</