logstack 日志技术栈-04-opensource 开源工具 OpenObserve+Grafana Loki

日志技术栈

日志管理包含日志数据存储、处理、分析和可视化,通过利用日志管理工具,可以监控性能趋势、解决问题、检测异常并优化整体系统性能。

近年来,开源日志管理解决方案在大家寻求灵活且经济有效的方式来管理现代系统典型的大量日志数据时,获得了显著的关注。这些工具为商业产品提供了有力的替代方案,使各种规模的企业都能有效地管理日志数据。

在这篇文章中,我们将讨论六种开源日志管理工具,这些工具为在生产环境中有效管理日志数据提供了灵活且经济有效的解决方案。我们将探讨它们的能力以及优缺点,以便你可以为自己的业务选择合适的解决方案。

1. OpenObserve

OpenObserve 是一个基于 Rust 的开源平台,可以通过支持日志、指标和追踪来满足你所有的可观察性需求。

它的目标是提供一个平台,该平台可以替代 Prometheus 用于指标、Elasticsearch 用于日志、Jaeger 用于链路追踪、Grafana 用于仪表板等,并且他还可以和 S3、GCS、Minio、Azure Blob 等对象存储服务兼容使用,比 Elasticsearch 低 140 倍的存储成本。

使用 OpenObserve,你不需要学习新的查询语言来查询日志,因为它支持 SQL 作为其主要的日志和追踪查询语言,以及 PromQL 用于查询指标数据。它也非常容易安装和操作,由于其基于 Rust 来编写的,所以它只需要很少的资源来运行。

它还提供了一个直观且易于使用的 UI 界面,允许你管理和可视化你正在收集的各种可观察性数据。在摄取或查询时,你可以丰富、解析、删除敏感数据,并删除日志的不需要的部分,以便只留下相关的部分。

OpenObserve 还提供了一个内置的报警机制,可以将警报发送到 Slack、Microsoft Teams 和其他渠道。它还支持团队成员之间的协作,并使用基于角色的访问控制来根据团队成员的级别控制对数据的访问,确保你的数据的整体安全。

OpenObserve 的优点

在一个包中提供日志、指标、链路追踪、仪表板、报警和函数支持。

免费计划提供每月 200GB 的摄取和 15 天的保留。

支持日志查询的 SQL 和指标的 PromQL。

团队的基于角色的访问控制。

由于其高效的数据存储过程,存储成本要低得多。

用 Rust 编写以获得高性能。

OpenObserve 的缺点

作为一个相对较新的产品,它没有像其他已经存在了更长时间的解决方案那样经过长时间的测试。

在撰写本文时,对日志和链路追踪的支持比指标更成熟。

2. Grafana Loki

Loki 是由 Grafana 团队制作的一个日志管理系统,它根据开源 AGPLv3 许可证发布。由于其日志存储机制,它是独一无二的,只对每个日志流的标签和元数据进行索引,而不是日志的内容。这使它需要更少的存储空间,也可以更快地处理日志消息。然而,这种方式的缺点是,与其他平台相比,它在日志搜索功能上就不那么好用了。

它使用 Promtail(专门为 Loki 构建的日志收集器)通过 HTTP API 拉取日志。然后将日志分组成流并用标签进行索引,但是为了提高性能和降低存储成本,日志的文本并未被索引。一旦日志在 Loki 中,它们可以使用 Loki 的查询语言 LogQL 进行检索。它还与 Grafana 无缝集成,用于通过其可定制的仪表板显示从日志数据生成的各种数据。

Loki 还提供了一个强大的报警系统,你可以创建在满足某些条件时将触发的规则,然后将它们发送到 Prometheus AlertManager,然后将它们路由到适当的目的地,这确保了能够快速识别并及时解决关键问题。

部署 Grafana Loki 有 3 个方式:

单机模式:适合小型部署和开发环境。

微服务模式:适合大型部署和生产环境。

Grafana Cloud:由 Grafana 团队托管的 SaaS 解决方案。

