全栈+运维-技术架构成熟解决方案

本文最后更新于:1 年前

搜索引擎

ElasticSearch

Elasticsearch 是一款开源的高性能、分布式、可扩展的搜索和分析引擎。它能够实时地存储、搜索和分析大量的数据,常用于日志处理、全文搜索、安全性情报、业务分析等场景。Elasticsearch 基于 Apache Lucene 构建,设计上非常灵活,让复杂的搜索变得非常简单。

其特点包括:

  1. 分布式和可扩展:Elasticsearch 自动处理数据的分片和索引,可以很容易地在多服务器之间进行分配和扩展。
  2. 实时性:Elasticsearch 是近实时的搜索平台,这意味着从索引文档到文档可搜索的延迟非常小,一般只有 1 秒。
  3. 全文搜索:提供了一套完整和强大的全文搜索功能,包括个性化的分析和高亮显示。
  4. 多语言支持:支持许多语言,包括中文,英文等等。
  5. 易于使用:提供了许多客户端库,包括 Java、Python、PHP、JavaScript 等,支持 RESTful API,使用 JSON 进行数据交。
  6. 集成 Kibana:Elasticsearch 与 Kibana 紧密集成,Kibana 可以为 Elasticsearch 数据库中的数据提供实时汇总和搜索。
    Elasticsearch 已被许多世界著名公司所采用,包括 GitHub, Gold Man Sachs, Netflix 等。它是 ELK Stack (Elasticsearch / Logstash / Kibana) 的核心组件,被广泛应用于日志收集、分析和可视化。
    如果你需要更深入地了解 Elasticsearch 或者想要在你的应用中使用 Elasticsearch,你可以访问他们的 GitHub 仓库,那里有详细的文档和一些有用的例子。

RediSearch

RediSearch 是一个全文搜索引擎,基于 Redis 构建,提供搜索和次序功能。RediSearch 的初衷是为了优化响应时间与性能,同时支持更多种类的查询。

其主要特点包括:

  1. 速度:作为内存数据结构存储系统的 Redis 的一部分,RediSearch 能够提供快速的搜索结果。
  2. 数据结构:RediSearch 可以利用 Redis 数据库的数据结构,如字符串、列表、集合、有序集合、哈希等。
  3. 全文搜索: RediSearch 提供全文搜索,并支持复杂的查询,包括并集,交集和否定。
  4. 自定义搜索索引:可以按照字段定义索引。这使得搜索可以直观地按字段搜索,而不仅仅是全文搜索。
  5. 实时索引更新:与其他许多搜索引擎不同,如 Elasticsearch 或 Solr,RediSearch 允许在文档添加或更新时即时更新索引。
  6. 轻量级:RediSearch 非常轻量级,并且可以轻松地与任何应用程序集成。
    以上就是关于 RediSearch 的基本介绍。如果你想查找更多信息或者下载试用,可以访问他们的 GitHub 仓库。

Meilisearch

Meilisearch 是一个开源、轻量级、无服务器且易于使用的全文搜索数据库,适合所有类型的应用程序。它通过提供极其快速和相关的搜索结果,提升了用户体验。

其主要特点有:

  1. 速度: Meilisearch 提供无与伦比的响应时间,为您的用户提供即时搜索结果,即使查询是模糊的。
  2. 相关性: Meilisearch 的搜索算法允许您通过单个搜索框显示最相关的搜索结果,这也是现代用户所期望的。
  3. 易于使用:它是即插即用的搜索引擎,可以轻易地与任何应用程序进行集成,无需复杂的配置。
  4. 定制性:它允许你调整搜索索引、停用词、同义词等,以满足你的需求。
  5. 实时更改索引:无需手动管理更新索引,Meilisearch 可以在新数据被添加时自动更新索引。
  6. 无服务器: Meilisearch 是一个无服务器解决方案,它可作为一个独立应用程序运行,无需担心后台服务器的管理和维护。
  7. 多语言支持:为各种语言提供的一流的搜索体验。
    以上就是关于 Meilisearch 的基本介绍,如果你想学习更多或者见证它的性能,你可以去他们的 GitHub 仓库进行更详细的了解。

日志解决方案

Apache SeaTunne + ClickHouse

ELK

ELK Stack 是一个缩略词,用来描述由三个常见项目组成的堆栈:Elasticsearch、Logstash 和 Kibana。ELK Stack 通常被称为 Elasticsearch,它使您能够聚合来自所有系统和应用程序的日志,分析这些日志,并创建可视化来进行应用程序和基础设施监控、更快的故障排除、安全分析等。

E = Elasticsearch

Elasticsearch 是在 Apache Lucene 上构建的分布式搜索和分析引擎。对各种语言、高性能和无架构 JSON 文档的支持使 Elasticsearch 成为各种日志分析和搜索使用案例的理想选择。 

