当前位置: 首页 > news >正文

[单master节点k8s部署]43.全链路监控(二)

部署pinpoint服务端

这里安装的是pinpoint-docker,可以从GitHub - pinpoint-apm/pinpoint-docker: Officix

下载。通过readme可以看到,该项目提供的镜像:

  • Pinpoint-Web Server
  • Pinpoint-Collector
  • Pinpoint-Agent
  • Pinpoint-Flink
  • Pinpoint-Hbase
  • Pinpoint-QuickStart:示例应用(v1.8.1+)
  • Pinpoint-Mysql
  • Pinpoint-Batch(v2.4.0+)

可以将QuickStart应用替换为自己的应用程序以开始监控。

项目依赖的镜像列表

  • Apache Zookeeper v3.4.13:用于HBase和Pinpoint集群
  • Kafka:当前使用版本为3.1-22.04_beta
  • Mysql(可选,v1.8.1+):用于启用“报警”功能‘

可以看到如下目录结构,里面有需要的镜像和文件夹

[root@pinpoint ~]# cd pinpoint-docker-2.0.1
[root@pinpoint pinpoint-docker-2.0.1]# ls
docker-compose.yml  pinpoint-agent-attach-example  pinpoint-mysql       Readme.md
docs                pinpoint-collector             pinpoint-quickstart
License             pinpoint-flink                 pinpoint-web
pinpoint-agent      pinpoint-hbase                 pinpoint-zookeeper

compose

进行docker-compose,如果没有docker-compose的话需要下载。这里需要配置docker镜像加速,因为国内无法访问很多镜像仓库。

我最经常使用的加速网站是https://dockerpull.com。但是这次compose的时候发现很多镜像拉取失败,我访问这个网站,发现他的域名已经更改为https://cjie.eu.org。

修改我的docker/daemon.json文件:

[root@pinpoint pinpoint-docker-2.0.1]# cat /etc/docker/daemon.json
{
"registry-mirrors":["https://cjie.eu.org","https://rsbud4vc.mirror.aliyuncs.com","https://registry.dockercn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hubmirror.c.163.com","http://qtid6917.mirror.aliyuncs.com"],
"insecure-registries":["192.168.244.131","harbor"],
"exec-opts":["native.cgroupdriver=systemd"],
"log-driver":"json-file",
"log-opts": {"max-size": "100m"},
"storage-driver":"overlay2" }

随后docker-compose:

root@pinpoint pinpoint-docker-2.0.1]# docker-compose pullzoo1 Skipped - Image is already being pulled by zoo3zoo2 Skipped - Image is already being pulled by zoo3jobmanager Skipped - Image is already being pulled by taskmanagerpinpoint-hbase Pullingpinpoint-agent Pullingzoo3 Pullingtaskmanager Pullingpinpoint-quickstart Pullingpinpoint-mysql Pullingpinpoint-web Pullingpinpoint-collector Pullingpinpoint-web Pulledpinpoint-collector Pulledpinpoint-quickstart Pulledtaskmanager Pulledzoo3 Pulledpinpoint-agent Pulledpinpoint-mysql Pulledpinpoint-hbase Pulled

微服务  

现在需要来监控之前安装的购物网站的微服务。复习一下之前的项目,有eureka微服务,gateway微服务,以及product,order,portal和stock四个微服务。

查看eureka(服务发现),这里查看的是ingress。

 这里是映射到了ingress-controller所在的虚拟机的节点上

[root@master k8s]# kubectl get pods -n kube-system nginx-ingress-controller-67685fb594-j2qdt -owide
NAME                                        READY   STATUS    RESTARTS      AGE   IP                NODE    NOMINATED NODE   READINESS GATES
nginx-ingress-controller-67685fb594-j2qdt   1/1     Running   1 (66d ago)   68d   192.168.244.129   node1   <none>           <none>

由于我们在windows的hosts文件里面配置了这个ip网址为eureka的域名 ,所以直接可以访问:

