分布式日志系统解决方案

2023-10-27

在这里插入图片描述

一、什么是PlumeLog

  • PlumeLog 是一款无入侵的分布式日志系统

    基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志

    基于elasticsearch作为查询引擎.

    实现日志报错预警
    在这里插入图片描述

PlumeLog有什么优点

效率高 免维护 搭建快

高吞吐,查询效率高 全程不占应用程序本地磁盘空间,免维护 无需修改老项目,引入直接

开源项目地址 : http://www.plumelog.com/#/

二 、如何引入该项目

该项目(PlumeLog)与已有项目的结合逻辑:
将已有项目的日志数据位置指定到redis/kafka中,把redis/kafka当做一个中间件,该项目(PlumeLog)主动到指定的redis/kafka中拉取日志数据,对数据进行逐条处理后同步到elasticsearch中,供前端页面搜索展示。总体来说是将日志从原先的存储位置从磁盘文件换到elasticsearch中,更方便定位问题发现问题。同时也有相应的弊端,毕竟elasticsearch是以内存作为存储的引擎,但庞大的数据量的日志文件最终还是需要落地到磁盘文件,所以如皋想尽可能的扩大搜索范围就需搭建elasticsearch集群环境,这个看所处企业的数据量及日志规划。一般的企业,搜索范围15天内,一台elasticsearch 其余文件落地到磁盘压缩足以应对了。因为改项目(PlumeLog)有完善的日志报警功能,通知到个人手机、邮箱、微信、钉钉都可对接。

1、根据自己系统的日志插件的使用选择指定依赖放到原本系统中
2、以log4j为例子,
1)引入相应的jar包,修改xml文件,在标签内添加标签 ,同时在标签中也指定输出对象如下:

 <appender>
	<RedisAppender name="plumelog_demo" appName="liyu_test" redisHost="127.0.0.1" redisPort="6379"
                       logQueueSize="1000" runModel="1">

            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
      </RedisAppender>
   </appenders>
   
<root level="debug">
            <appender-ref ref="plumelog_demo"/>
</root>

2、根据日志量的大小选择redis或kafa作为中间件
1)、该项目(PlumeLog)主动从redis中拉取,源码中是while(true)+睡眠的机制实现,不知这种实现机制与spring boot带的定时任务有何区别是否在效率上或是内存占用是会什么不同
2)、以从redis中拉取日志信息为例
使用redis的pipeline 去拉取一条条数据会提高很多,因为redis的性能瓶颈不是硬件问题,而是网络传输,使用pipeline能够集中的将请求批量处理,减少重复的网络传输所产生的耗时

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

