首页 » 网站推广 » PHP打造技巧_若何打造PHP的Restful API自动化监控系统58安居客这样做

PHP打造技巧_若何打造PHP的Restful API自动化监控系统58安居客这样做

访客 2024-10-26 0

扫一扫用手机浏览

文章目录 [+]

1. 有哪些的接口访问超时/特殊慢,每每关注的时候便是做事涌现瓶颈的时候。

2. 线上top uri逐日的访问量是多少,没有可视化的工具,只能去单机通过awk命令统计。

PHP打造技巧_若何打造PHP的Restful API自动化监控系统58安居客这样做 PHP打造技巧_若何打造PHP的Restful API自动化监控系统58安居客这样做 网站推广

3. 不知道接口的均匀耗时是多少,也就没有优化做事的动力。

PHP打造技巧_若何打造PHP的Restful API自动化监控系统58安居客这样做 PHP打造技巧_若何打造PHP的Restful API自动化监控系统58安居客这样做 网站推广
(图片来自网络侵删)

但当时我们面对类似问题常日采取下面的方法办理:

1. 采取公司的人工埋点系统Wmonitor手动在代码里埋点,优点是能实现部分可视化和预警,缺陷是埋点流程繁芜每个接口都须要申请埋点值并在接口中手动埋点,管理繁芜效率低下,对开拓同学的开拓意识哀求很高。

2. 通过nginx日志调查详细情形如 uri,访问状态,耗时等信息,优点是能得到访问量和访问时长等数据,缺陷是每次都须要人工手动查询,缺少无可视化平台和预警,如某一台机器故障/性能故障则完备无感知 。

由于公司内部已有基于Java Web框架的API监控系统,鉴于这套系统已成熟,PHP侧可以复用其数据存储、数据视图和报警部分,然后自己实现数据采集和上报即可实现PHP可用的API监控系统。
那我们的核心重点便是办理在PHP-FPM多进程模型下,如何灵巧、高效、稳定的实现数据的采集和上报。

WF manager 是JAVA WEB层API监控系统

设计理念

1. 灵巧定制

面对不同的业务集群,作为做事方须要兼顾灵巧和标准, 首先通过从浩瀚的接口访问信息中抽出来标准化的数据信息集,如集群名称,接口uri,http Code,访问量,访问时长,超时量,失落败量等详细的数据,标准化的数据担保了传输的顺畅,为后续的剖析,统计,展示奠定根本。
其次供应灵巧的可配置方案,兼容不同集群,不同采集间隔和自动化uri采集模型,去实现业务的灵巧变通。

wrm.enable=1wrm.tick=60wrm.timeout=2000wrm.collector_register_url=https://..com//wrm.collector_port=wrm.cluster=__ wrm.total_url_num=500wrm.enable_sync_uri=1wrm.sync_uri_url=..com//

2. 低本钱接入

利用PHP的底层特性以扩展形式在PHP进程启动的时候加载,避免开拓同学因接入监控做事而须要做出额外的开拓,实现无感知的数据采集。

PHP编译实行紧张流程

3. 资源利用率高

合理选型数据构造和接入办法,依托于PHP-FPM主进程的监控进程,避免对系统额外的cpu和内存资源占用,担保线程安全调用。

系统架构

1. 首先启动PHP Zend引擎后,在注册动态扩展的过程中通过调用MINIT钩子,fork出来监听进程,从而在每次request开始/结束时 实行业务逻辑。

2. 监听根据系统配置,初始化全局变量如上报时长,内存大小,上报地址等信息,以及通过mmap开辟共享内存空间和pthread去实现线程安全上报。

3. 每次request在要求时会初始化php_request_startup,并依次遍历调用扩展中调用Rinit,在这个过程中网络到uri,http code,访问时长等信息存储如对应的构造体。

4. 监听进程根据配置tick网络指定间隔韶光的数据后,通过切换数据hash的内存块指针,平滑变更hashtable的角色属性,启动上报线程,开始压缩数据并异步上报至数据中央做事侧。

PHP Restful API系统流程图

功能设计&实践

1. 进程启动

PHP引擎启动过程中通过php_module_startup遍历php_extension_list中在php.ini注册的动态扩展,并依次调用对应的Minit钩子函数,在这个过程中我们在Minit中fork出来上报进程,根据配置的url个数初始化共享内存,并依据bkrdhash算法实现uri的hash存储,同时一个hash做输出,一个hash做存储,并通过指针动态切换.该进程同时会监听主进程。

2. 日志网络

在Rinit的钩子中,依赖于sapi_getenv和SG去获取本次要求的参数,如header和Server信息,根据uri路由,网络后存储于trace实体中,在此钩子中不做其他操作,担保最小粒度滋扰线上的资源开销,在Rshutdown钩子中,统计相应状态,耗时等日志信息,并存储到对应的hash中。

