netdata 安装部署 分布式
有两种 方式 一种是 数据上传到clond中,使用 官方web页面展示 ,方便
单机 展示
参数解释:
cgroups.plugin(Host PID mode, SYS_ADMIN, Container network interfaces monitoring)
功能:监控容器网络接口,将系统命名空间中的虚拟接口映射到容器内的接口,收集容器级别的网络指标(如流量、数据包)。
Docker 配置要求:
主机 PID 模式:使用 --pid=host 确保 Netdata 能访问主机进程和 cgroups 信息。
SYS_ADMIN 权限:通过 --cap-add SYS_ADMIN 授予容器监控网络接口和 cgroups 的权限。
挂载路径:需要访问 /sys 和 /var/run/docker.sock 以获取容器信息:
bash
-v /sys:/host/sys:ro
-v /var/run/docker.sock:/var/run/docker.sock:ro
注意:
确保主机运行 Docker,且 /var/run/docker.sock 可访问。
SYS_ADMIN 是敏感权限,建议结合 --security-opt apparmor=unconfined 确保兼容性。
在仪表板中查看“Containers”或“Network”部分,验证网络接口映射是否正确。
proc.plugin(Host network mode, Host system networking stack monitoring)
功能:监控主机网络堆栈,包括网络接口的流量、错误、数据包等指标,通过 /proc 文件系统获取数据。
Docker 配置要求:
主机网络模式:使用 --network=host 让 Netdata 直接访问主机网络堆栈。
挂载路径:需要访问 /proc:
bash
-v /proc:/host/proc:ro
注意:
主机网络模式避免了容器网络隔离,确保 Netdata 能看到主机的真实网络接口。
检查仪表板的“Network”图表,确认网络指标(如 eth0 的输入/输出流量)显示正常。
go.d.plugin(Host network mode, Monitoring applications running on the host and inside containers)
功能:go.d 插件(如 docker, weblog 等收集器)监控主机和容器内运行的应用程序,收集性能指标(如 Docker 容器状态、应用程序资源使用)。
Docker 配置要求:
主机网络模式:使用 --network=host 确保 Netdata 能访问主机和容器的网络相关数据。
挂载路径:需要访问 /var/run/docker.sock 以监控容器:
bash
-v /var/run/docker.sock:/var/run/docker.sock:ro
注意:
确保 go.d/docker 收集器启用(默认启用,配置文件在 /etc/netdata/go.d/docker.conf)。
可通过仪表板的“Containers”或“Applications”部分查看应用程序指标。
如需监控特定应用程序,需配置相关 go.d 收集器(参考:https://learn.netdata.cloud/docs/agent/collectors/go.d.plugin)。
local-listeners(Host network mode, SYS_PTRACE, Discovering local services/applications)
功能:发现主机和容器内的本地服务/应用程序,映射监听端口到对应的服务(如端口 80 映射到 Nginx)。
Docker 配置要求:
主机网络模式:使用 --network=host 访问主机网络堆栈。
SYS_PTRACE 权限:通过 --cap-add SYS_PTRACE 允许 Netdata 跟踪进程和端口。
挂载路径:可能需要 /proc 和 /etc/passwd, /etc/group 以解析进程和用户:
bash
-v /proc:/host/proc:ro
-v /etc/passwd:/host/etc.passwd:ro
-v /etc/group:/host/etc/group:ro
注意:
检查仪表板的“Applications”或“Network”部分,确认监听端口和服务映射是否正确。
SYS_PTRACE 需谨慎使用,确保安全策略(如 AppArmor)不会阻止。
network-viewer.plugin(Host network mode, SYS_ADMIN, Discovering all current network sockets and building a network-map)
功能:发现所有当前网络套接字,构建网络连接图,展示主机和容器的网络活动。
Docker 配置要求:
主机网络模式:使用 --network=host 访问主机网络堆栈。
SYS_ADMIN 权限:通过 --cap-add SYS_ADMIN 允许 Netdata 访问网络套接字信息。
挂载路径:需要 /proc 和 /sys:
bash
-v /proc:/host/proc:ro
-v /sys:/host/sys:ro
注意:
网络连接图可在仪表板的“Network”或专用视图中查看。
确保主机网络堆栈无防火墙限制,防止 Netdata 无法获取完整数据。
/etc/os-release(Host info detection)
功能:Netdata 使用 /etc/os-release 读取主机操作系统的信息(如发行版、版本等),以正确识别系统环境。
Docker 配置:在 docker run 或 docker-compose 中,需挂载:
bash
-v /etc/os-release:/host/etc/os-release:ro
注意:确保以只读模式(ro)挂载,防止容器修改主机文件。
diskspace.plugin(/,Host mount points monitoring)
功能:监控主机挂载点的磁盘空间使用情况(如 /, /home 等)。
Docker 配置:需要挂载主机根目录以访问挂载点信息:
bash
-v /:/host/root:ro,rslave
注意:rslave 确保挂载点传播正确,Netdata 能看到主机文件系统的真实状态。
cgroups.plugin(/sys, /var/run/docker.sock,Docker containers monitoring and name resolution)
功能:监控 Docker 容器的资源使用(如 CPU、内存、I/O),并通过 /var/run/docker.sock 解析容器名称。
Docker 配置:
bash
-v /sys:/host/sys:ro
-v /var/run/docker.sock:/var/run/docker.sock:ro
注意:/sys 提供 cgroups 信息,/var/run/docker.sock 用于与 Docker 守护进程通信以获取容器元数据。
go.d.plugin(/var/run/docker.sock,Docker Engine and containers monitoring)
功能:go.d/docker 收集器监控 Docker 引擎和容器的指标(如容器状态、资源使用)。
Docker 配置:同上,需挂载:
bash
-v /var/run/docker.sock:/var/run/docker.sock:ro
注意:确保 Docker socket 可访问,否则容器监控功能不可用。
go.d.plugin(/var/log,Web servers logs tailing)
功能:go.d/weblog 收集器用于解析 Web 服务器日志(如 Nginx、Apache),提取请求、响应时间等指标。
Docker 配置:
bash
-v /var/log:/host/var/log:ro
注意:需确保 Web 服务器日志路径(如 /var/log/nginx)在主机上可访问,并正确映射到容器。
apps.plugin(/etc/passwd, /etc/group,Monitoring of host system resource usage by user and group)
功能:按用户和用户组监控主机系统资源使用情况(如 CPU、内存)。
Docker 配置:
bash
-v /etc/passwd:/host/etc/passwd:ro
-v /etc/group:/host/etc/group:ro
注意:以只读模式挂载,Netdata 通过这些文件映射用户/组 ID 到名称。
proc.plugin(/proc,Host system monitoring)
功能:监控主机系统资源(如 CPU、内存、网络接口、磁盘等),通过 /proc 获取实时数据。
Docker 配置:
bash
-v /proc:/host/proc:ro
注意:/proc 是核心监控数据源,需确保挂载正确。
systemd-journal.plugin(/var/log,Viewing, exploring, and analyzing systemd journal logs)
功能:读取和分析 systemd 日志,提取系统事件和错误信息。
Docker 配置:
bash
-v /var/log:/host/var/log:ro
注意:确保主机上 systemd 日志(如 journald 日志)存储在 /var/log 或通过其他路径挂载。
systemd-journal.plugin(/run/dbus,Systemd-list-units function)
功能:通过 /run/dbus 与 systemd 通信,获取 systemd 单元的状态、描述、启用状态等信息。
Docker 配置:
bash
-v /run/dbus:/run/dbus:ro
注意:需要主机运行 systemd,且 D-Bus 服务可用。
go.d.plugin(/run/dbus,go.d/systemdunits)
功能:go.d/systemdunits 收集器专门监控 systemd 单元的指标,类似 systemd-journal.plugin,但专注于单元状态。
Docker 配置:
bash
-v /run/dbus:/run/dbus:ro
注意:确保 D-Bus 挂载正确,主机系统需支持 systemd。
docker run -d --name=netdata \
-v $(pwd)/netdataconfig:/etc/netdata \
-v $(pwd)/netdatalib:/var/lib/netdata \
-v $(pwd)/netdatacache:/var/cache/netdata \
# netdata的配置文件和动态链接库和缓存文件
--pid=host \
--cap-add SYS_ADMIN \
--security-opt apparmor=unconfined \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
# 让容器能够访问主机的进程和容器网络空间
--network=host \
-v /proc:/host/proc:ro \
# 让容器访问主机网络堆栈空间
-v /etc/os-release:/host/etc/os-release:ro \
# 容器获取系统版本信息
-v /:/host/root:ro,rslave \
# 容器获取磁盘挂载情况
-v /var/log:/host/var/log:ro \
# 容器获取主机web日志服务
-v /etc/localtime:/etc/localtime:ro \
# 容器 获取主机时间
-v /run/dbus:/run/dbus:ro \
# 获取 主机服务 systemd 的状态
--cap-add SYS_PTRACE \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
# 让容器 能访问 主机和容器内部的服务 也是按照用户和用户的分类进行
--restart unless-stopped \
netdata/netdata
一般简约的做法
docker run -d --name=netdata \
-v $(pwd)/netdataconfig:/etc/netdata \
-v $(pwd)/netdatalib:/var/lib/netdata \
-v $(pwd)/netdatacache:/var/cache/netdata \
--pid=host \
--cap-add SYS_ADMIN \
--security-opt apparmor=unconfined \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--network=host \
-v /proc:/host/proc:ro \
-v /etc/os-release:/host/etc/os-release:ro \
-v /:/host/root:ro,rslave \
-v /var/log:/host/var/log:ro \
-v /etc/localtime:/etc/localtime:ro \
-v /run/dbus:/run/dbus:ro \
--cap-add SYS_PTRACE \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
--restart unless-stopped \
netdata/netdata
stream模式
master 节点
1、另一种 使用stream 流式模式 ,agent 汇总到 master 中去。
启动容器, 进去 容器
docker exec -it netdata /bin/bash
curl -o //etc/netdata/netdata.conf http://localhost:19999/netdata.conf
生成配置文件
可以先修改本地的hostname
[global]
# run as user = netdata
# host access prefix = /host
# pthread stack size = 8MiB
# cpu cores = 2
# libuv worker threads = 16
# profile = standalone
hostname = tengxunyun
# 添加配置文件
vi stream.conf
[stream]
enabled = yes
destination = 0.0.0.0:19999
api key = <主服务器API_KEY>
[<主服务器API_KEY>]
enabled = yes
default history = 3600
default memory mode = save
health enabled by default = auto
allow from = *
说明:
enabled = yes:启用 Stream 模式。
destination = 0.0.0.0:19999:主服务器监听所有接口的 19999 端口(Netdata 默认端口)。
api key:使用上一步生成的 API Key,例如 uuidgen 直接生成
[<主服务器API_KEY>]:定义 API Key 对应的配置,允许节点使用此密钥连接。
allow from = *:允许所有 IP 连接(可改为特定 IP 范围以提高安全性,如 allow from = 192.168.1.0/24)。
default history = 3600
:根据你的监控需求调整。如果只需要短时数据,保持 3600;
如果需要更长的数据(如一周),可设为 604800(7天),但需确保主服务器磁盘空间充足。
default memory mode = save
在 Docker 环境中,推荐 save 以确保数据持久化(配合挂载卷,如 /var/lib/netdata)。如果容器经常销毁重建且数据无需保留,可用 ram。
health enabled by default = auto
控制主服务器是否为节点的监控数据启用健康检查(Health Monitoring)和告警功能。
==================================================
[stream]
enabled = yes
destination = 0.0.0.0:19999
api key = 23f03114-33e9-43ed-9881-a590b8b91b6e
[23f03114-33e9-43ed-9881-a590b8b91b6e]
enabled = yes
default history = 3600
default memory mode = save
health enabled by default = auto
allow from = *
Clent节点
安装容器
启动容器, 进去 容器
docker exec -it netdata /bin/bash
curl -o //etc/netdata/netdata.conf http://localhost:19999/netdata.conf
生成配置文件
可以先修改本地的hostname
添加 配置文件
vi /etc/netdata/stream.conf
[stream]
enabled = yes
destination = <主服务器IP>:19999
api key = <主服务器API_KEY>
说明:
enabled = yes:启用 Stream 模式。
destination = <主服务器IP>:19999:指定主服务器的 IP 和端口(例如 192.168.1.100:19999)。
api key:使用主服务器配置中相同的 API Key。
禁用节点 Web 仪表板(可选):
为提高安全性,可禁用节点的 Web 界面,编辑 /etc/netdata/netdata.conf:
[web]
mode = none
退出容器并重启 Netdata:
# 备注 一定要 保存 配置文件 。