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

概述

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

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

思维导图

什么是ELK

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

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

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

Kibana,为 Elasticsearch 提供了分析和 Web 可视化界面,并生成各种维度表格、图形。

搭建ELK

环境依赖:CentOS 7.5,JDK 1.8,ElasticSearch 7.9.3,Logstash 7.9.3,Kibana 7.9.3。

安装 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/

然后切换用户,启动。

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

然用命令 netstat -nltp 查看端口号:

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

使问 http://192.168.0.109:9200/ 可以看到如下信息,表示安装成功。

安装 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 命令,可以看到两个进程在运行:

安装 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 交互界面:

效果展示

全部启动成功后,整个过程应该是这样,我们看一下:

浏览器打开 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有一些初步的认识,感谢大家的阅读。

文章来源:java技术爱好者,点击查看原文

Kubernetes管理员(CKA)培训

本次培训在深圳开班,基于最新考纲,通过线下授课、考题解读、模拟演练等方式,帮助学员快速掌握Kubernetes的理论知识和专业技能,并针对考试做特别强化训练,让学员能从容面对CKA认证考试,使学员既能掌握Kubernetes相关知识,又能通过CKA认证考试,学员可多次参加培训,直到通过认证。点击下方图片或者阅读原文链接查看详情。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值