热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于laravel:基于PrometheusGrafana监控LaravelSwoole应用

1.Swoole开启自定义过程定时采集监控指标,如$server->stats()memory_get_usage()sys_getloadavg()gc_status(),将这些指标存储到APCu;2.配置Laravel全局terminate中间件统计HTTP申请次数与耗时指标,将指标存储APCu;3.Laravel提供一个指标接口,从APCu中查问指标数据;4.Prometheus定时拉取指标接

实现思路

1.Swoole 开启自定义过程定时采集监控指标,如 $server->stats() memory_get_usage() sys_getloadavg() gc_status(),将这些指标存储到 APCu;
2.配置 Laravel 全局terminate 中间件统计 HTTP 申请次数与耗时指标,将指标存储 APCu;
3.Laravel 提供一个指标接口,从 APCu 中查问指标数据;
4.Prometheus 定时拉取指标接口,存储指标数据到它的 TSDB;
5.Grafana 接入 Prometheus 数据源,图形化展现监控指标数据。

用到哪些中间件

  • APCu:存储指标数据,多过程共享数据,读写速度快;
  • Prometheus:收集监控指标数据,存储到 TSDB,设置告警规定;
  • Grafana:图形化展现监控数据,反对配置告警。

难点

  • Swoole是多过程模型,如何在自定义过程中取统计其余 Worker 过程的内存占用呢?
    过程间通信,应用sendMessage()与onPipeMessage()来实现自定义过程与 Worker 过程通信,统计Worker过程的内存与GC状况。
  • 统计申请的中间件势必会减少接口耗时,如果将影响降到最低?
    所有与中间件相干的实例(包含中间件)都采纳单例模式,尽可能减少对象的初始化,只操作 APCu,无其余简单操作,将中间件整体耗时降到最低。

看看成果吧

待优化项

  • 中间件反对路由参数合并统计:/users/123/users/456合并为/users/{id},还须要兼容多版本的Laravel/Lumen;

LaravelS下如何配置?

查看具体文档


推荐阅读
author-avatar
坐看末日之景L_170
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有