智能巡检云监控指标的实践

简介:在真实的企业生产中,对研发和运维的同学都会面临一个十分繁复且艰难的问题,就是对指标的监控和告警。具体我枚举一些特定的问题请对号入座,看看在算力爆炸的时代能否通过算力和算法一起解决!

背景介绍

在真实的企业生产中,对研发和运维的同学都会面临一个十分繁复且艰难的问题,就是对指标的监控和告警。具体我枚举一些特定的问题请对号入座,看看在算力爆炸的时代能否通过算力和算法一起解决!

  • 问题一:当一个新业务上线前,运维人员都需要明确服务的部署情况,确定监控对象,以及监控对象的一些可观测性指标,并根据此完成相关日志数据的采集和处理;这里面会涉及到很多日志采集、指标加工等一系列脏活累活;
  • 问题二:当确定了监控对象的黄金指标后,往往都需要先适配一组规则:某个接口每分钟的平均请求延时不要超过多少毫秒;单位分钟内的错误请求数量,不要超过多少等等;就如上图所示,从操作系统维度去看,每个个体有上百种形态各异的指标,切指标的形态有不尽相同,试问要多少种规则才能较好的覆盖到上述监控;
  • 问题三:随着业务逐步对外提供服务,以及各种运营活动的加推,我们运维监控同学一定会面临两个突出的问题:误报太多和漏报的风险,那么这两个问题都在现阶段都需要人工介入,进行阈值的调整;尤其是漏报的问题,更加需要人工盯屏的形式,设计新的监控规则去覆盖一些事件;

随着各个云上服务的SLA要求的提升,企业服务也需要不断的提供问题发现的准确性和速度,在这一点上,自动化的主动巡检监控和秒级别的监控越来越被广大客户所重视。SLS提供了对于指标数据的高效的存储格式,并完全兼容Prometheus协议的时序数据,并在这个场景中,提供了对于海量指标线的智能巡检,让您可以丢掉繁复的规则配置,通过简单的选择就可以实现通用的异常检测。

时序存储的介绍

SLS的日志存储引擎在2016年对外发布,目前承接阿里内部以及众多企业的日志数据存储,每天有数十PB的日志类数据写入。其中有很大一部分属于时序类数据或者用来计算时序指标,为了让用户能够一站式完成整个DevOps生命周期的数据接入、清洗、加工、提取、存储、可视化、监控、问题分析等过程,我们专门推出了时序存储的功能,与日志存储一道为大家解决各类机器数据的存储问题。

在SLS平台中,可以较为简单的将主机的监控数据、Prometheus监控数据通过Logtail直接写入,同时也有多种数据源的导入能力(阿里云监控数据)。本章主要通过对ECS机器数据和阿里云监控数据来说明如何对接SLS智能时序巡检能力。

智能异常分析介绍

智能异常分析应用是一个可托管、高可用、可扩展的服务,主要提供智能巡检、文本分析和根因诊断三大能力。本文介绍智能异常分析应用的产品架构、功能优势、适用场景、核心名词、使用限制和费用说明等信息。

智能异常分析应用围绕运维场景中的监控指标、程序日志、服务关系等核心要素展开,通过机器学习等手段产生异常事件,通过服务拓扑关联分析时序数据和事件,最终降低企业的运维复杂度,提高服务质量。产品架构图如下所示。

在如下场景中,推荐使用智能异常分析应用。

  • 观察对象多且每个观察对象的观测维度也多。
  • 观测对象没有明确的阈值规则,但需要关注指标的形态。
  • 需要对观测对象编写大量的业务规则。
  • 处理非结构化的日志数据时,需要对文本日志中的模式进行挖掘。

接下来我们在云监控指标数据场景中使用下

场景实验

智能监控云监控指标

云监控数据接入

通过[官网文档](导入云监控数据 - 日志服务 - 阿里云)可以较好的配置云监控的导入任务。通过配置后,可以按照如下截图去查看对应的导入任务

