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

简介

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

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

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

部署前必要准备

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

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

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

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

创建雨云服务器

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

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

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

选择配置。

选择Ubuntu 22.04版本。

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

使用PowerShell进行远程连接:输入ssh root@你的服务器IP (例如ssh root@154.9.227.239),首次连接需输入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

相关推荐
YRr YRr36 分钟前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
G_whang37 分钟前
centos7下docker 容器实现redis主从同步
redis·docker·容器
认真学习的小雅兰.38 分钟前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker
zhou周大哥1 小时前
linux 安装 ffmpeg 视频转换
linux·运维·服务器
奥顺1 小时前
PHPUnit使用指南:编写高效的单元测试
大数据·mysql·开源·php
不想起昵称9291 小时前
Linux SHELL脚本中的变量与运算
linux
是小崔啊1 小时前
开源轮子 - Apache Common
java·开源·apache
loong_XL1 小时前
服务器ip:port服务用nginx 域名代理
服务器·tcp/ip·nginx
夕泠爱吃糖2 小时前
C++中如何实现序列化和反序列化?
服务器·数据库·c++