同时访问portal.ctnrs.com,可以看到之前部署的购物网站。

 pinpoint-agent

这个agent要具体安装到部署微服务的节点上。我们打开已经运行的pinpoint master端的UI界面,进行如下操作:

可以找到一个pinpoint-agent的github地址:

这个地址会下载一个jar包,把这个jar包放到哪一个服务的文件夹里面,这个agent就会收集哪个服务的数据。

新建pinpoint文件夹,然后把这个jar包解压到这里。

进入pinpoint.config文件,修改pinpoint服务端的ip:

按照以上顺序修改product/order和stock的pinpoint.config文件,就可以完成agent的部署。

数据库

如果要修改数据库文件的话,也要修改。

进行完上述步骤后,删除所有微服务,重新编译一遍项目。因为我们修改了一些配置文件,从而让pinpoint可以进行链路追踪。

root@master microservic-test-dev1]# mvn clean package -D maven.test.skip=true

就像上面一样,回到项目根目录下,然后执行maven代码编译。

然后重新进行镜像打包。

相关文章:

[单master节点k8s部署]43.全链路监控(二)

部署pinpoint服务端 这里安装的是pinpoint-docker&#xff0c;可以从GitHub - pinpoint-apm/pinpoint-docker: Officix 下载。通过readme可以看到&#xff0c;该项目提供的镜像&#xff1a; Pinpoint-Web ServerPinpoint-CollectorPinpoint-AgentPinpoint-FlinkPinpoint-Hba…...

Apache Doris 创始人:何为“现代化”的数据仓库?

在 12 月 14 日的 Doris Summit Asia 2024 上&#xff0c;Apache Doris 创始人 & PMC 成员马如悦在开场演讲中&#xff0c;围绕“现代化数据仓库”这一主题&#xff0c;指出 3.0 版本是 Apache Doris 研发路程中的重要里程碑&#xff0c;他将这一进展总结为“实时之路”、“…...

json的作用?

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;具有简洁、易读、易于解析和生成等特点&#xff0c;在前后端数据交互、配置文件、数据存储等多个领域发挥着重要作用&#xff0c;以下是具体介绍&#xff1a; JSON 的作用 数据…...

ChatGPT是如何生成长文的

说实话&#xff0c;现在我们对chatGPT的最深的印象就是他是一个各方面知识都比较全面的机器助手&#xff0c;我们的问题他都能生成答案&#xff0c;不过大家发现没有&#xff0c;它生成相对应的长文的时候&#xff0c;都是一个词一个词蹦出来的&#xff0c;有的时候是一个个词组…...

微服务——部署与运维

1、你是否有将 Java 微服务部署到容器&#xff08;如 Docker&#xff09;中的经验&#xff1f;请描述一下部署过程和相关注意事项。 部署过程&#xff1a; 编写 Dockerfile&#xff0c;定义基础镜像&#xff08;如 openjdk&#xff09;、应用 JAR 包路径和启动命令。构建镜像…...

json笔记

1、json的组成 JSON是一个标记符序列。这套标记符包括&#xff1a;构造字符、字符串、数字和字面值(false, true, null)。 1.1 构造字符 六个构造字符&#xff1a; 左方括号 [ 右方括号 ] 左大括号 { 右大括号 } 冒号 : 逗号 , 1.2 JSON值 json值包括&#xff1a;对象…...

从0入门自主空中机器人-1【课程介绍】

关于本课程&#xff1a; 本次课程是一套面向对自主空中机器人感兴趣的学生、爱好者、相关从业人员的免费课程&#xff0c;包含了从硬件组装、机载电脑环境设置、代码部署、实机实验等全套详细流程&#xff0c;带你从0开始&#xff0c;组装属于自己的自主无人机&#xff0c;并让…...

C++ 设计模式

代码示例 从封装变化角度分类 1.组件协作 现代软件专业分工之后的第一个结果“框架与应用程序的划分” &#xff0c;“组件协作”模式通过晚期绑定&#xff0c;来实现框架与应用程序之间的松耦合&#xff0c;是二者之间协作时常用的模式。 模板方法&#xff08;Template Me…...

