手把手教你搭建ELK,原来这么简单

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 什么是ELK,如何搭建ELK,如何改进优化ELK,看完你就懂了

思维导图

在这里插入图片描述

文章已收录Github精选,欢迎Starhttps://github.com/yehongzhi/learningSummary

概述

我们都知道,在生产环境中经常会遇到很多异常,报错信息,需要查看日志信息排查错误。现在的系统大多比较复杂,即使是一个服务背后也是一个集群的机器在运行,如果逐台机器去查看日志显然是很费力的,也不现实

如果能把日志全部收集到一个平台,然后像百度,谷歌一样通过关键字搜索出相关的日志,岂不快哉。于是就有了集中式日志系统。ELK就是其中一款使用最多的开源产品。

一、什么是ELK

ELK其实是Elasticsearch,Logstash 和 Kibana三个产品的首字母缩写,这三款都是开源产品。

ElasticSearch(简称ES),是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。

Logstash,是一个数据收集引擎,主要用于进行数据收集、解析,并将数据发送给ES。支持的数据源包括本地文件、ElasticSearch、MySQL、Kafka等等。

Kibana,为 Elasticsearch 提供了分析和 Web 可视化界面,并生成各种维度表格、图形。
在这里插入图片描述

二、搭建ELK

环境依赖:CentOS7.5,JDK1.8,ElasticSearch7.9.3,Logstash 7.9.3,Kibana7.9.3。

2.1 安装ElasticSearch

首先,到官网下载安装包,然后使用tar -zxvf命令解压。
在这里插入图片描述
找到config目录下的elasticsearch.yml文件,修改配置:

cluster.name: es-application
node.name: node-1
#对所有IP开放
network.host: 0.0.0.0
#HTTP端口号
http.port: 9200
#elasticsearch数据文件存放目录
path.data: /usr/elasticsearch-7.9.3/data
#elasticsearch日志文件存放目录
path.logs: /usr/elasticsearch-7.9.3/logs

配置完之后,因为ElasticSearch使用非root用户启动,所以创建一个用户。

# 创建用户
useradd yehongzhi
# 设置密码
passwd yehongzhi
# 赋予用户权限
chown -R yehongzhi:yehongzhi /usr/elasticsearch-7.9.3/

然后切换用户,启动:

# 切换用户
su yehongzhi
# 启动 -d表示后台启动
./bin/elasticsearch -d

使用命令netstat -nltp查看端口号:
在这里插入图片描述
访问http://192.168.0.109:9200/可以看到如下信息,表示安装成功。

2.2 安装Logstash

首先在官网下载安装压缩包,然后解压,找到/config目录下的logstash-sample.conf文件,修改配置:

input {
  file{
    path => ['/usr/local/user/*.log']
    type => 'user_log'
    start_position => "beginning"
  }
}

output {
  elasticsearch {
    hosts => ["http://192.168.0.109:9200"]
    index => "user-%{+YYYY.MM.dd}"
  }
}

input表示输入源,output表示输出,还可以配置filter过滤,架构如下:
在这里插入图片描述
配置完之后,要有数据源,也就是日志文件,准备一个user.jar应用程序,然后后台启动,并且输出到日志文件user.log中,命令如下:

nohup java -jar user.jar >/usr/local/user/user.log &

接着再后台启动Logstash,命令如下:

nohup ./bin/logstash -f /usr/logstash-7.9.3/config/logstash-sample.conf &

启动完之后,使用jps命令,可以看到两个进程在运行:

2.3 安装Kibana

首先还是到官网下载压缩包,然后解压,找到/config目录下的kibana.yml文件,修改配置:

server.port: 5601
server.host: "192.168.0.111"
elasticsearch.hosts: ["http://192.168.0.109:9200"]

和elasticSearch一样,不能使用root用户启动,需要创建一个用户:

# 创建用户
useradd kibana
# 设置密码
passwd kibana
# 赋予用户权限
chown -R kibana:kibana /usr/kibana/

然后使用命令启动:

#切换用户
su kibana
#非后台启动,关闭shell窗口即退出
./bin/kibana
#后台启动
nohup ./bin/kibana &

启动后在浏览器打开http://192.168.0.111:5601,可以看到kibana的web交互界面:
在这里插入图片描述

2.4 效果展示

全部启动成功后,整个过程应该是这样,我们看一下:
在这里插入图片描述
浏览器打开http://192.168.0.111:5601,到管理界面,点击“Index Management”可以看到,有一个user-2020.10.31的索引。

在这里插入图片描述
点击Index Patterns菜单栏,然后创建,命名为user-*。
在这里插入图片描述
最后,就可以到Discover栏进行选择,选择user-*的Index Pattern,然后搜索关键字,就找到相关的日志了!
在这里插入图片描述

三、改进优化

上面只是用到了核心的三个组件简单搭建的ELK,实际上是有缺陷的。如果Logstash需要添加插件,那就全部服务器的Logstash都要添加插件,扩展性差。所以就有了FileBeat,占用资源少,只负责采集日志,不做其他的事情,这样就轻量级,把Logstash抽出来,做一些滤处理之类的工作。
在这里插入图片描述
FileBeat也是官方推荐用的日志采集器,首先下载Linux安装压缩包:

https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.3-linux-x86_64.tar.gz

