八、TSF运维管理

八、TSF运维管理

在介绍了使用TSF部署虚拟机应用以及容器应用以后,接下来我们来看一下TSF的运维管理能力。

学习目标

通过本文的学习,您将可以:

  • 了解TSF的日志功能
  • 使用日志监控TSF
  • 掌握日志的告警
  • 使用TSF的弹性伸缩
  • 掌握TSF调用链服务
  • 了解TSF服务依赖拓扑

第一章 TSF的日志简介

首先我们来看一下TSF的日志是什么?

1.1 TSF日志简介
  • 日志服务为用户提供一站式日志服务,从日志采集、日志存储到日志内容搜索,帮助用户轻松定位业务问题。

  • 下图是用户在 TSF 平台上使用日志服务的流程图:

    image-20211202111655873

  • 日志服务为用户提供一站式日志服务,从日志采集、日志存储到日志内容搜索,帮助用户轻松定 位业务问题。用户通过指定部署组的日志配置项来指定日志采集规则,TSF Agent 根据日志配置 项采集指定路径下的文件日志,并上传日志到日志存储模块。用户可以通过 TSF 控制台查看部署 组实时日志,并根据关键词来检索日志。

  • 日志服务原理

    image-20211202111757559

  • 日志采集:

    • 通过 Agent 来采集日志,无须手动安装。
  • 日志索引与查询

    • 实时索引:采集的日志数据建立索引。
    • 查询灵活:支持全文检索、关键词检索(短语或者分词)。

第二章 TSF日志服务管理与告警功能

接下来我们来看一下TSF的日志与告警功能

2.1 日志配置项
  • 日志配置项:

    • 用于指定采集日志的规则,包括日志的采集路径和日志解析格式

    • 日志配置项操作步骤:

      image-20211202112350603

  • 要使用TSF的日志功能必须先配置日志配置项。

  • 日志配置项用于指定采集日志的规则,包括日志的采集路径和日志解析格式。用户可以在 TSF 控 制台上创建日志配置项,将配置项发布到部署组上。同一个部署组可以关联多个日志配置项。

  • 日志配置具体位置:应用中心-》配置管理-》日志配置

2.1.1 创建日志配置项
  • 步骤一:

    • 登录TSF进入日志配置功能:应用中心-》配置管理-》日志配置
  • 步骤二:

    • 创建日志配置项:

      image-20211202112548689

  • 单击【新建配置】,在弹出框中填写日志配置项信息。

    • 名称:日志配置名称,不超过 60 个字符。
    • 日志格式:目前支持 Spring Boot、自定义 Logback、自定义 Log4j 和 无解析规则。
    • Spring Boot:如果应用程序使用默认的 Spring Boot 日志,则选择 Spring Boot 日志格式。
    • 自定义 Logback :如果应用程序使用 logback 日志配置,设置日志格式为 logback,然后 设置解析规则(对应 logback 中的 pattern)。参考 Logback 中关于 Pattern 的介绍。
    • 自定义 Log4j :如果应用程序使用 log4j 日志配置,设置日志格式为 log4j,然后设置解析规 则(对应 log4j 中的 PatternLayout)。需要进一步填写解析规则,可以参考 Log4j 中关于 PatternLayout 的介绍。
    • 无解析规则:指一行日志内容为一条完整的日志。日志服务在采集的时候,将使用换行符 \n 来作为一条日志日志的结束符。为了统一结构化管理,每条日志都会存在一个默认的键值 __CONTENT__,但日志数据本身不再进行日志结构化处理,也不会提取日志字段,日志属性 的时间项由日志采集的时间决定。
    • 日志路径:可填写一个或者多个日志路径。目前支持绝对路径具体到日志文件,如 /data/log/2017.log,文件名称允许使用数字、字母、横杠(-)、下划线(_)和通配符(*)。
    • 描述:日志配置项的描述信息。
  • 单击【提交】按钮。

2.1.2 发布日志配置
  • 步骤三:

    • 发布配置:把配置项发布到对应的部署组中。

      image-20211202113044084

  • 日志配置项列表,发布配置

    • 在日志配置项列表,右侧操作栏中单击【发布配置】,界面如上图一;
    • 选择要绑定的部署组,界面如上图二;
    • 单击【提交】按钮。
  • 日志配置发布以后,就可以进行日志检索功能了,后续再介绍。