typedef struct wrm_trace_analyze { int mutex; // 互斥量 struct timeval total_duration; int success_times; int failed_times; int timeout_times; int server_port; char server_addr[32]; char uri[256];} wrm_trace_analyze;

3. 数据上报

依托于配置中的上报周期,上报线程会将数据存储的hash指针做切换,从这一刻起,其余一个空hash构造体开始接管新数据做存储,同时原输出hash开始压缩并上报数据中央做事侧,上报完成后等待下个周期的切换,如此循环往来来往。

PHP Restful API监控效果图

关键问题

1. 如何避免对上报做事真个流量冲击,合理利用资源

鉴于每次的http要求都会产生一条日志数据,如果每次都进行上报则对做事端是个很大的流量冲击,针对这种情形我们通过合理设计本地存储构造,实现韶光周期内的日志数据汇总存储,压缩&定期上报汇总数据。

2. 如何设计一个有效的数据采集数据构造

数据实现hash存储,key值采取bkrdhash算法,以质数作为种子,每个字符串的ascii加和,担保每个字符串都参与到运算中,同时hash中只存储有效的日志数据,如http code 200/500次数,韶光等信息,以10000个uri举例,只额外占用不到10M内存,并在数据udp上报到做事侧之前通过gz压缩,担保资源的合理优化。

3. 如何去办理hash数据集的并发性写入

我们采取的futex内核级同步锁.在浩瀚php-fpm在同一韶光点写入同一个hash的,如果采取自旋锁+等待,在线程较多的时候其他高下文的切换的资源开销不低,但是通过futex内核级锁,在通过双向链表的行列步队掩护竞争的线程,在占用锁资源的线程开释资源后,会按顺序从行列步队中唤起等待的线程写入。

4. 如何在担保对数据采集和上报流程隔离,实现线程安全的全流程监控

我们采取的方案是通过监听进程的存储层开辟一个共享内存区域,分别为分为存储区A和上报区B,在监控做事网络的过程中所有数据沉淀在A上,等待上报周期韶光点一到则会将数据写入的指针指向B,此时B角色切换为存储区,A角色变更为上报区,线程将A上的数据进行上报,上报成功后clean掉数据,等待下一次的角色变更,如此循环往来来往,实现线程安全的异步上报流程。

5. 如何低本钱支配和兼容

我们以php扩展为独立载体,不依赖任何框架,支持公司内部物理机和私有云等集议论况。
业务集群须要监控做事则可将此.so文件加载到项目extension/下目录或者 php配置级的extension下,同时在项目中的extension.conf配置采集参数即可方便利用,也因此实现项目级的日志采集能力。

此扩展语法同时支持PHP7.0.0以上的版本集议论况。

PHP Restful API系统架构图

总结成果

Restful的自动化日志监控做事,在租房业务线集群以扩展的形式已成功支配至生产环境,各业务线卖力人可以方便的通过公司的供应的可视化工具平台(WF manager)直不雅观看到所属的接口访问详情,从而节省各个业务线手动开拓,标准不一的开拓代价和掩护本钱。

目前租房业务线累计已有几十个集群先后通过此扩展接入wfmanager系统,覆盖百余台PHP做事器,每分钟采集日志超上百万次,覆盖90%的租房业务线上流量,为做事的平稳运行供应有力保障。

通过可视化的线上接口实时访问数据,对应做事的卖力人实现了对所属做事的主动关注/被动报警能力,为做事质量和稳定性供应了有力的支持,详细表示在以下两个方面:

1. 在工程效率方面,过往线上涌现接口访问超时征象到问题办理的韶光跨度周期每每超过1天,通过此扩展接入日志采集能力后,实现了线上的访问实时监控预警,从问题涌现到办理的韶光跨度也降落为分钟级别,如 一些APP真个详情页在优化之前接口加载时长达到300ms以上,接入日志监控扩展后清晰看到线上的真实耗时,对应同学收到预警后,经由几轮实时技能优化比拟,已成功将耗时降落为100ms以下。

2. 在数据剖析维度,过往剖析日志从单机awk统计到现在集群整体视角,粒度乃至细分至单机uri的级别,直不雅观监测到实时访问数据,实现了同比,环比的流量颠簸剖析,精准节制产品的线上的访问流量,为担保做事可用性的增扩容以及优化供应有力决策支持。

作者先容

陈艺天 / 58房产租房技能部 / 先后卖力PHP技能栈的wscf重构,wfmanager扩展,php微做事孵化等;

胡坤 / 58房产租房技能部 / 先后卖力租房业务wfmanager扩展项目,房源直播及保障做事在线化能力等;

标签:

相关文章

介绍i网站设计神器,引领Web设计新潮流

随着互联网技术的飞速发展,网站设计在用户体验和视觉表现上越来越受到重视。在这个竞争激烈的市场环境下,一款优秀的网站设计神器显得尤为...

网站推广 2024-12-05 阅读0 评论0