一、ELK介绍
1、概念
官网:https://www.elastic.co/cn/
ELK实际上是三大开源框架首字母大写简称(也称为ELK Stack):ElasticSearch、Logstash、Kibana。
其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。
Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。
Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。
说直白一点就是,ElasticSearch是一个搜索引擎,用来搜索、分析、存储日志;Logstash用来采集日志,把日志解析为json格式交给ElasticSearch;Kibana是一个数据可视化组件,把处理后的结果通过web界面展示。
2、日志管理平台
在过往的单体应用时代,我们所有组件都部署到一台服务器中,那时日志管理平台的需求可能并没有那么强烈,我们只需要登录到一台服务器通过shell命令就可以很方便的查看系统日志,并快速定位问题。
随着互联网的发展,互联网已经全面渗入到生活的各个领域,使用互联网的用户量也越来越多,单体应用已不能够支持庞大的用户的并发量,尤其像中国这种人口大国。那么将单体应用进行拆分,通过水平扩展来支持庞大用户的使用迫在眉睫,微服务概念就是在类似这样的阶段诞生,在微服务盛行的互联网技术时代,单个应用被拆分为多个应用,每个应用集群部署进行负载均衡,那么如果某项业务发生系统错误,开发或运维人员还是以过往单体应用方式登录一台一台登录服务器查看日志来定位问题,这种解决线上问题的效率可想而知。
日志管理平台的建设就显得极其重要。通过Logstash去收集每台服务器日志文件,然后按定义的正则模板过滤后传输到Kafka或redis,然后由另一个Logstash从KafKa或redis读取日志存储到elasticsearch中创建索引,最后通过Kibana展示给开发者或运维人员进行分析。这样大大提升了运维线上问题的效率。
除此之外,还可以将收集的日志进行大数据分析,得到更有价值的数据给到高层进行决策。
3、ELK架构图
二、ELK安装准备工作
我们准备3台机器:113、53、62,主节点为113,数据节点为53和62。
修改各自对应的主机名为:st-113、st-53、st-62
3台机器全部安装jdk1.8
3台机器都安装elasticsearch(es)
主节点113上安装kibana
数据节点53上安装logstash
- 三台机都安装jdk(略,可参考:https://my.oschina.net/u/3992198/blog/2993212)
三、安装es
三台机都需安装es
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
编辑yum源vim /etc/yum.repos.d/elastic.repo,内容如下:
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
安装elasticsearch
# yum install -y elasticsearch
四、 配置es
elasticsearch配置文件为/etc/elasticsearch和/etc/sysconfig/elasticsearch
可查看官网配置:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/rpm.html
113上编辑配置文件/etc/elasticsearch/elasticsearch.yml,增加以下内容:
cluster.name: st_linux
node.name: st-113
node.master: true
node.data: false
network.host: 10.3.2.113
discovery.zen.ping.unicast.hosts: ["10.3.2.113","10.3.4.53","10.3.2.62"]
保存后退出。
然后将这个配置文件发送到另外两台机器上
# scp /etc/elasticsearch/elasticsearch.yml st-53:/etc/elasticsearch/
#scp /etc/elasticsearch/elasticsearch.yml st-62:/etc/elasticsearch/
再分别修改两台机上的配置文件内容:
st-53上
cluster.name: st_linux
node.name: st-53
node.master: false
node.data: true
network.host: 10.3.4.53
discovery.zen.ping.unicast.hosts: ["10.3.2.113","10.3.4.53","10.3.2.62"]
st-62上
cluster.name: st_linux
node.name: st-62
node.master: false
node.data: true
network.host: 10.3.2.62
discovery.zen.ping.unicast.hosts: ["10.3.2.113","10.3.4.53","10.3.2.62"]
三台机都启动elasticsearch服务