NetData 是一个分布式的实时健康监测系统,它实时提供超高水平的监测功能,每秒收集数千个系统指标(也包括应用程序,如 Web 服务器和数据库服务器),并有着一个现代感十足的交互式 Web 仪表盘。NetData 可以快速、高效的永久运行在所有 Linux 系统(真实或虚拟服务器、容器、物联网设备等),而不破坏其核心功能。Netdata一旦安装就不需要额外的配置,但提供了重要的定制。该应用程序的效率和速度旨在与本机控制台管理工具(如vmstat,iostat和htop)相媲美。
监测内容:下面是Netdata目前检测的内容(大多数都不需要进行配置,安装后即可开始监测)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1.CPU的使用率,中断,软中断和频率(总量和每个单核) 2.RAM,互换和内核内存的使用率(包括KSM和内核内存deduper) 3.硬盘输入/输出(每个硬盘的带宽,操作,整理,利用等) 4.IPv4网络(数据包,错误,分片): TCP:连接,数据包,错误,握手 UDP:数据包,错误 广播:带宽,数据包 组播:带宽,数据包 5.Netfilter/iptables Linux防火墙(连接,连接跟踪事件,错误等) 6.进程(运行,受阻,分叉,活动等) 7.NFS文件服务器,v2,v3,v4(输入/输出,缓存,预读,RPC调用) 8.网络服务质量(唯一一个可实时可视化网络状况的工具) 9.应用程序,通过对进程树进行分组(CPU,内存,硬盘读取,硬盘写入,交换,线程,管道,套接字等) 10.Apache Web服务器状态(v2.2, v2.4) 11.Nginx Web服务器状态 12.Mysql数据库(多台服务器,单个显示:带宽,查询/s, 处理者,锁,问题,临时操作,连接,二进制日志,线程,innodb引擎等) 13.ISC Bind域名服务器(多个服务器,单个显示:客户,请求,查询,更新,失败等) 14.Postfix邮件服务器的消息队列(条目,大小) 15.Squid代理服务器(客户带宽和请求,服务带宽和请求) 16.硬件传感器(温度,电压,风扇,电源,湿度等) 17.NUT UPSes(负载,充电,电池电压,温度,使用指标,输出指标) 18.可以监测任意数量的SNMP服务,不过你需要进行配置,还可以对此软件进行扩展,可以使用任何语言编写插件,以此来从任何来源收集数据。
关于NetData的相关网址如下:
1 2 3 https://my-netdata.io/ //官网 https://github.com/firehol/netdata //Github https://my-netdata.io/#demosites //Demo
一般情况下,直接在 root 权限下运行以下命令即可。
1 2 3 bash <(curl -Ss https://my-netdata.io/kickstart.sh) # CDN备份:https://cdn.kixss.com/shell/kickstart.sh
倘若你想使用NetData的插件以及API或者所需依赖包,你也可以用下面的这个命令,它会将上述内容一并安装。
(注:在使用这条命令前,请使用apt-get update或者yum upgrade命令更新软件包列表)
1 bash <(curl -Ss https://my-netdata.io/kickstart.sh) all
倘若你有需要在64位的缺少软件包管理器的 Linux 上安装的需求(例如CoreOS, CirrOS, busybox systems)则可以运行这个命令,netdata将以二进制编译形式进行安装。
1 bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)
如果这个命令不能正常运行,那么试着分步运行以下命令。
1 2 wget -O /tmp/kickstart-static64.sh https://my-netdata.io/kickstart-static64.sh sh /tmp/kickstart-static64.sh
NetData配合内存共享机制KSM使用(可选):
1 2 3 KSM是内核中的一种内存共享机制,在2.6.36版本的内核中开始引入,简单来说就是其会 合并某些相同的页面以减少页面冗余。 在内核中有一个KSM守护进程 ksmd,它定期扫描用户向它注册的内存区,寻找相同的页面,从而用一个添加写保护的页面来代替, 当有进程尝试写入的时候,会自动分配一个新页面,这点就是典型的COW机制。
假如脚本的历史输出信息,如果有这么一段:
1 2 3 4 5 6 7 8 9 10 11 Memory de-duplication instructions You have kernel memory de-duper (called Kernel Same-page Merging, or KSM) available, but it is not currently enabled. To enable it run: echo 1 >/sys/kernel/mm/ksm/run echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs If you enable it, you will save 40-60% of netdata memory.
那么就说明你的系统有 KSM,但是未启用,按照这里说的执行这两句命令,即可开启 KSM,可以节省 40-60% 的储存空间。
1 2 echo 1 >/sys/kernel/mm/ksm/run echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
片刻之后,在输出的末尾,您将看到以下消息:
1 2 3 4 5 6 7 8 Installer Output . . . ^ |.-. .-. .-. .-. .-. . netdata .-. .- | '-' '-' '-' '-' '-' is installed and running now! -' '-' +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+---> enjoy real-time performance and health monitoring...
安装完之后,通过访问http://IP:19999访问调用相关服务,但是为了兼顾通过域名HTTPS的访问,下面给出Nginx反向代理的配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 server{ ...... # 80端口部分:Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response. return 301 https://$host$request_uri; ...... # 443端口部分,资源跨域的请求(非必需)和反向代理配置. location / { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache- Control,Content-Type,Authorization'; if ($request_method = 'OPTIONS') { return 204; } proxy_pass http://127.0.0.1:19999; #Proxy Settings proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
NetData相关信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 //NetData 的安装目录 守护进程 /usr/sbin/netdata 配置文件 /etc/netdata 网页文件 /usr/share/netdata 插件 /usr/libexec/netdata 数据文件 /var/lib/netdata 日志 /var/log/netdata 进程文件 /var/run/netdata.pid 日志管理 /etc/logrotate.d/netdata //NetData 命令 查看帮助 netdata -h # 服务启动 systemctl start netdata # 服务关闭 systemctl stop netdata # 服务重启 systemctl restart netdata
假如需要更改默认端口,那么编辑配置文件/etc/netdata/netdata.conf,找到第51行的
去掉此行前面的#,然后更改成你想要的端口(防火墙需配合放行),接着执行如下命令,NetData 即会重启,使新配置生效。
1 2 3 killall netdata service netdata start # 或者 systemctl netdata start
或许用不到,系统镜像的差异也会导致实际场景的不同,可能需要安装相关依赖(非必需):
1 2 yum install autoconf automake curl gcc git libmnl-devel libuuid-devel lm_sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel
鸣谢:[NetData]一个超酷炫的Linux性能实时监控探针