ELK系列(八)、使用Filebeat+Redis+Logstash收集日志数据

2023-10-27

前面提到过,logstash占资源很大,filebeat更加轻量,一般都是组合使用,难免会有logstash宕掉的时候,这时候filebeat再往logstash里写数据就写不了了,这期间的日志信息可能就无法采集到了,因此一般都会采用redis或kafka作为一个消息缓冲层,本篇就介绍如何使用Redis作为数据缓冲层,将filebeat的数据落地到Redis中然后由Logstash消费并写入至ES。

ELK系列(一)、安装ElasticSearch+Logstash+Kibana+Filebeat-v7.7.0

ELK系列(二)、在Kibana中使用RESTful操作ES库

ELK系列(三)、安装Logstash插件及打包离线安装包

ELK系列(四)、Logstash读取nginx日志写入ES中

ELK系列(五)、Logstash修改@timestamp时间为日志的产生时间

ELK系列(六)、修改Nginx日志为Json格式并使用Logstash导入至ES

ELK系列(七)、Filebeat+Logstash采集多个日志文件并写入不同的ES索引中

-------------------------------使用Filebeat+Redis+Logstash收集日志数据------------------------------

Filebeat配置

首先配置Filebeat的yml文件,这里还使用之前用过的采集nginx的access-json.json日志的配置文件改一改,采集nginx的访问日志并写入到redis中,指定key为"nginx",在db0内,数据类型为list:

vim /opt/app/filebeat-7.7.0-linux-x86_64/filebeat_redis.yml

filebeat.inputs:
- type: log
  enabled: true
  backoff: "1s"
  tail_files: false
  paths:
    - /usr/local/nginx/logs/access-json.log
  fields:
    filetype: log_nginxjson
  fields_under_root: true

output.redis:
  enabled: true
  hosts: ["wykd:6379"]
  password: 123456
  key: nginx
  db: 0
  datatype: list

如果redis没有开启密码的话,这里的password参数可以不写。更加详细的参数配置可参考$FILEBEAT_HOME下的filebeat.reference.yml文件。

Logstash配置

logstash的配置文件也拿之前的读nginx日志文件写到es的配置文件改一改,把input改成从redis取数据,这里的password也是按需配置,key,data_type,db,host,port需要与上面filebeat配置的一致。

vim /opt/app/logstash-7.7.0/config/logstash_nginxlog2es_redis.conf

input {
   # 从文件读取日志信息
   redis {
        host => "wykd"
        port => 6379
        password => "123456"  #如果没有密码不需要写这个参数
        key => "nginx"
        data_type => "list"
        db =>0
    }
 }

filter {
    json {
       source => "message"
       remove_field => ["beat","offset","tags","prospector"] #移除字段,不需要采集
    }
    date {
      match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] #匹配timestamp字段
      target => "@timestamp"  #将匹配到的数据写到@timestamp字段中
    }
}

output {
       # 输出es
       elasticsearch {
          hosts => ["wykd:9200"]
          index => "redis-%{+YYYY.MM.dd}"
      }

}

启动验证

首先启动logstash,然后启动filebeat:

cd $LS_HOME
bin/logstash -f config/logstash_nginxlog2es_redis.conf

cd $FILEBEAT_HOME
./filebeat -e -c filebeat_redis.yml

进入kibana查看index,可以看到redis-*的index已经创建出来了,并且有14条数据:

访问nginx网页三次进行测试:

curl http://wykd/wyk.html
curl http://wykd/abc.html
curl http://wykd

可以看到这三次访问记录已经进来了,变成了17条记录:

此时我们关闭logstash进程,模拟一下logstash关闭的情况下,如果继续给nginx新增日志的话,filebeat和redis里的数据是什么样的:

1. 关闭logstash
2. 模拟登陆nginx:
    curl http://wykd/111.html
    curl http://wykd/222.html
3. 查看redis数据

可以看到在redis的db0的key=nginx里已经缓存了这两条日志记录, 当我们再次重启logstash的时候,它就会自动从redis中将缓存的日志记录消费到ES中:

