ELK日志系统终极架构

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ELK终极架构ELK终极架构ELK终极架构1.ELK终极架构图2.部署终极ELK架构

ELK终极架构

ELK终极架构

  • ELK终极架构

1.ELK终极架构图

2.部署终极ELK架构

2.2.部署两台redis

2.3.配置nginx四层负载均衡

2.4.配置keepalived高可用

2.5.挂掉redis01查看是否会切换到redis02实现高可用

2.6.配置filebeat将日志存储到高可用的redis集群

2.7.产生日志并查看redis上是否产生的key

2.8.配置logstash连接redis高可用集群

2.9.启动logstash并查看es上是否产生索引库

3.在kibana上关联es索引并查看日志信息

3.1.关联es索引库

3.2.查看收集来的日志数据

1.ELK终极架构图

最接近终极的架构图就是我们从redis中读取收集来的日志最后由logstash存储到es库,但是这个架构有个缺陷假如redis挂掉,我们就无法收集日志了

redis单点问题,我们可以通过集群的方式来实现,但是redis的三种集群模式,除了主从复制,其他两个集群,filebeat均不支持将数据写入集群,但是主从复制又有弊端,假如主节点挂掉,还需要通过命令的方式把从节点改为可读可写

filebeat支持kafka集群的写入,但是kafka不太熟悉,我们还是用redis来实现

我们可以配置两个单独的redis,在通过nginx四层负载均衡+keepalvide做成高可用集群,当其中一个redis坏掉了,另一个redis接替其工作,当redis01处于工作模式时,就把redis02作为备份模式,这样redis02上面就没有数据的产生,从而可以保证数据的一致性,不会导致重复

ELK终极架构图

2.部署终极ELK架构image.png

2.2.部署两台redis

192.168.81.210配置

1.安装redis(epel源中有redis的rpm包)
[root@elasticsearch ~]# yum -y install redis
2.启动redis
[root@elasticsearch ~]# systemctl start redis
[root@elasticsearch ~]# systemctl enable redis
3.查看端口号
[root@elasticsearch ~]# netstat -lnpt | grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      94345/redis-server
4.登陆redis
[root@elasticsearch ~]# redis-cli
127.0.0.1:6379> 
5.配置redis允许任何主机访问
[root@elasticsearch ~]# vim /etc/redis.conf 
bind 0.0.0.0
[root@elasticsearch ~]# systemctl restart redis
6.创建一个key方便识别(最终测试的时候看)
[root@elasticsearch ~]# redis-cli 
127.0.0.1:6379> set redis01 192.168.81.210
OK

192.168.81.220配置

1.安装redis(epel源中有redis的rpm包)
[root@node-2 ~]# yum -y install redis
2.启动redis
[root@node-2 ~]# systemctl start redis
[root@node-2 ~]# systemctl enable redis
3.查看端口号
[root@node-2 ~]# netstat -lnpt | grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      94345/redis-server
4.登陆redis
[root@node-2 ~]# redis-cli
127.0.0.1:6379> 
5.配置redis允许任何主机访问
[root@node-2 ~]# vim /etc/redis.conf 
bind 0.0.0.0
[root@node-2 ~]# systemctl restart redis
6.创建一个key方便识别(最终测试的时候看)
[root@node-2 ~]# redis-cli 
127.0.0.1:6379> set redis02 192.168.81.220
OK

2.3.配置nginx四层负载均衡

192.168.81.210配置

[root@elasticsearch ~]# vim /etc/nginx/nginx.conf
stream {
  upstream redis {
    server 192.168.81.210:6379 max_fails=2 fail_timeout=10s;
    server 192.168.81.220:6379 max_fails=2 fail_timeout=10s backup;
  }
  server {
    listen 6378;
    proxy_connect_timeout 1s;
    proxy_timeout 3s;
    proxy_pass redis;
  }
}
[root@elasticsearch ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@elasticsearch ~]# systemctl restart nginx

192.168.81.220配置

[root@node-2 ~]# vim /etc/nginx/nginx.conf
stream {
  upstream redis {
    server 192.168.81.210:6379 max_fails=2 fail_timeout=10s;
    server 192.168.81.220:6379 max_fails=2 fail_timeout=10s backup;
  }
  server {
    listen 6378;
    proxy_connect_timeout 1s;
    proxy_timeout 3s;
    proxy_pass redis;
  }
}
[root@elasticsearch ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@node-2 ~]# systemctl restart nginx

