Nightingale滴滴夜莺监控系统入门(一)--夜莺对比zabbix、Prom

本文介绍了滴滴的Nightingale(夜莺)监控系统,它是Open-Falcon的优化版,提供分布式监控告警功能。相较于Zabbix和Prometheus,夜莺强调开箱即用,适合有多种监控需求的公司。文章涵盖了夜莺的系统架构,解释了为何选择夜莺,并提供了与Zabbix和Prometheus的对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nightingale滴滴夜莺监控系统入门(一)--夜莺n9e对比zabbix、Prom

夜莺介绍

系统架构3.x版本

夜莺是Open-Falcon的进阶版,由Open-falcon的主要成员经过滴滴的生产实践优化后的版本,至于Open-falcon是啥,各为看官可以移步Open-falcon官网查看。

其实每家公司多少都会有自己的监控系统,不管是Zabbix也好,还是Promethues,选型没有最好,只有最合适,所以入门一就给大家接个引子,介绍下夜莺的架构和一些产品对比,后续文章会深入介绍。

夜莺是天生分布式的监控告警一体的运维平台

下图是夜莺3.x版本的架构图,分别对应采集,传输,存储,索引,告警,监控,资产管理,任务,rdb模块:

#Agent:夜莺的采集客户端,部署在各个终端上;
#Transfer:夜莺的网关,用于接收agent采集的数据,分发到后端的tsdb存储上;
#TSDB:时序数据库,N9E是用rddtool来实现的数据存储,好处是指标文件会在指标创建的时候创建,文件大小在新建时就占住位了,不会随数据的增多而增大,方便运维,老旧数据会降维归档;
TSDB这里夜莺也支持其他存储后端,3.3.0版本支持了M3DB
#Index:索引模块,某台服务器的某条指标,就是一条索引;
#Judge:告警判断模块,在夜莺上配置的告警策略会由judge来处理,将事件写入redis里,用于给monapi部分告警消费
#Monapi:一部分是用于写入告警事件,一部分是用于前端的系统入口;
#Rdb:在2.x版本需要独立部署的Sender集合在了这里,目前支持邮件、短信、电话、和IM的通知,并且包含了一些系统权限控制的功能;
#Job:任务执行模块,可在服务器上批量执行任务脚本,且可以用来告警后的告警自愈;
#Ams:资产管理模块,目前功能还比较上,就是做了一个终端简单的管理;

为什么使用夜莺

其实大家和我一样,会在众多的监控系统里选型,不知道到底哪个与公司的业务场景更贴切,下面我说说我的建议:

  • [全公有云]:如果公司全部服务器都已经上云,大部分都是一些互联网创业公司较多,建议直接就使用云平台提供的监控,所有整合云平台都已经做的很好,无论是监控、告警、还是自愈,都已经做的很完善,没有必要再自己组装一辆单车;
  • [新老系统共存]:公有私有云都有的情况,且大部分都还是以私有云为主的话,基本都是容器应用就上Prom,毕竟这些是天生适配;非容器应用比较多的传统行业的这些老公司,直接就上夜莺吧,不用多考虑什么,毕竟这类公司是啥都有一些,交换机监控,容器监控,本地应用监控,虚拟平台监控,有啥还能比白Piao来的更爽,毕竟夜莺是从采集、存储、监控、告警判断、告警通知、告警自愈都开源出来了,换句话说就是:开箱即用,直接采集交换机/虚机/应用指标,出现异常直接通知到钉钉/企微/邮箱

如何开箱即用

夜莺是Go开发的,所有组件编译后均是二进制文件,无须安装其他依赖,后端只需要上述九个夜莺模块的二级制包,加上mysql,redis,nginx三个组件,就可以轻松在公司上落地监控。

[n9e@n9e-01 n9e]# ls
control  n9e-agent  n9e-index  n9e-judge   n9e-rdb   n9e-tsdb   etc 
meta    n9e-ams    n9e-job    n9e-monapi  n9e-transfer  pub
#control是用来统一编译,统一启动停止进程的脚本 
#这里的pub是前端文件,直接配置nginx的webroot到这里就可以了

监控对比

夜莺对比Zabbix

夜莺对比Prometheus

导航: Nightingale滴滴夜莺监控系统入门(二)–单机部署夜莺
导航: Nightingale滴滴夜莺监控系统入门(三)–夜莺页面功能说明
导航: Nightingale滴滴夜莺监控系统入门(四)–聊聊夜莺的后端储存
导航: Nightingale滴滴夜莺监控系统入门(五)–采集功能