最新版Edge浏览器加载ActiveX控件技术——alWebPlugin中间件V2.0.28-迎春版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…...

HarmonyOS NEXT应用开发实战:免费练手的网络API接口分享

学习一项技能&#xff0c;最好也最快的办法就是直接动手实战。在实战中不断的总结经验和收获成就感。这里分享些好用且免费的网络API练手接口&#xff0c;这对于想要提升自己网络开发能力的开发者来说&#xff0c;无疑是极大的福音。今天&#xff0c;我将详细介绍一个API接口集…...

高级技巧-使用Mysql 实现根据条件过滤整个分组数据

博客-mysql exists实现过滤所属条件对应分组的全部数据 在数据查询中&#xff0c;有时需要根据某一条件来过滤整个分组的数据&#xff0c;尤其是当某条记录满足特定条件时&#xff0c;需要将该组内的所有记录排除。本文将介绍如何使用 MySQL 的 EXISTS 关键字来实现这种分组过滤…...

LeetCode 9. 回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c…...

园区网综合拓扑实验

一、实验要求 实验拓扑图如上图所示 1、按照图示的VLAN及IP地址需求&#xff0c;完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan&#xff08;本实验未使用&#xff09; 4、上层…...

Flink状态编程

Flink处理机制的核心就是“有状态的流处理”&#xff0c;在某些情况下&#xff0c;一条数据的计算不仅要基于当前数据自身&#xff0c;还需要依赖数据流中的一些其他数据。这些在一个任务中&#xff0c;用来辅助计算的数据我们就称之为这个任务的状态。 一、按键分区状态&…...

Ajax数据爬取

有时我们用requests 抓取页面得到的结果&#xff0c;可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据&#xff0c;而使用requests 得到的结果中并没有这些数据。这是因为 requests 获取的都是原始 HTML 文档&#xff0c;而浏览器中的页面是JavaScript 处理…...

MVCC实现原理以及解决脏读、不可重复读、幻读问题

MVCC实现原理以及解决脏读、不可重复读、幻读问题 MVCC是什么&#xff1f;有什么作用&#xff1f;MVCC的实现原理行隐藏的字段undo log日志版本链Read View MVCC在RC下避免脏读MVCC在RC造成不可重复读、丢失修改MVCC在RR下解决不可重复读问题RR下仍然存在幻读的问题 MVCC是什么…...

PilotGo

title: 解锁 PilotGo&#xff1a;智能化运维的得力助手 date: ‘2024-12-29’ category: blog tags: PilotGo运维管理智能化工具技术应用 sig: ops archives: ‘2024-12’ author:way_back summary: PilotGo 作为一款创新的运维管理工具&#xff0c;凭借其智能化的特性和丰富的…...

【后端】LNMP环境搭建

长期更新各种好文&#xff0c;建议关注收藏&#xff01; 本文近期更新完毕。 LNMPlinuxnginxmysqlphp 需要的资源 linux服务器 web服务软件nginx 对应的语言编译器代码文件 数据库mysql安装 tar.gz包或者命令行安装 进入root&#xff1a; sodu 或su mkdir path/{server,soft}…...

vue 本地自测iframe通讯

使用 postMessage API 来实现跨窗口&#xff08;跨域&#xff09;的消息传递。postMessage 允许你安全地发送消息到其他窗口&#xff0c;包括嵌套的 iframe&#xff0c;而不需要担心同源策略的问题。 发送消息&#xff08;父应用&#xff09; 1. 父应用&#xff1a;发送消息给…...

【人工智能】基于Python和OpenCV实现实时人脸识别系统:从基础到应用

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着人工智能和计算机视觉的快速发展,人脸识别技术已广泛应用于监控、安全、社交媒体、金融和医疗等领域。本文将介绍如何利用Python和Ope…...

vue2使用pdfjs-dist和jsPDF生成pdf文件