Grafana Loki 的优点

与 Grafana 无缝集成,提供了强大的可视化功能。

由于其独特的索引策略,存储和处理日志的成本较低。

提供了一个强大的报警系统。

支持多种部署选项。

Grafana Loki 的缺点

日志搜索功能不如其他平台简单直接。

需要学习新的查询语言 LogQL。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM问题分析处理手册

一.前言 各位开发和运维同学,在项目实施落地的过程中,尤其是使用EDAS、DRDS、MQ这些java中间件时,肯定会遇到不少JAVA程序运行和JVM的问题。我结合过去遇到的各种各样的问题和实际处理经验,总结了JAVA问题的处理方式,…

soso移动营业大厅(纯后端+MySQL数据库+JDBC)

一、项目需求 中国移动,中国联通,中国电信是国内3大通信运营商,每个运营商都提供了不同的品牌套餐来应对不同的用户群,比如北京移动主要有全球通,神州行,动感地带等3大品牌套餐,每种套餐的内容和费用不同,嗖嗖移动是一个假定的通信运营商,提供了话痨套餐,网虫套餐,超人套餐,各…

等离子环制作

免责声明 在您参考该博客制作等离子环前,请仔细阅读以下重要安全警告和免责说明。使用本文档即表示您已充分了解并同意以下条款: 等离子环的危险性:等离子环在运行时玻璃瓶身会产生高温,存在低温烧伤风险。任何时候都不建议用手…

C for Graphic:Sliced Circle Image

不做UI不知道,没想到时至今日,ugui居然没有sliced filled image模式,用circle做filled,不能用sliced九宫格图,导致每次使用这个效果必须一张新图,何其浪费资源。 原始功能如下: 我…

contextlib.contextmanager函数装饰器介绍

contextlib 是 Python 标准库中的一个模块,提供了一些用于创建上下文管理器(context manager)的实用工具。contextlib.contextmanager 是 contextlib 模块中的一个装饰器,用于将一个生成器函数转换为上下文管理器。通过使用这个装…

LC 2788. 按分隔符拆分字符串

2788. 按分隔符拆分字符串 难度 简单 题目大意: 给你一个字符串数组 words 和一个字符 separator ,请你按 separator 拆分 words 中的每个字符串。 返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串 。 注意 separator 用于决…

Go语言协程使用

主协程执行打印,子协程不打印 package main import ("fmt" )func do(i int) {fmt.Println("执行中") } func main() {fmt.Println("main协程")go do(1)fmt.Println("执行完了") }//main协程 //执行完了子协程没有打印输出…

椋鸟C语言笔记#36:从源代码到运行

萌新的学习笔记,写错了恳请斧正。 目录 从源代码到运行 翻译环境 编译 预处理 编译 汇编 链接 运行环境 从源代码到运行 在ANSI C的标准中,源代码先经过翻译环境生成可执行程序,再于运行环境中执行 翻译环境 翻译环境由编译与链接…

【C++】unordered_map,unordered_set模拟实现

unordered_map,unordered_set模拟实现 插入普通迭代器const迭代器unordered_map的[ ]接口实现查找修改哈希桶完整代码unordered_map完整代码unordered_set完整代码 喜欢的点赞,收藏,关注一下把! 上一篇文章我们把unordered_map和u…

爬虫之Cookie获取:利用浏览器模拟一个cookie出来、面对反爬虫、加密的cookie的应对方法

爬虫之Cookie获取:利用浏览器模拟一个cookie出来、面对反爬虫、加密的cookie的应对方法 在爬虫或模拟请求时,特别是获取验证码的时候,反爬虫的网站的cookie或定期失效,复制出来使用是不行的为了应对这种方式,我们可能…

第十一站:多态练习ODU

实现动态切换 ODU.h #pragma once #include <iostream> using namespace std; #define ODU_TYPE_311_FLAG "311" #define ODU_TYPE_335_FLAG "335" enum class ODU_TYPE {ODU_TYPE_311,ODU_TYPE_335,ODU_TYPE_UNKNOW };class ODU{ public:ODU();//发…

