共计 2829 个字符,预计需要花费 8 分钟才能阅读完成。
作者|张安哲(落羽)
起源|尔达 Erda 公众号
导读:为了让大家更好的理解 MSP 中 APM 零碎的设计实现,咱们决定编写一个《详聊微服务观测》系列文章,深刻 APM 零碎的产品、架构设计和根底技术。本文为该系列文章的第二篇,次要分享了咱们自研的仪表盘零碎 Erda DashBoard 的应用操作及将来愿景。
《详聊微服务观测》系列文章:
- 《从监控到可观测性,咱们最终要走向哪里?》
- 《上手后才晓得,这套仪表盘零碎用起来是真的爽!》(本文)
引言
容器化与微服务,使零碎扩展性与鲁棒性相比以往晋升了许多,但随之也带来了问题:运维的工作与工作量日渐沉重。
形成这一利用的微服务以及撑持这一利用的所有基础设施,都会有各自的日志、指标数据,以及构建在上游的监控、日志零碎。各处扩散的数据和零碎,会给反对团队造成极大的累赘,最终也会成为开发运维工作的拦路虎。
咱们的思考
咱们曾经对立了不同服务的日志、数据、指标等的剖析与聚合及存储,但不同租户、利用、服务、实例可能都须要一套本人的具像化监控用以剖析排查,这给监控灵活性带来了极大挑战。
时至今日,市面上未然呈现了许多自定义、可视化的开源表盘,如 Kibana、Grafana、Dash 等,也有肯定的缺憾,如应用上手难度大,学习老本低等,但最大的问题是操作不连贯导致无奈疾速排查问题。还有一些零碎自带的监控图表,但这些数据范畴与查问规定、排列组合都是程序固定好的,遇到一些简单状况,还是须要用到第三方工具进行剖析排查,不仅费时还费劲。作为 PaaS 平台,咱们研发了 Erda Dashboard,对立了应用体验。
简介
Erda DashBoard 是一套自研的仪表盘零碎,前端基于 Echarts 和 React-grid-layout,后端采纳 Influxql 时序查询语言与自研的 Metrics Search Engine,被 Erda 上绝大多数图表所采纳,蕴含了自定义仪表盘等性能。
架构简图
出于须要对大量数据进行存储与剖析的思考,且大多数场景须要借助工夫生成时序图、须要在数千万条数据中进行搜寻,压力十分大;除此之外,咱们还有定制化的需要,这就决定了组件必须是开源的。联合以上种种原因,咱们采纳了分布式开源的 ElasticSearch 进行存储,并对其进行了革新,构造如下:
{
"_index": "spot-application_cache-full_cluster-r-000001",
"_type": "spot",
"_id": "xxx",
"_score": 1,
"_source": {
"name": "application_cache",
"timestamp": 1621564500000000000,
"tags": {
"_meta": "true",
"source_application_id": "9",
"source_application_name": "xxx",
"source_org_id": "1",
"source_project_id": "5",
"source_project_name": "xxx",
"source_runtime_id": "26",
"source_runtime_name": "xxx",
"source_service_id": "xxx",
"source_service_instance_id": "xxx",
"source_service_name": "xxx",
"source_workspace": "DEV",
},
"fields": {
"elapsed_count": 2,
"elapsed_max": 345831,
"elapsed_mean": 331554,
"elapsed_min": 317277,
"elapsed_sum": 663108
},
"@timestamp": 1621564500000
}
}
思考到易用性与通用性,咱们摒弃了原生的 DSL 查问形式,封装了时序查询语言 Influxql 并对其做了定制化作为高级性能,用以实现简单的查问与剖析。对与一般的剖析,咱们应用 Low Code + 自定义函数表达式的搭配疾速产出剖析图表。
初步应用
在 Erda MSP 中,咱们提供了大量的内置表盘来帮忙排查零碎的常见问题,如过程剖析、谬误剖析、链路追踪、事务剖析等。
这些表盘由多个不同的图表组成,咱们能够对其单个图表进行操作与调整工夫范畴:
当时间跨度大,数据量繁多的状况下,能够全屏查看用以统计走势或具体分析:
产品个性
运维大盘
运维大盘,也称之为仪表盘,用以给开发人员与运维人员产生高度可定制化的剖析图表,目前存在于多云治理平台与微服务治理平台中,提供高自由度、可扩大、高定制化的图表。
进入新建运维大盘 ->> 增加图表后,即可进入图表编辑器,提供丰盛的配置性能:
如指标分组(FROM)、维度(GROUP BY)、值(SELECT)、后果筛选器(WHERE)、后果排序(ORDER BY)、后果截取(LIMIT)等,与 SQL 一一对应,简略配置后产生图表,保留即可生成表盘。
多种不同的时序图,能够无缝切换图表类型展示:
为反对更多简单查问与剖析,提供 SQL 形式查问,自在排列组合:
提供导出性能,一键生成表盘快照、用以共享:
扩大与自定义函数
Erda Dashboard 提供了丰盛的自定义扩大办法,例如:
- diffps:用以计算磁盘 IO、网络 IO 等速率值。
如 docker container 的一些原生指标是没有速率值,只有 Counter 值,比方网络 IO,这个时候就须要对 Counter 值进行解决以计算速率,个别的解决方案是用流计算引擎相似 Flink 进行二次聚合,但并不通用且会造成依赖,如自定义指标,咱们抉择在查问端实现,并且反对分组。
SELECT time(),application_name::tag,diffps(rx_bytes::field)
FROM docker_container_summary
GROUP BY time(),application_name::tag
Limit 5
- 应用时序图 + 自定义表达式后,更加直观清晰。
愿景
将来,Erda Dashboard 将会对立 Erda MSP 上所有图表,并且会扩大更多丰盛的图表类型与自定义办法,以及反对更多的数据源,在布局中的模板市场能够实现秒建表盘、组织内分享、公开市场等,使运维与开发效率达到极大晋升。并且与告警零碎联动造成剖析报告,早日达成“1 分钟发现问题,3 分钟定位故障跟因”的指标。
欢送参加开源
Erda 作为开源的一站式云原生 PaaS 平台,具备 DevOps、微服务观测治理、多云治理以及快数据治理等平台级能力。点击下方链接即可参加开源 ,和泛滥开发者一起探讨、交换,共建开源社区。 欢送大家关注、奉献代码和 Star!
- Erda Github 地址:https://github.com/erda-project/erda
- Erda Cloud 官网:https://www.erda.cloud/