我们可以在SLS控制台上查看对应的导入指标,对应各个指标的名称可以参考[这篇文档](https://metricmeta.oss-cn-hangzhou.aliyuncs.com/listMetricMeta_zh.html)。我们可以通过如下查询语句查看下聚合的数据格式:

* | select promql_query_range('acs_ecs_dashboard:cpu_system:Average') from metrics limit 100000

云监控数据预览

通过【查询页面右上角的查询页面】按钮,可以跳转过去查看下具体的数据格式。

* | select __time_nano__  / 1000000 as time, __name__ as metric_name, element_at(__labels__, 'instanceId') as instanceId from "test01.prom" where __name__ != '' and __name__ = 'acs_ecs_dashboard:cpu_system:Average' order by time, instanceId limit 100000

通过这条SQL语句,我们可以详细的分析出,写入到SLS中的具体的指标(某个监控对象,某个指标在什么时间的值是多少)。上述SQL语句仅仅罗列了在 2021-12-12 19:37~2021-12-12 19:38 这个时间区间的全部监控对象的监控指标,接下来,我们通过简单的改写,仅仅显示某个单独的监控对象在一分钟的数据形态。

* | select date_trunc('second', time) as format, * from ( select __time_nano__  / 1000000 as time, __name__ as metric_name, element_at(__labels__, 'instanceId') as instanceId from "test01.prom" where __name__ != '' and __name__ = 'acs_ecs_dashboard:cpu_system:Average') where instanceId = 'xxxx' order by time limit 100000

我们可以看到对于监控指标等于“acs_ecs_dashboard:cpu_system:Average”而言,某个特定的实例是每隔15秒一个监控指标。但是由于我们使用的数据导入,将结果写入到SLS的MetricStore中,因此是每分钟写入如一分钟的监控数据。

这里要在强调一下:SLS侧是是通过OpenAPI去获取云监控的指标数据的,数据导入SLS是有一定的延时的,具体延时大约在3分钟左右,也就是说在 T0 时刻,SLS中的数据只能保证 [T0-300s] 之前的数据时一定按时写入的。这一点在后续的巡检任务配置过程中至关重要。

我们通过PromQL在简化下上边的描述,我们继续使用对应的指标 "acs_ecs_dashboard:cpu_system:Average",通过如下的语句可以得到预期的结果,这已经距离我们创建巡检任务已经很接近了。

* | select promql_query_range('avg({__name__=~"acs_ecs_dashboard:cpu_system:Average"}) by (instanceId, __name__) ', '15s') from metrics limit 1000000

筛选监控指标

通过如下的Query可以大概知道在云监控关于ECS提供了多少监控指标:

* | select COUNT(*) as num from ( select DISTINCT __name__ from "test01.prom" where __name__ != '' and __name__ like '%acs_ecs_dashboard%' limit 10000 )

得到的结果是295个结果,但是我们没有比较全部都进行巡检配置,因此第一步就是要根据[指标说明文档](https://metricmeta.oss-cn-hangzhou.aliyuncs.com/listMetricMeta_zh.html)选择需要监控的指标项,这里我提供一份简单整理出来的比较重要的指标集合,供大家参考:

  • acs_ecs_dashboard:CPUUtilization:Average
  • acs_ecs_dashboard:DiskReadBPS:Average
  • acs_ecs_dashboard:DiskReadIOPS:Average
  • acs_ecs_dashboard:DiskWriteBPS:Average
  • acs_ecs_dashboard:DiskWriteIOPS:Average
  • acs_ecs_dashboard:InternetIn:Average
  • acs_ecs_dashboard:InternetInRate:Average
  • acs_ecs_dashboard:InternetOut:Average
  • acs_ecs_dashboard:InternetOutRate:Average
  • acs_ecs_dashboard:InternetOutRate_Percent:Average
  • acs_ecs_dashboard:IntranetIn:Average
  • acs_ecs_dashboard:IntranetInRate:Average
  • acs_ecs_dashboard:IntranetOut:Average
  • acs_ecs_dashboard:IntranetOutRate:Average
  • acs_ecs_dashboard:cpu_idle:Average
  • acs_ecs_dashboard:cpu_other:Average
  • acs_ecs_dashboard:cpu_system:Average
  • acs_ecs_dashboard:cpu_total:Average
  • acs_ecs_dashboard:cpu_user:Average
  • acs_ecs_dashboard:cpu_wait:Average
  • acs_ecs_dashboard:disk_readbytes:Average
  • acs_ecs_dashboard:disk_readiops:Average
  • acs_ecs_dashboard:disk_writebytes:Average
  • acs_ecs_dashboard:disk_writeiops:Average
  • acs_ecs_dashboard:load_1m:Average
  • acs_ecs_dashboard:load_5m:Average
  • acs_ecs_dashboard:memory_actualusedspace:Average
  • acs_ecs_dashboard:memory_freespace:Average
  • acs_ecs_dashboard:memory_freeutilization:Average
  • acs_ecs_dashboard:memory_totalspace:Average
  • acs_ecs_dashboard:memory_usedspace:Average
  • acs_ecs_dashboard:memory_usedutilization:Average
  • acs_ecs_dashboard:net_tcpconnection:Average
  • acs_ecs_dashboard:networkin_errorpackages:Average
  • acs_ecs_dashboard:networkin_packages:Average
  • acs_ecs_dashboard:networkin_rate:Average
  • acs_ecs_dashboard:networkout_errorpackages:Average
  • acs_ecs_dashboard:networkout_packages:Average
  • acs_ecs_dashboard:networkout_rate:Average

根据上述配置,生成对应的查询PromQL如下:

* | select promql_query_range('avg({__name__=~"acs_ecs_dashboard:CPUUtilization:Average|acs_ecs_dashboard:DiskReadBPS:Average|acs_ecs_dashboard:DiskReadIOPS:Average|acs_ecs_dashboard:DiskWriteBPS:Average|acs_ecs_dashboard:DiskWriteIOPS:Average|acs_ecs_dashboard:InternetIn:Average|acs_ecs_dashboard:InternetInRate:Average|acs_ecs_dashboard:InternetOut:Average|acs_ecs_dashboard:InternetOutRate:Average|acs_ecs_dashboard:InternetOutRate_Percent:Average|acs_ecs_dashboard:IntranetIn:Average|acs_ecs_dashboard:IntranetInRate:Average|acs_ecs_dashboard:IntranetOut:Average|acs_ecs_dashboard:IntranetOutRate:Average|acs_ecs_dashboard:cpu_idle:Average|acs_ecs_dashboard:cpu_other:Average|acs_ecs_dashboard:cpu_system:Average|acs_ecs_dashboard:cpu_total:Average|acs_ecs_dashboard:cpu_user:Average|acs_ecs_dashboard:cpu_wait:Average|acs_ecs_dashboard:disk_readbytes:Average|acs_ecs_dashboard:disk_readiops:Average|acs_ecs_dashboard:disk_writebytes:Average|acs_ecs_dashboard:disk_writeiops:Average|acs_ecs_dashboard:load_1m:Average|acs_ecs_dashboard:load_5m:Average|acs_ecs_dashboard:memory_actualusedspace:Average|acs_ecs_dashboard:memory_freespace:Average|acs_ecs_dashboard:memory_freeutilization:Average|acs_ecs_dashboard:memory_totalspace:Average|acs_ecs_dashboard:memory_usedspace:Average|acs_ecs_dashboard:memory_usedutilization:Average|acs_ecs_dashboard:net_tcpconnection:Average|acs_ecs_dashboard:networkin_errorpackages:Average|acs_ecs_dashboard:networkin_packages:Average|acs_ecs_dashboard:networkin_rate:Average|acs_ecs_dashboard:networkout_errorpackages:Average|acs_ecs_dashboard:networkout_packages:Average|acs_ecs_dashboard:networkout_rate:Average"}) by (instanceId, __name__) ', '1m') from metrics limit 1000000

对于一般场景而言,我们可以在简化一些指标,这里直接提供对应的PromQL如下:

* | select promql_query_range('avg({__name__=~"acs_ecs_dashboard:CPUUtilization:Average|acs_ecs_dashboard:DiskReadBPS:Average|acs_ecs_dashboard:DiskReadIOPS:Average|acs_ecs_dashboard:DiskWriteBPS:Average|acs_ecs_dashboard:DiskWriteIOPS:Average|acs_ecs_dashboard:InternetIn:Average|acs_ecs_dashboard:InternetInRate:Average|acs_ecs_dashboard:InternetOut:Average|acs_ecs_dashboard:InternetOutRate:Average|acs_ecs_dashboard:InternetOutRate_Percent:Average|acs_ecs_dashboard:IntranetOut:Average|acs_ecs_dashboard:IntranetOutRate:Average|acs_ecs_dashboard:cpu_idle:Average|acs_ecs_dashboard:cpu_other:Average|acs_ecs_dashboard:cpu_system:Average|acs_ecs_dashboard:cpu_total:Average|acs_ecs_dashboard:cpu_user:Average|acs_ecs_dashboard:cpu_wait:Average|acs_ecs_dashboard:disk_readbytes:Average|acs_ecs_dashboard:disk_readiops:Average|acs_ecs_dashboard:disk_writebytes:Average|acs_ecs_dashboard:disk_writeiops:Average|acs_ecs_dashboard:load_1m:Average|acs_ecs_dashboard:load_5m:Average|acs_ecs_dashboard:memory_freespace:Average|acs_ecs_dashboard:memory_freeutilization:Average|acs_ecs_dashboard:memory_totalspace:Average|acs_ecs_dashboard:memory_usedspace:Average|acs_ecs_dashboard:memory_usedutilization:Average"}) by (instanceId, __name__) ', '1m') from metrics limit 1000000

配置智能巡检任务

在【[SLS控制台](阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台)】中找到【智能异常分析】的入口,经过简单的初始化后,可以通过【智能巡检】的任务入口进入,找到对应的配置页面。在作业配置的过程中,应该注意这里要选择时序库,否则无法找到存储云监控数据的MetricStore。

在特征配置中,通过如下的Query进行配置,这里也有几点需要注意的说明:

  • 通过SQL转写一下,并对time字段进行处理,因为在巡检中,接受的时间的单位是秒,而PromQL得到的结果中time是毫秒;
  • 通过element_at算子,提取出对应的实例ID(instanceId);
  • 目前在配置粒度时,最小只支持60秒;
* | select time / 1000 as time, metric, element_at(labels, 'instanceId') as instanceId, value from ( select promql_query_range('avg({__name__=~"acs_ecs_dashboard:CPUUtilization:Average|acs_ecs_dashboard:DiskReadBPS:Average|acs_ecs_dashboard:DiskReadIOPS:Average|acs_ecs_dashboard:DiskWriteBPS:Average|acs_ecs_dashboard:DiskWriteIOPS:Average|acs_ecs_dashboard:InternetIn:Average|acs_ecs_dashboard:InternetInRate:Average|acs_ecs_dashboard:InternetOut:Average|acs_ecs_dashboard:InternetOutRate:Average|acs_ecs_dashboard:InternetOutRate_Percent:Average|acs_ecs_dashboard:IntranetOut:Average|acs_ecs_dashboard:IntranetOutRate:Average|acs_ecs_dashboard:cpu_idle:Average|acs_ecs_dashboard:cpu_other:Average|acs_ecs_dashboard:cpu_system:Average|acs_ecs_dashboard:cpu_total:Average|acs_ecs_dashboard:cpu_user:Average|acs_ecs_dashboard:cpu_wait:Average|acs_ecs_dashboard:disk_readbytes:Average|acs_ecs_dashboard:disk_readiops:Average|acs_ecs_dashboard:disk_writebytes:Average|acs_ecs_dashboard:disk_writeiops:Average|acs_ecs_dashboard:load_1m:Average|acs_ecs_dashboard:load_5m:Average|acs_ecs_dashboard:memory_freespace:Average|acs_ecs_dashboard:memory_freeutilization:Average|acs_ecs_dashboard:memory_totalspace:Average|acs_ecs_dashboard:memory_usedspace:Average|acs_ecs_dashboard:memory_usedutilization:Average"}) by (instanceId, __name__) ', '1m') from metrics ) limit 10000

在下面的【算法配置】、【调度配置】中需要注意如下:

【时间范围】- 要选择当前时间的两天前,让算法有充足的数据进行学习,这样效果更好;

【数据延时时长】- 由于我们处理的是通过导入服务导入的云监控的数据,一般整体的链路延时最多不会超过300s,因此这里要选择300秒,防治观测丢点。

配置告警

通过SLS中提供的[新版告警](告警(新版) - 日志服务 - 阿里云)可以非常方便的对接机器学习的告警配置。您可以使用一整套告警的能力,对您的告警进行管理。

建议您使用普通模式却设置告警,在【行动策略】这一栏中,选择我们内置的行动策略(sls.app.ml.builtin),这里我们已经配置好了,具体可以在告警配置中进行查看,查看地址具体:

https://sls.console.aliyun.com/lognext/project/${projectName}/alertcenter?tab=action_policy

这里您要制定对应的请求地址(钉钉机器人的地址webhook),内容模板选择【SLS智能巡检内置内容模板】。这样可以将【告警配置】与【巡检作业配置】解耦开来,后续用户需求修改【巡检作业】配置就可以实现告警配置的更新。至此,我们在【云监控数据】中配置巡检算法的操作就完成了。

原文链接
本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新常态成型,飞连联手Forrester聚焦数字化办公新体验

随着互联网技术不断发展,在企业办公领域时间与空间的限制正在逐步消弭。但是,当企业面对内外部大量的不确定因素时,以往的办公模式无论是效率、安全性还是体验等各方面都将大打折扣。而在数字时代,混合办公模式则有望成为企业办公…

聊聊我们在业务链路升级中做的数据洞察

简介:关于数据相关的词条很多,虽然有不同的定义,但是本质上是相辅相成,通常结合使用才能拿到结果。类比词条诸如 数据分析,数据挖掘, 数据洞察。本文将聊聊我们在业务链路升级中做的数据洞察。 作者 | 金铎…

阿里云佘俊泉:创新探索不停,边缘云持续为客户创造价值

简介:在12月15日上午举办的分布式云领袖论坛中,阿里云边缘云产品负责人佘俊泉先生发表了《阿里云边缘云产品创新与场景探索》的主题演讲,分享了阿里云在边缘云领域的探索和思考,如何从产品演进、技术创新、场景应用等方面助力企业…

oracle 如何迁移到 mysql_怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL...

有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle。很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面。当然,Navicat的数据库迁移无法做到完美,一些依…

深度解析单线程的 Redis 如何做到每秒数万 QPS 的超高处理能力!

作者 | 张彦飞allen来源 | 开发内功修炼服务器端只需要单线程可以达到非常高的处理能力,Redis 就是一个非常好的例子。仅仅靠单线程就可以支撑起每秒数万 QPS 的高处理能力。今天我们就来带大家看看 Redis 核心网络模块的内部实现,学习下 Redis 是如何做…

阿里云李克:边缘云技术发展与实践

简介:7年磨砺,阿里云边缘云的技术积累和沉淀哪了些?今年全面升级后的技术形态具有什么特性?它可以成熟地赋能哪些商业化技术应用场景?阿里云资深技术专家李克带来分享。 备受关注的2021全球分布式云大会深圳站于12月1…

小程序下一破局点?钉钉小程序卡片,应用与平台的深度集成

简介:卡片技术在钉钉上的运用。 20秒了解小程序卡片 案例1:幸福大巴一键抢座 “幸福大巴”是阿里员工在域内使用的城际客运功能,但因为需要来回跳转VPN工具和H5页面,在用户体验上带来了一定的障碍 抢座流程对比: 以…

建站就用这个方法,无需购买服务器10分钟快速部署你的静态网页

简介:阿里云云开发平台重磅推出开源应用中心,聚合最热门的开源应用,让你像安装app一样快速上线一个网站。面向新人和持续活跃的开发者用户推出上线激励加油包,最高100元无门槛代金券免费送,现在体验还能够领取年轻人的…

用 Spring boot 简单搭建一个微服务项目

作者 | 桃花键神来源 | CSDN博客前言:工欲善其事,必先利其器。在对Spring Cloud各部分组件进行具体介绍之前,我们会对Spring Cloud微服务的基础Spring Boot进行介绍。Spring Boot是Spring一套快速配置开发的脚手架,可以基于Spring…

云未来、新可能 - 绿色、无处不在、可信的计算

简介:阿里云资深技术专家、容器服务研发负责人易立在大会主论坛进行了主题为 “云未来,新可能” 的演讲,分享了阿里云基于大规模云原生实践下的技术趋势判断和技术创新进展。 2021 年 12 月 9 日至 10 日,KubeCon CloudNativeCo…

线上教育核心竞争力是什么?声网发布在线素质、职业教育解决方案

5月11日,声网在线上举办了主题为“聚焦场景力,释放生态力”的在线教育发布会,正式发布了新生态下在线教育多场景教学解决方案,包括在线音乐、在线美术、在线职业教育、在线编程、Stem在线教学解决方案。同时为兼顾降低教学场景研发…

ClickHouse Keeper 源码解析

简介:ClickHouse 社区在21.8版本中引入了 ClickHouse Keeper。ClickHouse Keeper 是完全兼容 Zookeeper 协议的分布式协调服务。本文对开源版本 ClickHouse v21.8.10.19-lts 源码进行了解析。 作者简介:范振(花名辰繁)&#xff0c…

pidof -x 不管用_专业摄影师最佳助手富士X-T200评测

作为X-T100的升级款,X-T200可谓是一经发布就受到了众多关注。相对来说,前作X-T100我们认为已经足够出色,而这次的富士X-T200又有多方面的提升,尤其是视频及视频对焦性能。关于这款机器实际的表现究竟如何我们接下去看。富士X-T200…

Oracle数据到MaxCompute乱码问题详解

简介:集成Oracle数据到MaxCompute,乱码问题分析; 为什么,在oracle数据不乱码,集成到MaxCompute就乱码了? 问题在哪里? 1.1 乱码现象 DataWorks的数据离线集成(DataX)集成Oracle数据到MaxCompute的数据有…

Gartner:2022年全球半导体收入预计将增长13.6%

半导体元件供应链所受到的限制预计将在2022年逐步缓解 根据Gartner的预测,2022年全球半导体收入预计将达到6760亿美元,相比2021年增长13.6%。 Gartner研究副总裁Alan Priestley表示: “由于芯片短缺而引发的半导体平均销售价格(AS…

V8 编译浅谈

简介:本文是一个 V8 编译原理知识的介绍文章,旨在让大家感性的了解 JavaScript 在 V8 中的解析过程。 作者 | 子弈 来源 | 阿里技术公众号 一 简介 本文是一个 V8 编译原理知识的介绍文章,旨在让大家感性的了解 JavaScript 在 V8 中的解析过…

rabbitmq接收不到消息 防火墙_用PHP+RabbitMQ实现消息的发送和接收

消费者&#xff1a;接收消息逻辑&#xff1a;创建连接-->创建channel-->创建交换机-->创建队列-->绑定交换机/队列/路由键-->接收消息<?php /************************************* * PHP amqp(RabbitMQ) Demo - consumer * Author: Linvo * Date: 2018/7/…

斩获大奖|阿里云PolarDB-X引领云原生分布式数据库新时代

简介&#xff1a;阿里云原生分布式数据库PolarDB-X荣获“2021年度最佳分布式数据库”。 12月15-16日&#xff0c;以“引领分布式云变革 助力湾区数字经济”为主题的全球分布式云大会在深圳隆重召开&#xff0c;本届大会由全球分布式云联盟、深圳科技交流服务中心、深圳市通信学…

Gartner:2022年中国IT支出预计将突破5.5亿美元

2022年全球IT支出预计将达到4.4万亿美元&#xff0c;2022年中国IT支出预计将突破5.5亿美元&#xff0c;相比2021年增长7.76% 分析、云计算、无缝客户体验和安全等领域将成为首席信息官的重点采购和投资领域 根据Gartner的最新预测&#xff0c;2022年全球IT支出预计将达到4.4万亿…

深度 | 从DevOps到BizDevOps, 研发效能提升的系统方法

简介&#xff1a;研发效能提升不知从何下手、一头雾水&#xff1f;阿里资深技术专家一文为你揭秘研发效能提升的系统方法。 注&#xff1a;本文是对云栖大会何勉分享内容的整理 这几年“研发效能”一直是热词&#xff0c;很多组织都会启动研发效能提升专项。我与其中的很多有过…