CN111078499A - 一种基于flink的微服务性能实时监控方法 - Google Patents
一种基于flink的微服务性能实时监控方法 Download PDFInfo
- Publication number
- CN111078499A CN111078499A CN201911251688.XA CN201911251688A CN111078499A CN 111078499 A CN111078499 A CN 111078499A CN 201911251688 A CN201911251688 A CN 201911251688A CN 111078499 A CN111078499 A CN 111078499A
- Authority
- CN
- China
- Prior art keywords
- flink
- service
- calling
- log
- performance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种基于flink的微服务性能实时监控方法,包括以下步骤S1:性能日志埋点;S2:日志采集;S3:聚合计算;S4:结果存储。本发明对微服务架构涉及到的应用服务调用,进行全方位监控,任何一个组件出现问题,就可以通过监控看出出问题的源头在哪。日志埋点时,通过异步单线程进行写入,避免了对应用性能造成影响。在应用层进行一分钟内的监控数据的统计,避免造成了过多的资源浪费。本发明使用flink计算引擎,能够非常实时地计算出结果,使用clickhouse作为数据存储,能支持集群部署,提供稳定性,可靠性,并且不依赖其他组件,更加简单,不易出问题;查询,批量写入性能高;压缩比高,能为企业降低成本。
Description
技术领域
本发明属于微服务架构技术领域,具体涉及一种基于flink的微服务性能实时监控方法。
背景技术
随着互联网的快速发展以及企业架构的不断演化,微服务架构越来越被各企业所采用,微服务带来灵活性,扩展性的同时,分布式应用导致的复杂性也随之而来。服务之间的调用,会因为层级深,链路长,而造成难以监控,一次用户操作的卡顿,很难很快地排查哪个应用哪个部分出现问题,基于传统的通过日志搜索的排查方式,效率低,成本高,很难很好地满足企业的要求。
发明内容
本发明解决的技术问题:难以监控,一次用户操作的卡顿,很难很快地排查哪个应用哪个部分出现问题,基于传统的通过日志搜索的排查方式,效率低,不能满足企业的要求。
技术方案:为了解决上述技术问题,本发明采用的技术方案如下:
本发明基于flink的微服务性能实时监控方法,通过基于flink计算引擎,对微服务的各个组件的性能进行实时监控的一种方法,能及时高效地监控企业应用的性能。
一种基于flink的微服务性能实时监控方法,包括以下步骤:
S1:性能日志埋点;
S2:日志采集;
S3:聚合计算;
S4:结果存储。
作为优选,步骤S1所述性能日志埋点,记录每分钟内同一个服务的总调用次数count、调用成功次数successCount、以及调用总耗时cost。
作为优选,步骤S1中,在所有应用中引入日志埋点软件开发工具包(SDK),软件开发工具包(SDK)通过异步、单线程reactor的方式自动记录下服务调用的埋点日志。
作为优选,埋点日志记录在指定的固定目录下,且每个日志文件的最大大小为100M,超过100M,则自动创建新的文件,最多保存3个历史备份文件,软件开发工具包(SDK)会自动删除过多的备份文件。
作为优选,步骤S2中,采用filebeat进行日志采集,并将filebeat采集的数据发送至kafka中。
在每台应用部署的服务器上安装filebeat,并且采集埋点日志指定目录下的日志文件,将日志文件发送到kafka中。filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tail file),并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。带有内部模块(auditd,Apache,Nginx,System和MySQL),可通过一个指定命令来简化通用日志格式的收集,解析和可视化。
作为优选,步骤S3中,flink对kafka中的日志数据进行统计计算,通过聚合计算出每分钟每个服务的总调用次数,总耗时,以及成功率。
作为优选,每分钟内调用成功率的计算方法为:flink使用keyBy方法用服务类型type,、服务名称serviceName、服务方法methodName作为分组,对每分钟内同一个服务的总调用次数count,调用成功次数successCount和调用总耗时cost进行求和,求和的调用成功次数succssCount除以求和的调用总次数count即为某具体服务每分钟内调用成功率。
作为优选,步骤S4中,采用clickhouse数据库对数据进行存储。
作为优选,创建clickhouse的表,所述clickhouse的表包括以下字段:time,type,serviceName,methodName,totalCount,totalCost,successRate,在flink创建clishousesink,将计算结果数据,批量存入clickhouse的表中。
有益效果:与现有技术相比,本发明具有以下优点:
1、对微服务架构涉及到的应用服务调用,mysql,redis等远程调用进行全方位监控,任何一个组件出现问题,就可以通过监控看出出问题的源头在哪。
2、日志埋点时,通过异步单线程进行写入,避免了对应用性能造成影响。
3、日志埋点时,在应用层进行一分钟内的监控数据的统计,而非在计算引擎中实时计算,避免造成了过多的资源浪费。
4、使用flink计算引擎,能够非常实时地计算出结果,并且使用watermark对乱序,过期数据进行处理。
5、使用clickhouse作为数据存储,能支持集群部署,提供稳定性,可靠性,并且不依赖其他组件,更加简单,不易出问题;查询,批量写入性能高;压缩比高,能为企业降低成本。
附图说明
图1是基于flink的微服务性能实时监控方法的一次应用调用示例的时序图;
图2是基于flink的微服务性能实时监控方法的步骤流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,实施例在以本发明技术方案为前提下进行实施,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围。
如图1所示,微服务在运行时,一次应用调用示例的时序步骤如下:
步骤1:用户调用应用A的A.a()方法;
步骤2:应用A调用应用B的B.b()方法;
步骤3:应用B查询mysql的user库的user_info表的数据;
步骤4:应用B调用应用C的C.c()方法;
步骤5:应用C查询key为order_1234的缓存的数据;
步骤6:应用C调用应用D的D.d()方法。
本发明通过实时计算的方式统计以上所有调用步骤的每分钟的调用次数,调用耗时,以及调用成功率,来监控整个微服务架构下的应用的性能。
本发明的基于flink的微服务性能实时监控方法,具体包括以下步骤:
S1:性能日志埋点;
性能日志埋点,记录每分钟内同一个服务的总调用次数count、调用成功次数successCount、以及调用总耗时cost。
在所有应用中引入日志埋点软件开发工具包(SDK),软件开发工具包(SDK)通过异步、单线程reactor的方式自动记录下服务调用的埋点日志。埋点日志记录在指定的固定目录下,且每个日志文件的最大大小为100M,超过100M,则自动创建新的文件,最多保存3个历史备份文件,软件开发工具包(SDK)会自动删除过多的备份文件。
一次用户的操作,如图1所示,包括应用服务调用,mysql访问,redis访问等一切远程调用,将它们分别抽象成服务,由serviceName和methodName来表示。
如图1所示步骤中,serviceName,methodName说明如下:
1.调用应用A的A.a()方法,serviceName为A,methodName为a,其他应用服务调用类似;
2.查询mysql的user库的user_info表的数据,serviceName为user#user_info,methodName为select;
3.查询key为order_1234的redis缓存数据,serviceName为redis地址,methodName为get。
日志的埋点不会记录下每次调用的耗时,而是会记录一分钟内同一个服务的总调用次数,调用成功次数,以及总耗时。好处是,避免在用flink进行实时计算时,需要对每条数据进行汇总计算,造成大量的资源消耗,对整体的性能会有所影响。
性能日志的格式如下:
time|type|serviceName|methodName|count|successCount|cost
具体的例子如下:
1574667000000|rpc|A|a|1000|950|20000
1574667000000|rpc|C|c|200|200|2000
1574667000000|mysql|user#user_info|select|20|20|120
1574667000000|redis|192.168.1.1|get|5|5|50
每行数据以”|”来分隔,字段的含义如下:
1.time:调用发生时间的unix时间戳,每隔1分钟统计一次
2.type:服务类型,如rpc表示应用服务调用
3.serviceName:上面说明的服务名称,用来抽象某个具体的服务如,A,表示调用A这个服务
4.methodName:上面说明的服务方法,用来抽象某个具体的服务,如a,如调用A的a方法。
5.count:服务在一分钟内的调用总次数
6.successCount:服务在一分钟内的调用成功次数
cost:服务在一分钟内调用总耗时。
S2:日志采集;
本发明采用filebeat进行日志采集,并将filebeat采集的数据发送至kafka中。
具体的,在每台应用部署的服务器上安装filebeat,并且采集埋点日志指定目录下的日志文件,将日志文件发送到kafka中。filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tail file),并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。带有内部模块(auditd,Apache,Nginx,System和MySQL),可通过一个指定命令来简化通用日志格式的收集,解析和可视化。
现有技术中有很多的日志采集方法,如flume,logstash,filebeat等,本发明采用filebeat,因为它更轻量级,对资源消耗更少。filebeat采集的数据会发往kafka中,以便后续的对日志数据进行统计计算。
S3:聚合计算;
flink对kafka中的日志数据进行统计计算,通过聚合计算出每分钟每个服务的总调用次数,总耗时,以及成功率。
每分钟内调用成功率的计算方法为:flink使用keyBy方法用服务类型type,、服务名称serviceName、服务方法methodName作为分组,对每分钟内同一个服务的总调用次数count,调用成功次数successCount和调用总耗时cost进行求和,求和的调用成功次数succssCount除以求和的调用总次数count即为某具体服务每分钟内调用成功率。
flink是一个基于流计算的实时计算引擎,支持基于窗口的计算,以及eventTime和watermark的支持,窗口可以指定一分钟,用于计算一分钟内的数据。这里使用eventTime,避免数据到达计算引擎先后顺序不同造成的乱序问题,并且使用watermark避免长时间接受不到数据的场景。
S4:结果存储。
本发明采用clickhouse数据库对数据进行存储。
创建clickhouse的表,所述clickhouse的表包括以下字段:
1.time:监控发生的时间;
2.type:服务类型,如rpc表示应用服务调用;
3.serviceName::服务名称,用来抽象某个具体的服务如,A,表示调用A这个服务;
4.methodName:服务方法,用来抽象某个具体的服务,如a,如调用A的a方法;
5.totalCount:调用总次数;
6.totalCost:调用总耗时;
7.successRate:调用成功率。
在flink创建clishouse sink,将计算结果数据,批量存入clickhouse的表中。
对计算结果的存储有非常多的选择,可以用传统的mysql,或者大数据场景使用很多的hbase,或者时序数据库influxdb,opentsdb等。本发明采用了clickhouse数据库,因为clickhouse是一个开源的基于列式存储的数据库,因此压缩比非常高。一般场景下可以选择influxdb或者opentsdb这些时序数据库来存储监控数据,但是influxdb不支持集群部署,opentsdb是基于hadoop体系的,依赖比较多;而clickhouse可以独立部署,不依赖任何组件,并且支持集群部署的,并且查询,批量写入效率极高。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种基于flink的微服务性能实时监控方法,其特征在于,包括以下步骤:
S1:性能日志埋点;
S2:日志采集;
S3:聚合计算;
S4:结果存储。
2.根据权利要求1所述的基于flink的微服务性能实时监控方法,其特征在于:步骤S1所述性能日志埋点,记录每分钟内同一个服务的总调用次数、调用成功次数、以及调用总耗时。
3.根据权利要求1所述的基于flink的微服务性能实时监控方法,其特征在于:步骤S1中,在所有应用中引入日志埋点软件开发工具包,软件开发工具包通过异步、单线程reactor的方式自动记录下服务调用的埋点日志。
4.根据权利要求3所述的基于flink的微服务性能实时监控方法,其特征在于:埋点日志记录在指定的固定目录下,且每个日志文件的最大大小为100M,超过100M,则自动创建新的文件,最多保存3个历史备份文件,软件开发工具包(SDK)会自动删除过多的备份文件。
5.根据权利要求1所述的基于flink的微服务性能实时监控方法,其特征在于:步骤S2中,采用filebeat进行日志采集,并将filebeat采集的数据发送至kafka中。
6.根据权利要求5所述的基于flink的微服务性能实时监控方法,其特征在于:步骤S3中,flink对kafka中的日志数据进行统计计算,通过聚合计算出每分钟每个服务的总调用次数,总耗时,以及成功率。
7.根据权利要求5所述的基于flink的微服务性能实时监控方法,其特征在于:每分钟内调用成功率的计算方法为:flink使用keyBy方法用服务类型、服务名称、服务方法作为分组,对每分钟内同一个服务的总调用次数,调用成功次数和调用总耗时进行求和,求和的调用成功次数除以求和的调用总次数即为某具体服务每分钟内调用成功率。
8.根据权利要求1所述的基于flink的微服务性能实时监控方法,其特征在于:步骤S4中,采用clickhouse数据库对数据进行存储。
9.根据权利要求7所述的基于flink的微服务性能实时监控方法,其特征在于:创建clickhouse的表,所述clickhouse的表包括以下字段:time,type,serviceName,methodName,totalCount,totalCost,successRate,在flink创建clishouse sink,将计算结果数据,批量存入clickhouse的表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911251688.XA CN111078499A (zh) | 2019-12-09 | 2019-12-09 | 一种基于flink的微服务性能实时监控方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911251688.XA CN111078499A (zh) | 2019-12-09 | 2019-12-09 | 一种基于flink的微服务性能实时监控方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111078499A true CN111078499A (zh) | 2020-04-28 |
Family
ID=70313394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911251688.XA Withdrawn CN111078499A (zh) | 2019-12-09 | 2019-12-09 | 一种基于flink的微服务性能实时监控方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078499A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111800292A (zh) * | 2020-05-28 | 2020-10-20 | 中国平安财产保险股份有限公司 | 基于历史流量的预警方法、装置、计算机设备及存储介质 |
CN111930589A (zh) * | 2020-07-02 | 2020-11-13 | 上海微亿智造科技有限公司 | 流式任务自动化监控系统及方法 |
CN112084387A (zh) * | 2020-08-21 | 2020-12-15 | 上海微亿智造科技有限公司 | 一种实时数据分类统计方法、系统、可读介质及设备 |
CN112738189A (zh) * | 2020-12-24 | 2021-04-30 | 航天信息股份有限公司 | 集群资源管理方法、装置、存储介质及电子设备 |
CN113010483A (zh) * | 2020-11-20 | 2021-06-22 | 云智慧(北京)科技有限公司 | 一种海量日志管理方法和系统 |
-
2019
- 2019-12-09 CN CN201911251688.XA patent/CN111078499A/zh not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111800292A (zh) * | 2020-05-28 | 2020-10-20 | 中国平安财产保险股份有限公司 | 基于历史流量的预警方法、装置、计算机设备及存储介质 |
CN111800292B (zh) * | 2020-05-28 | 2023-08-22 | 中国平安财产保险股份有限公司 | 基于历史流量的预警方法、装置、计算机设备及存储介质 |
CN111930589A (zh) * | 2020-07-02 | 2020-11-13 | 上海微亿智造科技有限公司 | 流式任务自动化监控系统及方法 |
CN111930589B (zh) * | 2020-07-02 | 2021-07-27 | 上海微亿智造科技有限公司 | 流式任务自动化监控系统及方法 |
CN112084387A (zh) * | 2020-08-21 | 2020-12-15 | 上海微亿智造科技有限公司 | 一种实时数据分类统计方法、系统、可读介质及设备 |
CN113010483A (zh) * | 2020-11-20 | 2021-06-22 | 云智慧(北京)科技有限公司 | 一种海量日志管理方法和系统 |
CN112738189A (zh) * | 2020-12-24 | 2021-04-30 | 航天信息股份有限公司 | 集群资源管理方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078499A (zh) | 一种基于flink的微服务性能实时监控方法 | |
US11314613B2 (en) | Graphical user interface for visual correlation of virtual machine information and storage volume information | |
CN110502494B (zh) | 日志处理方法、装置、计算机设备及存储介质 | |
US11392416B2 (en) | Automated reconfiguration of real time data stream processing | |
US11455217B2 (en) | Transaction consistency query support for replicated data from recovery log to external data stores | |
US10956362B1 (en) | Searching archived data | |
JP6789243B2 (ja) | トランザクション処理環境におけるペイロードデータの収集を監視および解析するためのシステムおよび方法 | |
CA2753019C (en) | Monitoring of distributed applications | |
US10338958B1 (en) | Stream adapter for batch-oriented processing frameworks | |
Grover et al. | Data Ingestion in AsterixDB. | |
CN109710731A (zh) | 一种基于Flink的数据流多向处理系统 | |
CN111061788A (zh) | 一种基于云架构的多源异构数据转换整合系统及其实现方法 | |
US20080065588A1 (en) | Selectively Logging Query Data Based On Cost | |
CN113448812A (zh) | 微服务场景下的监控告警方法及装置 | |
WO2023202497A1 (zh) | 用于全链路追踪事务的方法及原生分布式数据库 | |
CN110928906A (zh) | 基于flink仅一次写入carbonData的方法 | |
CN112115012A (zh) | 分布式数据库的事务监控方法及装置、系统、存储介质 | |
CN110321364B (zh) | 信用卡管理系统的交易数据查询方法、装置及终端 | |
US11934466B2 (en) | Direct cloud storage intake and upload architecture | |
CN111309442B (zh) | 微服务容器数量的调整方法、装置、系统、介质及设备 | |
CN111737203A (zh) | 数据库历史日志回溯方法、装置、系统、设备及存储介质 | |
CN113360558B (zh) | 数据处理方法、数据处理装置、电子设备及存储介质 | |
CN113778777A (zh) | 一种日志回放方法和装置 | |
Carbone et al. | Towards highly available complex event processing deployments in the cloud | |
CN111143280B (zh) | 一种数据调度方法、系统、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200428 |