<think>嗯,我现在需要了解E²PROM的读写操作。首先,E²PROM是什么?好像是种存储器,但具体和EEPROM有什么区别呢?对了,E²PROM可能是指电可擦可编程只读存储器,也就是EEPROM。那它的读写原理是怎样的? 我记得EEPROM可以通过电子信号来擦除和重新编程,不需要紫外线照射,这点和EPROM不同。那它的结构是什么样的?每个存储单元是不是使用浮栅晶体管?或者是其他结构?比如,每个单元可能由两个晶体管组成,个用于存储电荷,另个用于控制访问。 读写操作的话,读取应该和普通的ROM类似,施加电压然后检测电流变化来判断存储的是0还是1。写入的话,可能需要施加较高的电压来改变浮栅的电荷。擦除的时候则是通过施加反向电压让电荷释放。不过具体的电压值是多少?不同的厂商可能有不同的规格,比如5V、3.3V或者更低? 关于寿命问题,EEPROM的擦写次数有限,通常是多少次呢?比如十万到百万次?这比FLASH存储器要低吗?FLASH通常块擦除,而EEPROM可以按字节擦写,所以寿命更长些?或者说因为结构不同,EEPROM的每个单元都能单独擦写,所以适合频繁修改的小数据量场景,比如保存配置参数。 接口方面,常见的EEPROM有I²C、SPI等串行接口,也有并行的。现在多数是串行的,因为节省引脚。比如AT24C系列使用I²C,容量从几K到几百K不等。读写的时候需要注意时序,比如起始条件、设备地址、数据地址、数据等。在写操作时,可能需要等待写入完成,因为EEPROM的写入需要定时间,期间不会响应总线请求。 软件实现上,如何编写读写函数呢?比如在微控制器中,通过I²C发送设备地址,然后发送要写入的内存地址,再发送数据。读取时,先发送地址,然后重新发送起始条件和读命令,再接收数据。是否需要分页写入?比如某些EEPROM支持页写入多个字节,超过页大小需要分多次写入。 还有数据保存时间,EEPROM的数据能保存多久?通常十年以上?但温度等因素可能影响。错误处理方面,是否有校验机制?比如写入后回读验证,或者使用CRC校验。另外,是否有写保护引脚,防止意外写入? 可能的问题包括地址溢出,比如访问超过芯片容量的地址;总线冲突,比如在多主设备系统中;以及电压不稳导致写入错误。实际应用中,需要参考具体的数据手册,了解时序、电压、容量等参数。 总结下,E²PROM的读写涉及硬件接口协议、擦写时序、寿命管理等方面,需要根据具体芯片的规格来实现。接下来需要把这些点组织成结构清晰的解释,涵盖原理、接口、操作步骤及注意事项。</think>E²PROM(Electrically Erasable Programmable Read-Only Memory)是种可通过电子信号擦除和重新编程的非易失性存储器。以下是其读写操作的详细介绍: --- ### **、E²PROM的基本原理** 1. **存储单元结构** - 基于浮栅晶体管,通过捕获或释放电荷表示数据(0/1)。 - 擦写时需施加高电压(如12-21V,具体取决于芯片),改变浮栅电荷状态。 2. **特性** - **非易失性**:断电后数据不丢失。 - **有限擦写次数**:通常为10万至100万次。 - **按字节操作**:支持单字节擦写,适合频繁修改小数据(如配置参数)。 --- ### **二、硬件接口与通信协议** 常见接口类型: 1. **I²C接口**(如AT24C系列) - 需关注时序:起始条件、设备地址(含硬件引脚配置)、数据地址、数据帧。 - 示例写操作步骤: ``` 启动总线 → 发送设备地址(写模式) → 发送内存地址 → 发送数据 → 停止总线 ``` - 示例读操作步骤: ``` 启动总线 → 发送设备地址(写模式) → 发送内存地址 → 重启总线 → 发送设备地址(读模式) → 接收数据 → 停止总线 ``` 2. **SPI接口**(如25LC系列) - 通过片选(CS)、时钟(SCK)、数据输入输出(SI/SO)通信。 - 支持高速传输,但需更多引脚。 --- ### **三、读写操作关键步骤** 1. **写入数据** - **单字节写入**:直接指定地址和数据。 - **分页写入**(若支持):次写入页(如16/64字节),超页需分段。 - **等待写入完成**:写入后需延时(典型5-10ms),或轮询芯片状态。 2. **读取数据** - 随机读取:指定地址后直接读取。 - 连续读取:自动递增地址,连续读取多字节。 --- ### **四、注意事项** 1. **寿命管理** - 避免频繁写入同地址,可采用磨损均衡算法。 - 优先写入变更部分,减少全数据刷新。 2. **时序与电压** - 严格遵循数据手册的时序要求(如建立/保持时间)。 - 确保供电电压稳定,避免擦写失败。 3. **错误处理** - **回读校验**:写入后读取数据比对。 - **CRC校验**:用于关键数据完整性验证。 - **写保护引脚**:启用硬件保护防止误操作。 4. **其他** - **地址溢出**:访问地址不可超过芯片容量。 - **温度影响**:高温可能缩短数据保存时间(通常>10年)。 --- ### **五、典型应用场景** - 存储设备配置参数(如Wi-Fi密码、校准数据)。 - 记录运行日志或计数器(需配合磨损均衡)。 --- ### **六、示例代码片段(I²C E²PROM)** ```c // 写入单字节 void EEPROM_WriteByte(uint16_t addr, uint8_t data) { i2c_start(); i2c_send(DEV_ADDR | WRITE_MODE); // 设备地址 + 写模式 i2c_send(addr >> 8); // 发送高字节地址 i2c_send(addr & 0xFF); // 发送低字节地址 i2c_send(data); // 发送数据 i2c_stop(); delay_ms(10); // 等待写入完成 } // 读取单字节 uint8_t EEPROM_ReadByte(uint16_t addr) { uint8_t data; i2c_start(); i2c_send(DEV_ADDR | WRITE_MODE); // 设备地址 + 写模式(发送地址) i2c_send(addr >> 8); i2c_send(addr & 0xFF); i2c_start(); // 重启总线 i2c_send(DEV_ADDR | READ_MODE); // 设备地址 + 读模式 data = i2c_receive(NACK); // 接收数据 i2c_stop(); return data; } ``` --- 通过以上步骤和注意事项,可高效、可靠地实现E²PROM的读写操作。实际开发中需以具体芯片手册为准。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值