分布式日志系统解决方案 的相关文章

  • ElasticSearch:如何使用月份和日期范围过滤器查询日期字段

    目前 我已经知道如何从 时间戳 日期字段过滤日期范围 这很简单 range date gte 2015 11 01 lte 2015 11 30 但是 当您对基于月份的范围感兴趣时 如何过滤日期gte 02 22 and lte 03 21
  • 在redis中存储多个嵌套对象

    我想在redis中存储多个复杂的json数据 但不知道如何 这是我的 json 结构 users user01 username ally email email protected cdn cgi l email protection u
  • 将时间戳转换为日期时间以在 Elasticsearch 聚合中使用

    我有 SendGrid 事件数据的索引 source externalId 9283cc1d b003 xxxx a5af 84fcf31c4181 email email protected cdn cgi l email protect
  • Spring MVC 中的 Elasticsearch 集成?

    有谁知道如何集成spring mvc和elasticsearch吗 我想实现一个像一般网站 谷歌 雅虎搜索引擎 一样的网页 有教程或者示例代码吗 查看 Spring Data Elasticsearchproject https githu
  • Elasticsearch 如何使用通配符进行 OR 查询

    我很难尝试使用 elasticsearch 构建查询 我想查询类似的内容 WHERE field 1 is match string OR field 2 is wildcard match string OR field 3 is fuz
  • 使用 Elastic4s 进行动态 ElasticSearch 映射

    我有一个文档要在elasticSearch上建立索引 该文档包含一些我事先无法知道的动态键 例如以下示例中的 西班牙语 或 法语 contents title spanish Hola amigos french Bonjour les a
  • nginx/uwsgi 服务器的持久内存中 Python 对象

    我怀疑这是否可能 但这是问题和提出的解决方案 提出的解决方案的可行性是这个问题的对象 我有一些需要可用于所有请求的 全局数据 我将这些数据保存到 Riak 并使用 Redis 作为缓存层以提高访问速度 目前 数据被分为约 30 个逻辑块 每
  • 术语聚合仅考虑聚合的前缀

    在我的弹性搜索文档中 我有用户和他在组织中的位置的某种表示 例如 CEO的位置是1 CEO直属的为1 1 1 2 1 3等 1 1 以下的将是 1 1 1 1 1 2 1 2 3 等 我有一个聚合 我想按 VP 聚合 所以我希望每个人都低于
  • 无法通过远程连接连接到kibana

    我已经在服务器上安装了 Kibana 5 4 和 Elastic search 5 4 我可以使用以下命令在本地计算机上通过curl 访问 Kibana 和 Elastic search curl localhost 5601 我得到以下回
  • Elasticsearch 将字符串与模糊字段相匹配

    我正在尝试将字符串与字段匹配 并且只想应用模糊性 例如 对于这些文档 title replace oilfilter title replace motoroil 以下查询应仅匹配第一个文档 Replace oilfilter Replac
  • 如何高效地将数十亿数据插入Redis?

    我有大约 20 亿个键值对 我想将它们有效地加载到 Redis 中 我目前正在使用 Python 并使用 Pipe 如redis py https redis py readthedocs io en latest redis Redis
  • 在 Elasticsearch Nest 查询中加载特定字段

    该文档似乎表明我可以返回字段的子集而不是整个文档 这是我的代码 var result client Search
  • 如何查找elasticsearch 6.2.1中存在的索引?

    我试图检查elasticsearch 6 2 1的RestHighLevelClient中是否存在索引 目前我正在使用以下代码 try OpenIndexRequest openIndexRequest new OpenIndexReque
  • Elasticsearch 聚合过滤器

    因为我在谷歌上找不到任何东西 是否可以在elasticsearch中过滤聚合 我正在考虑这样的事情 获取 SOME object X gt 100 的所有对象 提前致谢 编辑 样本数据 我有以下文档结构 docKey 1 value 2 d
  • 静态加密数据时 ElasticSearch 的工作原理

    我的数据存在于 DynamoDB 中 为了启用全文搜索 我使用 Lambda 函数将其转发到 ES 索引 但如果可能的话 我希望在不影响搜索效率的情况下对数据进行加密 但我不确定我的搜索在这里如何进行 我找不到任何文档 文章来说明当数据静态
  • 如何将不带空格的单词与带空格的 ElasticSearch 数据进行匹配

    在我的elasticsearch中 我有数据 New York 我想查询并匹配 NewYork 请注意查询字符串中没有空格 我怎样才能实现这个目标 有什么分析仪可以在这里提供帮助吗 我认为你可以申请木瓦令牌过滤器 https www ela
  • 如何按键中的值对 Redis 哈希进行排序

    Redis 有没有一种好方法来获取按值排序的哈希中的键 我查看了文档 但没有找到直接的方法 另外有人可以解释一下redis中的排序是如何实现的 以及什么吗 本文档 http redis io commands SORT using hash
  • Redis如何存储关联数组?设置、散列还是列表?

    我对 Redis 的所有可用存储选项有点困惑 我想做一些简单的事情 并且不想过度设计它 我正在与phpredis and Redis v2 8 6 我有一个需要存储的简单关联数组 我还需要能够通过其键检索项目并循环遍历所有项目 a arra
  • 在elasticSearch中查询时定义分析器

    我对 Elasticsearch 还很陌生 只需要一些说明 我们可以在查询搜索服务器时定义一个分析器吗 我尝试使用 文本 和 字段 查询 效果很好 Query curl XPOST http localhost 9200 test user
  • 如何在Redis中存储聚合目录树搜索结果

    我有一个很大的产品目录树 目前包含约 36000 个类别和约 100 万个产品 即叶子 它的结构如下 最大深度为 5 Cat1 Cat11 Cat111 Cat1111 Product1 Cat1112 Product1 Cat1113 P