Windows下载安装vcpkg并使用它来安装第三方库(visualstudio)

1.使用Git下载vcpkg仓库&#xff08;下载比较慢&#xff0c;个人比较喜欢打开下面网址然后用迅雷下载&#xff0c;速度飞快&#xff09; git clone "https://github.com/Microsoft/vcpkg.git"2.下载好之后解压打开文件夹&#xff0c;双击bootstrap-vcpkg.bat文件&…

中小企业如何快速融资-----股权融资的四种方式(上)

’在企业融资的多种手段中&#xff0c;股权质押融资、股权交易增值融资、股权增资扩股融资和股权的私募融资&#xff0c;逐渐成为中小企业利用股权实现融资的有效方式。随着市场体系和监管制度的完善&#xff0c;产权市场为投融资者搭建的交易平台日益成熟&#xff0c;越来越多…

ChatGPT 到 Word:使用 Writage 进行复制粘贴魔法

ChatGPT 到 Word&#xff1a;使用 Writage 进行复制粘贴魔法 写在前面Writage的使用 写在前面 随着ChatGPT的日益普及&#xff0c;越来越多的人每天依赖它来完成各种任务。无论是寻找信息、语言翻译、解决数学问题&#xff0c;还是精炼复杂的概念和文本&#xff0c;ChatGPT 都…

React里面table组件的时间轴的位置计算

如上图的时间轴位置计算 计算时间轴位置倒是容易&#xff0c;主要是React里面的antd的table组件怎么监听滚动是个问题 /*** &#xff08;月台/时间&#xff09;为150&#xff0c;时间为100&#xff0c;每个格子为120&#xff0c;120px/30分钟4px/分钟* 00:00分为250px* 00:…

muduo 网络库源码解析和使用

1. base 模块 1.1 API 1.1.1 eventfd int eventfd(unsigned int initval, int flags);&#xff08;1&#xff09;类似信号量&#xff1b;其内部保存了一个 uint64_t 计数器 count&#xff0c;使用 initval 初始化&#xff1b; &#xff08;2&#xff09;read 没有设置 EFD…

Webpack5入门到原理24:优化代码运行性能

优化代码运行性能 Code Split 为什么 打包代码时会将所有 js 文件打包到一个文件中&#xff0c;体积太大了。我们如果只要渲染首页&#xff0c;就应该只加载首页的 js 文件&#xff0c;其他文件不应该加载。 所以我们需要将打包生成的文件进行代码分割&#xff0c;生成多个…

Suricata-7.0 源码分析之流表建立FlowWorker

一、什么是Flow&#xff1f; 二、Flow是怎么建立的&#xff1f; 三、Flow建立的具体过程是什么&#xff1f; 一、什么是Flow&#xff1f;   在Suricata 7.0中&#xff0c;流Flow是指所有相同五元组&#xff08;协议&#xff0c;源IP&#xff0c;目的IP&#xff0c;源端口&am…

makefile里面的变量使用,系统变量

文章目录 makefile里面的变量使用 makefile里面的变量使用 calc:add.o sub.o multi.ogcc add.o sub.o multi.o calc.cpp -o calcadd.o:add.cppgcc -c add.cpp -o add.osub.o:sub.cppgcc -c sub.cpp -o sub.omulti.o:multi.cppgcc -c multi.cpp -o multi.oclean:rm -rf *.o cal…

Linux第32步_编译ST公司的TF-A源码

正点原子STM32MP157开发板使用的CPU型号是STM32MP157DAA1&#xff0c;而开发板硬件参考了ST公司的STM32MP157 EVK开发板&#xff0c;因此我们在移植的时候需要关注“stm32mp157d-ev1”。 一、了解SDK 包 ST公司会从ARM官方下载TF-A软件包&#xff0c;然后将STM32MP1 芯片添加…