日志
- 2023-04-15:新增甲骨文自建netdata的Demo。
- 2023-02-10:访客访问netdata时会造成服务器资源挤压——这可能是我的博客网站偶尔访问卡顿的重要原因之一。我使用的VPS是苯苯推荐页面中的
RackNerd-199
,VPS的内存还是差了些 (ฅ´ω`ฅ):
3x vCPU Core
45 GB SSD Cached RAID-10 Storage
3 GB RAM
6500GB Monthly Premium Bandwidth
1Gbps Public Network Port
Full Root Admin Access
1 Dedicated IPv4 Address
KVM / SolusVM Control Panel - Reboot, Reinstall, Manage rDNS, & much more
- 2022-12-19:增加cron事件以控制docker版netdata内存泄露问题。
前言
此文内容目前处于BETA版本
我之前在《Linux基础 目录管理的个人实践》曾经介绍过一款叫Ward的VPS性能监控应用,当时对它的privileged=true
带来的安全性问题有点担忧。近期忽然发现它的Docker应用崩了,所以自己就再找一个同类产品。经杜比ZoniNG
大佬介绍,有一款叫netdata的应用不错,工作界面大致如下:
这是我的网站托管的VPS实时监控情况:https://wardrn2.hwb0307.com。实时观测的过程中,也没有发现netdata对VPS的性能造成明显的挤压。
总体上,netdata是一个比ward更加专业的工具,有以下特点(主要是Google机翻):
- Linux 发行版的一站式部署,以及对 Kubernetes/Docker 基础设施的支持。
- 每秒从底层操作系统和正在运行的应用程序收集数千个指标所需的零配置和维护。
- 预建图表和警报提醒您常见的异常和性能问题,无需手动配置。
- 分布式存储,以简化存储来自任意数量节点的指标数据的成本和复杂性。
- 1% 的 CPU 利用率、几 MB 的 RAM 和最少的磁盘 I/O以在裸机、虚拟机、容器甚至物联网设备上运行监控代理。
- 基于您在节点上运行的硬件和应用程序的无限数量指标的每秒粒度。
- 可互操作的导出器让您可以将 Netdata 的每秒指标与现有的监控堆栈和其他时间序列数据库连接起来。
- 使用强调图表之间关系的 UI/UX 进行视觉异常检测。
- 可定制的仪表板用于查明相关指标、响应事件并帮助您简化工作流程。
- 集中式界面中的分布式指标可帮助用户或团队跟踪分布式节点之间的复杂问题。
目前其Github Repo (GPL-3.0 license)有近60k的Star。Guide教程和文档都相当丰富,足见专业性。作为一个明星应用,netdata也支持docker安装喔!如果你的服务器性能不错,netdata是一个值得选择的实时监控程序。
这是我的甲骨文自建netdata的Demo,大家也可以看一下。还是挺酷的噢!
下面我们看看怎么安装Docker版的netdata吧!
测试环境
不了解docker的小伙伴请先看:《Docker系列 配置Docker全局环境》;《Docker系列 了解Docker Compose的配置文件》。
uname -a # Linux racknerd-74a241 5.4.0-28-generic #32-Ubuntu SMP Wed Apr 22 17:40:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
docker --version # Docker version 20.10.14, build a224086
docker-compose --version # Docker Compose version v2.4.1
此教程在甲骨文免费大鸡里也成功测试:
uname -a # Linux instance-20220712-0742 5.15.0-1011-oracle #15-Ubuntu SMP Fri Jun 10 12:21:49 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
准备工作
工作目录:
# 按需修改
work=~/docker/netdata && mkdir -p $work && cd $work
如有防火墙,请开放端口3962
:
# 按需修改端口号
sudo ufw allow 3962/tcp comment 'netdata' && sudo ufw reload
提前拉取镜像:
docker pull netdata/netdata
映射配置文件
ddns-go & NPM
不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。
在ddns-go或者域名托管商后台解析好域名,比如netdata.example.com
。
Nginx Proxy Manager设置无特殊,类似于下图:
配置yml文件
主要参考: https://learn.netdata.cloud/docs/agent/packaging/docker
version: '3'
services:
netdata:
image: netdata/netdata
container_name: netdata
hostname: 苯苯天眼通 # 起个喜欢的名字
ports:
- 3962:19999 # 按需修改,与上面防火墙开放的端口一致即可
restart: unless-stopped
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
volumes:
- ./netdataconfig/netdata:/etc/netdata:ro # 这个文件夹就是挂载上面的测试文件夹
- netdatalib:/var/lib/netdata
- netdatacache:/var/cache/netdata
- /etc/passwd:/host/etc/passwd:ro
- /etc/group:/host/etc/group:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /etc/os-release:/host/etc/os-release:ro
volumes:
netdatalib:
netdatacache:
上线服务:
cd $work && docker-compose up -d
查看日志:
cd $work && docker-compose logs -f
可能会有一些Error,但不影响正常使用。
使用
登陆https://netdata.example.com
即可查看工作界面:
内存泄露控制
小结
总算安装了一个配置较简单的Docker应用( ̄△ ̄;)
其实,netdata文档还介绍了很多自定义设置,不过我暂时还没有细看。接下来的主要目标是让netdata隐藏一些我不想要的项目(比如网络、防火墙),而不是一股脑将大多数信息都显示出来。
参考
- Guide:https://learn.netdata.cloud/guides
- 隐藏用户(组):https://github.com/netdata/netdata/issues/1250
- Daemon configuration:https://learn.netdata.cloud/docs/agent/daemon/config
- Supported collectors list: https://learn.netdata.cloud/docs/agent/collectors
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