如何使用Netdata部署高性能的服务器监控平台

简介

Netdata 是一个开源的、实时的性能和健康监控工具,专为系统、应用程序、SNMP 设备等而设计。它以其高度交互的 Web 仪表板和极低的资源开销而闻名。

主要特点:实时监控、全面监控、零配置、轻量级、交互式仪表板、可扩展性、警报和通知、分布式监控、数据收集 API、无数据库

接下来,我会带大家一起部署这样一个服务器监控平台。

部署前必要准备

  • 一个充满求知欲的大脑。

  • 一台Linux服务器(推荐腾讯云、阿里云或雨云等)。本文将以雨云为例进行演示。

我将会以 雨云 为例,带大家创建一台自己的云服务器,以便尝试本篇文章的内容。

注册链接 : https://www.rainyun.com/NTEzMTM1_?s=blog

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

点击"云产品"→"云服务器"→"立即购买"。

选择距离你较近的区域,以降低延迟。

选择配置。

选择Ubuntu 22.04版本。

点击"立即购买",并完成后续购买流程。购买完成后,等待服务器部署完毕,进入管理面板,找到远程连接信息。

使用PowerShell进行远程连接:输入ssh root@你的服务器IP (例如ssh [email protected]),首次连接需输入yes,然后回车即可登录。


Linux 脚本部署 Netdata

安装

本教程以 Ubuntu 22.04 为例,其他 Linux 发行版步骤类似,可能需要根据你的发行版调整命令。

可以直接使用一键安装脚本:

bash 复制代码
curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --disable-telemetry

如果想自定义一些配置,可以前往官网 Linux installation,按照自己的需求选择安装参数,如下图,也可以根据这个链接下面的其他配置命令参数:

验证安装: 在浏览器中访问 http://你的服务器IP:19999,即可查看 Netdata 的监控界面。

我们不需要登录,点击右下角的 Skip and use the dashboard anonymously. 直接进入管理面板即可。

进来后,就可以看到我们服务器的一些状态了。

小提示:将右上角的模式修改为 Force Play,可以避免鼠标悬停时暂停服务器状态显示。

卸载

如果需要卸载,可以将命令行参数修改为 --uninstall 如下命令:

bash 复制代码
curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --uninstall

使用 Docker 和 Docker Compose 部署 Netdata

方法一:使用 docker run 命令

运行 Docker 命令: 执行以下命令启动 Netdata 容器:

bash 复制代码
docker run -d --name=netdata \
  --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 \
  --restart unless-stopped \
  --cap-add SYS_PTRACE \
  --cap-add SYS_ADMIN \
  --security-opt apparmor=unconfined \
  netdata/netdata

参数解读:

  • --pid=host: 共享宿主机 PID namespace,允许 Netdata 监控宿主机进程。
  • --network=host: 共享宿主机网络 namespace,允许 Netdata 监控网络接口和服务。
  • -v ...: 挂载必要的目录,让 Netdata 可以访问宿主机文件系统。/hostfs 为所有文件系统的只读访问,其他为特定目录。
  • --restart unless-stopped: 除非手动停止,否则容器会在重启时自动启动。
  • --cap-add SYS_PTRACE, SYS_ADMIN: 添加必要的权限,允许 Netdata 进行系统监控。
  • --security-opt apparmor=unconfined: 关闭 AppArmor 安全限制 (谨慎使用,仅在安全环境下使用)。
  • netdata/netdata:stable: 使用 Netdata 官方镜像的稳定版本。

方法二:使用 docker-compose.yml 文件

使用 docker-compose.yml 文件定义 Netdata 容器,更易于管理和扩展。

创建 docker-compose.yml 文件: 创建一个名为 docker-compose.yml 的文件,内容如下:

yaml 复制代码
version: '3'
services:
  netdata:
    image: netdata/netdata
    container_name: netdata
    pid: host
    network_mode: host
    restart: unless-stopped
    cap_add:
      - SYS_PTRACE
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    volumes:
      - netdataconfig:/etc/netdata
      - netdatalib:/var/lib/netdata
      - netdatacache:/var/cache/netdata
      - /:/host/root:ro,rslave
      - /etc/passwd:/host/etc/passwd:ro
      - /etc/group:/host/etc/group:ro
      - /etc/localtime:/etc/localtime:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /etc/os-release:/host/etc/os-release:ro
      - /var/log:/host/var/log:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

volumes:
  netdataconfig:
  netdatalib:
  netdatacache:

运行 Docker Compose 命令: 执行以下命令启动 Netdata 容器:

bash 复制代码
sudo docker-compose up -d

验证安装: 无论使用哪种方法,部署完成后,在浏览器中访问 http://你的服务器IP:19999 即可查看 Netdata 的监控界面。 记住将 你的服务器IP 替换为你的服务器的实际 IP 地址。

根据你的实际情况选择合适的部署方式。 docker-compose.yml 方法更易于管理,而 docker run 方法更灵活。 在生产环境中,建议仔细考虑安全性,并根据你的需求进行相应的配置调整。

重要提示:

  • 使用 --network=host--pid=host 会赋予容器对宿主机系统很高的权限,请务必在安全的环境下使用。
  • --security-opt apparmor=unconfined 会禁用 AppArmor,降低安全性,建议在生产环境中谨慎使用,并评估其安全风险。 在生产环境中,建议使用更安全的配置,例如自定义 AppArmor 规则或其他安全措施。
  • 你可以将 netdata/netdata 替换为 netdata/netdata:edge 使用最新版本,但最新版本可能包含未经充分测试的功能。

根据你的实际情况选择合适的部署方式。 docker-compose.yml 方法更易于管理,而 docker run 方法更灵活。 在生产环境中,建议仔细考虑安全性,并根据你的需求进行相应的配置调整。

相关链接

雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?s=blog

我的博客:https://blog.ivwv.site

相关推荐
伤不起bb10 分钟前
MySQL 高可用
linux·运维·数据库·mysql·安全·高可用
意倾城2 小时前
Docker数据卷
docker·容器
whgjjim2 小时前
docker迅雷自定义端口号、登录用户名密码
运维·docker·容器
tmacfrank3 小时前
网络编程中的直接内存与零拷贝
java·linux·网络
瀚高PG实验室5 小时前
连接指定数据库时提示not currently accepting connections
运维·数据库
QQ2740287565 小时前
Soundness Gitpod 部署教程
linux·运维·服务器·前端·chrome·web3
淡忘_cx6 小时前
【frp XTCP 穿透配置教程
运维
qwfys2006 小时前
How to configure Linux mint desktop
linux·desktop·configure·mint
南方以南_6 小时前
Ubuntu操作合集
linux·运维·ubuntu
冼紫菜7 小时前
[特殊字符]CentOS 7.6 安装 JDK 11(适配国内服务器环境)
java·linux·服务器·后端·centos