ELK系列-(六)Redis也能作为消息队列?(下)

一、前文回顾 🔍

在前面的ELK系列中,我们已经搭建了ELK的核心组件,包括:

系统架构图 📊

有关整个系统架构的部署,您可以回顾前面的文章。今天,我们将继续探讨Redis在ELK系统中的落地

关于Redis的选型、Beats的部署使用,请翻阅往期博客哦

二、Beat发送消息到Redis

第一步就是将Beats的消息发送到Redis,因此我们需要修改Beats的配置如下:

yml 复制代码
output.redis:
  # 启用或禁用输出模块的布尔标志。
  enabled: true

  # 要连接的 Redis 服务器列表。如果启用了负载均衡,则事件将分发到列表中的服务器。如果某个服务器无法访问,则事件仅分发到可访问的服务器。
  # hosts 设置支持带有自定义密码的 redis 和 rediss URLs,例如 redis://:password@localhost:6379。
  hosts: ["121.**.60.**:6379"]

  # 用于认证 Redis 的密码。默认不使用认证。
  password: your_password

  # 事件发布到的 Redis 数据库号。默认值为 0。
  db: 9

  # 用于发布事件的 Redis 数据类型。如果数据类型为 list,则使用 Redis RPUSH 命令。如果数据类型为 channel,则使用 Redis PUBLISH 命令。默认值为 list。
  datatype: list
  
  # 配置的每个主机用于发布事件到 Redis 的工作线程数。将此设置与负载均衡选项一起使用。例如,如果你有 2 个主机和 3 个工作线程,总共启动 6 个工作线程(每个主机 3 个)。
  worker: 1

三、 LogStash从Redis获取消息

改为多Pipeline

以前单管道,现在要引入Beats消息,要改为多管道

bash 复制代码
# 原本
/usr/share/logstash/pipeline/logstash.conf
# 改造后
/usr/share/logstash/pipeline/conf.d/metricbeat.conf
/usr/share/logstash/pipeline/conf.d/application_log.conf

配置文件(logstash.yml)也挂载出来:

bash 复制代码
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
path.config: "/usr/share/logstash/pipeline/conf.d/*.conf"
metricbeat配置

其配置存在特殊性,输出如果和普通的一样配置,不会纳入Kibana的Observability视图

经过反复阅读文档,调试,发现Metricbeat使用的是数据流,即多个索引的特殊组合。所以此处要使用数据流作为输出

数据流会在下一篇讲哦

修改metricbeat.conf,使用如下配置:

bash 复制代码
# 从redis获取
input {
  redis {
    host => "121.**.60.**"
    port => 6379
    password => "**"
    data_type => "channel"
    key => "metricbeat"
    db => 9
    threads => 1
    tags => ["metricbeat"]
  }
}

# metricbeat收集的数据打时间标签
filter {
  if "metricbeat" in [tags] {
    date {
      match => ["timestamp", "yyyy-MM-dd HH:mm:ss"]
      timezone => "Asia/Shanghai"
      target => "@timestamp"
    }
  }
}

# 指定输出,数据流相关信息
output {
  if "metricbeat" in [tags] {
    elasticsearch {
      hosts => ["es:9200"]
      data_stream => true
      data_stream_type => "metrics"
      data_stream_dataset => "8.15.0"
      data_stream_namespace => "metricbeat"
    }
  }
}

此处不太能写入metricbeat原生数据流,写入到新数据流就可以,Kibana能正常识别

完成之后可以到kibana中的索引管理里面去看哦!

相关推荐
hasty4 分钟前
返回一个文件,为何越过整个目录?Khoj 静态资源路由的安全边界
数据库·安全
程序员-Benothing23 分钟前
Linux内核与模块管理:uname、lsmod、modprobe、sysct
linux·运维·数据库
cmes_love42 分钟前
期货期权L2五档行情、逐笔成交、分钟日线数据字段速览
数据库
神仙别闹1 小时前
基于C语言实现 TINY+ 编译器
c语言·开发语言·数据库
Wang's Blog1 小时前
Java 项目实战: 外卖平台优化-使用Redis作为缓存产品与TTL配置
java·redis·缓存
java_logo1 小时前
Docker 部署 dockurr/windows:轻松搭建浏览器可控 Windows 虚拟机
运维·windows·docker·容器·虚拟机·kvm·轩辕镜像
adinnet20261 小时前
意图识别(Intent Recognition):智能体怎么听懂你想干啥
大数据·数据库
笨小孩@GF 知行合一1 小时前
易语言-基础-外部数据库
数据库·编程·易语言·中文编程
DolphinDB智臾科技2 小时前
告别繁琐解析!BinaryTcp 模块实现沪深 Level‑1 行情接收‑解析‑落库一站式能力
数据库·插件·dolphindb
weixin_404551242 小时前
Oracle SQL 优化知识库:构建方案与价值评估
数据库·sql·oracle