转自我的个人博客https://blognas.hwb0307.com。欢迎关注!
前言
此文内容目前处于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以更好地实时监控自己服务器的性能。
下面我们看看怎么安装Docker版的netdata吧!
测试环境
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
准备工作
工作目录:
# 按需修改
work=~/docker/netdata && mkdir -p $work && cd $work
如有防火墙,请开放端口3962
:
# 按需修改端口号
sudo ufw allow 3962/tcp comment 'netdata' && sudo ufw reload
提前拉取镜像:
docker pull netdata/netdata
映射配置文件
获取测试目录/etc/netdata
:这个目录用于个性化设置,有大用,大家不要忽略这一步
cd $work
mkdir netdataconfig
docker run -d --name netdata_tmp netdata/netdata
docker cp netdata_tmp:/etc/netdata netdataconfig/
docker rm -f netdata_tmp
编辑配置文件:
netdata.conf其实功能特别多。以后我了解深些再介绍一个最佳实践。更多默认配置可见这里。
sudo vim $work/netdataconfig/netdata/netdata.conf
加入以下内容:
[plugin:apps]
update every = 1
command options = no-users no-groups
[plugin:proc:/proc/net/dev:docker0]
enabled = no
按:wq
保存并退出。
plugin:apps
的设置是为了隐藏users和groups的性能汇报,否则它将向直接公开users ID,这可能会带来安全性问题。
plugin:proc:/proc/net/dev:docker0
则是为了隐藏dokcer的相关信息(没有生效?)。
更多的设置敬请关注更新吧!
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
本文使用 文章同步助手 同步