netdata 轻量级 zabbix

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:



#  备注  一定要 保存 配置文件 。



posted @ 2023-08-21 16:31  mmszxc  阅读(31)  评论(0)    收藏  举报