一般来讲,做为一个Linux的SA,颇有必要掌握一个专门的系统监控工具,以便能随时了解系统资源的占用状况。下面就介绍下一款Linux性能实时监测工具-Netdata,它是Linux系统实时性能监测工具,以web的可视化方式展现系统及应用程序的实时运行状态(包括cpu、内存、硬盘输入/输出、网络等linux性能的数据)。Netdata的web前端响应很快,并且不须要Flash插件。 UI很整洁,保持着 Netdata 应有的特性。第一眼看上去,你可以看到不少图表,幸运的是绝大多数经常使用的图表数据(像 CPU,RAM,网络和硬盘)都在顶部。若是你想深刻了解图形化数据,你只须要下滑滚动条,或者点击在右边菜单的项目。经过每一个图表的右下方的按钮,Netdata还能控制图表的显示,重置,缩放。Netdata文档地址:https://github.com/firehol/netdata/wikijavascript
Netdata用可视化的手段,将被监测者最细微的细节,展示了出来。这样即可以清晰地了解linux系统和应用程序此时的情况。Netdata主要功能:前端
优美的界面:bootstrap框架下的控制界面, 酷炫(主要是dark主题,light主题就没这感受了) 自定义的控制界面:你可使用简单的HTML代码去自定义控制界面(不须要使用javascript) 极其的快速而高效:程序使用C进行编写(默认安装下,预计只有2%的单核CPU使用率和少量的内存使用率) 零配置:你只须要去安装它,接着它就会自动地监测一切数据 零依赖:它的静态网络文件和网络接口拥有本身的网络服务器. netdata有本身的web server, 提供静态web文件和web API 可扩展:用它自身的插件API(可使用许多方式来制做它的插件,从bash到node.js),你能够检测任何能够衡量的数据。 可嵌入:它能够在任何Linux内核能够运行的地方运行 零维护:只管跑上! 匪夷所思的快。。。全部请求每一个metreic都在0.5ms内响应,即使是一台烂机器 很是高效,每秒采集数千个指标,但仅占cpu单核1%,少许MB的内存以及彻底没有磁盘IO 提供复杂的、各类类型的告警,支持动态阈值、告警模板、多种通知方式等 支撑多种时间序列后端服务,好比graphite, opentsdb, prometheus, json document DBs
监测内容:下面是Netdata目前检测的内容(大多数都不须要进行配置,安装后便可开始监测)java
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(负载,充电,电池电压,温度,使用指标,输出指标) 能够监测任意数量的SNMP服务,不过你须要进行配置,还能够对此软件进行扩展,可使用任何语言编写插件,以此来从任何来源收集数据
下面简单记录下Netdata的部署过程(Cetnos下):node
netdata下载地址:http://firehol.org/download/netdata/releases/v1.0.0/ autogen下载地址:http://ftp.gnu.org/gnu/autogen/5.11.8/ [root@monit ~]# yum install zlib-devel gcc make git autoconf autogen guile-devel automake pkgconfig [root@monit ~]# rpm -ivh autogen-5.11.8-5.x86_64.rpm --force //yum安装autogen可能会报错说没有此包,那么就单独下载autogen的rpm包进行安装 [root@monit ~]# tar -jvxf netdata-1.0.0.tar.bz2 [root@monit ~]# cd netdata-1.0.0 [root@monit netdata-1.0.0]# ./netdata-installer.sh --install /data 按照上面命令执行后的提示进行安装,安装后,netdata会自动重启。端口为19999 [root@monit ~]# ps -ef|grep netdata netdata 10976 1 0 17:01 ? 00:00:03 /data/netdata/usr/sbin/netdata netdata 10982 10976 0 17:01 ? 00:00:00 /bin/bash /data/netdata/usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1 netdata 10984 10976 0 17:01 ? 00:00:07 /bin/bash /data/netdata/usr/libexec/netdata/plugins.d/charts.d.plugin 1 root 10986 10976 0 17:01 ? 00:00:04 /data/netdata/usr/libexec/netdata/plugins.d/apps.plugin 1 netdata 29395 10982 0 17:22 ? 00:00:00 sleep 0.998 netdata 29401 10984 0 17:22 ? 00:00:00 sleep 0.2 root 29403 25980 0 17:22 pts/0 00:00:00 grep netdata [root@monit ~]# lsof -i:19999 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME netdata 10976 netdata 3u IPv6 499147 0t0 TCP *:dnp-sec (LISTEN) 启动与关闭 启动:/data/netdata/usr/sbin/netdata 关闭:killall netdata
或者经过下面方式进行安装:mysql
1) 安装准备 Netdata提供了一个很是简便的安装方法,只须要执行下面的命令便可完成安装netdata所依赖的各类东西: # curl -Ss 'https://raw.githubusercontent.com/firehol/netdata-demo-site/master/install-required-packages.sh' >/tmp/kickstart.sh && bash /tmp/kickstart.sh -i netdata 注意,上面的命令是安装基本的部分,不包括mysql / mariadb, postgres, named, hardware sensors and SNMP. 若是要完整安装,则须要执行下面的命令: # curl -Ss 'https://raw.githubusercontent.com/firehol/netdata-demo-site/master/install-required-packages.sh' >/tmp/kickstart.sh && bash /tmp/kickstart.sh -i netdata-all 2) 安装Netdata 安装Netdata也很简单,按照wiki的说明便可: # git clone https://github.com/firehol/netdata.git --depth=1 # cd netdata # ./netdata-installer.sh 注意上面要使用root权限,执行命令后的提示信息也很丰富有趣 安装完后,还能够根据wiki所说的配置开机启动,照作以后执行service netdata start启动服务,能够访问http://localhost:19999/ 看到监控界面。
Netdata的访问,http://localhost:19999 运行动态效果图以下:linux
Netdata backend
Netdata也能够后台服务收集监控指标,多服务器的监控指标汇总到前台展现,或者归档汇总后提供给其余工具如grafana, 以下图:git
Netdata支持以下几个backends:
- graphite;
- opentsdb;
- json document DBs.github
Netdata还提供了3种计算模式:
- as collected;
- average;
- sum or volume。web
具体的能够到netdata wiki查看。利用这种方式,应该也较容易可以折腾出来一个集群监控的解决方案,而且netdata和grafana的界面看起来都很是的酷炫!sql