🎫实践指南-008-elastic-stack

type
status
date
slug
summary
tags
category
icon
password

1. 前言

目前服务器领域,日志存储方案有很多。从单机器的 syslog 到集群的 ELK,甚至是如今还在不停爆出漏洞的 Log4j2。ELK 实际上是一整套解决方案,Elasticsearch 负责全文搜索,Logstash 负责对日志进行过滤、搜集,Kibana 可以为前两者提供一个 Web 展示的页面,更方便用户进行了解。三者合称 ELK,本篇文章就介绍一下 ELK 的部署。

2. 架构

最基本的架构当然是 Logstash -> Elastic -> Kibana,但这并不能在设计生产中投入使用。Logstash 作为日志搜集工具来说,过于复杂。Elastic 社区引入 filebeats,用于搜集日志信息,在使用 Logstash 进行过滤。
在 2015 年,我们向 ELK Stack 中加入了一系列轻量型的单一功能数据采集器,并把它们叫做 Beats。
  • - Elastic 社区
随着业务量的增大,由 filebeats 直接向 Logstash 传递日志会导致系统压力过大,所以此时一般会引入 Kafka (中间件)达到削峰和缓冲的作用。利用 Kafa 的缓存特性,缓解日志服务器的压力。
Filebeats -> Logstash -> Elasticsearch -> Kibana
这就是目前 ELK 生产环境中,比较常用的架构。

3. 本地安装

本文介绍 debian 下如何安装,CentOS 下需要下载源码解压到指定位置进行安装。

3.1. elasticsearch

安装完成后,elasticsearch 的配合,需要根据你的需要设定,包含节点名称,主机和端口,数据存储的地方,内存,日志文件等。以下是一个配置示例:
当配置完成之后,使用 curl 或 浏览器访问 http://localhost:9200,你就可以看到类似如下输出:
如果想要安装 Elastic 集群,请参考:https://logz.io/blog/elasticsearch-cluster-tutorial/

3.2. logstash

Logstash 依赖 Java8 或 Java11。
安装完成之后,验证 Java 版本:
在配置好 Kibana 之前,暂时不启动 Logstash。

3.3. kibana

当安装完成 Kibana 之后,编辑配置文件 /etc/kibana/kibana.yml。这里是让 Kibana 找到 elasticsearch。
启动 Kibana。
使用浏览器访问 http://localhost:5601 即可看到 Kibana 的页面。

3.4. filebeat

关于 Beat 的实现有很多,比如 metricbeat,Winlogbeat,Filebeat,Auditbeat等,这里选择 filebeat。
修改 filebeat.yaml 配置:
最后启动 filebeat。

3.5. 测试

此处使用一些假数据作为测试,你也可以使用其他数据源。下载地址为:https://s3.amazonaws.com/logzio-elk/apache-daily-access.log

3.5.1. 使用文件作为输入源

编辑 /etc/logstash/conf.d/apache-01.conf,测试数据改为实际地址:

3.5.2. 使用 filebeat 作为输入源

3.5.3. 启动 logstash

在 Kibana 中,进入 Management → Kibana Index Patterns 选项,Kibana 将会展示 Logstash 索引,如果你安装了 filebeat,还会显示出来。
notion image
输入 “logstash-*”作为索引模式,在下一步中选择 @timestamp 作为时间筛选。
notion image

3.5.4. 数据分析

点击 Create index pattern, 准备分析数据。进入 Kibana 的 Discover 选项卡,查看数据,查看今天的数据代替最后 15 分钟。
notion image

4. Docker 安装

前面一系列复杂配置,都可以通过 Docker 来解决。这里推荐 https://github.com/deviantony/docker-elk 项目。

4.1. 克隆项目

4.2. 项目结构

构建并启动项目。
当下载完成时,可以使用 curl 或者浏览器访问 https://localhost:9200 端口,默认用户名 elastic,密码 changeme。

4.3. 重置内建用户密码

需要修改如下文件来更新密码:
之后重启服务:

4.4. Kibana

Kibana 服务还是之前的 5601 端口。

4.5. 关闭付费

打开设置界面,选择 Elasticsearch 模块中的 License Management ,可以看到默认软件会启动为期一个月的高级功能试用。
notion image
点击 “Revert to Basic license",退出使用版本。也可以在 elasticsearch.yml 配置文件中的 xpack.license.self_generated.type 修改为 basic 来禁用 X-Pack 相关功能。

4.6. 生产环境配置

5. 参考

实践指南-007-mariadb实践指南-009-使用git打包rpm
飞行日志
常用链接
韭菜搞钱
三省吾身
无问东西
知行合一