对于维护、管理Linux系统来讲,它的性能监控很是重要,特别是实时监控数据,这个数据有利于咱们判断服务器的负载压力,及时调整资源调配,也有助于更好的服务于业务。因此,今天民工哥给你们安利一款 Linux 性能实时监测工具:Netdata。前端
先搞张效果图你们先look look python
Netdata是一款Linux系统性能实时监控工具。是一个高度优化的Linux守护进程,能够对Linux系统、应用程序(包括但不限于Web服务器,数据库等)、SNMP服务等提供实时的性能监控。git
Netdata用可视化的手段,将其被监控的信息展示出来,以便你清楚的了解到你的系统、程序、应用的实时运行状态,并且还能够与Prometheus,Graphite,OpenTSDB,Kafka,Grafana等相集成。github
Netdata是免费的开源软件,目前可在Linux,FreeBSD和macOS以及从它们衍生的其余系统(例如Kubernetes和Docker)上运行。web
Netdata仓库地址:_github.com/netdata/ne...docker
一、友好、美观的可视化界面 二、可自定义的控制界面 三、安装快速且高效 四、配置简单,甚至可零配置 五、零依赖 六、可扩展,自带插件API 七、支持的系统平台广数据库
Netdata是一个高效,高度模块化的指标管理引擎。它的无锁设计使其很是适合度量标准上的并发操做。 编程
上图的各个组件的做用描述,有兴趣的能够参考官方的说明,这里再也不赘述了。vim
Netdata能够收集来自200多种流行服务和应用程序的指标,以及数十种与系统相关的指标,例如CPU,内存,磁盘,文件系统,网络等。咱们将这些收集器称为,它们由插件管理,该插件支持多种编程语言,包括Go和Python。api
流行的收集器包括Nginx,Apache,MySQL,statsd,cgroups(容器,Docker,Kubernetes,LXC等),Traefik,Web服务器access.log文件等。
详细的支持列表请参考下面的说明:_github.com/netdata/ne...
Netdata安装 一、直接安装
首先须要更新升级系统内核和一些依赖库文件
[root@CentOS7-1 ~]# yum update -y
复制代码
若是没有操做,你在直接安装时会出现下面的提示,输入y让系统自动更新也是能够的。
执行完更新操做后,直接执行下面的命令进行安装Netdata。
[root@CentOS7-1 ~]# bash <(curl -Ss https://my-netdata.io/kicksta...
复制代码
而后,程序会自动执行安装动做,去下载一系列的包进行安装,中间须要确认操做一次,以下:
可能会因为访问国外的资源,和根据你的网络关系,等待的时间或长或短。
一些关键的信息,从安装过程当中也是能够看的出来的,如上图。
从上图信息能够看出访问方法,启动、中止服务的命令。
安装完成以下图
显示Netdata已经启动完成,咱们可使用命令来查看一下是否启动完成?
[root@CentOS7-1 ~]# lsof -i :19999
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
netdata 14787 netdata 4u IPv4 27995 0t0 TCP *:dnp-sec (LISTEN)
netdata 14787 netdata 5u IPv6 27996 0t0 TCP *:dnp-sec (LISTEN)
[root@CentOS7-1 ~]# ps -ef|grep netdata
netdata 14787 1 2 23:24 ? 00:00:06 /usr/sbin/netdata -P /var/run/netdata/netdata.pid -D
netdata 14800 14787 0 23:24 ? 00:00:00 /usr/sbin/netdata --special-spawn-server
netdata 14954 14787 0 23:24 ? 00:00:01 bash /usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
netdata 14974 14787 0 23:24 ? 00:00:02 /usr/bin/python /usr/libexec/netdata/plugins.d/python.d.plugin 1
root 14975 14787 1 23:24 ? 00:00:04 /usr/libexec/netdata/plugins.d/ebpf.plugin 1
netdata 14976 14787 0 23:24 ? 00:00:01 /usr/libexec/netdata/plugins.d/go.d.plugin 1
netdata 14977 14787 1 23:24 ? 00:00:05 /usr/libexec/netdata/plugins.d/apps.plugin 1
root 15277 1149 0 23:29 pts/0 00:00:00 grep --color=auto netdata
复制代码
二、Docker方式安装
首先准备Docker环境,而后直接执行下面的命令便可完成安装操做。
docker run -d --name=netdata
-p 19999:19999
-v netdatalib:/var/lib/netdata
-v netdatacache:/var/cache/netdata
-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 /etc/os-release:/host/etc/os-release:ro
--restart unless-stopped
--cap-add SYS_PTRACE
--security-opt apparmor=unconfined
netdata/netdata
复制代码
安装完成后,就能够经过下面的方式进行访问了。
一、整体数据界面
二、内存
三、CPU
四、磁盘
五、网络
六、应用
七、网络接口
八、数据同步功能
Netdata仪表板上的图表彼此同步,没有主图表。能够随时平移或缩听任何图表,其余全部图表也将随之出现。
经过使用鼠标拖动能够平移图表。当鼠标指针悬停在图表上时,可使用SHIFT+ 放大/缩小mouse wheel图表。
之因此如此强大,是由于它与各种应用的配合与支持,直接上图说明:
上面展现的只是单一服务器的监控数据,并且netdata有一个缺点就是全部被监控的服务器都须要安装agent,因此,这里就是出现一个问题,就是如何将监控数据统一管理与展现?
netdata官方并没设计主从模式,像zabbix那样,能够一台作为主服务器,其它的作为从服务器,将数据收集到主服务器统一处理与展现,可是,官方也给出了相关的解决方案。
一、netdata.cloud 使用自带的 netdata.cloud,也就是每个安装节点WEB界面右上角的signin。只要咱们使用同一个帐号登陆netdata.cloud(须要kexue上网),以后各个节点之间就能够轻松经过一个帐号控制。每一个节点开启19999端口与容许管理员查看数据,而后控制中心经过前端从各节点的端口收集的数据,传给netdata.cloud记录并展现。
这是一种被动的集群监控,本质上仍是独立的机器,且不方便作自定义的集群dashboard。
二、stream 插件 因此,为了解决上面这种方案的弊端,netdata又提供了另外一种方法,将各节点的数据集中汇总到一台(主)服务器,数据处理也在这台服务器上,其它节点无需开放19999端口。 算是一种主动传输模式,把收集到的数据发送到主服务器上,这样在主服务器上能够进行自定义的dashboard开发。
缺点:主服务器流量、负载都会比较大(在集群服务器数量较多的状况下),若是主服务器负载太高,咱们能够经过设置节点服务器的数据收集周期(update every)来解决这个问题。
不少文章都只是介绍了其安装与一些界面的展现结果,并无提供集群监控这一解决方案与其具体的配置,民工哥也是查了不少的资料,如今将其配置过程分享给你们。
对于streaming的配置不熟悉的能够参考官方的文档说明:docs.netdata.cloud/st...
一、节点服务器配置
[root@CentOS7-1 ~]# cd /etc/netdata/
[root@CentOS7-1 netdata]# vim netdata.conf
#修改配置以下
[global]
memory mode = none
hostname = [建议修改为你的主机名]
[web]
mode = none
复制代码
而后,在/etc/netdata/目录下新建一个文件stream.conf,而后将其配置为以下:
[stream]
enabled = yes
destination = MASTER_SERVER_IP:PORT
api key = xxxx-xxxx-xxxx-xxxx-xxxx
#参数说明以下
destination = MASTER_SERVER_IP:PORT 主服务器地址与端口
api key 必需为uuid的字符串,Linux系统中可使用下面的命令自动生成。
[root@CentOS7-1 netdata]# uuidgen
480fdc8c-d1ac-4d6f-aa26-128eba744089
复制代码
配置完成以后,须要重启节点的netdata服务便可完成整个配置。
[root@CentOS7-1 ~]# systemctl restart netdata
复制代码
二、主服务器配置
在netdata.conf的同一目录下新建stream.conf并写入以下配置:
[API_KEY]/[480fdc8c-d1ac-4d6f-aa26-128eba744089]
enabled = yes
default history = 3600
default memory mode = save
health enabled by default = auto
allow from = *
[API_KEY]
enabled = yes
default history = 3600
default memory mode = save
health enabled by default = auto
allow from = *
#其中,API_KEY对应节点服务器的api key(字符串),allow from能够设置数据流的容许来源以保证安全。
#若是有多个节点服务器,则一块儿写在stream.conf里面
复制代码
完成配置后重启netdata:
systemctl restart netdata
复制代码
全部的配置完成后,就能够在主服务器的WEB界面右上角看到下拉菜单(主机名),点击便可看到相关的监控信息了。
若是须要自定义控制面板,能够参考官方的文档,去修改xml文件。 原文地址:docs.netdata.cloud/we...
到这里,这款实用、酷炫的服务器性能实时监控工具就介绍完了,原创不易,若有帮助,请点在赞、转发分享支持一下民工哥,大家支持是我最大的创做动力。