在 Linux 上安装 NetData 性能监控工具
NetData 是一个用于系统和应用的分布式实时性能和健康监控工具。它提供了对系统中实时发生的所有事情的全面检测。你可以在高度互动的 Web 仪表板中查看结果。使用 Netdata,你可以清楚地了解现在发生的事情,以及之前系统和应用中发生的事情。你无需成为专家即可在 Linux 系统中部署此工具。NetData 开箱即用,零配置、零依赖。只需安装它然后坐等,之后 NetData 将负责其余部分。
它有自己的内置 Web 服务器,以图形形式显示结果。NetData 非常快速高效,安装后可立即开始分析系统性能。它是用 C 编程语言编写的,所以它非常轻量。它占用的单核 CPU 使用率不到 3%,内存占用 10-15MB。我们可以轻松地在任何现有网页上嵌入图表,并且它还有一个插件 API,以便你可以监控任何应用。
以下是 Linux 系统中 NetData 的监控列表。
- CPU 使用率
- RAM 使用率
- 交换内存使用率
- 内核内存使用率
- 硬盘及其使用率
- 网络接口
- IPtables
- Netfilter
- DDoS 保护
- 进程
- 应用
- NFS 服务器
- Web 服务器 (Apache 和 Nginx)
- 数据库服务器 (MySQL),
- DHCP 服务器
- DNS 服务器
- 电子邮件服务
- 代理服务器
- Tomcat
- PHP
- SNP 设备
- 等等
NetData 是自由开源工具,它支持 Linux、FreeBSD 和 Mac OS。
在 Linux 上安装 NetData
Netdata 可以安装在任何安装了 Bash 的 Linux 发行版上。
最简单的安装 Netdata 的方法是从终端运行以下命令:
$ bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)
这将下载并安装启动和运行 Netdata 所需的一切。
有些用户可能不想在没有研究的情况下将某些东西直接注入到 Bash。如果你不喜欢此方法,可以按照以下步骤在系统上安装它。
在 Arch Linux 上
Arch Linux 默认仓库中提供了最新版本。所以,我们可以使用以下 pacman 命令安装它:
$ sudo pacman -S netdata
在基于 DEB 和基于 RPM 的系统上
在基于 DEB (Ubuntu / Debian)或基于 RPM(RHEL / CentOS / Fedora) 系统的默认仓库没有 NetData。我们需要从它的 Git 仓库手动安装 NetData。
首先安装所需的依赖项:
# Debian / Ubuntu
$ sudo apt-get install zlib1g-dev uuid-dev libuv1-dev liblz4-dev libjudy-dev libssl-dev libmnl-dev gcc make git autoconf autoconf-archive autogen automake pkg-config curl
# Fedora
$ sudo dnf install zlib-devel libuuid-devel libuv-devel lz4-devel Judy-devel openssl-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils
# CentOS / Red Hat Enterprise Linux
$ sudo yum install epel-release
$ sudo yum install autoconf automake curl gcc git libmnl-devel libuuid-devel openssl-devel libuv-devel lz4-devel Judy-devel lm_sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel
# openSUSE
$ sudo zypper install zlib-devel libuuid-devel libuv-devel liblz4-devel judy-devel openssl-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils
安装依赖项后,在基于 DEB 或基于 RPM 的系统上安装 NetData,如下所示。
Git 克隆 NetData 仓库:
$ git clone https://github.com/netdata/netdata.git --depth=100
上面的命令将在当前工作目录中创建一个名为 netdata
的目录。
切换到 netdata
目录:
$ cd netdata/
最后,使用命令安装并启动 NetData:
$ sudo ./netdata-installer.sh
示例输出:
Welcome to netdata!
Nice to see you are giving it a try!
You are about to build and install netdata to your system.
It will be installed at these locations:
- the daemon at /usr/sbin/netdata
- config files at /etc/netdata
- web files at /usr/share/netdata
- plugins at /usr/libexec/netdata
- cache files at /var/cache/netdata
- db files at /var/lib/netdata
- log files at /var/log/netdata
- pid file at /var/run
This installer allows you to change the installation path.
Press Control-C and run the same command with --help for help.
Press ENTER to build and install netdata to your system > ## Press ENTER key
安装完成后,你将在最后看到以下输出:
-------------------------------------------------------------------------------
OK. NetData is installed and it is running (listening to *:19999).
-------------------------------------------------------------------------------
INFO: Command line options changed. -pidfile, -nd and -ch are deprecated.
If you use custom startup scripts, please run netdata -h to see the
corresponding options and update your scripts.
Hit http://localhost:19999/ from your browser.
To stop netdata, just kill it, with:
killall netdata
To start it, just run it:
/usr/sbin/netdata
Enjoy!
Uninstall script generated: ./netdata-uninstaller.sh
安装 NetData
NetData 已安装并启动。
要在其他 Linux 发行版上安装 Netdata,请参阅官方安装说明页面。
在防火墙或者路由器上允许 NetData 的默认端口
如果你的系统在防火墙或者路由器后面,那么必须允许默认端口 19999
以便从任何远程系统访问 NetData 的 web 界面。
在 Ubuntu/Debian 中
$ sudo ufw allow 19999
在 CentOS/RHEL/Fedora 中
$ sudo firewall-cmd --permanent --add-port=19999/tcp
$ sudo firewall-cmd --reload
启动/停止 NetData
要在使用 Systemd 的系统上启用和启动 Netdata 服务,请运行:
$ sudo systemctl enable netdata
$ sudo systemctl start netdata
要停止:
$ sudo systemctl stop netdata
要在使用 Init 的系统上启用和启动 Netdata 服务,请运行:
$ sudo service netdata start
$ sudo chkconfig netdata on
要停止:
$ sudo service netdata stop
通过 Web 浏览器访问 NetData
打开 Web 浏览器,然后打开 http://127.0.0.1:19999
或者 http://localhost:19999/
或者 http://ip-address:19999
。你应该看到如下页面。
Netdata 仪表板
在仪表板中,你可以找到 Linux 系统的完整统计信息。向下滚动以查看每个部分。
你可以随时打开 http://localhost:19999/netdata.conf
来下载和/或查看 NetData 默认配置文件。
Netdata 配置文件
更新 NetData
在 Arch Linux 中,只需运行以下命令即可更新 NetData。如果仓库中提供了更新版本,那么就会自动安装该版本。
$ sudo pacman -Syyu
在基于 DEB 或 RPM 的系统中,只需进入已克隆它的目录(此例中是 netdata
)。
$ cd netdata
拉取最新更新:
$ git pull
然后,使用命令重新构建并更新它:
$ sudo ./netdata-installer.sh
卸载 NetData
进入克隆 NetData 的文件夹。
$ cd netdata
然后,使用命令卸载它:
$ sudo ./netdata-uninstaller.sh --force
在 Arch Linux 中,使用以下命令卸载它。
$ sudo pacman -Rns netdata
资源
###############################################################################################################################################
Netdata介绍
Netdata是一款Linux系统性能实时监控工具。是一个高度优化的Linux守护进程,可以对Linux系统、应用程序(包括但不限于Web服务器,数据库等)、SNMP服务等提供实时的性能监控。
Netdata用可视化的手段,将其被监控的信息展现出来,以便你清楚的了解到你的系统、程序、应用的实时运行状态,而且还可以与Prometheus,Graphite,OpenTSDB,Kafka,Grafana等相集成。
Netdata是免费的开源软件,目前可在Linux,FreeBSD和macOS以及从它们衍生的其他系统(例如Kubernetes和Docker)上运行。
Netdata仓库地址:https://github.com/netdata/ne...
Netdata特性
- 1、友好、美观的可视化界面
- 2、可自定义的控制界面
- 3、安装快速且高效
- 4、配置简单,甚至可零配置
- 5、零依赖
- 6、可扩展,自带插件API
- 7、支持的系统平台广
Netdata是如何工作的?
Netdata是一个高效,高度模块化的指标管理引擎。它的无锁设计使其非常适合度量标准上的并发操作。
上图的各个组件的作用描述,有兴趣的可以参考官方的说明,这里不再赘述了。
Netdata可监控什么?
Netdata可以收集来自200多种流行服务和应用程序的指标,以及数十种与系统相关的指标,例如CPU,内存,磁盘,文件系统,网络等。我们将这些收集器称为,它们由插件管理,该插件支持多种编程语言,包括Go和Python。
流行的收集器包括Nginx,Apache,MySQL,statsd,cgroups(容器,Docker,Kubernetes,LXC等),Traefik,Web服务器access.log文件等。
详细的支持列表请参考下面的说明:https://github.com/netdata/ne...
Netdata安装
1、直接安装
首先需要更新升级系统内核和一些依赖库文件
[root@CentOS7-1 ~]# yum update -y
如果没有操作,你在直接安装时会出现下面的提示,输入y让系统自动更新也是可以的。
执行完更新操作后,直接执行下面的命令进行安装Netdata。
[root@CentOS7-1 ~]# bash <(curl -Ss https://my-netdata.io/kickstart.sh)
然后,程序会自动执行安装动作,去下载一系列的包进行安装,中间需要确认操作一次,如下:
可能会由于访问国外的资源,和根据你的网络关系,等待的时间或长或短。
一些关键的信息,从安装过程中也是可以看的出来的,如上图。
从上图信息可以看出访问方法,启动、停止服务的命令。
安装完成如下图
显示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
2、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
安装完成后,就可以通过下面的方式进行访问了。
界面展示
1、总体数据界面
2、内存
3、CPU
4、磁盘
5、网络
6、应用
7、网络接口
8、数据同步功能
Netdata仪表板上的图表彼此同步,没有主图表。可以随时平移或缩放任何图表,其他所有图表也将随之出现。
通过使用鼠标拖动可以平移图表。当鼠标指针悬停在图表上时,可以使用SHIFT+ 放大/缩小mouse wheel图表。
Netdata强大之处
之所以如此强大,是因为它与各类应用的配合与支持,直接上图说明:
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/st...
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界面右上角看到下拉菜单(主机名),点击即可看到相关的监控信息了。
如果需要自定义控制面板,可以参考官方的文档,去修改xml文件。 原文地址:https://docs.netdata.cloud/we...