开源运维监控框架Netdata——实时监控系统性能

开源运维监控框架Netdata——实时监控系统性能

作为一个Linux的SA,很有必要掌握一个专门的系统监控工具,以便能随时了解系统资源的占用情况。下面就介绍下一款Linux性能实时监测工具-Netdata,它是Linux系统实时性能监测工具,以web的可视化方式展示系统及应用程序的实时运行状态(包括cpu、内存、硬盘输入/输出、网络等linux性能的数据)。Netdata的web前端响应很快,而且不需要Flash插件。 UI很整洁,保持着 Netdata 应有的特性。第一眼看上去,你能够看到很多图表,幸运的是绝大多数常用的图表数据(像 CPU,RAM,网络和硬盘)都在顶部。如果你想深入了解图形化数据,你只需要下滑滚动条,或者点击在右边菜单的项目。通过每个图表的右下方的按钮,Netdata还能控制图表的显示,重置,缩放。Netdata文档地址:https://github.com/firehol/netdata/wiki

Netdata用可视化的手段,将被监测者最细微的细节,展现了出来。这样便可以清晰地了解linux系统和应用程序此时的状况。

服务器性能监控 开源 服务器实时监控源码_服务器

特点

界面优美:使用 Bootstrap 开发框架

界面自定义:可以使用简单的 HTML 语言定制界面

高效快速:程序核心使用 C语言编写,效率高

零配置:默认配置足够使用,安装完成就可以使用

零依赖:它的静态网络文件和网络接口拥有自己的网络服务器

可扩展:用它自身的插件 API,可以检测任何可以衡量的数据

可嵌入:可以在任何 Linux 内核可以运行的地方使用

安装

netdata项目地址:https://github.com/ktsaou/netdata

Linux手动安装(本次使用CentOS7系统)

一键安装

官方提供一键安装程序,使用于任何Linux系统

bash

服务器性能监控 开源 服务器实时监控源码_服务器性能监控 开源_02

程序会自动执行安装动作,去下载一系列的包进行安装,中间需要需要你按回车以进行下一步,可能会由于访问国外的资源,和根据你的网络关系,等待的时间或长或短。

安装成功!

服务器性能监控 开源 服务器实时监控源码_服务器性能监控 开源_03

下载源码/安装

环境准备

#Debian/Ubuntu

apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make git autoconf autoconf-archive autogen automake pkg-config curl

#Fedora

dnf install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils

#CentOS/Red Hat Enterprise Linux

yum install autoconf automake curl gcc git libmnl-devel libuuid-devel lm-sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel

安装

git clone https://github.com/ktsaou/netdata.git

cd netdata

./netdata-installer.sh

指定安装目录

./netdata-installer.sh --install /opt

ERROR

可能出现configure: error: libuv required but not found. Try installing 'libuv1-dev' or 'libuv-devel'.错误

解决办法:

[[email protected] netdata]# yum search libuv-devel

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

======================================== N/S matched: libuv-devel =========================================

libuv-devel.x86_64 : Development libraries for libuv

Name and summary matches only, use "search all" for everything.

[[email protected] netdata]# yum -y install libuv-devel.x86_64

重新安装即可

开机自启动

安装完成后,在netdata/system目录中,包含有netdata的启动脚本和配置文件。

方法1:systemd

如果服务运行,先kill掉

killall netdata

cp system/netdata.service /etc/systemd/system/

systemctl daemon-reload

systemctl enable netdata

systemctl start netdata

方法2:init.d

#For CentOS/Red Hat

cp system/netdata-init-d /etc/init.d/netdata

chmod +x /etc/init.d/netdata

chkconfig --add netdata

chkconfig netdata on

#For Ubuntu

cp system/netdata-init-d /etc/init.d/netdata

chmod +x /etc/init.d/netdata

upload-rc.d netdata defaults

使用&&卸载

福昕PDF阅读器默认端口19999,可能会造成无法访问,卸载或修改netdata默认端口即可解决

本机访问:http://localhost:19999

访问配置文件:http://localhost:19999

完成安装后,netdata/目录下会生成卸载脚本

cd netdata

./netdata-uninstaller.sh -force

Netdata的访问,http://localhost:19999 运行动态效果图如下:

netdata有一下几个常用命令:

# 停止

systemctl stop netdata

# 启动

systemctl start netdata

# 重启

systemctl restart netdata

# 开机启动

systemctl enable netdata

#卸载netda:

sudo bash /usr/libexec/netdata-uninstaller.sh

Netdata集群管理方案

上面展示的只是单一服务器的监控数据,而且netdata有一个缺点就是所有被监控的服务器都需要安装agent,所以,这里就是出现一个问题,就是如何将监控数据统一管理与展示?

netdata官方并没设计主从模式,像zabbix那样,可以一台做为主服务器,其它的做为从服务器,将数据收集到主服务器统一处理与展示,但是,官方也给出了相关的解决方案。

1、netdata.cloud

使用自带的 netdata.cloud,也就是每一个安装节点WEB界面右上角的signin。只要我们使用同一个账号登录netdata.cloud(需要kexue上网),之后各个节点之间就可以轻松通过一个账号控制。每个节点开启19999端口与允许管理员查看数据,然后控制中心通过前端从各节点的端口收集的数据,传给netdata.cloud记录并展示。

这是一种被动的集群监控,本质上还是独立的机器,且不方便做自定义的集群dashboard。

2、stream 插件

所以,为了解决上面这种方案的弊端,netdata又提供了另一种方法,将各节点的数据集中汇总到一台(主)服务器,数据处理也在这台服务器上,其它节点无需开放19999端口。 算是一种主动传输模式,把收集到的数据发送到主服务器上,这样在主服务器上可以进行自定义的dashboard开发。

缺点:主服务器流量、负载都会比较大(在集群服务器数量较多的情况下),如果主服务器负载过高,我们可以通过设置节点服务器的数据收集周期(update every)来解决这个问题。

Netdata集群监控配置

很多文章都只是介绍了其安装与一些界面的展示结果,并没有提供集群监控这一解决方案与其具体的配置,民工哥也是查了很多的资料,现在将其配置过程分享给大家。

对于streaming的配置不熟悉的可以参考官方的文档说明:https://docs.netdata.cloud/streaming/

1、节点服务器配置

[[email protected] ~]# cd /etc/netdata/

[[email protected] 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系统中可以使用下面的命令自动生成。

[[email protected] netdata]# uuidgen

480fdc8c-d1ac-4d6f-aa26-128eba744089

配置完成之后,需要重启节点的netdata服务即可完成整个配置。

[[email protected] ~]# systemctl restart netdata

2、主服务器配置

在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界面右上角看到下拉菜单(主机名),点击即可看到相关的监控信息了。