飞行日志
常用链接
韭菜搞钱
三省吾身
无问东西
知行合一
🎫实践指南-008-elastic-stack
type
status
date
slug
summary
tags
category
icon
password
1. 前言2. 架构3. 本地安装3.1. elasticsearch3.2. logstash3.3. kibana3.4. filebeat3.5. 测试3.5.1. 使用文件作为输入源3.5.2. 使用 filebeat 作为输入源3.5.3. 启动 logstash3.5.4. 数据分析4. Docker 安装4.1. 克隆项目4.2. 项目结构4.3. 重置内建用户密码4.4. Kibana4.5. 关闭付费4.6. 生产环境配置5. 参考
1. 前言
目前服务器领域,日志存储方案有很多。从单机器的 syslog 到集群的 ELK,甚至是如今还在不停爆出漏洞的 Log4j2。ELK 实际上是一整套解决方案,Elasticsearch 负责全文搜索,Logstash 负责对日志进行过滤、搜集,Kibana 可以为前两者提供一个 Web 展示的页面,更方便用户进行了解。三者合称 ELK,本篇文章就介绍一下 ELK 的部署。
关于 ELK,详情见 https://www.elastic.co/cn/what-is/elk-stack。
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,还会显示出来。
输入 “logstash-*”作为索引模式,在下一步中选择 @timestamp 作为时间筛选。
3.5.4. 数据分析
点击 Create index pattern, 准备分析数据。进入 Kibana 的 Discover 选项卡,查看数据,查看今天的数据代替最后 15 分钟。
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 ,可以看到默认软件会启动为期一个月的高级功能试用。
点击 “Revert to Basic license",退出使用版本。也可以在 elasticsearch.yml 配置文件中的 xpack.license.self_generated.type 修改为 basic 来禁用 X-Pack 相关功能。