写点什么

一站式轻量化部署服务器集群监控方案

作者:李开亮
  • 2023-10-20
    浙江
  • 本文字数:2476 字

    阅读完需:约 8 分钟

本文将介绍一种轻量化部署服务器集群监控方案,该方案可以快速搭建监控系统,实时监测集群中服务器之间的时延、负载、流量等关键指标,帮助及时发现集群中的问题,并提供依据进行问题排查和解决。本方案适用于各类服务器集群的监控,包括容器集群、云服务器、物理服务器等。

资源准备

规格:master 节点,4C8G40G 云服务器

操作系统:centos_7.4_x86_64

测试集群:与 master 节点处在相同网络平面服务器

环境准备

在 master 节点上安装 Docker,容器化部署 netdata:

  1. 卸载旧版本的 Docker(如果已经安装了旧版本的 Docker)

sudo yum remove docker \    docker-client \    docker-client-latest \    docker-common \    docker-latest \    docker-latest-logrotate \    docker-logrotate \    docker-engine
复制代码


  1. 安装必要的依赖包

sudo yum install -y yum-utils \  device-mapper-persistent-data \  lvm2
复制代码


  1. 添加 Docker CE 仓库

sudo yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repo
复制代码


  1. 安装 Docker CE

sudo yum install docker-ce docker-ce-cli containerd.io
复制代码


  1. 启动 Docker 服务

sudo systemctl start docker
复制代码


  1. 验证 Docker 是否正确安装

sudo docker run hello-world
复制代码

以上步骤将在 CentOS 上安装最新版本的 Docker CE。如果需要安装特定版本的 Docker,请在第 4 步中将docker-cedocker-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.conffping="/usr/local/bin/fping"hosts="192.168.0.3 192.168.0.4"  # 这边配置需要ping的地址update_every=1ping_every=1000fping_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。可见通过轻量化部署集群监控,在开展稳定性测试过程中,能够更加直观的发现集群潜在的问题,为后续排查提供依据。



用户头像

李开亮

关注

脚踏实地,仰望星空 2020-06-22 加入

还未添加个人简介

评论

发布
暂无评论
一站式轻量化部署服务器集群监控方案_云计算_李开亮_InfoQ写作社区