2.1.3 日志配置项说明
  • 默认日志配置项
    • TSF 提供默认日志配置项,格式是 Spring Boot。日志路径包括以下三部分(相对于应用启动路径):
      • ./*.log
      • ./log/*.log
      • ./logs/*.log
  • 部署组关联日志配置项
    • 部署组关联日志配置项有两个入口:
    • 用户可以在创建应用时将日志配置项关联到应用。
    • 在日志配置项列表,右侧操作栏中单击【发布配置】。
  • 用户可以在微服务应用的配置文件中(如springboot项目中的application.yml)配 置 logging.file 为上述任意一个路径,然后在创建部署组时,选择默认日志配置项 default-logconfig。
2.2 实时日志
  • TSF 会根据部署组的日志配置项来采集业务日志。

    • 例如日志配置项的采集路径是 /tsf-demo-logs/tsf-inventory/*.log,TSF 会采集该路 径下的文件日志。
  • 实时日志查看步骤:

    image-20211202113645935

  • 查看实时日志(官网文档:https://cloud.tencent.com/document/product/649/18221)

  • 登录 TSF 控制台,单击左侧导航栏【部署组】。

  • 用户可以单击部署组列表上的 日志 图标,查看实时日志。切换日志源查看日志配置项的业务日 志或者 stdout 标准输出日志。

  • 日志配置项:查看日志配置项的采集路径下的业务日志。

  • stdout (标准输出) 日志:查看实例标准输出日志。

  • 用户也可以单击部署组 ID 进入详情页中,单击 日志 标签页查看实时日志。

2.2 实时日志(续)
  • 步骤一:

    • 登录 TSF 控制台,单击左侧导航栏【部署组】
  • 步骤二:

    • 查看实时日志:单击部署组 ID 进入详情页中,单击 日志 标签页查看实时日志
2.3 日志检索
  • 当部署组关联了日志配置项后,TSF 会对采集的日志数据建立索引。

    • 用户可以通过日志检索功能根据关键词来检索出关键日志信息
  • 日志检索操作步骤:

    image-20211202114033677

  • 采集的日志数据实时建索引,用户可以在控制台使用关键词进行检索。

  • 登录 TSF 控制台,单击左侧导航栏【日志搜索】。

  • 输入搜索条件

  • 单击【查询】按钮,查看检索结果。

  • 官网文档:https://cloud.tencent.com/document/product/649/18223

2.3 日志检索(续)
  • 步骤一:

    • 登录 TSF 控制台,单击左侧导航栏【日志检索】
  • 步骤二:

    • 输入搜索条件:
    • 选择搜索的时间范围。
    • 选择搜索的范围,可以指定应用和实例。
    • 输入日志关键词,关键词支持空格、逗号和短横线分词,可使用双引号进行短语搜索,支持 * 号的模糊匹配
  • 步骤三:

    • 查看检索结果:
2.4 日志告警
  • 日志告警:

    • 功能允许您通过配置业务日志中的关键词,设置关键词出现频率的告警配置告警通知 人,一旦触发告警条件,告警通知人将会受到告警信息。
  • 日志告警操作步骤:

    image-20211202114809581

  • 官网文档:https://cloud.tencent.com/document/product/649/18195

第三章 TSF弹性伸缩功能

接下来看一下TSF的弹性伸缩功能,首先看一下什么是弹性伸缩

3.1 什么是弹性伸缩
  • 什么是弹性伸缩?
    • 根据预先设定的弹性伸缩规则,动态增加或者减少部署组的实例数。
  • 弹性伸缩规则
    • 由规则名、扩容活动、缩容活动、冷却时间等参数构成的规则,用来描述弹性扩缩容的触发条件、实例数量变化和限制。
  • 通俗的说弹性伸缩就是根据规则定义动态调整服务器的数量,提供服务的利用率。
3.2 弹性伸缩的指标
  • 弹性伸缩指标:
    • CPU 利用率:
      • 在指定时间范围内,部署组内所有实例 CPU 利用率的平均值。
    • 内存利用率:
      • 在指定时间范围内,部署组内所有实例内存利用率的平均值。
    • 请求 QPS:
      • 在指定时间范围内,部署组内所有实例请求 QPS 平均值。
    • 响应时间:
      • 在指定时间范围内,部署组内所有实例响应时间平均值。
    • 冷却时间
      • 设置冷却时间,可以确保在上一扩(缩)容活动生效前弹性伸缩不会启动或终止其他实例。弹性伸缩会等待冷却时间完成,然后再继续扩(缩)容活动。建议设置冷却时间>60秒。
3.3 TSF弹性伸缩功能使用步骤
3.3.1 进入弹性伸缩功能
  • 步骤一:

    • 登录 TSF 控制台,单击左侧导航栏【弹性伸缩】

  • 进入功能后如上图

3.3.2 新建规则
  • 步骤二:

    • 单击【新建规则】按钮

    • 填写弹性伸缩条件

      image-20211202115726443

  • 弹性伸缩规则内容:

  • 规则名:最长60个字符

  • 扩容活动:勾选既启用

    • 触发条件:由指标、阈值、持续时间构成。多条触发条件为逻辑或(OR)的关系,满足任一 条件。
    • 增加实例数:每次部署组的指标达到了触发条件后,增加的实例数量。
    • 最大实例数:部署组的实例数上限。
  • 缩容活动

    • 触发条件:由指标、阈值、持续时间构成。多条触发条件为逻辑与 AND 的关系,必须同时满 足。
    • 减少实例数:每次部署组的指标达到了触。发条件后,减少的实例数量。
    • 最小实例数:部署组的实例数下限
  • 冷却时间:建议设置冷却时间大于持续时间,如持续时间设置1分钟,冷却时间设置5分钟。

3.3.3 关联部署组
  • 步骤三:

    • 关联部署组

      • 单击弹性伸缩规则列表操作中的【关联部署组】。

        image-20211202120135783

    • 选择应用,然后选择部署组。

  • 是否立刻启用规则:如果选择启用,则规则会在部署组上立刻生效,否则规则不会立刻在部署组 上立刻生效,用户可以后续在规则详情页-关联部署组 tab 页中修改。

  • 关联部署组成功后,可以在“检索日志”中查看伸缩日志。“检索日志”见2.3内容说明;也可以 在触发条件后查看应用实例。

第四章 TSF调用链服务

接下来看一下服务依赖管理与调用链功能

4.1 调用链查询与服务依赖拓扑
  • TSF 提供Spring Cloud应用与Service Mesh应用的调用链查询与依赖拓扑查询能力。
  • 用户可以在控制台上追踪每次调用,查看调用时间、状态、监控数据。
  • 用户可以在控制台上查看服务依赖关系
  • 对Mesh服务,用户不需要代码中改动。
  • 调用链:api的调用路径;因为api的调用是类似“链式”,所以也被称之为调用链。
  • 依赖拓扑:服务的依赖关系拓扑图
4.2 调用链的配置
  • 调用链功能配置:

    • 为了节约用户的开发成本和提升效率,TSF 提供了Spring Cloud 全链路跟踪组件。

    • 用户只需在代码中配置组件依赖,即可直接使用 TSF 全链路跟踪功能。

    • 添加 pom.xml 依赖:

      1
      2
      3
      4
      <dependency>
      <groupId>com.tencent.tsf</groupId>
      <artifactId>spring-cloud-tsf-sleuth</artifactId>
      </dependency>
  • 此处依赖的前提是相对于前面已经介绍的Spring Cloud迁移至TSF的应用案例代码。

  • 用户只需在代码中配置组件依赖,即可直接使用 TSF 全链路跟踪功能。无需关心日志采集、分析、 存储等过程。 用户仅需安装对应的依赖包及添加依赖项即可,无须其他配置。

4.3 调用链查询
  • 调用链查询

    • 用来查询和定位具体某一次调用的情况。使用者可以通过具体的服务、接口定位、IP 等来查询具体的调用过程,查找调用过程所需要的时间和运行情况。
  • 调用链查询步骤:

    image-20211202144918407

  • 调用链查询用来查询和定位具体某一次调用的情况。使用者可以通过具体的服务、接口定位、IP 等来查询具体的调用过程,查找调用过程所需要的时间和运行情况。

  • 操作步骤

    1. 登录 TSF 控制台。
    2. 在左侧导航栏中选择依赖分析-> 调用链查询 。
    3. 设置查询条件,单击【查询】按钮。
    4. 时间范围:支持特定和自定义时间范围选择。特定时间范围包括:5分钟前、10 分钟前和 30 分钟前。
    5. 调用服务/调用接口:单击下拉框,在下拉框中选择服务,可以输入关键字进行搜索。
    6. 被调服务/被调接口:单击下拉框,在下拉框中选择服务,可以输入关键字进行搜索。
    7. 仅查询出错的调用链:勾选后,可以查询系统中的出错业务。
    8. 耗时大于:设置耗时的阈值,可以查询系统中的慢业务。
    9. 客户端 IP :客户端 IP 地址。
    10. 服务端 IP:服务端 IP 地址。
    11. 标签:用户在代码中设置的标签,参考 参数传递 中设置调用链 Tag。
  • 根据查询结果,可以单击 traceID 进入具体慢业务或出错业务,查看调用链详情

4.3.1 输入查询条件
  • 步骤一:

    • 登录 TSF 控制台,点击导航栏【调用链查询】
  • 步骤二:

    • 输入查询条件

    image-20211202150658857

  • 查询条件:

    • 时间范围:支持特定和自定义时间范围选择。特定时间范围包括:5分钟前、10 分钟前和 30 分钟前。
    • 调用服务/调用接口:单击下拉框,在下拉框中选择服务,可以输入关键字进行搜索。
    • 被调服务/被调接口:单击下拉框,在下拉框中选择服务,可以输入关键字进行搜索。
    • 仅查询出错的调用链:勾选后,可以查询系统中的出错业务。
    • 耗时大于:设置耗时的阈值,可以查询系统中的慢业务。
    • 客户端 IP :客户端 IP 地址。
    • 服务端 IP:服务端 IP 地址。
    • 标签:用户在代码中设置的标签,参考 参数传递 中设置调用链 Tag。
4.3.2 查看调用链结果
  • 步骤三:

    • 结果查看

      image-20211202151124235

  • 可以根据不同条件查询对应的调用链

4.3.3 根据TraceID查询具体的调用链
  • 步骤四:
    • 根据TraceID查询具体的调用链
  • TraceID查询二种方式:
    • 在调用链查询结果列表页面,直接点击调用链记录的 TraceID 可以进行对应id的TraceID查询
    • 直接点击TraceID的tab页面进行TraceID 查询,然后输入TraceID点击“查询”按钮也可以进 行查询。
4.4 调用链详情
  • 通过调用链详情,可以根据 TraceID 查询调用链的详细信息。调用链详情是为了定位在分布式链 路调用过程中每个环节的耗时和异常(不包含本地方法调用情况,本地方法调用建议使用业务 log 的方式记录)。

  • 通过调用链通常为了解决如下几个问题:

  • 定位耗时较长的服务。

  • 不合理的调用逻辑(如一次请求多次调用某服务,建议改为批量调用接口)。

    image-20211202151431047

  • 操作步骤

    • 登录 TSF 控制台
    • 在左侧导航栏中选择 调用链查询,选择TraceID查询 。
    • 在搜索框中输入目标 TraceID ,单击搜索按钮。
    • 将鼠标移动到每个环节的时间条上并单击,会弹出 Span 的详细信息。Span 包含三部分信息:
    • 基本信息:显示 Span 名、Span ID、状态和阶段耗时信息。
    • 标签:显示系统和业务自定的标签
  • 自定义 Metadata:显示用户在代码中设置的自定义元数据信息。参考开发手册中 调用链,了解如何设置 Metadata。

4.5 调用链管理的原理
  • 请求到来生成一个全局TraceID,通过TraceID可以串联起整个调用链,一个TraceID代表一次请求;
  • 除了TraceID外,使用SpanID记录调用父子关系。每个服务会记录下parent id和span id,通过他们可以组织完整调用链的父子关系;
  • 一个没有parent id的span成为root span,可以看成调用链入口;
  • 所有这些ID可用全局唯一的64位整数表示;
  • 整个调用过程中每个请求都要透传TraceID和SpanID;
  • 每个服务将该次请求附带的TraceID和附带的SpanID作为parent id记录下,并且将自己生成的 SpanID也记录下;
  • 要查看某次完整的调用则只要根据TraceID查出所有调用记录,然后通过parent id和span id组织 起整个调用父子关系。
4.6 调用链标签与元数据设置

image-20211202152722372

  • 标签:系统和业务自定的标签,比如:userId,姓名等都可以作为标签使用。
  • 可以在调用链查询功能中,输入如上图的标签内容进行搜索。
  • 调用链标签:
    • 目的是插入一些标签信息到调用链日志中,保证用户可以根据标签内容进行检索。
  • 标签常见用法:
    • 设置userId为标签,搜索userId值即可找到所有包含这个内容的调用链信息。
  • 元数据:
    • 保存用户调用链中的信息,可以将参数设置为元数据。用户指定的元数据可以在调用链详情中查看,但不支持对元数据进行检索。
  • 元数据常见用法:
    • 将一些不重要的参数值、token信息放入元数据
4.7 调用链标签与元数据数据传递性
  • 以调用关系 A => B => C,说明传递性的概念:

    • 可传递(Transitive):需要传递的标签,在整条链路都传递,即用户在 A 设置的标签,会传递 到 B 再传递到 C。
    • 不可传递:不需要传递的标签,即用户在 A 设置的标签,会传递到 B,但是不会传递到 C。
  • 标签信息 支持允许用户设置是否支持传递,辅助信息 不支持传递。

  • 不同的标签可以设置不同传递性,比如一些业务场景:

    • userid 标签是需要传递的:

      • 可以作为整条调用链上的服务的 上下文信息。
      • 可以实现按 uin 区分的服务路由,比如 A、B、C 三个服务同时做滚动发布,那么可以让一批 uin 都走新 版本的 A、B、C 服务,其他用户走老版本。
    • level=高级会员 这种标签,很可能就不需要在调用间传递下去。

4.8 调用链标签与元数据设置

image-20211202153441725

  • 上图是标签的操作接口,以及标签的开关属性。
  • 使用代码(如:TsfContext.putTag(“userId”, 1231232“”); )可以设置标签。

第五章 TSF服务依赖拓扑

接下来我们看一下TSF的服务依赖拓扑功能

5.1 服务依赖拓扑
  • 服务依赖拓扑:

    • 包含了查询服务之间相互依赖调用的拓扑关系,查询特定集群特定命名空间下服务之 间调用的统计结果等功能。

    • 主要优势

      image-20211202162125963

image-20211202162142779

  • 服务依赖拓扑:通俗的说就是把各个服务之间的依赖关系,通过图表的形式展示出来
5.2 查询拓扑关系
  • 查询拓扑关系

    image-20211202162811477

  • 单击左侧运维中心-服务依赖拓扑进入服务依赖拓扑界面。

  • 选择白色页面左上角数据中心位置,选择需要查看的服务的所属集群,以及所属命名空间。

  • 下方按钮选择需要依赖拓扑的时间,近 30 分钟、近 10 分钟、近 5 分钟以及选择特定时间段。 需要注意的是特定时间段的时间跨度最长为 32 天。

  • 选择之后将在下方空白处出现对应的服务依赖调用关系。

5.2.1 输入拓扑查询条件
  • 步骤一:

    • 登录 TSF 控制台,单击左侧导航栏【服务依赖拓扑】
  • 步骤二:

    • 输入查询条件:image-20211202163530243
  • 灰色的圆圈表示主动调用的服务,箭头表示发出调用。绿色的圆圈表示成功调用,黄色表示调用 失败。绿色和黄色组成的圆圈,绿色所占的比例是成功调用的比例,黄色为失败的比例。圆圈中 的数字表示平均调用耗时和调用频率。

5.2.2 查询拓扑关系
  • 步骤三:

    • 查看依赖拓扑

    • 灰色的圆圈表示主动调用的服务,箭头表示发出调用。绿色的圆圈表示成功调用,黄 色表示调用失败。绿色和黄色组成的圆圈,绿色所占的比例是成功调用的比例,黄色 为失败的比例。圆圈中的数字表示平均调用耗时和调用频率。

      image-20211202163857395

5.3 查询依赖详情
  • 鼠标放置到图上特定位置可以显示调用依赖详情。

    image-20211202163958102

  • 放置在服务间的依赖线条上,弹出面板显示被调用者和调用次数统计,单击弹出框上的“查看调 用链”可以进入到调用链查询界面。

  • 放置在服务圈内(白色底),可以展示被调用次数,也可以跳转进入调用链查询界面。

  • 放置在被调用的服务圆圈外环,可以显示具体的调用成功次数(绿色)或者失败次数(黄色)。

  • 点击弹出框中的“查看调用链详情”可以查看详细的调用链

思考题

  • 弹性伸缩的判断指标有哪些?
  • 如何才能在TSF控制台查看日志?

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!