ELK介绍和ES部署
# ELK架构介绍
# ELK介绍
ELK又称ELKstack,它是由Elasticsearch、Logstash、Kibana三个软件所组成的架构。
ELK架构的特点
- 处理方式灵活
- elasticsearch是实时全文索引,他是一个搜索引擎,具有强大的搜索功能。
- 配置相对简单
- elasticsearch全部使用JSON接口,logstash使用模块配置,kibana的配置简单。
- 检索性能高效
- 基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
- 集群线性扩展
- elasticsearch和logstash都可以灵活线性扩展。
- 前端操作绚丽
- kibana的前端设计比较绚丽,而且操作简单。
- 处理方式灵活
# Elasticsearch介绍
- ES是一个开源的分布式全文搜索引擎,基于Lucene(全文搜索框架)开发而来,它类似于一个数据库。
- 它可实现数据的实时全文搜索、支持分布式可实现高可用。
- 它提供API接口,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。
# Logstash介绍
- Logstash用于实现日志收集、转发、日志过滤等,支持普通log文件、自定义json格式的日志解析。它是用INPUTS、OUTPUT插件来实现收集与转发,用FILTERS来实现日志过滤等。
- 实际上只要有Logstash就可以实现日志收集功能了,但功能不如一整个架构那么强大,所以一般用它来实现日志收集,然后转发给Elasticsearch进行存储。
# Kibana介绍
- 主要用于调用elasticsearch接口获取数据,然后提供数据查询、数据可视化等功能。
# 部署Elasticsearch
# 1. 部署JDK环境
- Elasticsearch依赖于Java环境运行,所以需要先安装Java环境。
# 下载JDK二进制包并上传到服务器
https://www.oracle.com/java/technologies/downloads/archive/
# 解压到指定目录
mkdir -p /data/lib/jdk
tar -xvf ./jdk-*.tar.gz -C /data/lib/jdk
# 创建软链接 (方便更新版本)
ln -s /data/lib/jdk/jdk* /data/lib/jdk/jdk
# 配置JAVA环境变量
cat >>/etc/profile<<'EOF'
export JAVA_HOME=/data/lib/jdk/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
EOF
source /etc/profile
# 验证是否生效
java -version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 2. 安装elasticsearch
- 下载elasticsearch的rpm包
https://www.elastic.co/cn/downloads/elasticsearch
- 使用yum安装elasticsearch
yum localinstall -y elasticsearch-*.rpm
- 使用yum安装rpm会自动解决依赖问题。
# 3. 配置elasticsearch
vim /etc/elasticsearch/elasticsearch.yml
# 集群名称(同一集群中各节点的集群名称配置必须相同) cluster.name: elk-cluster # 节点名称(同一集群中各节点的节点名称配置必须不同,用于区分不同的节点) node.name: elk01 # elasticsearch数据存放目录 path.data: /data/apps/elk/data # elasticsearch日志存放目录 path.logs: /data/apps/elk/logs # 启用内存锁,可以避免ES缓存的文件被频繁的交换,而导致的查询时磁盘IO高问题。 bootstrap.memory_lock: true # elasticsearch监听地址 network.host: 0.0.0.0 # elasticsearch服务端口 http.port: 9200 # 配置所有集群节点的IP discovery.seed_hosts: ["192.168.10.80", "192.168.10.81"] # 关闭安全传输(配置稍微麻烦,先关闭) xpack.security.enabled: false # 是否压缩传输 transport.tcp.compress: true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 4. 创建相关目录并授权
mkdir -p /data/apps/elk/{data,logs}
chown -R elasticsearch.elasticsearch /data/apps/elk/
# 5. 内存锁相关配置
启动内存锁可以避免ES缓存的文件被频繁的交换,而导致的查询时磁盘IO高问题。启动内存锁除了要修改配置文件之外,还需要修改系统内存限制、修改ES服务在systemd中的配置。
配置ES配置文件
# 启用内存锁 bootstrap.memory_lock: true
1
2修改系统内存限制
vim /etc/security/limit.conf
elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited
1
2
修改ES服务在systemd中的配置
- 编辑ES配置文件
systemctl edit elasticsearch
- 在
[Service]
下添加LimitMEMLOCK=infinity
- 重新加载配置文件
systemctl daemon-reload
- 编辑ES配置文件
# 6. 启动服务
systemctl start elasticsearch && systemctl enable elasticsearch
# 7. 安装Chrome浏览器插件
- Elasticsearch-Head是一款浏览器插件,它用于提供可操作ES的图形化界面。
- 在Chrome浏览器中访问该地址进行安装:
https://chrome.google.com/webstore/search/ElasticSearch%20Head?hl=zh-CN
- 一般需要翻墙才能访问,如果不能翻墙可以通过百度下载插件包,然后通过"扩展程序"添加插件即可。