本文最初发表在我的个人博客,查看原文。
本文会带你了解:
- Elastic Stack 可以干什么
- Elastic Stack 有哪些核心产品
- 为什么要搭建日志查询平台
- 如何快速搭建一个日志查询平台
Elastic Stack系列文章链接:
Elastic Stack日志查询平台第一篇:快速开始
Elastic Stack日志查询平台第二篇:Elasticsearch生产配置
本文是 Elastic Stack 日志查询平台系列的第一篇。后续我会分章节记录如何在生产环境构建一个日志查询平台。
一 简介
Elastic Stack 是应对多种搜索场景的一站式解决方案。主要产品包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。其中Beats 平台集合了多种单一用途数据采集器。它们可以从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。目前对各个平台支持的都比较好,主流的OS基本都支持,另外容器环境也是支持的,如Docker/K8S等。
其中 Beats 平台产品模块又包括 Filebeat,Metricbeat,Packetbeat,Winlogbeat,Auditbeat,Heartbeat,Functionbeat。
本系列文章主要使用其中的 Filebeat 模块作为日志采集器,因为 Filebeat 足够小巧和轻量,非常适合作为 agent 部署在目标服务器上。老牌的 Logstash(ELK中的“L”)同样也可以完成日志采集工作,但在过去的日子里由于性能和资源占用问题,现在已经慢慢退出日志采集工作,主要负责日志的二次加工处理工作。
本文将选用其中的 Elasticsearch、Kibana、以及 Beats 平台中的 Filebeat 进行介绍(即EFK)。其中 Elasticsearch 用于日志的索引及搜索,Kibana用于结果展示,Filebeat 用于日志采集。
二 环境要求
1. 操作系统:
本系列文章全部在CentOS 7
以及Ubuntu Server 18.04
上验证过。
2. JVM:
由于 Elasticsearch 是一个Java应用,所以需要一个Java运行环境,Elasticsearch 自身已经集成了一个JDK(OpenJDK 13)随发行版一起发布,推荐使用集成的就好了,如果你仍坚持想使用自己系统上已有的JDK,没关系,只需要在环境变量中配置一个JAVA_HOME
变量即可,需要注意的是Elasticsearch要求JDK最低版本为8。另外,官方推荐使用长期支持版本(LTS)的发行版,像Java9,10,12这些短期发行版本不推荐使用。
参见详细平台支持列表。
3. 系统用户:
部分配置文件对权限要求很严格,除非特别说明,本文假设所有操作均使用具有sudo
权限的devops
用户。
三 下载安装
本系列文章所采用的Elastic Stack版本为7.4.1
(7.4.x),如果你也想跟我一起搭建这个平台,请确保版本一致。
3.1 安装及启动顺序
务必按以下顺序安装并启动各个服务:
- Elasticsearch
- Kibana
- Filebeat
3.2 Elasticsearch
Elasticsearch是一个实时的分布式存储,搜索和分析引擎。它可以用于多种目的,但它擅长的一种场景是索引半结构化数据流,例如日志或解码的网络数据包。Elasticsearch使用称为倒排索引的数据结构,该结构支持非常快速的全文本搜索。
1. 下载
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.1-linux-x86_64.tar.gz
tar -zxvf elasticsearch-7.4.1-linux-x86_64.tar.gz
cd elasticsearch-7.4.1
解压后的目录elasticsearch-7.4.1
我们称为$ES_HOME
Elastic Stack产品很多配置选项都提供了默认值,对于初次接触的用户很容易上手。
2. 启动
./bin/elasticsearch
默认情况下,Elasticsearch 运行在前台,要以后台进程运行,执行以下命令:
./bin/elasticsearch -d
3. 检查服务
我们可以使用以下命令测试一下服务是否运行起来:
curl http://127.0.0.1:9200
Elasticsearch 默认监听
9200
及9300
端口,请确认端口可用。
正常的话会返回以下内容:
{
"name" : "devServer1",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "7bThQB_TTWOHnQ70Jt6I6g",
"version" : {
"number" : "7.4.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "fc0eeb6e2c25915d63d871d344e3d0b45ea0ea1e",
"build_date" : "2019-10-22T17:16:35.176724Z",
"build_snapshot" : false,
"lucene_version" : "8.2.0",
"minimum_wi