ELK简介
什么是ELK?通俗来讲,ELK是由Elasticsearch、Logstash、Kibana 三个开源软件组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK又称ELKstack,官网 https://www.elastic.co/ , ELK主要优点有如下几个:
1、处理方式灵活:elasticsearch是实时全文索引,具有强大的搜索功能。
2、配置相对简单:elasticsearch全部使用JSON接口,logstash使用模块配置,kibana的配置文件部分更简单。
3、检索性能高:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
4、集群线性扩展:elasticsearch和logstash都可以灵活线性扩展。
5、前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单。
Elasticsearch
- elasticsearch是一个高度可扩展全文搜索和分析引擎,基于Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。
Logstash
- 数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;支持普通log、自定义json格式的日志解析。
Kibana
- 数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示。
ELK部署准备
这里实验所使用系统CentOS 7.4 x86_64,请关闭防火墙和selinux。
IPAddress | Hostname | Mem |
---|---|---|
172.18.12.172 | elk-node1 | 4G |
172.18.12.163 | elk-node2 | 4G |
上传软件包
- elasticsearch-7.4.2-linux-x86_64.tar.gz
- jdk-8u221-linux-x64.tar.gz
- kibana-7.4.2-linux-x86_64.tar.gz
- logstash-7.4.2.tar.gz
- Elasticsearch-head
- node-v12.14.0-linux-x64.tar.xz
软件包下载地址 提取码:se5p
安装JDK并配置环境变量
[root@localhost /]# tar -xzvf jdk-8u221-linux-x64.tar.gz
[root@localhost /]# vim etc/profile
添加如下:
#set java environment
JAVA_HOME=/sk/jdk1.8.0_221
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使配置生效
[root@localhost /]# source /etc/profile
查看JDK版本
[root@localhost /]# java -version
Elasticsearch部署
一、解压elasticsearch并配置bin/elasticsearch.yml
[root@localhost tmp]# tar -zxvf elasticsearch-7.4.3.tar.gz
[root@localhost tmp]# mkdir /ELK
[root@localhost tmp]# mv elasticsearch-7.4.3 /ELK/elasticsearch
[root@localhost /]# cd ELK/elasticsearch/config/
[root@localhost config]# vim elasticsearch.yml
配置如下:
cluster.name: ELK-Cluster #ELK的集群名称,名称相同即属于是同一个集群
node.name: elk-node1 #本机在集群内的节点名称
path.data: /ELK/elasticsearch/data #数据存放目录
path.logs: /ELK/elasticsearch/data/log #日志保存目录
bootstrap.memory_lock: true #服务启动的时候锁定足够的内存,防止数据写入swap
network.host: 172.18.12.164 #监听的IP地址
http.port: 9200 #服务监听的端口
discovery.seed_hosts: ["172.18.12.172", "172.18.12.173"] #单播配置