NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

滴滴开源夜莺 Nightingale:企业级监控解决方案

  • 2020-03-24
  • 本文字数:2663 字

    阅读完需:约 9 分钟

滴滴开源夜莺Nightingale:企业级监控解决方案

滴滴开源又双叒发布新开源项目啦——夜莺(Nightingale)是滴滴基础平台联合滴滴云研发和开源的企业级监控解决方案。旨在满足云原生时代企业级的监控需求。一起来了解项目详情吧。


夜莺(Nightingale)是滴滴基础平台联合滴滴云研发和开源的企业级监控解决方案。旨在满足云原生时代企业级的监控需求。Nightingale 在产品完成度、系统高可用、以及用户体验方面,达到了企业级的要求,可满足不同规模用户的场景,小到几台机器,大到数十万都可以完美支撑。兼顾云原生和裸金属,支持应用监控和系统监控,插件机制灵活,插件丰富完善,具有高度的灵活性和可扩展性。



Nightingale 在 Open-Falcon 的基础上,结合滴滴内部的最佳实践,在性能、可维护性、易用性方面做了大量的改进,作为集团统一的监控解决方案,支撑了滴滴内部数十亿监控指标,覆盖了从系统、容器、到应用等各层面的监控需求,周活跃用户数千。五年磨一剑,取之开源,回馈开源。



Nightingale 采用树状节点导航,我们称之为对象树。对象树本质上是一种对监控对象的分组管理机制,方便查找和查看监控对象,以及对监控对象设置监控策略等管理动作。一棵典型的树可从上到下描述为组织架构关系、产品服务模块关系、机房和机器挂载关系,该导航树可根据用户需求自行灵活定制。



监控策略应用到某个节点后,该节点下的所有子节点挂载的所有的机器都会应用这个策略,任何一台机器触发相关阈值都会产生告警。



监控大盘的定制做了大幅易用性改进,支持了图表阈值,支持了图表分类,新增图表和排序管理都是可见即所得的方式,巡检大盘的定制从此不再是困难。


Nightingale 是在 Open-Falcon 的基础上衍化发展而来,Open-Falcon 作为国内使用最广泛的监控解决方案之一,为 Nightingale 的设计开发提供了大量的借鉴意义。

与 Open-Falcon 的不同点

  • 告警引擎重构:Open-Falcon 的告警策略,在监控数据推送上来的同时会触发策略判断,这种「推」的模式优势是策略的判断时效性非常高,但是不利于更高级的告警策略的支持和扩展,比如多条件的组合报警就很难支持。Nightingale 转为推拉结合模式,通过推模式保证大部分策略判断的效率,通过拉模式支持了与条件告警和 nodata 告警;

  • 引入了导航对象树:将 Open-Falcon 采用的扁平 HostGroup,转为 Nightingale 的导航对象树,对象树本质上是一种对监控对象的分组管理机制,方便查找和查看监控对象,以及对监控对象设置监控策略等管理动作。同时在 Nightingale 中,去除了告警模板的概念,告警策略直接与树节点绑定,简化设计,大幅提升灵活度和易用性;

  • 索引模块升级换代:Open-Falcon 使用 MySQL 存储 metrics 的索引数据,在扩展性和灵活性上存在瓶颈。Nightingale 根据监控需求,设计开发了全新的内存索引模块 index,查询方式更多样,查询效率更高,避免了原来 MySQL 索引数据达到亿级别时面临的维护优化工作;

  • 时序数据库优化:在 Open-Falcon 存储模块 Graph 的基础上,引入 Facebook 的 Gorilla 压缩方案,近期几个小时的数据采用内存存储,大幅提升数据查询效率,长期数据仍然使用 rrdtool 数据格式存储在硬盘上。同时进一步完善了时序数据库的性能和稳定性;

  • 告警引擎高可用改进:告警引擎 judge 模块通过心跳机制做到了故障自动摘除,再也不用担心单个 judge 宕机导致部分策略失效,需要人工介入的问题,index 模块也是采用类似方式保证可用性;

  • 原生内置日志监控功能:Nightingale 客户端原生内置了日志匹配和指标抽取能力,在 web 控制台页面上支持了日志匹配规则的配置,同时也支持读取目标机器特定目录下的配置文件的方式,让业务指标监控更为易用;

  • 可运维性增强:将 portal(falcon-plus 中的 api)、uic、dashboard、hbs、alarm 合并为一个模块:monapi,简化了系统整体部署难度,原来的部分模块间调用变成进程内方法调用,性能更高;

  • 配置文件中心化:配置文件做了易用性改造,抽取数据库通用配置到 mysql.yml,抽取端口实例地址等关联配置到 address.yml,大批配置在代码里给了默认值,使得配置文件更清晰,易于维护。

与 Open-Falcon 的相同点

  • 数据模型没有变化,仍然是 metric、endpoint、tags 的组织方式,agent 基本是可以复用的,Nightingale 中的 agent 叫 collector,融合了原来 Open-Falcon 的 agent 和 falcon-log-agent 的逻辑,各种监控插件也都是可以复用的。

  • 数据流向和整体处理逻辑是类似的,仍然使用灵活的推模型,分为数据存储和告警判断两条链路。