测试nginx负载是否可用

使用两个负载均衡任意一个ip都可以负载到redis01,因为redis02是备份状态,一般高可用集群都是两套负载均衡集群连接到keepalived

[root@elasticsearch ~]# redis-cli -h 192.168.81.210 -p 6378
192.168.81.210:6378> keys *
1) "redis01
[root@elasticsearch ~]# redis-cli -h 192.168.81.220 -p 6378
192.168.81.220:6378> keys *
1) "redis01"

2.4.配置keepalived高可用

192.168.81.210配置

[root@elasticsearch ~]# vim /etc/keepalived/keepalived.conf 
global_defs {
  router_id lb01
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 50
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.81.211
    }
}
[root@elasticsearch ~]# systemctl restart keepalived
[root@elasticsearch ~]# systemctl enable keepalived

192.168.81.220配置

[root@node-2 ~]# vim /etc/keepalived/keepalived.conf 
global_defs {
  router_id lb02
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.81.211
    }
}
[root@node-2 ~]# systemctl restart keepalived
[root@node-2 ~]# systemctl enable keepalived

测试keepalived

1.漂移IP已经在主节点
[root@elasticsearch ~]# ip a |grep virbr0
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
2.使用虚拟IP登陆redis
[root@elasticsearch ~]# redis-cli -h 192.168.81.211 -p 6378
192.168.81.211:6378> keys *
1) "redis01
3.关闭主节点,查看ip是否会漂移
[root@elasticsearch ~]# systemctl stop keepalived
在backup节点查看,漂移成功
[root@node-2 ~]# ip a | grep vir
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

2.5.挂掉redis01查看是否会切换到redis02实现高可用

[root@elasticsearch ~]# redis-cli -h 192.168.81.211 -p 6378 192.168.81.211:6378> keys *1) "redis01"192.168.81.211:6378> keys *1) "redis01"192.168.81.211:6378> keys *1) "redis01"192.168.81.211:6378> 192.168.81.211:6378> 192.168.81.211:6378> 192.168.81.211:6378> keys *1) "filebeat"2) "redis02"192.168.81.211:6378>

完美的实现了高可用,可以看到redis01挂掉后redis02里面进行了工作

2.6.配置filebeat将日志存储到高可用的redis集群

只需要修改传输给redis的地址为漂移ip地址即可

[root@nginx ~]# vim /etc/filebeat/filebeat.yml 
output.redis:
  hosts: ["192.168.81.211:6379"]
  key: "nginx-all-key"
  db: 0
  timeout: 5
[root@nginx ~]# systemctl restart filebeat  

2.7.产生日志并查看redis上是否产生的key

1.产生日志
ab -c 100 -n 1000 http://www.jiangxl.com/ 
ab -c 100 -n 1000 http://bbs.jiangxl.com/ 
ab -c 100 -n 1000 http://blog.jiangxl.com/
2.查看redis上是否产生了key
192.168.81.211:6378> keys *
1) "nginx-all-key"              #已经产生了key
2) "redis01"

2.8.配置logstash连接redis高可用集群

[root@elasticsearch ~]# vim /etc/logstash/conf.d/redis.conf 
input {
  redis {
    host => "192.168.81.210"
    port => "6379"
    db => "0"
    key => "nginx-all-key"
    data_type => "list"
  }
}

只需要改redis地址这一行即可

2.9.启动logstash并查看es上是否产生索引库