vue2使用pdfjs-dist和jsPDF生成pdf文件 1、安装依赖 npm install pdfjs-dist2.6.3472、引入依赖 import { jsPDF } from jspdf// 使用require方式导入pdfjs-dist v2.6.347&#xff0c;高版本报错&#xff08;import导入会报错&#xff1a;GlobalWorkerOptions undefined&…...

深度学习算法选择

1. 卷积神经网络&#xff08;Convolutional Neural Networks, CNNs&#xff09; 简介 卷积神经网络擅长处理具有网格结构的数据&#xff0c;如图像。通过卷积层、池化层和全连接层&#xff0c;CNN能够自动提取和学习数据的空间特征。 应用场景 图像识别与分类&#xff1a;如…...

asp.net core系统记录当前在线人数

实时记录当前在线人数&#xff0c;登录后保持120秒在线状态&#xff0c;在线状态保存在缓存中&#xff0c;采用滑动过期&#xff0c;在120秒内请求了系统&#xff0c;自动续活120秒&#xff1b;超过时间则移除用户在线状态&#xff1b; 需要在登录过滤器标记用户在线状态需要排…...

【每日学点鸿蒙知识】Grid子项拖动、Swiper指示器、手势事件上报、指定使用发布版本API、打包签名失败报错109

1、HarmonyOS Grid组件子项拖动问题&#xff1f; Grid组件中有20个GridItem子组件&#xff0c;其中前4个GridItem是不能拖动的&#xff0c;其余GridItem可拖动排序。 关于可拖拽grid及gridItem可参考如下代码&#xff08;注&#xff1a;其中 .draggable(parseInt(day) < 6…...

轻松实现向量搜索:探索 Elastic-Embedding-Searcher 项目

随着人工智能和机器学习技术的飞速发展&#xff0c;向量搜索已成为数据检索的重要方式。尤其是在处理大规模文本数据时&#xff0c;传统的基于关键词的检索方式已经难以满足需求。为了优化检索性能并提升搜索精度&#xff0c;向量搜索成为了更加高效的解决方案。而在这一领域&a…...

区块链平台安全属性解释

区块链平台安全属性解释 双向认证 解释:双向认证是指在通信过程中,**通信双方都需要对对方的身份进行验证,确保对方是合法的、可信任的实体。**只有双方身份都得到确认后,通信才会被允许进行,从而防止非法用户的接入和数据的窃取或篡改。举例:在基于区块链和联邦学习的数…...

matlab reshape permute

1.reshape 将向量按照顺序重新构建 矩阵&#xff0c;新矩阵 先排完第一列&#xff0c; 再第二列… 2.permute 将向量 维度变换...

《一文读懂卷积网络CNN:原理、模型与应用全解析》

《一文读懂卷积网络CNN&#xff1a;原理、模型与应用全解析》 一、CNN 基本原理大揭秘&#xff08;一&#xff09;从人类视觉到 CNN 灵感&#xff08;二&#xff09;核心组件详解 二、经典 CNN 模型巡礼&#xff08;一&#xff09;LeNet-5&#xff1a;开山鼻祖&#xff08;二&a…...

深入理解 PyTorch 的 view() 函数:以多头注意力机制(Multi-Head Attention)为例 (中英双语)

深入理解 PyTorch 的 view() 函数&#xff1a;以多头注意力机制&#xff08;Multi-Head Attention&#xff09;为例 在深度学习模型的实现中&#xff0c;view() 是 PyTorch 中一个非常常用的张量操作函数&#xff0c;它能够改变张量的形状&#xff08;shape&#xff09;而不改…...

【每日学点鸿蒙知识】获取是否有网接口、获取udid报错、本地通知、Json转Map、Window10安装Hyper-v

1、有没有获取当前是否真实有网的接口&#xff1f; 比如当前链接的是wifi&#xff0c;但是当前wifi是不能访问网络的&#xff0c;有没有接口可以获取到这个真实的网络访问状态&#xff1f; 请参考说明链接&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyo…...