1. 再次启动logstash进程
    bin/logstash -f config/logstash_nginxlog2es_redis.conf 
2. 验证redis数据
3. 验证es中的index记录数

 

线上都是在各应用客户端使用filebeat采集日志,然后推送到redis或kafka集群内,然后由logstash进行消费,此架构可大大提升稳定性。

 

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELK系列(八)、使用Filebeat+Redis+Logstash收集日志数据 的相关文章

  • 使用redis进行树形数据结构

    我需要为基于树的键值开发一个缓存系统 与Windows注册表编辑器非常相似 其中缓存键是字符串 表示树中到值的路径 可以是原始类型 int string bool double 等 或子树本身 例如 key root x y z w val
  • Facet从elasticsearch中的对象获取所有键

    假设我有以下文档 title Some Title options key5 1 key3 0 key1 1 title Some Title options key2 0 key3 0 key5 1 我想从中获取所有钥匙options使用
  • Spring Redis删除不删除key

    我正在尝试删除一个 Redis 键 但由于某种原因它没有删除 但也没有抛出异常 这是我要删除的代码 import com example service CustomerService import com example model Cu
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • 将 CSV 文件中的数字数据更改为文本

    下面的查询是抓取数据并创建一个 CSV 文件 我遇到的问题是名为 SPLE 的源在数据库中存储数字为 0 1 50 的数据 然而 在 CSV 中 这些数字被收集在 CSV 中 我希望在创建 CSV 时 这些数字能够代表诸如以下的单词 0 T
  • Elasticsearch 日期范围交集

    我在弹性搜索中存储类似以下信息的信息 timeslot start at 2013 02 01 timeslot end at 2013 02 03 鉴于我有另一个日期范围 例如 从用户输入给出 我想搜索相交的时间范围 与此类似 确定两个日
  • 如何使用redis发布/订阅

    目前我正在使用node js和redis来构建应用程序 我使用redis的原因是因为发布 订阅功能 该应用程序只是在用户进入用户或离开房间时通知经理 function publishMsg channel mssage redisClien
  • 如何配置Lettuce Redis集群异步连接池

    我正在配置我的生菜重新分配池 当我按照官方文档配置时 连接池无法正常初始化 无法获取连接 官方文档指出 RedisClusterClient clusterClient RedisClusterClient create RedisURI
  • 在 Must bool 查询中使用正则表达式搜索与使用 Must_not bool 查询

    我想进行类似的查询 获取包含 不包含给定字段的 某些值 的所有文档 获取给定字段的值等于 不等于 某个值 的所有文档 根据我的映射 字段是字符串类型 这意味着它们支持关键字和全文搜索 例如 myField type text fields
  • Elasticsearch 中的别名数量(全局和/或每个索引)是否有限制?

    我开始为我的项目研究elasticsearch 具体来说是1 5版本 我正在考虑使用别名将客户端应用程序从复杂的索引设置中抽象出来 我最终可能会得到 20 到 50 个索引 每个索引有 10 到 30 个别名 这将达到 1500 个别名 我
  • Windows docker:权限被拒绝 /var/run/docker.sock

    当我尝试使用自动发现运行 filebeat 时 出现以下错误 退出 自动发现提供程序设置中出现错误 已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix var run docker sock 获取http 2Fvar 2
  • 使用 python 聚合 elasticsearch-dsl 中的字段

    有人可以告诉我如何编写 Python 语句来聚合 求和和计数 有关我的文档的内容吗 SCRIPT from datetime import datetime from elasticsearch dsl import DocType Str
  • 由于配置文件错误,无法启动 Redis 服务器

    我刚刚按照此处的说明安装了 Redis http redis io download http redis io download 当我运行 redis server redis conf 时出现以下错误 FATAL CONFIG FILE
  • 使用环境变量在 redis.conf 中设置动态路径

    我有一个环境变量MY HOME其中有一个目录的路径 home abc 现在 我有一个redis conf文件 我需要像这样设置这个路径 redis conf pidfile MY HOME local var pids redis pid
  • 将文件传递给活动作业/后台作业

    我通过标准文件输入接收请求参数中的文件 def create file params file upload Upload create file file filename img png end 但是 对于大型上传 我想在后台作业中执行
  • Redis 在键过期时更新排序集

    我有一个 Redis 服务器 其中包含一组键值对和一个排序集 提供这些键值对的键的索引 键值对可以进入 已完成 状态 此时需要在 1 小时后删除它们 这可以通过在键上设置到期时间来简单地实现 但从排序集中清除它们似乎更成问题 我可以有一个过
  • 如何在 ElasticSearch 中获取带有计数的百分位数

    我们正在尝试生成百分位数弹性搜索 https www elastic co products elasticsearch using 百分位数聚合 https www elastic co guide en elasticsearch re
  • Web API 缓存 - 如何使用分布式缓存实现失效

    我有一个 API 目前不使用任何缓存 我确实有一个正在使用的中间件 它可以生成缓存标头 Cache Control Expires ETag Last Modified 使用https github com KevinDockx HttpC
  • 如何使用 Jest 从 ElasticSearch 获取索引列表

    我正在尝试使用 Jest 检索索引列表 但我只得到 Stats statistics new Stats Builder build result client execute statistics 如何从结果中检索索引列表 除了统计之外
  • `docker-compose up` 与使用环境变量的 `docker compose up`

    我正在尝试使用 Docker Compose 将三节点 Elasticsearch 集群部署到 Azure 容器实例 我松松地跟随这个例子 https www elastic co guide en elasticsearch refere

