365bet取款要多久-365bet体育365bet官网-365电子游戏

ELK Stack 简明指南

ELK Stack 简明指南

1. 概述

ELK Stack 是用于日志收集、分析与可视化的经典技术组合,广泛应用于生产环境监控。本文将介绍 ELK 的核心组件及其工作原理,并通过一个 Docker 实践示例帮助你快速上手。

ELK 是 Elasticsearch、Logstash 和 Kibana 三个工具的合称。它们分别承担数据存储、数据处理与数据展示的职责,协同工作以实现日志的全链路管理。

2. ELK 架构解析

ELK 架构如下图所示:

各组件职责如下:

Elasticsearch:作为分布式搜索引擎,用于存储结构化和非结构化数据,并提供高效的全文检索能力。

Logstash:是一个数据处理流水线,负责从多种来源收集、过滤和转换日志数据,再发送到 Elasticsearch。

Kibana:提供可视化界面,支持对 Elasticsearch 中的数据进行查询、图表展示及仪表盘构建。

通常,多个 Logstash 实例部署在不同节点上,将日志收集后统一发送至 Elasticsearch 集群。也可以使用 Beats(轻量级数据采集器)作为替代方案,将数据直接发送到 Logstash 或 Elasticsearch。

3. 搭建 ELK 环境

我们使用 Docker Compose 快速搭建一个 ELK 环境:

version: '3.7'

services:

elasticsearch:

image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0

container_name: elasticsearch

environment:

- discovery.type=single-node

- cluster.name=kernel-logs

- node.name=node-1

- xpack.security.enabled=false

ports:

- "9200:9200"

volumes:

- esdata:/usr/share/elasticsearch/data

networks:

- elk

logstash:

image: docker.elastic.co/logstash/logstash:8.15.0

container_name: logstash

depends_on:

- elasticsearch

ports:

- "5044:5044"

volumes:

- ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml

- ./logstash/pipeline:/usr/share/logstash/pipeline

- /var/log/syslog:/var/log/syslog:ro

networks:

- elk

kibana:

image: docker.elastic.co/kibana/kibana:8.15.0

container_name: kibana

depends_on:

- elasticsearch

ports:

- "5601:5601"

networks:

- elk

volumes:

esdata:

networks:

elk:

driver: bridge

启动服务:

$ docker compose up -d

验证 Elasticsearch 状态:

$ curl -X GET "localhost:9200/_cluster/health?pretty"

输出为 status: green 表示集群健康,可以继续后续操作。

4. Elasticsearch 简介

Elasticsearch 是基于 Apache Lucene 构建的分布式搜索引擎,适用于结构化与非结构化数据的快速全文检索。

4.1. 核心优势

✅ 高性能:支持毫秒级响应✅ 易扩展:可横向扩展节点以处理更大规模数据✅ REST API:提供丰富的 API 接口,便于集成

4.2. Lucene 查询语法示例

Elasticsearch 使用 Lucene 查询语法,支持复杂条件组合:

"Spring Boot" AND (training OR tutorial) NOT kotlin AND date:[2024-01-01 TO 2024-09-01]

该查询将匹配包含 “Spring Boot”、包含 “training” 或 “tutorial” 的文档,同时排除含 “kotlin” 的文档,并限定在指定日期范围内。

5. Logstash 数据处理

Logstash 是一个强大的数据处理工具,支持从多种来源采集数据、过滤、转换并输出到目标系统(如 Elasticsearch)。

5.1. Beats 采集器

Filebeat:用于采集日志文件

Metricbeat:用于采集系统指标(如 CPU、内存等)

通常,Beats 部署在各节点上,将原始数据发送到 Logstash 进行预处理,再写入 Elasticsearch。

5.2. 配置 Logstash 管道

创建 Logstash 配置文件:

$ mkdir -p ./logstash/pipeline && touch ./logstash/pipeline/logstash.conf

配置内容如下:

input {

file {

path => "/var/log/syslog"

start_position => "beginning"

sincedb_path => "/dev/null"

}

}

filter {

if [path] =~ "syslog" {

grok {

match => { "message" => "^%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:hostname} kernel: %{GREEDYDATA:kernel_message}" }

overwrite => [ "message" ]

}

if ![timestamp] {

drop {}

}

}

}

output {

elasticsearch {

hosts => ["http://elasticsearch:9200"]

index => "kernel-logs"

}

}

重启容器使配置生效:

$ docker compose restart

验证数据是否写入 Elasticsearch:

$ curl -X GET "localhost:9200/kernel-logs/_search?pretty"

返回结果中 hits 字段显示命中的日志条目,说明数据采集成功。

6. Kibana 可视化分析

Kibana 是 Elasticsearch 的可视化前端,支持通过图表、地图、表格等方式展示数据,并可构建交互式仪表盘。

6.1. 配置数据源

访问 Kibana 地址 http://localhost:5601,依次点击:

Analytics → Discover

Create data view

输入索引模式 kernel-logs

保存为数据视图

完成后即可看到采集的日志数据。

6.2. 使用 KQL 查询日志

Kibana 使用 KQL(Kibana Query Language)进行查询,语法简洁高效:

查询包含 "kernel" 的日志:

message.keyword kernel

查询包含 "kernel" 和 "bluetooth" 的日志:

message.keyword kernel and message.keyword bluetooth

查询最近两天的蓝牙内核日志:

message.keyword kernel and message.keyword bluetooth and @timestamp > now-2d

7. 总结

本文介绍了 ELK Stack 的核心组件及其协同工作机制,并通过 Docker Compose 快速搭建了一个完整的 ELK 环境,演示了从日志采集、处理到可视化的完整流程。

✅ ELK 适合用于日志集中管理、实时分析与监控场景⚠️ 需注意 Logstash 配置的准确性,避免日志格式不匹配导致数据丢失✅ Kibana 提供强大的可视化能力,适合构建运维监控看板

如需进一步扩展,可考虑引入 Filebeat 实现更轻量的日志采集,或使用 Elastic Stack 的安全模块(如 APM、SIEM)提升系统可观测性。