1. Netdata介绍
1.1 什么是Netdata
Netdata是一款为系统管理员、DevOps工程师及开发者准备的系统性能指标、故障可视化监测工具。
支持大多数Linux发行版,包括Debian系、Redhat系等,以及容器平台(K8S,Docker)和FreeBSD。
1.2 官方吹嘘的优点
- 功能强大且可扩展
- 常态化1% CPU使用率,兆级内存及很少量的硬盘I/O,甚至能在IoT运行[^1]。
- 秒级采样
- 易对接现有的监控栈及其它时序数据库
- 更优优的故障排查
- 可视化异常探测
- 定制内容展示板块
- 集中处理多节点数据采样,方便用户排查集群、分布式节点问题
- 设计即安全
- 优秀的数据分发架构
- 数据边缘化存储
2.3 与其它监控解决方案的对比
[^1]: IoT: The Internet of Things.
2. NetData Agent安装
- 在线安装
curl https://my-netdata.io/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh
- 离线安装
留点地方以便日后补充。
3. NetData数据存储配置
3.1 数据存储的必要性
反正就是很重要。
3.2 mongoDB安装及配置
3.2.1 MongoDB及C Drive安装
rpm -ivh mongodb-*.rpm
4. NetData数据流
4.1 NetData数据流介绍
每一个安装了NetData Agent的主机都可以实时地把采集到的指标以数据流的方式发送到另一个节点。NetData数据流(NetData Streaming)可以实现跨主机集中化管理采集到的性能指标到同一个时序数据库中(TSDB),也可以在NetData节点之间同步性能指标多副本以完成高可用架构需求。
接受数据流的节点可以实现数据可视化、健康检查、事件告警以及转储事件到时序数据库中(TSDB),该节点可以完成发送数据流的节点上NetData Agent的所有功能。
4.2 NetData Streaming 角色介绍
- 父节点(Parent)- 运行NetData Agent并且接受数据流的节点
- 子节点(Child)- 运行NetData Agent并且发送数据流的节点
- 代理节点(Proxy)- 运行NetData Agent并且转发子节点数据到独立父节点的节点
4.3 NetData Streaming 认证方式
NetData通过API KEY实现节点之间的互相认证。官方建议用uuidgen
命令生成随机的API KEY,也可以自定义字符串。当父节点通过子节点的认证后,数据流就可以开始传输。
数据流支持的协议为TCP
、UDP
以及Unix Socket
, HTTP
是不被支持的。
To proxy streaming metrics, you need to use a proxy that tunnels OSI layer 4-7 traffic without interfering with it, such as SOCKS or Nginx's TCP/UDP load balancing.
4.1 NetData数据流架构
-
无主采集(Headless collector)
- 子节点A,自身不安装时序数据库,没有web仪表盘,数据发送到父节点B
- 节点A的性能数据只能在节点B的web仪表盘上观测
- 节点A上产生的事件由节点B来生成及发送
-
多副本采集 (Replication)
- 子节点A,安装时序数据库,有web仪表盘,数据发送到父节点B
- 节点A的性能数据同时可以在两个节点的web仪表盘上进行观测
- 节点A的性能数据可以根据不同的策略来保存到两个节点
- 两个节点都可以生成及发送告警
-
代理采集 (Proxy)
- 子节点A,安装或者不安装时序数据库,通过节点C转发数据到父节点B
- 任意安装了时序数据库的节点都可以生成及发送告警
4.2 NetData数据流配置
Manager Netdata Service
https://learn.netdata.cloud/docs/maintenance-operations-on-netdata-agents/starting-and-stopping-netdata-agents
Export metrics to MongoDB
https://learn.netdata.cloud/docs/exporting-data/mongodb
How metrics streaming works
https://learn.netdata.cloud/docs/deployment-in-production/streaming-and-replication/
Database engine
https://learn.netdata.cloud/docs/improving-netdata---developers/database-engine#data-points
Install Netdata with kickstart.sh
https://learn.netdata.cloud/docs/install-the-netdata-agent/one-line-installer-for-all-linux-systems
Database engine
https://learn.netdata.cloud/docs/contributing-to-netdata/database-engine
Change how long Netdata stores metrics
https://learn.netdata.cloud/docs/typical-netdata-agent-configurations/optimizing-metrics-database/change-how-long-netdata-stores-metrics