下载完成后,解压。然后修改filebeat.yml配置文件:

#输入源
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/local/user/*.log
#输出,Logstash的服务器地址
output.logstash:
  hosts: ["192.168.0.110:5044"]
#输出,如果直接输出到ElasticSearch则填写这个
#output.elasticsearch:
  #hosts: ["localhost:9200"]
  #protocol: "https"

然后Logstash的配置文件logstash-sample.conf,也要改一下:

#输入源改成beats
input {
  beats {
    port => 5044
    codec => "json"
  }
}

然后启动FileBeat:

#后台启动命令
nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &

再启动Logstash:

#后台启动命令
nohup ./bin/logstash -f /usr/logstash-7.9.3/config/logstash-sample.conf &

怎么判断启动成功呢,看Logstash应用的/logs目录下的logstash-plain.log日志文件:

写在最后

目前,很多互联网公司都是采用ELK来做日志集中式系统,原因很简单:开源、插件多、易扩展、支持数据源多、社区活跃、开箱即用等等。我见过有一个公司在上面的架构中还会加多一个Kafka的集群,主要是基于日志数据量比较大的考虑。但是呢,基本的三大组件ElasticSearch,Logstash,Kibana是不能少的。

希望这篇文章能帮助大家对ELK有一些初步的认识,感谢大家的阅读。

觉得有用就点个赞吧,你的点赞是我创作的最大动力~

拒绝做一条咸鱼,我是一个努力让大家记住的程序员。我们下期再见!!!

能力有限,如果有什么错误或者不当之处,请大家批评指正,一起学习交流!

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
消息中间件 监控 数据可视化
一口气完成ELK 日志平台的搭建,我感觉我又行了!
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
消息中间件 数据采集 监控
ELK搭建(五):linux系统日志监控平台搭建
现在的生产系统多使用linux系统,在实际生产过程中我们除了需要监控一些业务日志之外,有时也需要监控linux系统本身的日志,来帮助我们进行一些排错和判断。那么这一期,我们就针对linux系统日志监控平台的搭建来进行讲解 与往期一样,我们针对实际搭建教程更多是快速搭建为主,不做过多的原理性讲解,这一类讲解我们放到后期单独开几期博客来探讨。
770 0
ELK搭建(五):linux系统日志监控平台搭建
|
消息中间件 数据采集 监控
ELK搭建(四):监控mysql慢查询、错误日志日志
因为mysql免费、稳定以及还不错的性能,是当前市面上多数公司的数据库选择。在实际的生产环境中我们更需要及时知道数据库中的报错日志、慢日志等信息,来帮助我们进行排错和优化。 普通的到服务器上去查看日志的方式并不方便,特别是涉及到分布式部署时,因此我们需要一个统一的监控平台来实时、方便的查看这些日志数据。
745 0
ELK搭建(四):监控mysql慢查询、错误日志日志
|
消息中间件 监控 NoSQL
ELK搭建(十三):搭建Nginx资源访问率、丢包率、读写率等运行性能监控平台
Nginx是一款轻量级、高性能的流量分发和反向代理的web服务。随着市场业务量的增加,普通的web容器,如tomcat的并发量已经远不能满足我们的业务量,同时随着分布式架构的普及,我们需要一款反向代理服务的支持,于是Nginx应运而生。 Nginx已经在大多数业务中普遍使用,因此针对Nginx的性能监控十分必要,这样我们才能实时掌握服务器请求情况和运行效率 所以今天,我们的目标就是搭建一个Nginx运行性能监控平台
396 0
ELK搭建(十三):搭建Nginx资源访问率、丢包率、读写率等运行性能监控平台
|
消息中间件 数据采集 监控
ELK搭建(十二):搭建Nginx访问、错误日志监控平台
Nginx是一款轻量级、高性能的流量分发和反向代理的web服务。随着市场业务量的增加,普通的web容器,如tomcat的并发量已经远不能满足我们的业务量,同时随着分布式架构的普及,我们需要一款反向代理服务的支持,于是Nginx应运而生。 Nginx已经在大多数业务中普遍使用,因此针对Nginx的流量监控,错误日志监控极其必要,这样才能让我们能够及时了解系统运行情况。 那么今天,我们就来看看如何搭建Nginx访问记录、错误日志监控平台
340 0
ELK搭建(十二):搭建Nginx访问、错误日志监控平台
|
消息中间件 存储 JSON
不得不学!从零到一搭建ELK日志,在Docker环境下部署 logstash 工具
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
监控 数据可视化 Go
不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
数据可视化 数据挖掘 定位技术
不得不学!从零到一搭建ELK日志,在Docker环境下部署 Kibana 可视化工具
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
自然语言处理 运维 监控
不能不学!从零到一搭建ELK日志,在Docker环境下部署 Elasticsearch 数据库
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
存储 运维 监控
ELK搭建(十一):搭建MongoDB运行情况监控平台
mongoDB作为基于磁盘的非关系型数据库,JSON格式数据存储方式,具有优秀的查询效率。越来越多的场景使用到了MongoDB。在生产运维中,更需要我们能够实时的掌握mongo的运行情况,以方便我们数据库运行问题做出及时的调整和补救。
269 0
ELK搭建(十一):搭建MongoDB运行情况监控平台