Nightingale介绍   


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

监测mysql库表每日数据变化情况 mysql 监控表数据变化_监控mysql数据变化

功能特性如下:

  • collector即agent,可以采集机器常见指标,支持日志监控,支持插件机制,支持业务通过接口直接上报数据。
  • transfer提供rpc接口接收collector上报的数据,然后通过一致性哈希,将数据转发给多台tsdb和多台judge。
  • tsdb即原来的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,干掉了原来的query组件,api前缀为/api/transfer,索引查询的api前缀/api/index,于是,前面搭建nginx,即可通过不同location将请求转发到不同后端。
  • 数据库仍然使用mysql,主要存储的内容包括:用户信息、团队信息、树节点信息、告警策略、监控大盘、屏蔽策略、采集策略、部分组件心跳信息等。

Nightingale与Open-Falcon的不同点

  • 告警引擎重构为推拉结合模式,通过推模式保证大部分策略判断的效率,通过拉模式支持了nodata告警,去除原来的nodata组件,简化系统部署难度。
  • 引入了服务树,对endpoint进行层级管理,去除原来扁平的HostGroup,同时干掉告警模板,告警策略直接与服务树节点绑定,大幅提升灵活度和易用性。
  • 干掉原来的基于数据库的索引库,改成内存模式,单独抽出一个index模块处理索引,避免了原来MySQL单表达到亿级的尴尬局面,索引基于内存之后效率也大幅提升。
  • 存储模块Graph,引入facebook的Gorilla,即内存TSDB,近期几个小时的数据默认存内存,大幅提升数据查询效率,硬盘存储方式仍然使用rrdtool。
  • 告警引擎judge模块通过心跳机制做到了故障自动摘除,再也不用担心单个judge挂掉导致部分策略失效的问题,index模块也是采用类似方式保证可用性。
  • 客户端中内置了日志匹配指标抽取能力,web页面上支持了日志匹配规则的配置,同时也支持读取目标机器特定目录下的配置文件的方式,让业务指标监控更为易用。
  • 将portal(falcon-plus中的api)、uic、dashboard、hbs、alarm合并为一个模块:monapi,简化了系统整体部署难度,原来的部分模块间调用变成进程内方法调用,稳定性更好。
Nightingale与Open-Falcon的相同点
  • 数据模型没有变化,仍然是metric、endpoint、tags的组织方式,所以agent基本是可以复用的,Nightingale中的agent叫collector,融合了原来Open-Falcon的agent和falcon-log-agent的逻辑,各种监控插件也都是可以复用的。
  • 数据流向和整体处理逻辑是类似的,仍然使用灵活的推模型,分为数据存储和告警判断两条链路。

   Nightingale安装   

Nightingale目前支持单节点安装和分布式安装,这里选择 All in one 安装方式,能够简单的实现快速安装部署,具体安装方法如下:

  • Nightingale安装配置

下载Nightingale安装包“n9e-1.3.0-438ec4a.el7.x86_64.rpm-bundle.tar.gz” ,并进行安装

wget https://dl.cactifans.com/n9e/1.3.0/n9e-1.3.0-438ec4a.el7.x86_64.rpm-bundle.tar.gztar zxvf n9e-1.3.0-438ec4a.el7.x86_64.rpm-bundle.tar.gzyum install n9e-* -y
  • MySQL和Nginx 安装
# MySQL安装http://www.iweijing.cn/mysql-5-7%e5%ae%89%e8%a3%85%e4%b8%8e%e9%85%8d%e7%bd%ae/# Nginx安装http://www.iweijing.cn/centos7%e9%80%9a%e8%bf%87yum%e5%ae%89%e8%a3%85nginx/
  • 将Nightingale的初始化表结构导入到MySQL中。
mysql -uroot -p </usr/local/n9e/sql/n9e_hbs.sqlmysql -uroot -p </usr/local/n9e/sql/n9e_mon.sqlmysql -uroot -p </usr/local/n9e/sql/n9e_uic.sql

创建Nightingale用户 n9e 并授权。

mysql > create user n9e@localhost identified by 'n9epwd123';mysql > grant all on n9e_hbs.* to n9e@localhost;mysql > grant all on n9e_mon.* to n9e@localhost;mysql > grant all on n9e_uic.* to n9e@localhost;
  • Nginx服务配置
cp /usr/local/n9e/etc/nginx.conf /etc/nginx/systemctl restart nginx
  • 启动所有组件
systemctl enable --now n9e-collector n9e-tsdb n9e-transfer n9e-monapi n9e-judge n9e-index

Collector 安装(采集客户端安装)

collector 为 n9e 采集客户端,需要安装在客户端。
yum install n9e-collector-1.3.0-438ec4a.el7.x86_64.rpm  -y

安装后修改配置文件/usr/local/n9e/etc/address.yml




...monapi:  http: 0.0.0.0:5800  addresses:    - 127.0.0.1transfer:  http: 0.0.0.0:5810  rpc: 0.0.0.0:5811  addresses:    - 127.0.0.1...


collector 需要与 monapi 与 transfer 通信,需要修改 127.0.0.1 地址为实际的组件地址,多个组件可写多行,配置文件为 yaml 格式,修改时注意格式。 修改后使用以下命令启动。

systemctl enable --now n9e-collector
  • 登陆访问。

使用浏览器打开http://ip 即可访问,默认账号 root 密码 root。

监测mysql库表每日数据变化情况 mysql 监控表数据变化_sql_02