服务器状态实时监测工具-netdata

1. 概述

Netdata对系统和应用程序进行分布式、实时、性能和健康监控。它是可以安装在所有系统和容器上的高度优化的监控代理。

Netdata使用高度交互的web仪表盘,对其运行的系统(包括web服务器、数据库和应用程序)上发生的所有事情提供了无与伦比的实时洞察。它可以独立运行,不需要任何第三方组件,也可以集成到现有的监视工具链(Prometheus、Graphite、OpenTSDB、Kafka、Grafana等)。

Netdata速度快、效率高,可以在所有系统(物理和虚拟服务器、容器、物联网设备)上永久运行,而不会破坏它们的核心功能。

Netdata是免费的开源软件,目前运行在Linux、FreeBSD和MacOS上。地址:https://github.com/netdata/netdata。

2. 如何工作

下图显示了一个典型Netdata仪表板的顶部。

image.png

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特性集和体系结构的高级概述。

image.png

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

你可能感兴趣的:(服务器状态实时监测工具-netdata)