《Vue3 四》Vue 的组件化

组件化&#xff1a;将一个页面拆分成一个个小的功能模块&#xff0c;每个功能模块完成自己部分的独立的功能。任何应用都可以被抽象成一棵组件树。 Vue 中的根组件&#xff1a; Vue.createApp() 中传入对象的本质上就是一个组件&#xff0c;称之为根组件&#xff08;APP 组件…...

Linux:alias别名永久有效

一、背景 日常使用bash时候&#xff0c;有些常用的命令参数的组合命令太长&#xff0c;很难记&#xff0c;此时可以利用Linux提供的alias命令生成命令的别名&#xff08;命令的隐射&#xff09;&#xff0c;但是我们会发现&#xff0c;当退出了终端后重新登录就失效了&#xff…...

MicroDiffusion——采用新的掩码方法和改进的 Transformer 架构,实现了低预算的扩散模型

介绍 论文地址&#xff1a;https://arxiv.org/abs/2407.15811 现代图像生成模型擅长创建自然、高质量的内容&#xff0c;每年生成的图像超过十亿幅。然而&#xff0c;从头开始训练这些模型极其昂贵和耗时。文本到图像&#xff08;T2I&#xff09;扩散模型降低了部分计算成本&a…...

网神SecFox FastJson反序列化RCE漏洞复现(附脚本)

0x01 产品描述&#xff1a; ‌网神SecFox是奇安信网神信息技术(北京)股份有限公司推出的一款运维安全管理与审计系统‌&#xff0c;集“身份认证、账户管理、权限控制、运维审计”于一体&#xff0c;提供统一运维身份认证、细粒度的权限控制、丰富的运维审计报告、多维度的预警…...

解决无法在 Ubuntu 24.04 上运行 AppImage 应用

在 Ubuntu 24.04 中运行 AppImage 应用的完整指南 在 Ubuntu 24.04 中&#xff0c;许多用户可能会遇到 AppImage 应用无法启动的问题。即使你已经设置了正确的文件权限&#xff0c;AppImage 仍然拒绝运行。这通常是由于缺少必要的库文件所致。 问题根源&#xff1a;缺少 FUSE…...

Pytorch | 利用PC-I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用PC-I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集PC-I-FGSM介绍算法原理 PC-I-FGSM代码实现PC-I-FGSM算法实现攻击效果 代码汇总pcifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CIFAR…...

前端往后端传递参数的方式有哪些?

文章目录 1. URL 参数1.1. 查询参数&#xff08;Query Parameters)1.2. 路径参数&#xff08;Path Parameters&#xff09; 2. 请求体&#xff08;Request Body&#xff09;2.1. JSON 数据2.2. 表单数据2.3. 文件上传 3. 请求头&#xff08;Headers&#xff09;3.1. 自定义请求…...

对抗攻击VA-I-FGSM:Adversarial Examples with Virtual Step and Auxiliary Gradients

文章目录 摘要相关定义算法流程代码:文章链接: Improving Transferability of Adversarial Examples with Virtual Step and Auxiliary Gradients 摘要 深度神经网络已被证明容易受到对抗样本的攻击,这些对抗样本通过向良性样本中添加人类难以察觉的扰动来欺骗神经网络。目…...

【Java】IO流练习

IO流练习 题干&#xff1a; 根据指定要求&#xff0c;完成电话记录、 注册、登录 注册 题干&#xff1a; 完成【注册】功能&#xff1a; 要求&#xff1a; 用户输入用户名、密码存入users.txt文件中 若users.txt文件不存在&#xff0c;创建该文件若users.txt文件存在 输入…...

红魔电竞PadPro平板解BL+ROOT权限-KernelSU+LSPosed框架支持

红魔Padpro设备目前官方未开放解锁BL&#xff0c;也阉割了很多解锁BL指令&#xff0c;造成大家都不能自主玩机。此规则从红魔8开始&#xff0c;就一直延续下来&#xff0c;后续的机型大概率也是一样的情况。好在依旧有开发者进行适配研究&#xff0c;目前红魔PadPro平板&#x…...

