本文将介绍一种轻量化部署服务器集群监控方案,该方案可以快速搭建监控系统,实时监测集群中服务器之间的时延、负载、流量等关键指标,帮助及时发现集群中的问题,并提供依据进行问题排查和解决。本方案适用于各类服务器集群的监控,包括容器集群、云服务器、物理服务器等。
资源准备
规格:master 节点,4C8G40G 云服务器
操作系统:centos_7.4_x86_64
测试集群:与 master 节点处在相同网络平面服务器
环境准备
在 master 节点上安装 Docker,容器化部署 netdata:
卸载旧版本的 Docker(如果已经安装了旧版本的 Docker)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
复制代码
安装必要的依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
复制代码
添加 Docker CE 仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
复制代码
安装 Docker CE
sudo yum install docker-ce docker-ce-cli containerd.io
复制代码
启动 Docker 服务
sudo systemctl start docker
复制代码
验证 Docker 是否正确安装
sudo docker run hello-world
复制代码
以上步骤将在 CentOS 上安装最新版本的 Docker CE。如果需要安装特定版本的 Docker,请在第 4 步中将docker-ce
和docker-ce-cli
的版本号指定为所需的版本。例如,要安装 Docker CE 20.10.9 版本,可以将第 4 步中的命令修改为:
sudo yum install docker-ce-20.10.9 docker-ce-cli-20.10.9 containerd.io
复制代码
安装完成后,您可以使用docker
命令来管理和运行 Docker 容器。
监控部署
基础监控
docker run -d --name=netdata \
-p 19999:19999 \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
hub.c.163.com/nvsoline2/netdata:netdata
复制代码
这个支持系统最基础的监控,并且数据存在内存中,适合临时观测。
支持 fping 监控
docker run -d --name=netdata \
-p 19999:19999 \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /root/fping.conf:/etc/netdata/fping.conf:ro \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
hub.c.163.com/nvsoline2/netdata:fping
复制代码
其中 fping.conf 的配置文件为:
[root@pytest-likailiang-v3jzo8-2023-10-20-0952ji ~]:~# cat fping.conf
fping="/usr/local/bin/fping"
hosts="192.168.0.3 192.168.0.4" # 这边配置需要ping的地址
update_every=1
ping_every=1000
fping_opts=" -b 56 -r 0 -t 5000"
复制代码
保留 30 天数据
需要配置 dbengine
理论上 5G 硬盘可以支持 每秒 2000 个数据点,30 天。
[root@pytest-likailiang-v3jzo8-2023-10-20-0952ji ~]:~# cat netdata.conf
[global]
memory mode = dbengine
page cache size = 32
dbengine disk space = 4999
复制代码
启动时使用上面这个 netdata.conf 配置。
portcheck 配置
这些都属于 https://learn.netdata.cloud/docs/agent/collectors/go.d.plugin 插件。
[root@pytest-likailiang-v3jzo8-2023-10-20-0952ji ~]:~# cat portcheck.conf
update_every: 1
jobs:
- name: server1
host: 127.0.0.1
ports:
- 22
- name: server2
host: 59.111.96.215
ports:
- 9009
- name: nlb-beta-test
host: 59.111.245.80
update_every: 1
ports:
- 80
复制代码
go.d.conf ,里面把需要监控的项目打开
[root@pytest-likailiang-v3jzo8-2023-10-20-0952ji ~]:~# cat go.d.conf
# netdata go.d.plugin configuration
#
# This file is in YaML format.
# Enable/disable the whole go.d.plugin.
enabled: yes
# Enable/disable default value for all modules.
default_run: yes
# Maximum number of used CPUs. Zero means no limit.
max_procs: 0
# Enable/disable specific g.d.plugin module
# If you want to change any value, you need to uncomment out it first.
# IMPORTANT: Do not remove all spaces, just remove # symbol. There should be a space before module name.
modules:
example: yes
nginx: yes
portcheck: yes
复制代码
nginx 监控 demo
[root@pytest-likailiang-v3jzo8-2023-10-20-0952ji ~]:~# cat nginx.conf
jobs:
- name: local
url: http://10.199.128.66/nginx_status
复制代码
docker 启动命令
docker run -d --name=netdata -p 19999:19999 \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /root/fping.conf:/etc/netdata/fping.conf:ro \
-v /root/example.conf:/etc/netdata/go.d/example.conf:ro \
-v /root/portcheck.conf:/etc/netdata/go.d/portcheck.conf:ro \
-v /root/nginx.conf:/etc/netdata/go.d/nginx.conf:ro \
-v /root/go.d.conf:/etc/netdata/go.d.conf:ro \
-v /root/netdata.conf:/etc/netdata/netdata.conf:ro \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
hub.c.163.com/nvsoline2/netdata:fping
复制代码
案例分析
有关 netdata 介绍可以参考我此前发表的另外一篇文章《磨刀不误砍柴工,搞定云网络系统性能测试》。下面的云服务器测试集群监控结果,主要用来监控同计算节点和跨技术节点云服务器之间时延数据。可以看到同机房同节点云服务器之间平均时延约为 0.15ms,跨节点云服务器时延约为 0.2ms。
在持续监控一段时间之后发现空载时延陡增问题,突刺时延约为 10ms。可见通过轻量化部署集群监控,在开展稳定性测试过程中,能够更加直观的发现集群潜在的问题,为后续排查提供依据。
评论