单机环境性能监控搭建及测试报告_物联网平台_边缘计算网关

监控环境基于docker和docker-compose搭建。

安装采集器

用于收集服务器的性能指标。

Linux服务器

services:
  reporter_node:                                         # 服务器指标采集,用于监控远程主机
    image: prom/node-exporter:v1.7.0
    restart: always
    container_name: reporter_node
    user: root
    healthcheck:
      test: ["CMD", "nc", "-zv", "localhost", "9100"]
      interval: 6s
      timeout: 5s
      retries: 10
    ports:
      - 9100:9100

关系数据库PostgreSQL

⚠️ 提示

启动脚本中的鉴权信息必须是实际监控环境的保持一致。

services:
  reporter_pgsql:   #【应用软件】
  # Pgsql数据库监控 https://github.com/prometheus-community/postgres_exporter
    image: prometheuscommunity/postgres-exporter:v0.15.0
    restart: always
    container_name: reporter_pgsql
#    user: root
    healthcheck:
      test: ["CMD", "nc", "-zv", "localhost", "9187"]
      interval: 6s
      timeout: 5s
      retries: 10
    ports:
      - 9187:9187
    environment:
      - DATA_SOURCE_URI=部署内网ip:5432/thingskit?sslmode=disable
      - DATA_SOURCE_USER=thingskit
      - DATA_SOURCE_PASS=thingskit

安装Prometheus

是一款基于时序数据库的开源监控告警系统。

services:
  prometheus:
    image: prom/prometheus:v2.42.0
    volumes:
      - ./conf/prometheus/:/etc/prometheus/:ro
      - /var/_datas/prometheus:/prometheus/data
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--web.config.file=/etc/prometheus/web_auth.yml'     #身份认证配置文件
      - '--storage.tsdb.retention.time=120d'
    ports:
      - 9090:9090
    restart: always
    container_name: prometheus
    user: root

# my global config
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  evaluation_interval: 15s # By default, scrape targets every 15 seconds.
  # scrape_timeout is set to the global default (10s).

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
      monitor: 'thingskit'
  

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.         
  - job_name: 'prometheus'
    basic_auth:
      username: thingskit
      password: thingskit
    scrape_interval: 5s
    static_configs:
     - targets: ['部署内网ip:9090']
     
  - job_name: 'cluster_nodes'   #服务节点指标采集   
    static_configs:                     
    - targets: ['部署内网ip:9100']                  

        
        
  - job_name: 'cluster_pgsql'
#    metrics_path: /actuator/prometheus
    static_configs:
    - targets: ['部署内网ip:9187']


  - job_name: 'tb-core'
    metrics_path: /actuator/prometheus
    static_configs:
      - targets: [ '部署内网ip:8080' ]

安装grafana

grafana作为数据可视化与分析工具


version: '3'
services:
  grafana:
    image: grafana/grafana
    user: "472"
    depends_on:
      - prometheus
    ports:
      - 13000:3000
    volumes:
#     - ./conf/grafana/:/etc/grafana/provisioning/:ro
      - ./data/grafana/:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=thingskit
      - GF_USERS_ALLOW_SIGN_UP=false
    restart: always
    container_name: grafana

登录方式

💡 提示

默认账号:admin

默认密码:thingskit

默认登录端口:13000

配置数据源

默认密码为thingskit

导入看板

看板市场

Linux服务器

模板ID:1860

关系数据库PostgreSQL

模板ID:9628

平台服务组件

模板ID:4701

功能介绍

💡 提示

导入看板后,可以根据当前需求查询对应看板。

看板进入方式:

过滤显示方式:

附录

mqtt模拟测试工具启动方式

cd /mqtt_simulator/					#切换至启动目录
chmod +x java-start.sh			#添加脚本执行权限
./java-start.sh							#启动脚本

测试结论

测试场景

  • 5000台设备;
  • 单体部署;
  • 通过MQTT每秒5000条消息,每条MQTT消息包含3个数据点,每秒产生15000个数据点;
  • PostgreSQL数据库;
  • TimescaleDB时序插件。

测试方法

在单个服务器上部署ThingsKit单体实例(服务器配置见下面表格),以及所有相关的第三方组件。通过模拟器,模拟5000台设备连接并上报数据,通过模拟器不断用MQTT发布时间序列数据。

本次测试,模拟平台管理智能电表设备,以JSON数据格式发送消息,其中包含三个数据点:脉冲计数器、泄漏标识和电池电量。每个设备都使用单独的MQTT连接到服务器。ThingsKit物联网平台将所有时间序列数据存储在数据库中。

测试服务器及安装信息

实例类型

安装程序

数据库

测试设备数

测试点位数

8 核CPU、16GB内存

ThingsKit基础版

PostgreSQL+

TimescaleDB

5000台

15000点/s

总结

据上述测试过程监控分析得出测试结论:在该测试环境下运行,平台支持5K设备同时在线和1.5W每秒的数据并发,CPU消耗平稳50%左右;内存消耗在系统资源消耗5GB左右;平台运行状态一切正常。

💡 提示:

本次测试考虑到生产环境的异构性和复杂性,测试指标并未设计为极限测试指标,理论上5K设备和1.5W的数据并发还可以提高。

本文通过 YUQUE WORDPRESS 同步自语雀
云腾五洲-AI助理