小程序配置文件 —— 12 全局配置 - pages配置

全局配置 - pages配置 在根目录下的 app.json 文件中有一个 pages 字段&#xff0c;这里我们介绍一下 pages 字段的具体用法&#xff1b; pages 字段&#xff1a;用来指定小程序由哪些页面组成&#xff0c;用来让小程序知道由哪些页面组成以及页面定义在哪个目录&#xff0c;…...

供应链系统设计-供应链中台系统设计(六)- 商品中心概念篇

概述 我们在供应链系统设计-中台系统设计系列&#xff08;五&#xff09;- 供应链中台实践概述 中描述了什么是供应链中台&#xff0c;供应链中台主要包含了那些组成部门。包括业务中台、通用中台等概念。为了后续方便大家对于中台有更深入的理解&#xff0c;我会逐一针对中台…...

leetcode 面试经典 150 题:删除有序数组中的重复项

链接删除有序数组中的重复项题序号26题型数组解题方法双指针难度简单熟练度✅✅✅✅✅ 题目 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保…...

Python 中的 lambda 函数和嵌套函数

Python 中的 lambda 函数和嵌套函数 Python 中的 lambda 函数和嵌套函数Python 中的 lambda 函数嵌套函数&#xff08;内部函数&#xff09;封装辅助函数闭包和工厂函数 Python 中的 lambda 函数和嵌套函数 Python 中的 lambda 函数 Lambda 函数是基于单行表达式的匿名函数。…...

Android笔试面试题AI答之Android基础(7)

Android入门请看《Android应用开发项目式教程》&#xff0c;视频、源码、答疑&#xff0c;手把手教 文章目录 1.Android开发如何提高App的兼容性&#xff1f;**1. 支持多版本 Android 系统****2. 适配不同屏幕尺寸和分辨率****3. 处理不同硬件配置****4. 适配不同语言和地区**…...

PhPMyadmin-cms漏洞复现

一.通过日志文件拿Shell 打开靶场连接数据库 来到sql中输入 show global variables like %general%; set global general_logon; //⽇志保存状态开启&#xff1b; set global general_log_file D:/phpstudy/phpstudy_pro/WWW/123.php //修改日志保存位置 show global varia…...

HTML-CSS(day01)

W3C标准&#xff1a; W3C&#xff08; World Wide Web Consortium&#xff0c;万维网联盟&#xff09; W3C是万维网联盟&#xff0c;这个组成是用来定义标准的。他们规定了一个网页是由三部分组成&#xff0c;分别是&#xff1a; 三个组成部分&#xff1a;&#xff08;1&…...

【服务器项目部署】⭐️将本地项目部署到服务器!

目录 &#x1f378;前言 &#x1f37b;一、服务器选择 &#x1f379; 二、服务器环境部署 2.1 java 环境部署 2.2 mysql 环境部署 &#x1f378;三、项目部署 3.1 静态页面调整 3.2 服务器端口开放 3.3 项目部署 ​ &#x1f379;四、测试 &#x1f378;前言 小伙伴们大家好…...

计算机网络 (14)数字传输系统

一、定义与原理 数字传输系统&#xff0c;顾名思义&#xff0c;是一种将连续变化的模拟信号转换为离散的数字信号&#xff0c;并通过适当的传输媒介进行传递的系统。在数字传输系统中&#xff0c;信息被编码成一系列的二进制数字&#xff0c;即0和1&#xff0c;这些数字序列能够…...

机器学习周报-TCN文献阅读

文章目录 摘要Abstract 1 TCN通用架构1.1 序列建模任务描述1.2 因果卷积&#xff08;Causal Convolutions&#xff09;1.3 扩张卷积&#xff08;Dilated Convolutions&#xff09;1.4 残差连接&#xff08;Residual Connections&#xff09; 2 TCN vs RNN3 TCN缺点4 代码4.1 TC…...