Nightingale 架构

  • collector 即 agent,可以采集机器常见指标,原生支持日志监控,支持插件机制,支持业务通过接口直接上报数据;

  • transfe r 提供 rpc 接口接收 collector 上报的数据,然后通过一致性哈希,将数据转发给多台 tsdb 和多台 judge;

  • tsdb 即 open-falcon 中的 graph 组件,用于存储历史数据,支持配置为双写模式提升系统容灾能力,tsdb 会把监控数据转发一份给 index 建索引;

  • index 是内存索引模块,替换原来的 mysql 方案,在内存里构建索引,便于后续数据检索,在检索的灵活性和检索性能方面大幅提升;

  • judge 是告警引擎,从 monapi(portal) 同步监控策略,然后对接收到的数据做告警判断,如满足阈值,则生成告警事件推送到 redis 队列;

  • monapi(alarm) 从 redis 队列中读取 judge 生成的事件,进行二次处理,补充一些元信息,生成告警消息,重新推送回 redis 队列;

  • 各发送组件,比如 mail-sender、sms-sender 等,从 redis 读取告警消息,发送告警,抽象出各类 sender 是为了后续定制方便;

  • monapi 集成了原来多个模块的功能,提供接口给 js 调用,api 前缀为 /api/portal,数据查询走 transfer,去除了 open-falcon 中原来的 query 组件,api 前缀为 /api/transfer,索引查询的 api 前缀 /api/index,于是,在前端统一搭建 nginx,即可通过不同 location 将请求转发到不同后端;

  • 数据库仍然使用 MySQL,主要存储的内容包括:用户信息、团队信息、树节点信息、告警策略、监控大盘、屏蔽策略、采集策略、部分组件心跳信息等。

仍在进行中的工作

  • 提供监控指标聚合组件,现在的架构可以解决机器级、模块级的监控,但是集群维度的监控指标,是需要聚合整个集群的所有模块、机器的指标,做一些加和、求平均之类的操作,相关聚合组件,我们在紧锣密鼓的开源过程中;

  • 与 k8s 无缝集成的工作,也在进行之中;

  • 完善更多监控插件,之前 Open-Falcon 社区里的很多插件都是可以直接用的,我们会尽量补充社区没有的插件,并对社区已有的插件,进行二次整理和维护,让 Nightingale 周边更完善。


本文转载自滴滴技术公众号。


原文链接:https://mp.weixin.qq.com/s/zvHQVBgU2IFUUYyzeDlokw


2020-03-24 10:414866

评论

发布
暂无评论
发现更多内容

不忘初心,中级领导力修炼

IT民工大叔

领导力 管理

【全网首发】2021 年从iOS初级到大牛,涵盖大部分iOS开发知识体系,不会没收藏吧!

一意孤行的程序员

swift 面试 ios开发 底层应用开发 知识分享

阿里P8带你学习:一次线上服务高 CPU 占用优化实践

学Java关注我

Java 编程 架构 程序人生 软件架构

fil云算力挖矿系统开发成功案例丨fil云算力挖矿源码设计

系统开发咨询1357O98O718

浅谈BSS3.0产品“守成”之策中 • 业务提升篇

鲸品堂

系统架构 性能调优

英特尔Ice Lake对于高性能计算市场意味着什么

E科讯

苦难中开花|靠谱点评

无量靠谱

Rust从0到1-代码组织-Packages和Crates

rust Package crate

产业级项目实战配合技术讲解,百度零门槛AI开发实训营重磅开营

百度大脑

百度 AI

快来,告诉你一个赚钱的秘诀:金钱的秘密

帅安技术

赚钱 秘密 金钱的秘密

android面试题及答案,我的阿里春招之路分享,附面试答案

欢喜学安卓

android 程序员 面试 移动开发

万字长文,38 图爆肝 Redis 基础!

一个优秀的废人

redis 数据结构 集合 哈希表 跳表

Spark内存管理与调优

小舰

4月日更

腾讯iOS开发要达到咋样的水准?

一意孤行的程序员

flutter 职业规划 音视频 ios开发 iOS逆向

华为云薛浩:走进视频“新时代”

华为云开发者联盟

云原生 视频 华为云 vr 图形处理

加密原理详解:对称式加密VS非对称式加密

vivo互联网技术

加密 rsa

MySQL内置函数

Sakura

4月日更

重读《重构2》- 以查询取代临时变量

顿晓

重构 4月日更

FILPool云算力挖矿系统开发源码案例

系统开发咨询1357O98O718

Redis的AOF方案(Redis持久化)

大数据技术指南

redis 4月日更

面试4轮字节Java研发岗,最终拿下2-1Offer(原题复盘)

Java架构追梦

Java 字节跳动 面试

gdb调试工具使用

正向成长

gdb

AUC/ROC:面试中80%都会问的知识点

华为云开发者联盟

机器学习 面试 mindspore roc AUC

四两拨千斤——你不知道的VScode编码TypeScript的技巧

葡萄城技术团队

IPFS挖矿系统开发详情案例丨IPFS挖矿矿机源码平台

系统开发咨询1357O98O718

ORC格式和PARQUET格式介绍

五分钟学大数据

hive 存储 4月日更

工作三年,小胖连 HashMap 源码都没读过?真的菜!

一个优秀的废人

扩容 hashmap 源码剖析 HashMap底层原理 加载因子

时间很贵,有趣才对

小天同学

读书笔记 读书感悟 好书推荐 有趣 4月日更

美国工程院士、谷歌首席架构师 杰夫·迪恩(JeffDean) John 易筋 ARTS 打卡 Week 45

John(易筋)

ARTS 打卡计划

Spring Cloud Gateway 和Webflux 请求参数非法字符处理

sN0wpeak

Java Spring Cloud SpringcloudGateway

apk优化,996页阿里Android面试真题解析火爆全网,附面试答案

欢喜学安卓

android 程序员 面试 移动开发

滴滴开源夜莺Nightingale:企业级监控解决方案_服务革新_滴滴技术_InfoQ精选文章