ELK部署详解实操

1.简述

        ELK集群可以由以下列组件组成:

             Logstash(采集+处理)>>   Elasticsearch (存储) >>   Kibana (展示)

             Filebeat (采集) >>  Logstash (处理)  >>   Elasticsearch  >>   Kibana

             Filebeat  >>  Kafka(缓存)>>  Logstash >>   Elasticsearch  >>   Kibana

        Logstash 组件核心功能:

        ①采集数据

                支持多样化输入‌:可从日志文件、数据库(如 MySQL、PostgreSQL)、消息队列(如 Kafka、RabbitMQ)、网络协议(如 TCP/UDP)等来源实时采集数据。

                流式传输能力‌:以连续流模式处理数据,适合实时日志监控场景(如服务器日志、应用性能指标)。

        ② ‌数据清洗与转换

                ‌字段解析‌:通过 ‌Grok‌ 插件从非结构化日志中提取结构化字段(如 IP、时间戳、错误码)。

        ‌        格式标准化‌:支持日期格式化、字段重命名、数据类型转换(如字符串转数值)等操作,确保数据一致性。

                ‌敏感数据处理‌:支持数据脱敏、字段过滤(删除冗余或无意义字段)。

        ③灵活数据输出

                多目标适配‌:处理后的数据可输出至 Elasticsearch(用于搜索与分析)、Kafka(缓冲与分发)、文件系统(长期存储)等,满足不同下游需求。

                动态路由‌:根据数据内容或标签将特定日志分发至不同存储或分析系统(如错误日志发往告警平台。

        Elasticsearch 组件核心功能:

        ①数据存储

                近实时存储‌:支持秒级延迟写入数据,基于倒排索引实现高效全文检索。

                分片与副本机制‌:通过横向分片和副本备份保障高可用性与容错能力。

        ②索引与搜索

                复杂查询‌:支持全文检索、聚合分析(如统计 PV/UV)、地理空间查询等。

                RESTful API‌:提供标准化接口供外部系统集成(如 Kibana 或自定义应用)。

       Kibana 组件核心功能:

        ①交互式分析

                仪表盘定制‌:通过拖拽组件(折线图、柱状图、热力图等)创建可视化看板。

                灵活查询‌:支持 KQL(Kibana Query Language)和 Lucene 语法快速筛选数据。

        ②运维监控

                告警配置‌:基于阈值或异常检测规则触发通知(如 CPU 使用率超限)。

                日志追踪‌:通过 ‌Discover‌ 功能直接检索原始日志,支持字段过滤与高亮显示。

       Kafka 组件核心功能:

        ①流量削峰与缓冲

                削峰平谷‌:在高并发日志场景(如业务高峰期)下,Kafka 作为缓冲层暂存日志数据,避免 Logstash 或 Elasticsearch 因瞬时流量过大导致崩溃。

                异步处理‌:日志生产者(如 Filebeat、Rsyslog)将数据写入 Kafka 后即可释放资源,下游的 Logstash 按自身处理能力消费数据,实现异步解耦 。

        ②可靠性与容错性

                持久化存储‌:Kafka 将日志持久化到磁盘,即使下游服务(如 Logstash、Elasticsearch)故障或重启,数据也不会丢失 。

                高可用保障‌:Kafka 的分布式架构支持多副本机制,单节点故障时自动切换副本,保障日志传输连续性 。

        ③扩展性与多消费者支持

                多消费者并行处理‌:支持多个 Logstash 实例同时消费同一 Kafka Topic 的数据,提升日志处理吞吐量(如分片消费模式) 。

                灵活路由‌:通过不同 Topic 对日志分类(如按业务类型、日志级别),实现精细化分发与处理 。

      Filebeat 组件核心功能:

        ①轻量级与资源高效性

                低资源消耗‌:相比 Logstash,Filebeat 占用的 CPU 和内存资源更少,适用于资源敏感的环境(如容器、虚拟机或边缘节点)。

                高性能采集‌:通过异步发送机制和背压控制(Backpressure),保障高并发场景下数据采集的稳定性,避免因下游处理延迟导致系统崩溃 。

        ②实时日志采集与连续性保障

                实时监听与传输‌:持续监控指定日志文件的变化,实时捕获新增内容并发送至下游(如 Elasticsearch、Logstash 或 Kafka)。

                断点续传‌:通过 ‌注册表(Registrar)‌ 记录已采集日志的位置,即使服务中断,重启后也能从中断处继续采集,确保数据完整性。

        ③模块化与自动化适配

                预置解析模块‌:内置 Apache、Nginx、MySQL 等通用日志格式解析模块,简化日志结构化处理流程。

                动态服务发现‌:在容器化环境中自动识别新容器或服务,并启动日志采集,无需手动配置更新。

         ‌④灵活输出与架构解耦

                多目标分发‌:支持将日志直接发送至 Elasticsearch(快速存储与分析)、Logstash(复杂清洗)或 Kafka(缓冲与异步处理),适配不同架构需求 。

                负载均衡‌:通过多节点部署和轮询策略,实现采集任务的横向扩展,提升吞吐量 。

2.背景描述

        将AAS中间件中输出的日志进行收集,统一分析查看

3.环境准备

        麒麟V10服务器操作系统

        AAS中间件

        ELK - 7.2.0 版本套件(包含Filebeat)

 下载地址:https://mirrors.huaweicloud.com/home华为云DevCloud团队提供的全类型镜像站服务,提供主流开发语言组件、操作系统、常用工具和库等镜像,极速下载,全站CDN,官方合作。https://mirrors.huaweicloud.com/home

4.Elasticsearch部署

  • 创建组和用户

groupadd es
useradd -d -m /home/es -s /bin/bash -g es es
  • 将已下载的二进制安装包解压、创建软链接、创建数据目录、修改所属组所有者
tar -xzvf elasticsearch-7.2.0-linux-x86_64.tar.gz
ln -s elasticsearch-7.2.0 elasticsearch
mkdir elasticsearch/data -p 
chown -R es:es elasticsearch
chown -R es:es elasticsearch-7.2.0

  • 修改elasticsearch.yml 配置文件 如下:

  • 修改系统参数和es参数
vim /etc/security/limit.conf  
[追加后重启生效]
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096

[执行立即生效,重启失效]
ulimit -n 65535


vim /etc/sysctl.conf
vm.max_map_count=655360    [追加]
sysctl -p  [执行立即生效]

  • 启动服务,开启密码认证并设置密码后,访问http://ip:9200 验证即可
./elasticsearch -d
./elasticsearch-setup-passwords interactive

5.kibana部署

  • 将已下载的二进制安装包解压、修改所有者和所属组、修改kibana配置文件

  • 修改kibana配置文件

  • 启动服务,访问http://ip:5601验证

6.Filebeat部署

  • 安装filebeat rpm安装包

  • 修改配置文件,将收集的日志发送给logstash进行处理

  • 启动服务并查看启动日志,提示连接logstash超时,因为logstash还未进行启动配置,可以等logstash配置完成启动后,在启动filebeats服务
systemctl start filebeat.service
journalctl -u filebeat -f 

7.Logstash部署

  • 安装logstash rpm安装包

  • 配置文件介绍

        -- 修改jvm.options : 根据实际服务器内存大小设置jvm启动参数

        -- 修改logstash.yml : 根据cpu核心数设置

                

        -- 复制 logstash-sample.conf 到 /etc/logstash/conf.d/下,启动后默认读取该路径下的配置文件进行数据获取 输出(此配置文件中未包含过滤规则

  • 检测配置文件是否存在问题  使用参数: --config.test_and_exit
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-aas.conf --config.test_and_exit

  • 启动logstash服务,检测日志,通过kibana查看是否创建索引及数据情况
systemctl start logstash.service
journalctl -u logstash -f 

8.验证

  • 登录kibana >> 开发者工具 ,查看索引是否创建

  • 登录kibana >> 管理 >> 索引模式,创建索引模式,关联索引数据

  • 创建完成后,点击kibana >> discover 即可查看到所采集到的各个指标的参数

 

  • 添加 message 指标,查看输出的内容,默认为该文件的内容(未进行过滤筛选等配置

9.补充:Logstash过滤规则 验证

  • 编写一个脚本自动往采集的文件中写入信息

  • 修改filebeat.yml的配置,使采集的数据输出到控制台

  • 通过journalctl 命令实时查看filebeat日志,查看采集情况验证已接收到数据后,将flebeat配置改为输出到 logstash

  • 优化logstash的配置文件,使用grok插件编写过滤规则
filter {
  date {
    match => ["@timestamp", "ISO8601"]
    target => "formatted_time"
    timezone => "Asia/Shanghai"
  }
  mutate {
    replace => { "formatted_time" => "%{+yyyy-MM-dd HH:mm:ss}" }
  }

  mutate {
    add_field => {
      "aas_test_log" => "%{formatted_time} - %{message}"
    }
  }
}

  • 重启filebeat服务和logstash服务,按上述第8步验证创建索引模式流程,即可看到该索引中的 aas_test_log 指标中的数据,过滤规则实操可用。

其他匹配规则及想获取的日志内容,可与研发沟通确定日志输出规则,编写grok规则即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值