分享自己做的一个 Rails 项目的监控 GEM(SimpleApm)
目前在公司生产服务器上运行状态良好……
第一次发东西,欢迎大家的批评和意见
Github: https://github.com/xiayuanyin/simple_apm
基于 Redis 的简单的 Web 请求性能监控/慢事务追踪工具,支持集群服务
以天为维度记录:
围绕 Rack 记录请求级别的相关信息,使用 redis 作为数据存储/计算工具来记录慢事务
数据传递核心为:Active Support Instrumentation
处理 Instrument 方式为:开启一个不影响主线程的常驻线程,循环计算处理数据
获取内存信息用到了 gem: get_process_mem
配置文件说明:
# config/simple_apm.yml
# 默认为 redis://localhost:6379/0
# 确保是完整的redis地址,可以设置远程地址
redis_url:
# 默认为空, 建议使用hiredis(并确保有这个gem)
redis_driver: hiredis
# 记录每天的最慢的请求数存储量,默认200
slow_actions_limit:
# 记录每天的每个Action最慢的N个请求,默认20
action_slow_request_limit:
# 项目名,默认为 'app',区分项目名可以多个项目数据存于一台redis server上
app_name:
# SQL记录临界值,超过的才记录(秒)
sql_critical_time: 0.1
# 不统计的请求(值为:xxxController#Action)(数组)
# - Devise::SessionsController#create
exclude_actions:
请求量,响应时间概况
慢请求详情
Action 的概况