随机推荐

  • 2022年软件测试面试题大全【含答案】

    一 面试基础题 简述测试流程 1 阅读相关技术文档 如产品PRD UI设计 产品流程图等 2 参加需求评审会议 3 根据最终确定的需求文档编写测试计划 4 编写测试用例 等价类划分法 边界值分析法等 5 用例评审 主要参与人员 开发 测试
  • mysql drivermanager_jdbc详解:2、DriverManager管理多个数据库驱动

    先上代码 static String driverName com mysql jdbc Driver static String url jdbc mysql 127 0 0 1 3306 mysql static String user
  • react+ts+vite

    项目结构初始 1 使用vite构建项目 2 script常见用法 host 显示地址 port 端口号 设置端口号 open 编译后自动打开 3 配置 路径 项目路径别名的配置 ts对 指向src的目录提示是不支持的 所以需要手动配置 符号
  • Anaconda 打开时卡在Initializing(打不开)

    找到的一种说法是anaconda有个广告载入功能 这个功能需要联网 但国内网络环境有时候连不上目标网络 所以打开anaconda navigator的时候会因为网络问题一直卡在Initializing 解决的方法 方法一 把网络断开 没有了
  • 进入虚拟机 networkManager is not running 问题

    运行 systemctl restart NetworkManager命令 重启网络管理
  • java--基础--23--接口组成更新

    java 基础 23 接口组成更新 代码 https gitee com DanShenGuiZu learnDemo tree mysql mybaties DB jdk8 learn 1 接口组成更新 常量 public static
  • 每日学术速递5.3

    CV 计算机视觉 ML 机器学习 RL 强化学习 NLP 自然语言处理 Subjects cs CV 1 Learning Locally Editable Virtual Humans 标题 学习本地可编辑虚拟人 作者 Hsuan I H
  • 详解Seaborn,看这一篇就够了

    转载 Seaborn常见绘图总结 Seaborn是一个比Matplotlib集成度更高的绘图库 在科研和数据分析中我们常常看到一些画的非常高大上的图 这往往就是Seaborn绘制的图形 因此我们就使用短短的半天时间来学习一下Seaborn的
  • lsun数据集下载、转换、使用

    最近复现SAGAN用到了lsun数据集 1 下载地址 http dl yf io lsun scenes 我下载了church outdoor train lmdb zip 中间还安装了lmdb库 2 转换 一般下载的data py 转换代
  • Git 常用命令 --- git push命令

    git push的一般形式为 git push lt 远程主机名 gt lt 本地分支名 gt lt 远程分支名 gt 例如 git push origin master refs for master 即是将本地的master分支推送到远
  • IMP-00003: 遇到 ORACLE 错误 959 ORA-00959: 表空间 '' 不存在

    描述 在使用imp命令将dmp文件导入oracle中时 遇到如下错误 IMP 00003 遇到 ORACLE 错误 959 ORA 00959 表空间 TBS CDUSER 不存在 IMP命令如下 IMP cduser cduser123
  • Java Stream流详解

    本文目录 学习目标 中间操作 Filter 过滤 Map 转换 Sorted 排序 Distinct 去重 Limit 限制 Skip 跳过 Peek 展示 终止操作 forEach 循环 Collect 收集 Count 计数 Reduc
  • 软件测试基础理论知识—用例篇

    什么是测试用例 测试用例 Test Case 是为了实施测试而向被测试的系统提供的一组集合 这组集合包含 测试环境 操作步骤 测试数据 预期结果等要素 需求的概念 满足用户期望或正式规定文档 合同 标准 规范 所具有的条件和权能 包含用户需
  • 【整理】QT .pro文件中的变量说明

    注释 以 开始的行 直到结束 模板变量 告诉qmake生成哪种makefile TEMPLATE app 其中 app 表示该工程建立一个应用程序的makefile 这是默认值 所以如果模板没有被指定 这个将被使用 lib 表示该工程建立一
  • 第一个servlet程序、配置web.xml以及使用html表单给服务器传输数据

    一 Serlvet简介 serlvet是一个服务器小程序 它可以对用户的请求 request 作出响应 response 举个例子 当我们在html页面填写一个表单时 我们点击提交 这就能发送一个请求 服务器可以接收到我们的请求然后执行相应
  • 【Ceph】1 pools have many more objects per pg than average

    公司 Ceph 集群从 v12 升级到 v14 后 今天某个 CephFS 的集群收到一个 HEALTH WARN 的告警 具体的 Warning 的信息为 1 pools have many more objects per pg tha
  • vue3组件内判断是否进行路由跳转

    import onBeforeRouteLeave from vue router import ElMessageBox from element plus onBeforeRouteLeave to from next gt if fo
  • 【毕业设计】机器视觉停车位识别检测系统 - python 深度学习

    文章目录 1 简介 2 检测效果 3 实现方式 3 1 整体思路 3 2 检测空车位 3 3 车辆识别 4 最后 1 简介 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这两年开始 各个学校对毕设的要求越来越高
  • PHP7 连oracle 11g 可能出现的pdo_oci_handle_factory,Check the character问题和解决方法

    错误代码 SQLSTATE HY000 pdo oci handle factory Error while trying to retrieve text for error ORA 12541 错误代码 SQLSTATE HY000 O
  • 分布式日志系统解决方案

    一 什么是PlumeLog PlumeLog 是一款无入侵的分布式日志系统 基于log4j log4j2 logback搜集日志 设置链路ID 方便查询关联日志 基于elasticsearch作为查询引擎 实现日志报错预警 PlumeLog