简介

ELK 是一套日志收集系统,由 Elasticsearch(检索分析)、Logstash(过滤转发)和 Kibana(挖掘可视)三个软件组成
通过 ELK 可以收集系统日志、网站日志、应用系统日志等各种日志数据,并且还可以对日志进行过滤、清洗,然后进行集中存放并可用于实时检索、分析

因为 logstash 重量型、占用资源大、吞吐量有限、但是功能齐全,所以一般在收集日志的主机我们一般安装轻量型的 filebeat,再转到 logstash 去进行处理;同时,为了防止消息丢失,在 filebeat 和 logstash 之间我们会采用Redis 来进行中转。
https://elasticsearch.cn/download/

架构

流程

环境

Windows 也能部署,但是个人建议使用 Linux,以 CentOS 7 为例:[[Linux 系统环境初始化:CentOS]]
JDK 环境

安装

下载地址,[[Elasticsearch 入门]] & [[Logstash 入门]] & [[Kibana 入门]]

采集

轻量型数据采集器,Beats 是一个免费且开放的平台,集合了多种单一用途数据采集器;它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。

Filebeat

https://www.elastic.co/cn/downloads/beats/filebeat
Filebeat 是一个轻量级的日志采集器,由于 logstash 比较消耗资源,不适合在每台主机上部署 logstash
vim /etc/yum.repos.d/elastic.repo

1
2
3
4
5
6
7
8
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

yum install filebeat

配置

vim /etc/filebeat/filebeat.yml

1
2
3
4
5
6
enabled:true
paths:程序日志路径
output.redis:日志输出地方
hosts:redis 所在服务器 IP
port:redis 端口
key:redis 中的 key

运行

1
2
systemctl enable filebeat
systemctl start filebeat

Metricbeat

轻量型指标采集器,用于从系统和服务收集指标;Metricbeat 能够以一种轻量型的方式,输送各种系统和服务统计数据,从 CPU 到内存,从 Redis 到 Nginx,不一而足。
https://www.elastic.co/cn/downloads/beats/metricbeat

缓存

使用 Redis 作为缓存中间件,将 Filebeat 采集的日志推送到 Redis:vi /etc/filebeat/filebeat.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/*.log
tags: ["nginx"]
fields_under_root: true
fields:
project: microservice
app: product

output.redis:
hosts: ["xxx.xxx.xxx.xxx:6379"]
password: 123456
key: "filebeat"
db: 0
datatype: "list"

systemctl restart filebeat
journalctl -u filebeat -f