当前位置: 首页 > news >正文

ELK日志系统和Filebeat采集器的学习总结

ELK是ElasticSerach、Logstash、Kina

Logstash负责采集数据,Logstash有三个插件,input、filter、output,filter插件作用是对采集的数据进行处理,过滤的,因此filter插件可以选,可以不用配置。

ElasticSearch负责存储数据和检索数据。

Kina负责展示数据。

这三个补充配置样例:

一个常见的部署方案,如下图所示,部署思路是:
(1)在每台生成日志文件的机器上,部署Logstash,作为Shipper的角色,负责从日志文件中提取数据,但是不做任何处理,直接将数据输出到Redis队列(list)中;
(2)需要一台机器部署Logstash,作为Indexer的角色,负责从Redis中取出数据,对数据进行格式化和相关处理后,输出到Elasticsearch中存储;
(3)部署Elasticsearch集群,当然取决于你的数据量了,数据量小的话可以使用单台服务,如果做集群的话,最好是有3个以上节点,同时还需要部署相关的监控插件;
(4)部署Kibana服务,提供Web服务。

在前期部署阶段,主要工作是Logstash节点和Elasticsearch集群的部署,而在后期使用阶段,主要工作就是Elasticsearch集群的监控和使用Kibana来检索、分析日志数据了,当然也可以直接编写程序来消费Elasticsearch中的数据。

在上面的部署方案中,我们将Logstash分为Shipper和Indexer两种角色来完成不同的工作,中间通过Redis做数据管道,为什么要这样做?为什么不是直接在每台机器上使用Logstash提取数据、处理、存入Elasticsearch?

首先,采用这样的架构部署,有三点优势:第一,降低对日志所在机器的影响,这些机器上一般都部署着反向代理或应用服务,本身负载就很重了,所以尽可能的在这些机器上少做事;第二,如果有很多台机器需要做日志收集,那么让每台机器都向Elasticsearch持续写入数据,必然会对Elasticsearch造成压力,因此需要对数据进行缓冲,同时,这样的缓冲也可以一定程度的保护数据不丢失;第三,将日志数据的格式化与处理放到Indexer中统一做,可以在一处修改代码、部署,避免需要到多台机器上去修改配置。

其次,我们需要做的是将数据放入一个消息队列中进行缓冲,所以Redis只是其中一个选择,也可以是RabbitMQ、Kafka等等,在实际生产中,Redis与Kafka用的比较多。由于Redis集群一般都是通过key来做分片,无法对list类型做集群,在数据量大的时候必然不合适了,而Kafka天生就是分布式的消息队列系统。

基本思路是:在服务器上装logstash,这个logstash只配置input和output,采集数据,往kakfa中写,然后在部署一个logstash读取kafka的数据进行处理,然后往ElasticSearch中写数据。然后用Kibana读取ElasticSearch中的数据进行展示。

相关文章:

  • 中国网络安全审查认证和市场监管大数据中心数据合规官CCRC-DCO
  • 搭建vue3+vite+pinia项目步骤
  • JAVA基础(8) 面向对象编程3
  • 「植物大战僵尸杂交版」保姆级攻略大全以及下载指南
  • 【ARMv8/v9 GIC 系列 5.3 -- 系统寄存器对中断的处理】
  • Pytest--安装与入门
  • Firewalld 防火墙基础
  • Flask-Session使用Redis
  • 蓝桥杯web组国三选手题纲解析和备赛技巧--经验分享
  • c++之旅第十一弹——顺序表
  • 常见网络攻击方式及防御方法
  • 图像处理中的二维傅里叶变换
  • 鸿蒙:1.入门
  • 十大排序:插入/希尔/选择/堆/冒泡/快速/归并/计数/基数/桶排序 汇总(C语言)
  • 【收藏级神丹】Liae384_刘亦菲_直播可用,平衡度最高的原创神丹,独家珍稀资源
  • [Vue CLI 3] 配置解析之 css.extract
  • 【个人向】《HTTP图解》阅后小结
  • 10个确保微服务与容器安全的最佳实践
  • Angular6错误 Service: No provider for Renderer2
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • jdbc就是这么简单
  • LintCode 31. partitionArray 数组划分
  • PHP 小技巧
  • react-native 安卓真机环境搭建
  • Yii源码解读-服务定位器(Service Locator)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 小程序button引导用户授权
  • 由插件封装引出的一丢丢思考
  • PostgreSQL之连接数修改
  • ​用户画像从0到100的构建思路
  • #{} 和 ${}区别
  • (5)STL算法之复制
  • (C语言)fread与fwrite详解
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (void) (_x == _y)的作用
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (三)模仿学习-Action数据的模仿
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)fock函数详解
  • (转)VC++中ondraw在什么时候调用的
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .Net小白的大学四年,内含面经
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @DataRedisTest测试redis从未如此丝滑
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [1525]字符统计2 (哈希)SDUT
  • [240527] 谷歌 CEO 承认 AI 编造虚假信息问题难解(此文使用 @gemini 命令二次创作)| ICQ 停止运作
  • [android] 请求码和结果码的作用
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [BUUCTF]-Reverse:reverse3解析
  • [C++基础]-初识模板
  • [CTF]2022美团CTF WEB WP
  • [C语言]——函数递归