日志系统和遥测系统是可观测性(Observability)领域的两大核心支柱,它们共同作用于系统运行状态的感知、问题定位与性能优化,但聚焦的维度和解决的问题各有侧重。

  • 日志是系统或应用在运行过程中,按时间顺序生成的离散事件记录,通常以文本形式存在,包含 “谁(Who)、在何时(When)、何地(Where)、做了什么(What)、结果如何(Result)” 等关键信息。
  • 遥测(Telemetry)是通过采集系统运行时的连续指标(Metrics)、链路追踪(Tracing)、事件(Events),实时监控系统健康状态、性能瓶颈和资源使用情况的系统。

之前提到过的grafana提供的loki日志方案下载地址: vector+loki

此时就可以进行日志内容trace_id和链路数据的打通,以便于通过日志系统和遥测系统的协同,可实现 “实时监控告警 + 事后问题追溯 + 性能优化闭环”,为分布式系统的稳定运行提供全方位保障。

日志采集

使用 Vector 作为日志采集器,它可以部署在每个节点上,负责收集和处理日志数据。
Vector 支持从多种来源采集日志,包括文件、标准输出、网络等。

链路数据采集

opentelemetry 链路数据汇总,输出到多个存储位置,如clickhouse、tempo

日志存储

ClickHouse 作为日志数据、trace数据的存储系统
grafana提供的方案,loki作为日志数据存储、tempo作为trace数据存储

日志、链路可视化

clickhouse有提供clickstack进行log、trace、metric查看
grafana也是提供log、trace、metric查看

最终获取方案部署文件telemetry

clickstack

架构

整个系统运行了一个典型的全栈应用环境,并且非常注重可观测性(监控和追踪):
数据层: 使用 ClickHouse(用于分析/数据仓库)和 MongoDB(用于应用数据)。
应用层: 有 API 服务器(后端逻辑)和 Next.js 服务器(前端界面)。
运维/监控层: 部署了 OpenTelemetry 组件 来收集性能数据,并有一个独立的告警任务来确保系统健康。

HyperDX介绍

HyperDX 是一个优秀的前端分析和可视化工具,它以 ClickHouse 为核心存储。而 ClickStack 则是围绕 ClickHouse 数据库构建的完整数据管道和工具集合。
在 ClickHouse Cloud 的生态中,HyperDX 是作为 ClickStack 解决方案的一部分,为用户提供便捷、强大的可观测性洞察能力。
HyperDX是有前端nextjs和后端node服务在里面,从clickhouse取遥测数据,自身的后端数据存MongoDB
all版本中,hyperdx的web是8080端口,api是8000
在helm版本中,hyperdx的web是3000端口,api是8000
官方部署有个bug,node项目的原因,就是总是默认跳对应的web端口, localhost:web端口
otel的key认证无法关闭,otel的配置是使用hyperdx远程管理的
node的缓存也比较大,使用体验不算很好

grafana:loki+tempo的打通配置

loki to tempo

1
2
3
4
5
trace_id
([a-f0-9]{32})
${__value.raw}
View Trace in Tempo

样例:

tempo to loki

下面的配置要根据实际的loki日志格式来设定

1
2
3
4
5
6
-5m
5m
service.name app_name
Use custom query
{${__tags}} |json| ti="${__span.traceId}"

样例: