我是靠谱客的博主 如意哈密瓜,最近开发中收集的这篇文章主要介绍开源运维监控框架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 <(curl -Ss https://my-netdata.io/kickstart.sh)

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

安装成功!
在这里插入图片描述

下载源码/安装

环境准备

#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'.错误
解决办法:

[root@izt4nd 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.
[root@izt4nd 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、节点服务器配置

[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

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

最后

以上就是如意哈密瓜为你收集整理的开源运维监控框架Netdata——实时监控系统性能的全部内容,希望文章能够帮你解决开源运维监控框架Netdata——实时监控系统性能所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部