2021 年 1 月 21 日,Elastic NV 宣布,他们将改变软件许可策略,不在 Apache 2.0 版本 (ALv2) 许可下发布 Elasticsearch 和 Kibana 的新版本。相反,将在 Elastic 许可下使用 Elastic 许可或 SSPL 下提供的源代码提供新版本的软件。这些许可证不是开源的,不会为用户提供同样的自由。要获得一个安全、高质量且完全开源的搜索和分析套件,您可以使用 OpenSearch 项目,该项目是开源 Elasticsearch 和 Kibana 的社区驱动、ALv2 许可的分支。

L = Logstash

Logstash 是一个开源数据摄取工具,允许您从各种来源收集数据,转换数据,并将数据发送到您希望的目标。通过预构建的筛选器和对 200 多种插件的支持,Logstash 使用户能够轻松摄取数据,无论数据源或类型如何。 

Logstash 是一个轻量级、开源的服务器端数据处理管道,允许您从各种来源收集数据,进行动态转换,并将数据发送到您希望的目标。它最常用作 Elasticsearch 的数据管道,Elasticsearch 是一个开源分析和搜索引擎。由于它与 Elasticsearch 紧密集成,具备强大的日志处理功能并提供 200 多个预构建的开源插件来帮助您轻松地索引数据,因此 Logstash 是将数据加载到 Elasticsearch 的常用工具。

轻松加载非结构化数据

Logstash 让您能够轻松接收来自多种数据源 (包括系统日志、网站日志和应用程序服务器日志) 的非结构化数据。 

预构建的筛选条件

Logstash 可以提供预构建的筛选条件,因此您可以随时转换常见的数据类型、在 Elasticsearch 中对其编制索引并开始查询,而无需构建自定义数据转换管道。

灵活的插件架构

GitHub 上已经发布了 200 多个插件,因此您很有可能利用他人构建的插件来自定义自己的数据管道。但如果插件没有符合您的要求,您可以轻松地自行创建一个。

K = Kibana

Kibana 是一种数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例。它提供了强大且易用的功能,例如直方图、线形图、饼图、热图和内置的地理空间支持。此外,它还提供了与 Elasticsearch 的紧密集成,后者是一款流行的分析和搜索引擎,这使得 Kibana 成为了可视化 Elasticsearch 中存储数据的默认之选。

交互式图表

Kibana 提供了直观的图表和报告,您可用来以交互方式浏览大量日志数据。您可以动态拖动时间窗口、对特定数据集进行缩放以及向下钻取报告,从数据中提取可操作的见解。

映射支持

Kibana 提供有强大的地理空间功能,这样您便可在数据上根据地理信息无缝地分层,并在地图上可视化结果。

预构建的聚合和筛选条件

使用 Kibana 预构建的聚合和筛选条件,您只需几个步骤即可运行各种分析,例如直方图、top-N 查询和趋势。

可轻松访问的控制面板

您可以轻松设置控制面板和报告并与他人分享。而需要您做的只是通过浏览器来查看和探究数据。

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 的缺点

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

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

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。

SigNoz

图片
SigNoz 是一个日志收集和分析工具,可以收集和管理来自各种来源的日志、指标、跟踪和异常。它为使用 OpenTelemetry 检测应用程序提供本机支持,以防止供应商锁定,将收集到的数据存储在 ClickHouse 中,然后在用户友好的仪表板中聚合和可视化数据。
借助 SigNoz,您可以使用其查询生成器、PromQL 或 ClickHouse 查询轻松设置警报的动态阈值。其查询生成器简化了搜索和过滤日志的过程,任何触发的警报都会通过 Slack、PagerDuty 等渠道向您发送通知。
SigNoz 还支持与流行框架和技术的集成,使其与广泛的应用程序堆栈兼容。这使您能够主动监控和优化各种服务,以提高其性能、更快地排除故障和修复问题,并增强其整体可靠性。
SigNoz 采用模块化架构构建,可以轻松扩展以满足您不断增长的需求。您可以灵活地定义自己的保留期和采样率,仅根据应用程序负载优化数据存储成本。
SigNoz 的优点

  • 提供了一个全面的解决方案,包括指标、追踪和日志。

  • 使用 OpenTelemetry 进行数据收集,可以轻松地与你的应用程序集成。

  • 提供良好的默认设置,可以将其安装在 Kubernetes 集群中,并立即开始收集日志和指标。

  • 开箱即用地提供图表和可视化功能。

  • 自动计算重要的指标,如错误率和 99 百分位数。

  • 可以轻松设置动态警报阈值,并及时发送通知。

SigNoz 的缺点

  • 文档可能不够清晰,因为它主要涵盖存储和保留期配置。

  • 升级有时会导致问题。

  • 统一的仪表板目前不可用。

  • 定制性有限。

Graylog

