1. 概述
Netdata对系统和应用程序进行分布式、实时、性能和健康监控。它是可以安装在所有系统和容器上的高度优化的监控代理。
Netdata使用高度交互的web仪表盘,对其运行的系统(包括web服务器、数据库和应用程序)上发生的所有事情提供了无与伦比的实时洞察。它可以独立运行,不需要任何第三方组件,也可以集成到现有的监视工具链(Prometheus、Graphite、OpenTSDB、Kafka、Grafana等)。
Netdata速度快、效率高,可以在所有系统(物理和虚拟服务器、容器、物联网设备)上永久运行,而不会破坏它们的核心功能。
Netdata是免费的开源软件,目前运行在Linux、FreeBSD和MacOS上。地址:https://github.com/netdata/netdata。
2. 如何工作
下图显示了一个典型Netdata仪表板的顶部。
3. 快速开始
安装Netdata的最佳方法是提供的单行安装程序,它将安装任何所需的系统包,编译Netdata,安装它,然后启动所有程序。要在任何Linux系统(物理、虚拟、容器、物联网、edge)上从源代码安装Netdata,并自动使其与我们的夜间发布版本保持同步,请运行以下命令:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
以上方法实际安装时,会请求google上的一些内容,可能会导致连接超时,可以多试几次,或者参考更多的安装方法和附加选项,可以在安装页面找到。
如果要将Netdata安装在Docker容器中,可以运行以下命令:
docker run -d --name=netdata \
-p 19999:19999 \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
netdata/netdata
有关在docker中运行Netdata的更多信息,请查看docker安装页面。
安装完成之后,如果要访问netdata的仪表盘,可以使用浏览器访问http://server.ip:19999
。
4. Netdata的优点
Netdata使用一种完全不同的监视方法。它是安装在所有系统上的监控代理。它是:
- 度量标准收集器——用于系统和应用程序度量标准(包括web服务器、数据库、容器等)
- 时间序列数据库——全部存储在内存中(运行时不接触磁盘)
- 一个指标可视化工具-超快速,互动,现代,为异常检测优化
- 警报通知引擎——用于检测性能和可用性问题的高级监视程序
所有这些都打包在一个非常灵活、非常模块化的分布式应用程序中。
以下是Netdata与其他监控解决方案的比较:
Netdata | Others(开源或者商用) |
---|---|
高分辨率指标(1s粒度) | 低分辨率指标(最好的是10s粒度) |
监视各个方面,每个节点有数千个指标 | 仅监控几个指标 |
UI速度超快,为异常检测优化 | UI只适合抽象视图 |
有意义的表示,帮助你理解度量标准 | 在开始之前,你必须了解度量标准 |
安装并获得结果快速 | 要得到有用的结果,需要长时间的准备 |
使用它来排除性能问题 | 使用它们来获得过去性能的统计数据 |
为跟踪性能问题终止控制台 | 故障排除总是需要控制台 |
不需要任何专用资源 | 需要大量专用资源 |
5. 信息图表
这是Netdata特性集和体系结构的高级概述。
6. 特性
6.1 概述
- 1s粒度 - 所有指标可能的最高分辨率。
- 无限指标 - 收集所有可用的指标,越多越好。
- 1%的CPU利用率的单一核心 - 它超级快,难以置信的优化。
- 几MB内存占用 - 默认情况下使用25MB内存。你也可以设置它
- 零磁盘I/O — 当它运行时,它不加载或保存任何东西(除了错误和访问日志)。
- 零配置 - 自动检测一切,它可以收集多达10000个指标,每台服务器开箱即用。
- 零维护 - 你只需运行它,它就完成其余的工作。
- 零依赖 — 它甚至是自己的web服务器,用于它的静态web文件和web API(尽管它的插件可能需要额外的库,这取决于所监视的应用程序)。
- 扩展到无限 - 你可以安装在您的所有服务器,容器,VMs和IoTs。默认情况下度量不是集中的,因此没有限制。
- 几种操作模式 - 自治主机监控(默认),无头数据收集器,转发代理,存储和转发代理,中央多主机监控,在所有可能的配置。每个节点可能有不同的度量保留策略,并在运行时进行健康监视或不进行健康监视。
6.2 健康监控 & 报警
- 先进的警报 - 有数百个警报,开箱即用。支持动态阈值,滞变,报警模板,多种基于角色的通知方法。
- 通知:各种通知,如amazon sns、email、 pushbullet.com等等。
6.3 集成
时间序列dbs——可以将其指标存档到Graphite、OpenTSDB、Prometheus、AWS Kinesis、MongoDB、JSON文档数据库,分辨率相同或更低(更低:以防止由于收集的数据量而导致这些服务器过载)。Netdata还支持Prometheus remote write API,它允许存储度量数据到Elasticsearch、Gnocchi、fluxdb、Kafka、PostgreSQL/TimescaleDB、Splunk、VictoriaMetrics和许多其他存储提供商。
7. 可视化
- 令人惊叹的交互式仪表盘 - 鼠标,触摸板和触摸屏友好的2个主题:石板(黑色)和白色。
- 惊人的快速可视化 - 响应所有查询在不到1毫秒/每指标,即使在低端硬件。
- 视觉异常检测 — 仪表板被优化为视觉检测异常。
- 可嵌入的 — 它的图表可以嵌入到您的web页面、wiki和博客中。您甚至可以使用Atlassian的Confluence作为监视仪表板。
- 可定制 — 可以使用简单的HTML(不需要javascript)构建自定义仪表盘。
7.1. 正值和负值
为了提高图表的清晰度,Netdata仪表板为表示读、输入、入站、接收的指标提供正值,为表示写、输出、出站和发送的指标提供负值。
7.2. 自动缩放的y轴
Netdata图表会自动垂直缩放,以便在可见的时间范围内可视化每个指标的变化。
7.3. 图表是同步的
Netdata仪表板上的图表彼此同步。没有主图。任何图表都可以在任何时候平移或缩放,所有其他图表都会跟随。
7.4. 突出显示的时间框架
为了改进图表之间的视觉异常检测,用户可以在所有图表上突出显示一个时间段(通过按ALT+鼠标选择)。
8. Netdata监控什么
Netdata数据收集是可扩展的 - 您可以监控任何你可以获得指标的东西。它的插件API支持所有编程语言(任何东西可以是Netdata插件、BASH、python、perl和node.js、java、Go、ruby等)。
- 为了获得更好的性能,大多数与系统相关的插件(cpu、内存、磁盘、文件系统、网络等等)都是用C语言编写的。
- 为了更快的开发和更简单的贡献,大多数与应用程序相关的插件(数据库、web服务器等)都是用python编写的。
8.1. APM(应用程序性能监控)
- statsd - Netdata是一个功能齐全的statsd服务器。
- Go expvar — 收集使用expvar包用Go编程语言编写的应用程序公开的指标。
- Spring Boot — 监视运行Java Spring Boot应用程序,这些应用程序使用Spring Boot库中包含的Spring Boot致动器公开它们的指标。
- uWSGI - 从uWSGI应用程序收集性能指标。
8.2. 系统资源
- CPU利用率 - 总CPU使用率和每个核心CPU使用率。
- 中断 - 总中断和每个核心CPU中断。
- 软中断 - 总软中断和每个核心软中断。
- SoftNet - 与网络活动相关的总软中断和每个核心软中断。
- CPU节流 - 收集每个核心CPU节流。
- CPU频率 - 收集当前CPU频率。
- CPU空闲 — 收集每个处理器状态花费的时间。
- IdleJitter - 测量CPU延迟。
- 熵 — 密码学中使用的随机数池。
- 进程间通信(IPC) - 如信号量和信号量数组。
8.3. 内存
- ram - 收集有关ram使用的信息。
- 交换 — 收集关于交换内存使用情况的信息。
- 可用内存 — 收集用户空间进程可用的RAM数量。
- 提交内存 — 收集提交给用户空间进程的RAM数量。
- 页面错误 - 收集系统页面错误(主要和次要)。
- 回写内存 — 收集系统脏内存和回写活动。
- 大页面 — 收集用于大页面的RAM数量。
- KSM - 收集关于内核相同合并(内存清除程序)的信息。
- Numa - 收集支持它的系统的Numa信息。
- slab — 收集关于Linux内核内存使用情况的信息。
8.4. 磁盘
- 块设备 — 每个磁盘:I/O、操作、积压、利用率、空间等。
- BCACHE — SSD缓存设备的详细性能。
- 磁盘空间 - 监视磁盘空间使用情况。
- mdstat - 软件RAID。
- hddtemp - 磁盘温度。
- smartd - 磁盘S.M.A.R.T.值。
- 设备映射器 - 命名磁盘。
- Veritas卷管理器 - 命名磁盘。
- megacli - 适配器,物理驱动器和电池统计。
- adaptec_raid — 逻辑和物理设备的健康指标。
- ioping — 测量磁盘读写延迟。
8.5. 文件系统
- BTRFS - 详细的磁盘空间分配和使用。
- Ceph - OSD使用、池使用、对象数量等。
- NFS文件服务器和客户机 - NFS v2, v3, v4: I/O,缓存,read ahead, RPC调用
- Samba - Samba SMB2文件共享的性能指标。
- ZFS - 详细的性能和资源使用。
8.6. 网络
- 网络堆栈 — 关于网络堆栈的所有内容(包括IPv4和IPv6,适用于所有协议:TCP、UDP、SCTP、UDPLite、ICMP、多播、广播等),以及所有网络接口(每个接口:带宽、数据包、错误、drop)。
- Netfilter - 关于Netfilter连接跟踪器的所有内容。
- SynProxy - 收集关于linux SynProxy (DDoS)的性能数据。
- NFacct - 从iptables中收集数据。
- 网络QoS — 唯一实时可视化网络
tc
类的工具。 - FPing — 用于测量任意数量主机之间的延迟和数据包丢失。
- ISC dhcpd - 池的使用、租赁等。
- AP - 收集Linux接入点性能数据(hostapd)。
- SNMP - 也可以监视SNMP设备(尽管您需要配置这些设备)。
- port_check — 检查TCP端口的可用性和响应时间。
8.7. 虚拟专用网
- OpenVPN - 收集每个隧道的状态。
- LibreSwan — 根据IPSEC隧道收集指标。
- Tor - 收集Tor流量统计数据。
8.8. 进程
- 系统进程 — 运行、阻塞、分叉、活动。
- 应用程序 - 通过进程树分组和报告CPU,内存,磁盘读,磁盘写,交换,线程,管道,套接字 - 每个进程组。
- systemd - 使用CGROUPS监视systemd服务。
8.9. 用户
- 用户和用户组资源使用情况 — 通过总结每个用户和组的进程树,报告:CPU、内存、磁盘读、磁盘写、交换、线程、管道、套接字。
- logind - 收集会话、用户和连接的座位。
8.10. 容器和虚拟机
- 容器 — 使用CGROUPS收集各种容器(systemd-nspawn、lxc、lxd、docker、kubernetes等)的资源使用情况。
- libvirt VMS - 使用CGROUPS收集各种虚拟机的资源使用情况。
- dockerd - 收集docker健康指标。
8.11. Web服务器
- Apache和lighttpd - mode-status(v2.2、v2.4)和缓存日志统计信息,针对多个服务器。
- IPFS - 带宽,对等点。
- LiteSpeed - 读取litespeed rtreport文件来收集指标。
- Nginx -
stub-status
,对于多个服务器。 - Nginx+ - 连接到多个nginx_plus服务器(本地或远程)以收集实时性能指标。
- PHP-FPM - 多个实例,每个报告连接、请求、性能等。
- Tomcat — 访问、线程、空闲内存、容量等。
- web服务器
access.log
文件 — 实时提取web服务器和代理性能指标,并应用几个健康检查,等等。 - HTTP检查 — 检查一个或多个web服务器的HTTP状态代码和返回的内容。
8.12. 代理、平衡器、加速器
- HAproxy - 带宽、会话、后端等。
- Squid - 多个服务器,每个服务器显示:客户端带宽和请求,服务器带宽和请求。
- Traefik — 连接到多个Traefik实例(本地或远程)来收集API指标(响应状态代码、响应时间、平均响应时间和服务器正常运行时间)。
Varnish - 线程、会话、命中、对象、后端等。
IPVS - 从Linux IPVS负载均衡器收集指标。
8.13. 数据库服务器
- CouchDB — 读/写、请求方法、状态代码、任务、复制、每个db等等。
- MemCached - 多个服务器,每个服务器显示:带宽,连接,项目等。
- MongoDB - 操作、客户端、事务、游标、连接、断言、锁等。
- MySQL and mariadb - 多个服务器,每个服务器显示:带宽、查询、处理程序、锁、问题、tmp操作、连接、binlog指标、线程、innodb指标等等。
- PostgreSQL - 多个服务器,每个服务器都显示:每个数据库统计信息(连接、元组读-写-返回、事务、锁)、后端进程、索引、表、预写、后台写入器等等。
- Proxy SQL - 收集代理SQL后端和前端性能指标。
- Redis - 多个服务器,每一个显示:操作,命中率,内存,密钥,客户端, slaves。
- RethinkDB - 连接到多个RethinkDB服务器(本地或远程)来收集实时指标。
8.14. 消息代理
- beanstalkd - 全局和每个管道监测。
- RabbitMQ - 性能和健康指标。
8.15. 搜索和索引
- ElasticSearch - 搜索和索引性能、延迟、时间、集群统计、线程统计等。
8.16. DNS服务器
- bind_rndc - 解析
named.stats
转储文件,以收集实时性能指标。支持绑定9.6之后的所有版本。 - dnsdist - 性能和健康指标。
- ISC Bind (named) - 多个服务器,每个服务器显示:客户端、请求、查询、更新、故障和多个视图度量。支持9.9.10之后的所有版本的bind。
- NSD - 查询、区域、协议、查询类型、传输等。
- PowerDNS - 查询、应答、缓存、延迟等。
- unbound — 性能和资源使用度量。
- dns_query_time - DNS查询时间统计。
8.17. 时间服务器
- chrony — 使用chronyc命令收集chrony统计信息(频率、最后偏移量、RMS偏移量、剩余freq、根延迟、根分散、歪斜、系统时间)。
- ntpd - 连接到多个ntpd服务器(本地或远程),提供系统变量和可选的对等变量的统计。
8.18. 邮件服务器
- Dovecot - POP3/IMAP服务器。
- Exim - 消息队列(电子邮件队列)。
- Postfix - 消息队列(条目,大小)。
8.19. 硬件传感器
- IPMI - 企业硬件传感器和事件。
- lm-sensors - 温度、电压、风扇、电源、湿度等传感器。
- Nvidia - 为Nvidia gpu收集信息。
- RPi - Raspberry Pi温度传感器。
- w1sensor - 从连接的单线传感器收集数据。
8.20. UPSes
- apcupsd - 负载,充电,电池电压,温度,效用指标,输出指标。
- NUT - 负载,充电,电池电压,温度,效用指标,输出指标。
- Linux电源 - 收集Linux上电源驱动程序报告的指标。
8.21. 社交共享服务器
- RetroShare — 连接到多个RetroShare服务器(本地或远程)以收集实时性能指标。
8.22. 安全
- Fail2Ban - 监视Fail2Ban日志文件,检查所有活动监狱的所有禁令。
8.23. 身份验证、授权、会计(AAA、RADIUS、LDAP)服务器
- FreeRadius - 使用
radclient
命令提供freeRadius统计信息(身份验证、会计、代理身份验证、代理会计)。
8.24. 电话服务器
- opensips — 连接到opensips服务器(仅本地主机)以收集实时性能指标。
8.25. 家用电器
- SMA webbox - 连接到多个远程SMA webbox,收集光伏(太阳能)发电的实时性能指标。
- Fronius - 连接到多个远程Fronius Symo服务器,收集光伏(太阳能)发电的实时性能指标。
- StiebelEltron - 收集温度和其他指标从您的Stiebel Eltron加热系统使用他们的互联网服务网关(ISG web)。
8.26. 游戏服务器
- SpigotMC - 使用Minecraft远程控制台监视每秒的Spigot Minecraft服务器滴答声和在线玩家数量。
8.27. 分布式计算
- BOINC - 使用远程GUI RPC接口监视本地和远程BOINC客户端软件的任务状态。还为一些错误条件提供警报。
8.28. 流媒体服务器
- IceCast - 收集活动源的侦听器数量。
8.29. 监控系统
- Monit - 收集关于Monit目标(文件系统、应用程序、网络)的指标。
8.30. 供应系统
- Puppet - 连接到多个Puppet服务器和Puppet数据库实例(本地或远程),收集实时状态指标。
可以使用任何计算机语言编写从任何源收集数据的插件,从而轻松地扩展Netdata。
9. 文档
Netdata文档地址为:https://docs.netdata.cloud
。