Netdata feature
从Github上能够看到netdata的主要功能,主要有几点(详细的可查看github上的说明):
- interactive bootstrap dashboards, 酷炫(主要是dark主题,light主题就没这感觉了)
- 匪夷所思的快。。。所有请求每个metreic都在0.5ms内响应,即便是一台烂机器
- 非常高效,每秒采集数千个指标,但仅占cpu单核1%,少量MB的内存以及完全没有磁盘IO
- 提供复杂的、各种类型的告警,支持动态阈值、告警模板、多种通知方式等
- 可扩展,使用自带的插件API(比如bash, python, perl, node.js, java, go, ruby等)来收集任何可以衡量的数据
- 零配置:安装后netdata会自动的监测一切
- 零依赖:netdata有自己的web server, 提供静态web文件和web API
- 零维护:只管跑上!
- 支撑多种时间序列后端服务,比如graphite, opentsdb, prometheus, json document DBs
Netdata监控项也很多,比如CPU, 内存,磁盘,网络这些基础的之外,还可以有IPC, netfilter/iptables Linux firewall, fping, Processes, NFS, Network QoS
, Applications, Apache web server, Nginx, Tomcat, mysql, postgres, redis, mongodb, elasticsearch, SNMP devices等等。
Netdata install
Netdata的安装非常简单,支持几乎所有的Linux版本。刚好我还有一个用于来科学上网的EC2机器是Unbutu系统,果断登上去尝试。
安装准备
Netdata提供了一个非常简便的安装方法,我的Unbutu系统只需要执行下面的命令即可完成安装netdata所依赖的各种东西:
curl <span class="hljs-attribute">-Ss</span> <span class="hljs-string">'https://raw.githubusercontent.com/firehol/netdata-demo-site/master/install-required-packages.sh'</span> <span class="hljs-subst">></span>/tmp/kickstart<span class="hljs-built_in">.</span>sh <span class="hljs-subst">&&</span> bash /tmp/kickstart<span class="hljs-built_in">.</span>sh <span class="hljs-attribute">-i</span> netdata
- 1
注意,上面的命令是安装基本的部分,不包括mysql / mariadb, postgres, named, hardware sensors and SNMP
. 如果要完整安装,则需要执行下面的命令:
curl <span class="hljs-attribute">-Ss</span> <span class="hljs-string">'https://raw.githubusercontent.com/firehol/netdata-demo-site/master/install-required-packages.sh'</span> <span class="hljs-subst">></span>/tmp/kickstart<span class="hljs-built_in">.</span>sh <span class="hljs-subst">&&</span> bash /tmp/kickstart<span class="hljs-built_in">.</span>sh <span class="hljs-attribute">-i</span> netdata<span class="hljs-attribute">-all</span>
- 1
安装Netdata
安装Netdata也很简单,按照wiki的说明即可:
<span class="hljs-preprocessor"># download it - the directory 'netdata' will be created</span>
git clone https:<span class="hljs-comment">//github.com/firehol/netdata.git --depth=1</span>
cd netdata
<span class="hljs-preprocessor"># run script with root privileges to build, install, start netdata</span>
./netdata-installer.sh
注意上面要使用root权限,执行命令后的提示信息也很丰富有趣,比如刚开头是这样的:
$ sudo ./netdata-installer.sh
^
|.-. .-. .-. .-. . netdata
| <span class="hljs-string">'-'</span> <span class="hljs-string">'-'</span> <span class="hljs-string">'-'</span> <span class="hljs-string">'-'</span> real-<span class="hljs-built_in">time</span> performance monitoring, done <span class="hljs-constant">right</span>!
+<span class="hljs-comment">----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+---></span>
You are about <span class="hljs-built_in">to</span> build <span class="hljs-operator">and</span> install netdata <span class="hljs-built_in">to</span> your <span class="hljs-keyword">system</span>.
It will be installed <span class="hljs-keyword">at</span> these locations:
- <span class="hljs-operator">the</span> daemon <span class="hljs-keyword">at</span> /usr/sbin/netdata
- config <span class="hljs-built_in">files</span> <span class="hljs-operator">in</span> /etc/netdata
- web <span class="hljs-built_in">files</span> <span class="hljs-operator">in</span> /usr/share/netdata
- plugins <span class="hljs-operator">in</span> /usr/libexec/netdata
- cache <span class="hljs-built_in">files</span> <span class="hljs-operator">in</span> /var/cache/netdata
- db <span class="hljs-built_in">files</span> <span class="hljs-operator">in</span> /var/lib/netdata
- <span class="hljs-built_in">log</span> <span class="hljs-built_in">files</span> <span class="hljs-operator">in</span> /var/<span class="hljs-built_in">log</span>/netdata
- pid <span class="hljs-built_in">file</span> <span class="hljs-keyword">at</span> /var/run/netdata.pid
- logrotate <span class="hljs-built_in">file</span> <span class="hljs-keyword">at</span> /etc/logrotate.d/netdata
This installer allows you <span class="hljs-built_in">to</span> change <span class="hljs-operator">the</span> installation path.
Press Control-C <span class="hljs-operator">and</span> run <span class="hljs-operator">the</span> same <span class="hljs-command"><span class="hljs-keyword">command</span> <span class="hljs-title">with</span> --<span class="hljs-title">help</span> <span class="hljs-title">for</span> <span class="hljs-title">help</span>.</span>
安装结束的最后几行是这样的:
Uninstall script generated: ./netdata-uninstaller.sh
<span class="hljs-operator"><span class="hljs-keyword">Update</span> script generated : ./netdata-updater.sh
netdata-updater.sh can <span class="hljs-keyword">work</span> <span class="hljs-keyword">from</span> cron. It will <span class="hljs-keyword">trigger</span> an email <span class="hljs-keyword">from</span> cron
<span class="hljs-keyword">only</span> <span class="hljs-keyword">if</span> it fails (it does <span class="hljs-keyword">not</span> print anything <span class="hljs-keyword">if</span> it can <span class="hljs-keyword">update</span> netdata).
Run this <span class="hljs-keyword">to</span> automatically <span class="hljs-keyword">check</span> <span class="hljs-keyword">and</span> install netdata updates once per <span class="hljs-keyword">day</span>:
ln -s /home/ubuntu/netdata/netdata-updater.sh /etc/cron.daily/netdata-updater.sh
--- We <span class="hljs-keyword">are</span> done! ---
^
|.-. .-. .-. .-. .-. . netdata .-. .-
| <span class="hljs-string">'-'</span> <span class="hljs-string">'-'</span> <span class="hljs-string">'-'</span> <span class="hljs-string">'-'</span> <span class="hljs-string">'-'</span> <span class="hljs-keyword">is</span> installed <span class="hljs-keyword">and</span> running now! -<span class="hljs-string">' '</span>-<span class="hljs-string">'
+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->
enjoy real-time performance and health monitoring...</span></span>
安装完后,还可以根据wiki所说的配置开机启动,照做之后执行service netdata start
启动服务,可以访问http://localhost:19999/ 看到监控界面。随后去AWS控制台放通19999端口,我的EC2机器的监控系统就大功告成啦!
由此看出,Netdata的安装非常之简单,只有几行命令,而且根本无需配置。
监控页面
再来看看监控页面,除了配色酷炫,监控项种类繁多之外,页面元素的实时响应、告警设置等都极具亮点。为了更好的展示页面,在这里会盗用github上netdata官方的几个动态图来show一下.
System overview
Disks
Network interfaces
Alarms
Netdata backend
Netdata也可以后台服务收集监控指标,多服务器的监控指标汇总到前台展示,或者归档汇总后提供给其他工具如grafana, 如下图:
Netdata支持如下几个backends:
- 1) graphite;
- 2) opentsdb;
- 3) json document DBs.
并能够提供3种计算模式:
- 1) as collected;
- 2)average;
- 3) sum or volume。
具体的可以到netdata wiki查看。利用这种方式,应该也较容易能够折腾出来一个集群监控的解决方案,并且netdata和grafana的界面看起来都非常的酷炫(又一次印证了一个观点:大屏监控系统就得是暗色系!)
看到roadmap里面提到:monitor more applications (hadoop and friends, postgres, etc). 也希望hadoop这方面的监控能早日实现,又可以多一个可选方案啦~
卸载
# 找到卸载脚本位置(我的在/usr/src/netdata.git)
whereis netdata.git
# 进入那个位置
cd /usr/src/netdata.git
# 开始卸载
yes | sudo ./netdata-uninstaller.sh --force