Netdata 本地集群部署,不通过netdata cloud,没有子节点数量限制
目录
[TOC]
安装前说明
配置太低的机器不推荐使用
虽然服务端Netdata Parent (centralization point)
和客户端Netdata Child (production system)
运行的都是同一个镜像,但是服务端资源占用会多一点
测试下来服务端内存占用900MB,客户端内存占用300MB
效果图
部署
1.Netdata Master(服务端)
•收集自身的监控数据
•接收所有客户端(Agent)的数据
•通过 Web UI 展示所有节点的数据
2.Netdata Agent(客户端)
•监控自身服务器数据
•将数据流式发送到 Master
1. 确保 Docker 和 Docker Compose 已安装
在 所有服务器(Master + Agents) 上执行:
sudo apt update && sudo apt install -y docker.io docker-compose vim
检查 Docker 是否正常运行:
docker --version
docker-compose --version
2. 创建目录结构
在 Master(服务端)上执行:
mkdir -p /home/netdata/master
cd /home/netdata
服务端不用重复安装客户端了,安装服务端就有监控
在每个 Agent(客户端)上执行:
mkdir -p /home/netdata/agent
cd /home/netdata
3. 生成 API Key
在 Master(服务端) 执行:
uuidgen
例如生成:
11111111-2222-3333-4444-555555555555
复制这个 API Key,在后面的配置中使用
4. 配置 Netdata Master(服务端)
创建 docker-compose.yml
在 Master(服务端) 上创建 docker-compose.yml:
cd /home/netdata
vim docker-compose.yml
写入以下内容:
version: '3.3'
services:
netdata-master:
image: netdata/netdata
container_name: netdata-master
restart: unless-stopped
pid: host
ports:
- "19999:19999"
volumes:
- ./master/netdata.conf:/etc/netdata/netdata.conf:ro
- ./master/stream.conf:/etc/netdata/stream.conf:ro
- ./master/lib:/var/lib/netdata
- ./master/cache:/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
environment:
- DISABLE_TELEMETRY=1
cap_add:
- SYS_PTRACE
- SYS_ADMIN
security_opt:
- apparmor:unconfined
networks:
- netdata-network
networks:
netdata-network:
driver: bridge
创建 netdata.conf
vim /home/netdata/master/netdata.conf
写入以下内容:
[global]
run as user = root
bind to = *
hostname = aaa
hostname = aaa
: aaa是服务端节点名字,可自定义
创建 stream.conf
vim /home/netdata/master/stream.conf
写入以下内容:
[stream]
enabled = yes
accept_streams_from = *
[11111111-2222-3333-4444-555555555555]
enabled = yes
allow from = *
11111111-2222-3333-4444-555555555555
由命令uuidgen
生成(也可以自己瞎编一个),用来给其他子节点(机器)使用,每个子节点的uuid需要不相同
5. 启动 Netdata Master(服务端)
在 Master(服务端) 执行以下命令启动服务:
cd /home/netdata
docker-compose up -d
6. 配置 Netdata Agent(客户端)
创建 docker-compose.yml
在 每个 Agent(客户端) 上创建 docker-compose.yml:
cd /home/netdata
vim docker-compose.yml
写入以下内容:
version: '3.3'
services:
netdata-agent:
image: netdata/netdata
container_name: netdata-agent
restart: unless-stopped
pid: host
volumes:
- ./agent/netdata.conf:/etc/netdata/netdata.conf:ro
- ./agent/stream.conf:/etc/netdata/stream.conf:ro
- ./agent/lib:/var/lib/netdata
- ./agent/cache:/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
environment:
- DISABLE_TELEMETRY=1
cap_add:
- SYS_PTRACE
- SYS_ADMIN
security_opt:
- apparmor:unconfined
networks:
- netdata-network
networks:
netdata-network:
driver: bridge
创建 netdata.conf
vim /home/netdata/agent/netdata.conf
写入以下内容:
[global]
run as user = root
bind to = *
hostname = bbb
hostname = bbb
子节点名字可以自定义
创建 stream.conf
vim /home/netdata/agent/stream.conf
写入以下内容:
[stream]
enabled = yes
destination = 服务端IP:19999
api key = 11111111-2222-3333-4444-555555555555
7. 启动 Netdata Agent(客户端)
在 每个 Agent(客户端) 上执行以下命令启动服务:
cd /home/netdata
docker-compose up -d
8. 访问 Web UI
在 Master(服务端) 上打开浏览器,访问:
http://服务端IP:19999/v3
不加/v3
会先到一个让你登录的界面,虽然可以手动选不登录,但每次都手动选太麻烦
在 Web UI 上:
1. 进入 “Nodes”
2. 可以看到所有 子节点(Agent) 的数据
另一个类似netdata的软件beszel,这个没有netdata复杂,是beszel客户端安装一个ssh服务端,然后beszel服务端通过ssh连接beszel客户端获取机器的信息,也就是说客户端和服务端的ip必须要连通
安全相关
推荐nginx加一个auth_basic
密码验证
比如用htpasswd
生成.htpasswd
文件
apt-get install apache2-utils
htpasswd -c /path/to/file/netdata.passwords yourName
然后nginx配置文件中添加:
auth_basic "Registry Realm";
auth_basic_user_file /path/to/file/netdata.passwords;
还有/v3
也可以通过重写实现
if ($request_uri !~ ^/v3) {
rewrite ^(.*)$ /v3$1 break;
}
上面两个合起来就是:
location / {
if ($request_uri !~ ^/v3) {
rewrite ^(.*)$ /v3$1 break;
}
proxy_pass http://172.17.0.1:19999;
auth_basic "Registry Realm";
auth_basic_user_file /path/to/file/netdata.passwords;
}
2 comments
试了还是会有5节点限制,超过之后Node页,子节点全部显示Blocked
确实有点搞。。他说以前社区版没有限制是个bug。。
The absence of limitations on the agent dashboard was actually a bug. The limits intended for the Netdata Cloud Community tier were mistakenly not applied to it. It took us some time to identify and fix this issue.
https://community.netdata.cloud/t/suddenly-local-dashboard-is-limited-to-5-nodes/7111/14
目前感觉还是哪吒v1将就一下,功能对比netdata少点就少点吧,哪吒v2我试过不喜欢