[root@elasticsearch ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis.conf 

logstash输出

es上已经有数据索引产生了

3.在kibana上关联es索引并查看日志信息

3.1.关联es索引库

nginx-www-access索引

nginx-bbs-access索引

nginx-blog-access索引

3.2.查看收集来的日志数据

nginx-www-access索引

nginx-bbs-access索引

nginx-blog-access索引

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
15天前
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
37 3
|
5天前
|
监控 安全 API
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
本文详细介绍了PaliGemma2模型的微调流程及其在目标检测任务中的应用。PaliGemma2通过整合SigLIP-So400m视觉编码器与Gemma 2系列语言模型,实现了多模态数据的高效处理。文章涵盖了开发环境构建、数据集预处理、模型初始化与配置、数据加载系统实现、模型微调、推理与评估系统以及性能分析与优化策略等内容。特别强调了计算资源优化、训练过程监控和自动化优化流程的重要性,为机器学习工程师和研究人员提供了系统化的技术方案。
111 77
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
|
10天前
|
机器学习/深度学习 人工智能 并行计算
【AI系统】Kernel 层架构
推理引擎的Kernel层负责执行底层数学运算,如矩阵乘法、卷积等,直接影响推理速度与效率。它与Runtime层紧密配合,通过算法优化、内存布局调整、汇编优化及调度优化等手段,实现高性能计算。Kernel层针对不同硬件(如CPU、GPU)进行特定优化,支持NEON、AVX、CUDA等技术,确保在多种平台上高效运行。
61 32
|
10天前
|
存储 机器学习/深度学习 人工智能
【AI系统】计算图优化架构
本文介绍了推理引擎转换中的图优化模块,涵盖算子融合、布局转换、算子替换及内存优化等技术,旨在提升模型推理效率。计算图优化技术通过减少计算冗余、提高计算效率和减少内存占用,显著改善模型在资源受限设备上的运行表现。文中详细探讨了离线优化模块面临的挑战及解决方案,包括结构冗余、精度冗余、算法冗余和读写冗余的处理方法。此外,文章还介绍了ONNX Runtime的图优化机制及其在实际应用中的实现,展示了如何通过图优化提高模型推理性能的具体示例。
38 4
【AI系统】计算图优化架构
|
12天前
|
存储 人工智能 监控
【AI系统】推理系统架构
本文深入探讨了AI推理系统架构,特别是以NVIDIA Triton Inference Server为核心,涵盖推理、部署、服务化三大环节。Triton通过高性能、可扩展、多框架支持等特点,提供了一站式的模型服务解决方案。文章还介绍了模型预编排、推理引擎、返回与监控等功能,以及自定义Backend开发和模型生命周期管理的最佳实践,如金丝雀发布和回滚策略,旨在帮助构建高效、可靠的AI应用。
71 15
|
15天前
|
人工智能 并行计算 程序员
【AI系统】SIMD & SIMT 与芯片架构
本文深入解析了SIMD(单指令多数据)与SIMT(单指令多线程)的计算本质及其在AI芯片中的应用,特别是NVIDIA CUDA如何实现这两种计算模式。SIMD通过单指令对多个数据进行操作,提高数据并行处理能力;而SIMT则在GPU上实现了多线程并行,每个线程独立执行相同指令,增强了灵活性和性能。文章详细探讨了两者的硬件结构、编程模型及硬件执行模型的区别与联系,为理解现代AI计算架构提供了理论基础。
54 12
存储 人工智能 自然语言处理
44 6
|
12天前
|
机器学习/深度学习 人工智能 API
【AI系统】昇腾异构计算架构 CANN
本文介绍了昇腾 AI 异构计算架构 CANN,涵盖硬件层面的达·芬奇架构和软件层面的全栈支持,旨在提供高性能神经网络计算所需的硬件基础和软件环境。通过多层级架构,CANN 实现了高效的 AI 应用开发与性能优化,支持多种主流 AI 框架,并提供丰富的开发工具和接口,助力开发者快速构建和优化神经网络模型。
30 1
|
15天前
|
机器学习/深度学习 人工智能 前端开发
【AI系统】AI 编译器基本架构
本文承接前文关于AI编译器发展的三个阶段,深入探讨通用AI编译器架构。文章首先回顾现有AI编译器架构,如PyTorch的转换流程及优化策略,然后介绍理想化的通用AI编译器架构,涵盖从前端接收多框架模型输入到后端生成特定硬件代码的全过程。重点解析了编译器的中间表达IR、前端与后端优化技术,以及现有AI编译器全栈产品的层次结构,为读者提供了全面的技术概览。
20 2
|
21天前
|
机器学习/深度学习 存储 人工智能
【AI系统】模型演进与经典架构
本文探讨了AI计算模式对AI芯片设计的重要性,通过分析经典模型结构设计与演进、模型量化与压缩等核心内容,揭示了神经网络模型的发展现状及优化方向。文章详细介绍了神经网络的基本组件、主流模型结构、以及模型量化和剪枝技术,强调了这些技术在提高模型效率、降低计算和存储需求方面的关键作用。基于此,提出了AI芯片设计应考虑支持神经网络计算逻辑、高维张量存储与计算、灵活的软件配置接口、不同bit位数的计算单元和存储格式等建议,以适应不断发展的AI技术需求。
28 5