春松客服的压力测试(1)| 春松客服

1.采集春松客服性能数据

数据采集类型

  • 操作系统的数据
  • JVM的数据
  • MySQL的数据

操作系统的数据

  • 运行了一套春松客服
  • 具备网络,CPU等资源
  • 使用Linux和Docker

主要用到的工具

  1. node-exporter
    node-exporter用于采集服务器层面的运行指标,包括机器的loadavg、filesystem、meminfo等基础监控,类似于传统主机监控维度的zabbix-agent。node-export由Prometheus官方提供、维护,不会捆绑安装,但基本上是必备的exporter。
  2. Prometheus
    Prometheus是一个开源的系统监控工具。根据配置的任务(job)以http/s周期性的收刮(scrape/pull)指定目标(target)上的指标(metric)。目标(target)可以以静态方式或者自动发现方式指定。Prometheus将收刮(scrape)的指标(metric)保存在本地或者远程存储上。
    Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。
  • 解决方案:
    操作系统上安装一个机器人node-exporter,运行系统命令,采集到相关数据,上报给数据采集服务Prometheus Server,数据采集服务去查询node-exporter输出的数据。
  • Prometheus 可视化工具Graph。
    Graph面板是最常用的一种可视化面板,其通过折线图或者柱状图的形式显示监控样本随时间而变化的趋势。Graph面板天生适用于Prometheus中Gauge和Counter类型监控指标的监控数据可视化。例如,当需要查看主机CPU、内存使用率的随时间变化的情况时,可以使用Graph面板。同时,Graph还可以非常方便的支持多个数据之间的对比。

JVM的数据

  • Spring Boot中提供的数据监测API - Actuator。
    使用Spring Boot Actuator需要引入jar包。
  • Actuator的作用
    Actuator 是 Spring Boot 提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。
  • Actuator演示
  • Actuator 的 REST 接口
    Actuator 监控分成两类:原生端点和用户自定义端点;自定义端点主要是指扩展性,用户可以根据自己的实际应用,定义一些比较关心的指标,在运行期进行监控。
    原生端点是在应用程序里提供众多 Web 接口,通过它们了解应用程序运行时的内部状况。原生端点又可以分成三类:
  1. 应用配置类:可以查看应用在运行期的静态信息:例如自动配置信息、加载的 springbean 信息、yml 文件配置信息、环境信息、请求映射信息;
  2. 度量指标类:主要是运行期的动态信息,例如堆栈、请求连、一些健康指标、metrics 信息等;
  3. 操作控制类:主要是指 shutdown,用户可以发送一个请求将应用的监控功能关闭。
    注意:在Spring Boot 2.0 中对Actuator变动很大,默认只提供
    /Actuator、/info、/health这三个接口,如果想提供所有接口需要配置application.yml,配置之后重新访问/actuator就会暴露出所有接口。
management:
  endpoints:
    web:
      exposure:
        include: "*"

Actuator 提供了 13 个接口,具体如下表所示。

HTTP 方法路径描述
GET/auditevents显示应用暴露的审计事件 (比如认证进入、订单失败)
GET/beans描述应用程序上下文里全部的 Bean,以及它们的关系
GET/conditions就是 1.0 的 /autoconfig ,提供一份自动配置生效的条件情况,记录哪些自动配置条件通过了,哪些没通过
GET/configprops描述配置属性(包含默认值)如何注入Bean
GET/env获取全部环境属性
GET/env/{name}根据名称获取特定的环境属性值
GET/flyway提供一份 Flyway 数据库迁移信息
GET/liquidbase显示Liquibase 数据库迁移的纤细信息
GET/health报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供
GET/heapdump dump一份应用的 JVM 堆信息
GET/httptrace显示HTTP足迹,最近100个HTTP request/repsponse
GET/info获取应用程序的定制信息,这些信息由info打头的属性提供
GET/logfile返回log file中的内容(如果 logging.file 或者 logging.path 被设置)
GET/loggers显示和修改配置的loggers
GET/metrics报告各种应用程序度量信息,比如内存用量和HTTP请求计数
GET/metrics/{name}报告指定名称的应用程序度量值
GET/scheduledtasks展示应用中的定时任务信息
GET/sessions如果我们使用了 Spring Session 展示应用中的 HTTP sessions 信息
POST/shutdown关闭应用程序,要求endpoints.shutdown.enabled设置为true
GET/mappings描述全部的 URI路径,以及它们和控制器(包含Actuator端点)的映射关系
GET/threaddump获取线程活动的快照

/metrics:该端点用来返回当前应用的各类重要度量指标,比如:内存信息、线程信息、垃圾回收信息等。

/info:该端点用来返回一些应用自定义的信息。默认情况下,该端点只会返回一个空的json内容。我们可以在application.properties配置文件中通过info前缀来设置一些属性。

/health :用来获取应用的各类健康指标信息。

  • 使用Actuator注意事项
  1. 谨慎的配置监控查询能力。
  2. 在负载均衡中屏蔽API。
  • 将Actuator数据导入数据采集服务
  1. POM引入新依赖
  2. 增加配置 application.properties
  3. 配置Prometheus Server
  • /actuator/prometheus API

2.监控及分析春松客服系统

展示、分析

  • Grafana
    Grafana是一个通用的可视化工具。‘通用’意味着Grafana不仅仅适用于展示Prometheus下的监控数据,也同样适用于一些其他的数据可视化需求。
    Grafana是每个数据库的开源分析和监视解决方案。
  • 运行
    需要在 docker-compose.yml 文件中进行配置,配置完成后,使用Docker Compose运行,就可以看到数据。

3.延伸阅读

春松客服系统测试
春松客服访客端测试
春松客服RestAPI

开源智能客服系统

春松客服是 Chatopera 自主研发的,Apache2.0开源协议授权的智能客服系统,春松客服会不断增强客服系统的智能化,这包括利用自然语言处理、机器学习和语音识别等技术让客服工作更有效率、客服满意度更高、成本更低。

开源力量 社区共建

王海良@Chatopera 聊天机器人 机器学习 智能客服
Chatopera 联合创始人 & CEO,运营聊天机器人平台 https://bot.chatopera.com,让聊天机器人上线!2015年开始探索聊天机器人的商业应用,实现基于自然语言交互的流程引擎、语音识别、自然语言理解,2018年出版《智能问答与深度学习》一书。