随机推荐

  • 2020美赛F奖论文(二):传球网络模型(PNM)的建立和影响因子分析

    上接 2020美赛F奖论文 一 摘要 绪论和模型准备 全文 2020美赛F奖论文 一 摘要 绪论和模型准备 2020美赛F奖论文 二 传球网络模型 PNM 的建立和影响因子分析 2020美赛F奖论文 三 足球团队指标和基于机器学习的球队表现
  • 最小二乘法计算一组数据的斜率(线性回归、趋势计算)

    def compute trend y 计算数据的趋势 线性回归求斜率 最小二乘法 https blog csdn net qq 45607873 article details 109425736 return x np arange l
  • python基础语法

    1 列表 定义的格式 列表名称 元素1 元素2 元素可以是数字 字符串 列表 列表的访问 整体访问 列表名称 单个访问 通过下标获取元素 切片技术来访问列表中某些元素 列表的操作 len 计算列表的长度 实现列表的加法 将两个列表合并成为一
  • 第十七章 MyBatis3.X整合Mysql数据库事务

    1 MyBatis3 x 的事务管理形式 使 JDBC的事务管理 使 java sql Connection对象完成对事务的提交 commit 回滚 rollback 关闭 close 使 MANAGED的事务管理 MyBatis 身不会去
  • 咖啡店小程序:吸引顾客的创新营销手段

    近日 酱香拿铁 的大火让大家再次把目标聚焦在年轻人都喜欢的咖啡上 现在咖啡已经成为年轻一代的社交硬通货 咖啡店也遍地开花 而随着移动互联网的快速发展 咖啡店小程序已经成为了各大咖啡店主的选择 因为它提供了便捷的方式来链接顾客和销售 那么咖啡
  • 摄像机跟随之第三人称视角(一)

    在我们开发游戏的时候 总避免不了对摄像机的设置 当然 这也因为每款游戏类型不一样 所以摄像机的跟随或者说放置位置不一样 这也要求我们写出合适的算法 本篇就主要是针对第三人称视角的摄像机 进行算法设计分析 首先来分析第三人称摄像机的特性 1
  • thinkphp6 入门(1)--安装、路由规则、多应用模式

    一 安装thinkphp6 具体参考官方文档 安装 ThinkPHP6 0完全开发手册 看云 下面仅列举重要步骤 ThinkPHP6 0的环境要求如下 PHP gt 7 2 5 1 安装Composer 2 安装稳定版thinkphp 如果
  • 浏览器显示无法解析服务器的DNS地址,搜狗浏览器无法解析服务器的DNS地址怎么解决...

    5 点击 使用下面的DNS 服务器地址 然后在下面填入 114 114 114 114 点击 确定 确定 保存设置即可解决问题 3 重置winsock 目录设置后等待提示已成功刷新DNS 解析缓存 继续输入 netsh winsock re
  • 【Kubernetes部署篇】Ansible自动化工具离线部署K8s 1.27版本

    一 前提须知 采用kubeadm方式 目前只支持 单Master 多Node部署架构 需要主机网络互通 没有网络限制 需要使用root用户权限进行部署 二 使用Ansible部署K8S集群步骤 第一步 获取离线安装包 百度网盘获取 MD5
  • L298N模块驱动电机(实现pwm调速)

    1 占空比是高电平所占周期时间与整个周期时间的比值 2 脉宽调制 PWM 基本原理 控制方式就是对逆变电路开关器件的通断进行控制 使输出端得到一系列幅值相等的脉冲 用这些脉冲来代替正弦波或所需要的波形 也就是在输出波形的半个周期中产生多个脉
  • Angular前端与springBoot后端的http请求交互

    前言 开发模式采用前后端分离 前端用angular 这里指的是angular2 不要和angularjs混淆了 后端采用springBoot 主要介绍下angular与后端接口调用问题 思路 其实官网都有调用 只是一些地方要注意到 而往往就
  • c51延时子程序delayms(uchar ms);

    void delayms unsigned char ms 延时子程序 unsigned char i while ms for i 0 i lt 109 i 晶振为11 0592M时i lt 109 若为12M时 i 需设为 lt 120
  • 最全java面试题及答案(208道)

    本文分为十九个模块 分别是 Java 基础 容器 多线程 反射 对象拷贝 Java Web 异常 网络 设计模式 Spring Spring MVC Spring Boot Spring Cloud Hibernate MyBatis Ra
  • 转: 边界值法:什么是上点,内点,离点

    以下转自 web http yzylion blog 163 com blog static 89406994200892784325898 什么是上点 内点 离点 2008 10 27 20 43 25 分类 默认分类 标签 it评论 字
  • 中文Python(3)Python语言中的占位神器pass语句

    中文Python 3 Python语言中的占位神器pass语句 Python作为一门高级计算机语言 其程序结构相对简单 同时又灵活多变 在编写程序时 我们经常需要考虑各种情况的处理 但有时候一些情况我们还没有想好如何去处理 这时候就可以借助
  • CUDA中的锁页内存 Page-Locked Memory详解

    Page Locked内存 运行时提供的函数允许使用锁页 也称为固定 主机内存 与 malloc 分配的常规可分页主机内存相反 cudaHostAlloc 和 cudaFreeHost 分配和释放锁页主机内存 cudaHostRegiste
  • maven使用及高级

    简介 maven工作全靠插件plugin maven的工作目标也是插件 管理插件 运行插件 安装 下载后 设置m2 home及path 使用mvn v命令检查安装是否成功 maven安装包非常小 因为maven被设计成将主要的指责委派给一组
  • PDF加密文件无法打印

    前几天遇到一个要打印的PDF可是打印的按钮就是无法使用 用wps打开后发现已被加密了 后在找解密方法时找到一个网站可以使用 这边暂且记着以后方便使用 http www pdfdo com pdf remove restriction asp
  • Truffle报'module'未定义错误解决方法

    在使用truffle compile命令时出现如下错误 只要把文件夹中的 truffle js 文件重命名为其他名字即可
  • ELK系列(八)、使用Filebeat+Redis+Logstash收集日志数据

    前面提到过 logstash占资源很大 filebeat更加轻量 一般都是组合使用 难免会有logstash宕掉的时候 这时候filebeat再往logstash里写数据就写不了了 这期间的日志信息可能就无法采集到了 因此一般都会采用red