通过Docker部署一个高颜值的服务器监控

前言

相信很多人都有 VPS、NAS 或者是迷你主机,日常在上面跑一些 Docker 容器、数据库或者是脚本。这类机器一般配置都比较低,所以自然而然的会格外关心机器的 CPU 使用率、内存占用率这些指标。
一直以来我都是登陆到机器上然后使用 free -h 或者 htop 之类的命令进行查看,比较麻烦。
今天找到一个叫 NetData 的很好用监控工具,一个页面展示 CPU、内存、磁盘、网络等实时指标,页面也很漂亮,支持 Docker 部署。

基于 Docker 部署

为了节省内存,我使用的是 Podman,不过 Docker 也是一样,将 podman 替换成 docker 即可。

拉取镜像:

1
podman pull netdata/netdata:v2.10.2

运行容器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
podman run -d --name=netdata \
--privileged \
--pid=host \
--network=host \
-v netdataconfig:/etc/netdata \
-v netdatalib:/var/lib/netdata \
-v netdatacache:/var/cache/netdata \
-v /:/host/root:ro,rslave \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /etc/localtime:/etc/localtime:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /etc/os-release:/host/etc/os-release:ro \
-v /var/log:/host/var/log:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /run/dbus:/run/dbus:ro \
--restart unless-stopped \
--cap-add SYS_PTRACE \
--cap-add SYS_ADMIN \
--security-opt apparmor=unconfined \
netdata/netdata:v2.10.2

因为 podman 默认是 rootless 运行,如果以 rootless 运行的话,很多数据 netdata 采集不到,所以使用了 –privileged 参数。

这样一个轻量级、高颜值的实时系统监控就部署好了。

效果

默认使用 19999 端口进行访问,如果有防火墙的话,记得开放 19999 端口,刷新一下防火墙。

效果图如下:
netdata

部署前后我对比了一下内存占用,大概增加了 100M 的内存占用,内存占用还是非常低的。