岳阳网站界面设计,企业网络规划和设计方案,网站建设采取招标的方式,做推广网站需要商标吗在正式的生产环境中#xff0c;数据库的性能和延迟对于确保系统的稳定和高效运行至关重要。特别是在与 CnosDB 数据库进行交互时#xff0c;更深入地了解其表现变得尤为重要。这时Jaeger 分布式追踪系统发挥了巨大的作用。在本篇博客中#xff0c;我们将深入探讨如何通过使用… 在正式的生产环境中数据库的性能和延迟对于确保系统的稳定和高效运行至关重要。特别是在与 CnosDB 数据库进行交互时更深入地了解其表现变得尤为重要。这时Jaeger 分布式追踪系统发挥了巨大的作用。在本篇博客中我们将深入探讨如何通过使用 Jaeger 追踪和监控 CnosDB 数据库以便更全面地了解其性能、延迟以及潜在的问题。 了解 Jaeger 和 CnosDB
JaegerJaeger 是一款强大的开源分布式追踪系统兼容 OpenTracing API专为监控和调试软件服务架构中的请求流程而设计。通过捕获请求在不同微服务之间的流动Jaeger 帮助开发人员识别性能瓶颈和潜在问题。
CnosDBCnosDB 是一款高性能的开源数据库常用于存储和管理大量时序数据。在微服务架构中CnosDB 通常充当数据存储和检索的后端。 在CnosDB中启用Jaeger支持
取消 [trace][https://docs.cnosdb.com/zh/latest/reference/config.html#trace]配置注释开启 Jaeger 跟踪功能。
| 提示如需使配置生效需要重启服务。
[trace]auto_generate_span false
[trace.log]path /tmp/cnosdb
[trace.jaeger]jaeger_agent_endpoint http://127.0.0.1:14268/api/tracesmax_concurrent_exports 2max_queue_size 4096 安装并启动Jaeger
| 其他部署方式请参考 Jaeger Deployment[https://www.jaegertracing.io/docs/deployment/]
docker run -d --name jaeger \-p 6831:6831/udp \-p 6832:6832/udp \-p 16686:16686 \-p 14268:14268 \jaegertracing/all-in-one:latest
成功启动后使用浏览器访问 http://127.0.0.1:16686 跟踪CnosDB中的事件
1.在请求中添加 span context。
| 可以设置配置文件中的 auto_generate_span true 自动生成如果需要分析特定的语句请在请求中自定义 uber-trace-id 值格式如下所示详细格式说明请参考Propagation Format[https://www.jaegertracing.io/docs/1.46/client-libraries/#propagation-format]
uber-trace-id: 3a3a43:432e345:0:1
示例
| 示例中的数据来源请参考 https://docs.cnosdb.com/zh/latest/start/quick_start.html
查询数据库 oceanic_station 中 air 表中的数据并且按时间倒序排序返回前 5 条数据 。
curl -i -u root: -H Accept: application/json -H uber-trace-id: 3a3a43:432e345:0:1 -XPOST http://127.0.0.1:8902/api/v1/sql?dboceanic_stationprettytrue -d select * from air order by time desc limit 5; 使用仪表盘进行分析 1.记录 Span
当客户端应用程序发送查询或写入请求到 CnosDB 数据库时CnosDB 会将产生的 Span 记录发送给Jaeger 。每个 span 表示了请求的一个阶段包括了处理时间、操作名称和其他相关信息。
2.选择 Service
在 Jaeger 用户界面的 Service 下拉框中选择与 CnosDB 相关的服务例如cnosdb_singleton_1001。
3.查找 Traces
在界面上点击 Find Traces 按钮系统将检索与选择的服务相关的所有 traces追踪。这将显示一系列的请求和对应的 spans。
4.分析 Trace 详情
点击所感兴趣的 trace进入详细视图。在这个视图中你将看到整个请求的流程以及每个 span 执行的时间。这些时间信息将帮助你了解查询的每个步骤在处理时所花费的时间。
5.优化查询和系统
利用详细的时间记录你可以精确地分析查询语句的性能。在正式的生产环境中这将成为优化查询语句和改进系统性能的宝贵工具。通过分析每个 span 的执行时间你可以找到可能导致延迟的步骤从而采取针对性的优化措施。
除此之外Jaeger 还可以跟踪 CnosDB 的其他事件具体如下
Query 组件REST APIArrow Flight SQL API 结语
通过使用 Jaeger 来跟踪 CnosDB 数据库的性能和延迟我们可以更全面地了解数据库的表现。通过在关键代码段中插入适当的仪器化代码我们可以捕获请求的流动和数据库交互轻松识别性能瓶颈并及时解决潜在问题。集成 Jaeger 和 CnosDB让我们能够从中获得更深入的洞察提升整体性能和可靠性。 拓展示例
REST API请求
curl -i -u root: -H Accept: application/json -H uber-trace-id: 3a3a43:432e345:0:1 -XPOST http://127.0.0.1:8902/api/v1/sql?dbusage_schemaprettytrue -d select * from user_queries order by time desc limit 5; curl -i -u root: -H Accept: application/json -H uber-trace-id: 3a3a43:432e345:0:1 -XPOST http://127.0.0.1:8902/api/v1/sql?dbusage_schemaprettytrue -d CREATE TABLE air (visibility DOUBLE,temperature DOUBLE,presssure DOUBLE,TAGS(station)); curl -i -u root: -H Accept: application/json -H uber-trace-id: 3a3a43:432e345:0:1 -XPOST http://127.0.0.1:8902/api/v1/write?dbpublicprettytrue -d ma,stationXiaoMaiDao visibility50,temperature63,pressure52 使用 Prometheus 进行远程读写
remote_write:
- url: http://127.0.0.1:8902/api/v1/prom/write?dbprometheusheaders:uber-trace-id: 3a3a43:432e345:0:1basic_auth:username: rootpassword:
remote_read cnosdb
remote_read:
- url: http://127.0.0.1:8902/api/v1/prom/read?dbprometheus
headers:uber-trace-id: 3a3a43:432e345:0:1
basic_auth:username: rootpassword: 使用 OpenTSDB 写入
curl -i -u root: -H Accept: application/json -H uber-trace-id: 3a3a43:432e345:0:1 -XPOST http://127.0.0.1:8902/api/v1/opentsdb/write?dbpublic -d opentsdb 1689054412124000000 1 tag1t1 field1f1 value11 curl -i -u root: -H Accept: application/json -H uber-trace-id: 3a3a43:432e345:0:1 -XPOST http://127.0.0.1:8902/api/v1/opentsdb/put?dbpublic -d [{metric:tsdbput,timestamp: 1689069407572000000,value: 9,tags:{tag1:t1,tag2:t2}}] CnosDB简介
CnosDB是一款高性能、高易用性的开源分布式时序数据库现已正式发布及全部开源。
欢迎关注我们的社区网站https://cn.cnosdb.com