NetData 是一个用于系统和应用的分布式实时性能和健康监控工具。它提供了对系统中实时发生的所有事情的全面检测。你可以在高度互动的 Web 仪表板中查看结果。使用 Netdata,你可以清楚地了解现在发生的事情,以及之前系统和应用中发生的事情。你无需成为专家即可在 Linux 系统中部署此工具。NetData 开箱即用,零配置、零依赖。只需安装它然后坐等,之后 NetData 将负责其余部分。
Netdata是一款秒级数据收集与可视化呈现的Linux服务器性能监测工具,对优化应用性能,保证服务器健康运行有着极为重要的作用,它可以监控服务器的健康运行参数及状态,包括CPU,内存,网络,磁盘等常用的监控指标,以及自己配置扩展监控项,如,redis, tomcat, mysql, nginx, elasticsearch等。
它有自己的内置 Web 服务器,以图形形式显示结果。NetData 非常快速高效,安装后可立即开始分析系统性能。它是用 C 编程语言编写的,所以它非常轻量。它占用的单核 CPU 使用率不到 3%,内存占用 10-15MB。我们可以轻松地在任何现有网页上嵌入图表,并且它还有一个插件 API,以便你可以监控任何应用。
netdata一些特性
linteractive bootstrap dashboards, 酷炫
l所有请求每个metreic都在0.5ms内响应,即便是一台烂机器
l非常高效,每秒采集数千个指标,但仅占cpu单核1%,少量MB的内存以及完全没有磁盘IO
l提供复杂的、各种类型的告警,支持动态阈值、告警模板、多种通知方式等
l可扩展,使用自带的插件API(比如bash, python, perl, node.js, java, go, ruby等)来收集任何可以衡量的数据
l零配置:安装后netdata会自动的监测一切
l零依赖:netdata有自己的web server, 提供静态web文件和web API 零维护:只管跑上!
l支撑多种时间序列后端服务,比如graphite, opentsdb, prometheus, json document DBs
netdata简易安装流程(centos为例)
1.下载netdata代码,执行以下命令
git clone https://github.com/firehol/netdata.git
2.安装netdata所需系统依赖库
yum install autoconf automake curl gcc git libmnl-devel libuuid-devel lm_sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel libuv-devel
3.进入netdata代码目录,执行安装及编译
cd netdata && ./netdata-installer.sh
4.netdata启动及配置(开机启动)
cp system/netdata-init-d /etc/init.d/netdata
chmod +x /etc/init.d/netdata
chkconfig --add netdata
systemctl restart netdata
至此,你已经在服务器节点完成netdata的安装,然后在浏览器直接打开:
http://xx.xx.oo.oo:19999/ 即可看到上面的截图页面效果。
当然,以上是单机的配置,如果你想监控集群里的服务节点,就得集群安装(即在每个服务节点完整安装netdata,然后通过修改配置即可)
netdata集群的方式:Netdata本身不存在主从服务,搭建集群需要在每一个节点上完整部署Netdata,流数据汇总到一台主服务器上。数据处理全部在主服务器上进行,各个节点服务器不打开19999端口供查看,只是把收集到的数据发送到主服务器上,官网链接:https://docs.netdata.cloud/streaming/
netdata主节点配置
netdata.conf配置修改(/etc/netdata/netdata.conf)
[global]
hostname = master
新增stream.conf(/etc/netdata/stream.conf)
配置示例:
api key 是uuid生成的。
完成以上修改后,重启netdata服务。
netdata从节点配置
1.修改netdata.conf(/etc/netdata/netdata.conf)
[global]
memory mode = none
hostname = slave-10 [web]
mode = none
[health]
enabled = no
关闭web,增加主机名。
2.新增 stream.conf(/etc/netdata/stream.conf )
[stream]
enabled = yes
destination = 10.10.10.10:19999 # 主netdata机器ip+端口
api key = b25a8036-6b4d-4108-b0bd-96937720f303 # uuid(uuidgen生成),提供给主节点识别
完成以上配置,重启服务即可
刷新主服务器,可以在左上角看到效果
官方链接:Java Spring Boot 2 application monitoring with Netdata
简单的翻译如下:
使用Netdata监视Java Spring Boot 2应用程序,该模块根据配置监视一个或多个Java Spring-boot 2应用程序。
Netdata可用于监视运行中的Java Spring Boot 2应用程序,这些应用程序通过使用Spring Boot库中包含的Spring Boot Actuator公开指标。
默认情况下,Springboot2模块会查找以下两个公开链接:
http//localhost:8080/actuator/prometheus
http://127.0.0.1:8080/actuator/prometheus
来检测Spring Boot应用程序。
Springboot监控图表如下
l请求中的响应代码 ()
l线程中的线程数
l堆内存使用情况概述(以字节为单位)
l堆内存使用率Eden使用空间(以字节为单位)
l堆内存使用Survivor空间(以字节为单位)
l 堆内存使用Old空间(以字节为单位)
l Uptime 正常运行时间(以秒为单位)
在需要被监控的springboot2项目pom上增加如下图所示的依赖
org.springframework.boot
spring-boot-starter-actuator
compile
io.micrometer
micrometer-registry-prometheus
1.6.3
springboot的application.proerties配置修改
部署了springboot2应用的服务器节点上的netdata配置修改
进入目录:/etc/netdata,执行以下命令(确保按照以下命令执行,否则可能不成功)
sudo ./edit-config go.d/springboot2.conf
# [ JOBS ]
jobs:
- name: local
url: http://localhost:12000/actuator/prometheus
这里区分local与远程,只要把ip放到这里即可,因为我们服务器环境,所有重要的服务都安装漏netdata,只需要去nacos看看每个服务器上的springboot进程有哪些,就逐一填入这里即可;
到此,完成了以上步骤,你如果刷新netdata的监控页面或者重启netdata服务,其实还无法看到netdata监控springboot的监控图表出现,因为还缺少最后一步,启动springboot2监控:
cd /usr/libexec/netdata/plugins.d/
sudo -u netdata -s
./go.d.plugin -d -m springboot2
在这里,我简单介绍了netdata服务器监控软件的安装、单机监控以及集群服务监控的方式,同时,也根据实际工作中的经历,给大家介绍了在netdata里如何监控springboot2的配置。在此,我相信应该没其他人完整详细说过,因为这是我自己工作实际中摸索出来的,经历不少挫折的!