八、TSF运维管理
八、TSF运维管理
在介绍了使用TSF部署虚拟机应用以及容器应用以后,接下来我们来看一下TSF的运维管理能力。
学习目标
通过本文的学习,您将可以:
- 了解TSF的日志功能
- 使用日志监控TSF
- 掌握日志的告警
- 使用TSF的弹性伸缩
- 掌握TSF调用链服务
- 了解TSF服务依赖拓扑
第一章 TSF的日志简介
首先我们来看一下TSF的日志是什么?
1.1 TSF日志简介
日志服务为用户提供一站式日志服务,从日志采集、日志存储到日志内容搜索,帮助用户轻松定位业务问题。
下图是用户在 TSF 平台上使用日志服务的流程图:
日志服务为用户提供一站式日志服务,从日志采集、日志存储到日志内容搜索,帮助用户轻松定 位业务问题。用户通过指定部署组的日志配置项来指定日志采集规则,TSF Agent 根据日志配置 项采集指定路径下的文件日志,并上传日志到日志存储模块。用户可以通过 TSF 控制台查看部署 组实时日志,并根据关键词来检索日志。
日志服务原理
日志采集:
- 通过 Agent 来采集日志,无须手动安装。
日志索引与查询
- 实时索引:采集的日志数据建立索引。
- 查询灵活:支持全文检索、关键词检索(短语或者分词)。
第二章 TSF日志服务管理与告警功能
接下来我们来看一下TSF的日志与告警功能
2.1 日志配置项
日志配置项:
用于指定采集日志的规则,包括日志的采集路径和日志解析格式
日志配置项操作步骤:
要使用TSF的日志功能必须先配置日志配置项。
日志配置项用于指定采集日志的规则,包括日志的采集路径和日志解析格式。用户可以在 TSF 控 制台上创建日志配置项,将配置项发布到部署组上。同一个部署组可以关联多个日志配置项。
日志配置具体位置:应用中心-》配置管理-》日志配置
2.1.1 创建日志配置项
步骤一:
- 登录TSF进入日志配置功能:应用中心-》配置管理-》日志配置
步骤二:
创建日志配置项:
单击【新建配置】,在弹出框中填写日志配置项信息。
- 名称:日志配置名称,不超过 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 发布日志配置
步骤三:
发布配置:把配置项发布到对应的部署组中。
日志配置项列表,发布配置
- 在日志配置项列表,右侧操作栏中单击【发布配置】,界面如上图一;
- 选择要绑定的部署组,界面如上图二;
- 单击【提交】按钮。
日志配置发布以后,就可以进行日志检索功能了,后续再介绍。
2.1.3 日志配置项说明
- 默认日志配置项
- TSF 提供默认日志配置项,格式是 Spring Boot。日志路径包括以下三部分(相对于应用启动路径):
- ./*.log
- ./log/*.log
- ./logs/*.log
- TSF 提供默认日志配置项,格式是 Spring Boot。日志路径包括以下三部分(相对于应用启动路径):
- 部署组关联日志配置项
- 部署组关联日志配置项有两个入口:
- 用户可以在创建应用时将日志配置项关联到应用。
- 在日志配置项列表,右侧操作栏中单击【发布配置】。
- 用户可以在微服务应用的配置文件中(如springboot项目中的application.yml)配 置 logging.file 为上述任意一个路径,然后在创建部署组时,选择默认日志配置项 default-logconfig。
2.2 实时日志
TSF 会根据部署组的日志配置项来采集业务日志。
- 例如日志配置项的采集路径是 /tsf-demo-logs/tsf-inventory/*.log,TSF 会采集该路 径下的文件日志。
实时日志查看步骤:
查看实时日志(官网文档:https://cloud.tencent.com/document/product/649/18221)
登录 TSF 控制台,单击左侧导航栏【部署组】。
用户可以单击部署组列表上的 日志 图标,查看实时日志。切换日志源查看日志配置项的业务日 志或者 stdout 标准输出日志。
日志配置项:查看日志配置项的采集路径下的业务日志。
stdout (标准输出) 日志:查看实例标准输出日志。
用户也可以单击部署组 ID 进入详情页中,单击 日志 标签页查看实时日志。
2.2 实时日志(续)
步骤一:
- 登录 TSF 控制台,单击左侧导航栏【部署组】
步骤二:
- 查看实时日志:单击部署组 ID 进入详情页中,单击 日志 标签页查看实时日志
2.3 日志检索
当部署组关联了日志配置项后,TSF 会对采集的日志数据建立索引。
- 用户可以通过日志检索功能根据关键词来检索出关键日志信息
日志检索操作步骤:
采集的日志数据实时建索引,用户可以在控制台使用关键词进行检索。
登录 TSF 控制台,单击左侧导航栏【日志搜索】。
输入搜索条件
单击【查询】按钮,查看检索结果。
2.3 日志检索(续)
步骤一:
- 登录 TSF 控制台,单击左侧导航栏【日志检索】
步骤二:
- 输入搜索条件:
- 选择搜索的时间范围。
- 选择搜索的范围,可以指定应用和实例。
- 输入日志关键词,关键词支持空格、逗号和短横线分词,可使用双引号进行短语搜索,支持 * 号的模糊匹配
步骤三:
- 查看检索结果:
2.4 日志告警
日志告警:
- 功能允许您通过配置业务日志中的关键词,设置关键词出现频率的告警配置告警通知 人,一旦触发告警条件,告警通知人将会受到告警信息。
日志告警操作步骤:
第三章 TSF弹性伸缩功能
接下来看一下TSF的弹性伸缩功能,首先看一下什么是弹性伸缩
3.1 什么是弹性伸缩
- 什么是弹性伸缩?
- 根据预先设定的弹性伸缩规则,动态增加或者减少部署组的实例数。
- 弹性伸缩规则
- 由规则名、扩容活动、缩容活动、冷却时间等参数构成的规则,用来描述弹性扩缩容的触发条件、实例数量变化和限制。
- 通俗的说弹性伸缩就是根据规则定义动态调整服务器的数量,提供服务的利用率。
3.2 弹性伸缩的指标
- 弹性伸缩指标:
- CPU 利用率:
- 在指定时间范围内,部署组内所有实例 CPU 利用率的平均值。
- 内存利用率:
- 在指定时间范围内,部署组内所有实例内存利用率的平均值。
- 请求 QPS:
- 在指定时间范围内,部署组内所有实例请求 QPS 平均值。
- 响应时间:
- 在指定时间范围内,部署组内所有实例响应时间平均值。
- 冷却时间
- 设置冷却时间,可以确保在上一扩(缩)容活动生效前弹性伸缩不会启动或终止其他实例。弹性伸缩会等待冷却时间完成,然后再继续扩(缩)容活动。建议设置冷却时间>60秒。
- CPU 利用率:
3.3 TSF弹性伸缩功能使用步骤
弹性伸缩操作步骤:
3.3.1 进入弹性伸缩功能
步骤一:
登录 TSF 控制台,单击左侧导航栏【弹性伸缩】
进入功能后如上图
3.3.2 新建规则
步骤二:
单击【新建规则】按钮
填写弹性伸缩条件
弹性伸缩规则内容:
规则名:最长60个字符
扩容活动:勾选既启用
- 触发条件:由指标、阈值、持续时间构成。多条触发条件为逻辑或(OR)的关系,满足任一 条件。
- 增加实例数:每次部署组的指标达到了触发条件后,增加的实例数量。
- 最大实例数:部署组的实例数上限。
缩容活动
- 触发条件:由指标、阈值、持续时间构成。多条触发条件为逻辑与 AND 的关系,必须同时满 足。
- 减少实例数:每次部署组的指标达到了触。发条件后,减少的实例数量。
- 最小实例数:部署组的实例数下限
冷却时间:建议设置冷却时间大于持续时间,如持续时间设置1分钟,冷却时间设置5分钟。
3.3.3 关联部署组
步骤三:
关联部署组
单击弹性伸缩规则列表操作中的【关联部署组】。
选择应用,然后选择部署组。
是否立刻启用规则:如果选择启用,则规则会在部署组上立刻生效,否则规则不会立刻在部署组 上立刻生效,用户可以后续在规则详情页-关联部署组 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 等来查询具体的调用过程,查找调用过程所需要的时间和运行情况。
调用链查询步骤:
调用链查询用来查询和定位具体某一次调用的情况。使用者可以通过具体的服务、接口定位、IP 等来查询具体的调用过程,查找调用过程所需要的时间和运行情况。
操作步骤
- 登录 TSF 控制台。
- 在左侧导航栏中选择依赖分析-> 调用链查询 。
- 设置查询条件,单击【查询】按钮。
- 时间范围:支持特定和自定义时间范围选择。特定时间范围包括:5分钟前、10 分钟前和 30 分钟前。
- 调用服务/调用接口:单击下拉框,在下拉框中选择服务,可以输入关键字进行搜索。
- 被调服务/被调接口:单击下拉框,在下拉框中选择服务,可以输入关键字进行搜索。
- 仅查询出错的调用链:勾选后,可以查询系统中的出错业务。
- 耗时大于:设置耗时的阈值,可以查询系统中的慢业务。
- 客户端 IP :客户端 IP 地址。
- 服务端 IP:服务端 IP 地址。
- 标签:用户在代码中设置的标签,参考 参数传递 中设置调用链 Tag。
根据查询结果,可以单击 traceID 进入具体慢业务或出错业务,查看调用链详情
4.3.1 输入查询条件
步骤一:
- 登录 TSF 控制台,点击导航栏【调用链查询】
步骤二:
- 输入查询条件
查询条件:
- 时间范围:支持特定和自定义时间范围选择。特定时间范围包括:5分钟前、10 分钟前和 30 分钟前。
- 调用服务/调用接口:单击下拉框,在下拉框中选择服务,可以输入关键字进行搜索。
- 被调服务/被调接口:单击下拉框,在下拉框中选择服务,可以输入关键字进行搜索。
- 仅查询出错的调用链:勾选后,可以查询系统中的出错业务。
- 耗时大于:设置耗时的阈值,可以查询系统中的慢业务。
- 客户端 IP :客户端 IP 地址。
- 服务端 IP:服务端 IP 地址。
- 标签:用户在代码中设置的标签,参考 参数传递 中设置调用链 Tag。
4.3.2 查看调用链结果
步骤三:
结果查看
可以根据不同条件查询对应的调用链
4.3.3 根据TraceID查询具体的调用链
- 步骤四:
- 根据TraceID查询具体的调用链
- TraceID查询二种方式:
- 在调用链查询结果列表页面,直接点击调用链记录的 TraceID 可以进行对应id的TraceID查询
- 直接点击TraceID的tab页面进行TraceID 查询,然后输入TraceID点击“查询”按钮也可以进 行查询。
4.4 调用链详情
通过调用链详情,可以根据 TraceID 查询调用链的详细信息。调用链详情是为了定位在分布式链 路调用过程中每个环节的耗时和异常(不包含本地方法调用情况,本地方法调用建议使用业务 log 的方式记录)。
通过调用链通常为了解决如下几个问题:
定位耗时较长的服务。
不合理的调用逻辑(如一次请求多次调用某服务,建议改为批量调用接口)。
操作步骤
- 登录 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 调用链标签与元数据设置
- 标签:系统和业务自定的标签,比如: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 调用链标签与元数据设置
- 上图是标签的操作接口,以及标签的开关属性。
- 使用代码(如:TsfContext.putTag(“userId”, 1231232“”); )可以设置标签。
第五章 TSF服务依赖拓扑
接下来我们看一下TSF的服务依赖拓扑功能
5.1 服务依赖拓扑
服务依赖拓扑:
包含了查询服务之间相互依赖调用的拓扑关系,查询特定集群特定命名空间下服务之 间调用的统计结果等功能。
主要优势
- 服务依赖拓扑:通俗的说就是把各个服务之间的依赖关系,通过图表的形式展示出来
5.2 查询拓扑关系
查询拓扑关系
单击左侧运维中心-服务依赖拓扑进入服务依赖拓扑界面。
选择白色页面左上角数据中心位置,选择需要查看的服务的所属集群,以及所属命名空间。
下方按钮选择需要依赖拓扑的时间,近 30 分钟、近 10 分钟、近 5 分钟以及选择特定时间段。 需要注意的是特定时间段的时间跨度最长为 32 天。
选择之后将在下方空白处出现对应的服务依赖调用关系。
5.2.1 输入拓扑查询条件
步骤一:
- 登录 TSF 控制台,单击左侧导航栏【服务依赖拓扑】
步骤二:
- 输入查询条件:
灰色的圆圈表示主动调用的服务,箭头表示发出调用。绿色的圆圈表示成功调用,黄色表示调用 失败。绿色和黄色组成的圆圈,绿色所占的比例是成功调用的比例,黄色为失败的比例。圆圈中 的数字表示平均调用耗时和调用频率。
5.2.2 查询拓扑关系
步骤三:
查看依赖拓扑
灰色的圆圈表示主动调用的服务,箭头表示发出调用。绿色的圆圈表示成功调用,黄 色表示调用失败。绿色和黄色组成的圆圈,绿色所占的比例是成功调用的比例,黄色 为失败的比例。圆圈中的数字表示平均调用耗时和调用频率。
5.3 查询依赖详情
鼠标放置到图上特定位置可以显示调用依赖详情。
放置在服务间的依赖线条上,弹出面板显示被调用者和调用次数统计,单击弹出框上的“查看调 用链”可以进入到调用链查询界面。
放置在服务圈内(白色底),可以展示被调用次数,也可以跳转进入调用链查询界面。
放置在被调用的服务圆圈外环,可以显示具体的调用成功次数(绿色)或者失败次数(黄色)。
点击弹出框中的“查看调用链详情”可以查看详细的调用链
思考题
- 弹性伸缩的判断指标有哪些?
- 如何才能在TSF控制台查看日志?
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!