图片
Graylog 是一个开源日志管理平台,可简化日志数据的收集、存储和分析过程。它从不同来源收集日志,解析和丰富它们,然后将它们存储在数据库中以供将来分析。正如它支持多个输入源一样,它能够将收集到的数据转发到其他系统,例如 Elasticsearch。
借助 Graylog 先进的搜索功能,您可以在几毫秒内快速浏览 TB 级的数据,甚至可以保存搜索查询以供将来使用。其可定制的仪表板提供了基本指标和数据的清晰可视化,从而提供了应用程序活动的全面概述。此外,您可以轻松创建和调度报告,这些报告会自动发送到您的收件箱。
Graylog 还擅长主动监控,允许定期搜索,在满足预定义条件时触发通知。通过指定搜索的时间范围和频率,可以轻松配置这些警报阈值。您还可以利用 Graylog Marketplace 中提供的插件来增强警报条件和其他业务用例。
Graylog 的优点

  • 提供团队协作功能。

  • 简洁且用户友好的界面。

  • 能够接收来自各种来源的日志。

  • 快速而复杂的日志搜索。

  • 支持可定制的警报阈值。

Graylog 缺点

  • 部署比较麻烦。

  • 插件安装和优化可能具有挑战性。

Syslog-ng

图片
Syslog-ng 是一个开源的日志管理解决方案,主要用于收集和处理日志数据。它可以从多种源收集日志,包括系统日志、网络设备日志和第三方应用日志。然后将日志解析、分类、重写和关联到统一格式中,然后将其存储或安全地传输到不同的系统(如 Apache Kafka 或 Elasticsearch)。这消除了您部署多个代理的需要,因为它允许您在一个地方执行所有数据管理过程。
Syslog-ng 提供快速搜索和故障排除功能,并使用正则表达式和布尔运算符进行复杂过滤,使您能够轻松实时定位、过滤和解析日志消息。这有助于快速提取关键信息,并因此加快故障排除和问题解决速度。通过利用其多线程处理结构,Syslog-ng 可以实现卓越的性能,在配置依赖下每秒处理超过 500k 条日志消息。
通过使用 C、Python、Java、Lua 或 Perl 编写的插件,可以扩展其功能以适应任何用例。Syslog-ng 支持 RFC3164、RFC5424、JSON 和 Journald 等不同的消息格式。它可以在多个操作系统和架构上运行,包括 Linux、Solaris 和 BSD。它还支持 UDP、TCP、TLS 和 RELP 等各种日志传输协议,实现安全可靠的日志传输。
Syslog-ng 的优点

  • 性能非常高。

  • 快速搜索和故障排除。

  • 支持多种消息格式。

  • 由于其传输协议,日志传输安全。

  • 它可以与 Redis 和 MongoDB 等不同数据库无缝对接。

Syslog-ng 的缺点

  • 学习和理解配置语法可能需要一些时间。

Highlight.io

图片
Highlight.io 是一个开源的日志管理工具,专为开发者和运维团队设计,用于收集、索引和分析日志数据。它使用 Elasticsearch 作为其后端存储,提供了一个强大的搜索和分析功能。
Highlight 是一个全栈监控平台,不仅提供日志管理,还提供会话重放和错误监控,利用 ClickHouse 进行数据存储和检索。它旨在使您能够跟踪应用程序的行为、识别错误或错误、分析日志并轻松找到性能问题的根本原因。
只需两行代码,您就可以在安装此工具后开始使用它进行日志记录。它将立即开始从您的应用程序收集日志。然后可以轻松搜索和查询这些日志消息和属性。它还允许您将警报设置为当日志达到指定阈值时所需的频率。您将通过支持的渠道收到通知,包括电子邮件、Slack、Discord 或 webhooks。
Highlight 与所有流行的现代框架无缝集成,例如 Python、Golang、Node.js、React、Rails 等等。它允许您以可理解和可操作的方式可视化基础设施的每个部分,从用户点击到服务器错误。它提供免费计划以及灵活的即用即付定价计划,您当然可以自行托管。
Highlight.io 的优点
提供了一个全面的日志管理解决方案,包括收集、索引和分析。提供了一个直观的用户界面和强大的搜索功能。提供了一个警报系统。

  • 设置简单快捷。

  • 警报功能非常高效。

  • 提供了一个直观的用户界面和强大的搜索功能。

  • 与所有流行的框架无缝协作。

Highlight.io 的缺点

  • 它没有像其他工具那样经过实战考验。

总结

在本文中,我们强调了日志管理的重要性,深入研究了各种开源日志管理工具的功能、优缺点。选择适当的日志管理解决方案对于全面了解您的架构至关重要,现在比以往任何时候都更需要做出符合您的业务需求的明智决策。

参考

  1. 微信公众平台
  2. 运维必知必会!120页ELK实战指南,图文并茂易于理解,仅分享三天 - 知乎
  3. 什么是 ELK Stack

全栈+运维-技术架构成熟解决方案
https://alleyf.github.io/2023/11/e3cf5e8cdf6a.html
作者
fcs
发布于
2023年11月29日
更新于
2023年12月25日
许可协议