学习笔记(ElasticStack)
相关概述
日志在项目中起到了性能监控、异常定位、数据分析等非常重要的作用。虽然主流工具如 Tomcat,Nginx 等都会生成日志文件。但在分布式架构中,不同的服务部署在不同的服务器上,这样就产生了日志量大,数据分散,搜索不方便等问题。于是我们需要搭建集中式日志平台,将所有节点上的日志进行统一管理,让日志数据最大限度的发挥作用
Elastic 公司提供了一整套搭建集中式日志平台的解决方案。最开始由 Elasticsearch、Logstash、Kibana 三个工具组成,简称 ELK。在发展的过程中又有新成员 Beats 的加入,形成了 Elastic Stack
四大组件
组件(Elasticsearch)
Elasticsearch 基于 Java 开发的分布式搜索引擎,他可以对日志数据进行存储、搜索、分析等操作
组件(Kibana)
Kibana 为 Elasticsearch 提供了友好的日志分析 Web 界面,通过仪表板等可视化组件展示日志数据
组件(Logstash)
Logstash 可以对日志进行收集、分析处理,然后输出到存储系统如 Elasticsearch 中
组件(Beats)
由于 Logstash 是在 JVM 中运行,收集数据时资源消耗比较大,elastic 又推出了一系列轻量级的数据采集工具,这些工具统称为 Beats,Beats 收集的数据可以直接输出到 Elasticsearch 中,也可以通过 Logstash 处理后输出到 Elasticsearch 中。Beats 有以下常用工具
- Filebeat:用于监控、收集服务器日志文件
- Metricbeat:可以监控、收集系统的 CPU 使用率、内存、磁盘 IO 等数据,以及 Apache、NGINX、MongoDB、MySQL、Redis 等服务的指标
Beats
轻量型数据采集器 Beats 是一个免费且开放的平台,集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据
如果采集数据不需要任何处理,那么可以直接发送到 Elasticsearch 中。如果采集的数据需要处理,那么可以发送到 Logstash 中,处理完成后再发送到 Elasticsearch。最后通过 Kibana 对数据进行一系列的可视化展示
FileBeat
Filebeat是一款轻量型日志采集器,用于监控、收集服务器日志文件,首先 Filebeat 指定一些日志文件为数据输入源,之后使用 Harvester(收割机)源源不断的读取日志,最后通过 Spooler(卷轴)将日志数据传送到对应的目的地
安装软件(FileBeat)
下载然后解压即可
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.16-linux-x86_64.tar.gz
入门案例
随便在那个目录创建一个 mylog.log 文件,随机输入一些内容
vim /home/jianghao/jianghao/filebeat/mylog.log
在 filebeat 目录下创建 mylogconfig.yml 配置文件
vim mylogconfig.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/jianghao/jianghao/filebeat/mylog.log
output.console:
pretty: true
enable: true
启动 filebeat 文件
# 如果文件 mylogconfig.yml 的权限设置不符合要求,执行下面这个
chmod go-w /home/jianghao/jianghao/filebeat/filebeat-7.17.16-linux-x86_64/mylogconfig.yml
-e:标准输出,输出到控制台 -c:指定配置文件
./filebeat -e -c mylogconfig.yml
复制一个窗口为 mylog.log 追加内容,查看控制台输出
echo 'world' >> mylog.log
定义字段
Filebeat 读取日志文件后会生成 JSON 格式的日志,我们还可以为生成的日志添加一些自定义字段
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/jianghao/jianghao/filebeat/mylog.log
tags: ["mylog"] # 添加自定义标签,便于后续处理
fields: # 添加自定义字段
from: mylog
fields_under_root: true # true为添加到根节点,false为添加到子节点中
output.console:
pretty: true
enable: true
模板使用
在文件的 module 目录下,提供了大量软件的日志模板,我们只需要启用它即可,以 nginx 为例
# 查看启用和没启用的模板
./filebeat modules list
# 启用模板
./filebeat modules enable nginx
# 配置日志处理模板
cd modules.d/
vim nginx.yml
加入如下配置
- module: nginx
# Access logs
access:
enabled: true
var.paths: ["/usr/local/nginx/logs/access.log"]
# Error logs
error:
enabled: true
var.paths: ["/usr/local/nginx/logs/error.log"]
修改外层的配置文件
vim mylogconfig.yml
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: true
output.console:
pretty: true
enable: true
启动 filebeat 文件
./filebeat -e -c mylogconfig.yml
输出到 ES
vim mylogconfig.yml
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: true
output.elasticsearch:
hosts: ["192.168.0.104:9201"]
启动 filebeat 文件
./filebeat -e -c mylogconfig.yml
Metricbeat
Metricbeat 是一款轻量型指标采集器,用于收集操作系统及应用服务的指标数据
软件安装(Metricbeat)
下载然后解压即可
wget https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.17.16-linux-x86_64.tar.gz
收集系统指标
修改 Metricbeat 默认配置文件
vim metricbeat.yml
只需要修改 output.elasticsearch 即可,默认的 system.yml 模板是开启的
metricbeat.config.modules:
path: ${path.config}/modules.d/*.yml
# 采集到的数据输出到ES的路径
output.elasticsearch:
hosts: ["192.168.0.104:9201"]
启动文件即可,然后其 kibana 查看有没有索引即可
./metricbeat -e