npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

leanengine-sniper

v0.3.2

Published

LeanEngine monitor middleware for express app

Downloads

8

Readme

LeanEngine Sniper

这个中间件会记录 express 程序被访问的路由、StatusCode、响应时间,以及程序所调用的 LeanCloud API 的类别和响应时间;Sniper 提供了一个 Web UI 来来展示这些统计数据,支持以路由、实例、StatusCode 三个维度来进行分组展现,还支持以五秒的精度来查看实时数据,帮助你监控和诊断 LeanEngine 应用遇到的性能问题。

添加依赖

npm install --save leanengine-sniper

在你的 express 程序中添加中间件

var sniper = require('leanengine-sniper');
var AV = require('leanengine');
var app = express();
app.use(sniper({AV: AV}));

等它收集一段时间数据,就可以打开你的站点下的 /__lcSniper 查看统计图表了,basicAuth 的账号是 appId,密码是 masterKey.

数据会储存在你的应用云储存中的 LeanEngineSniper 这个 Class 中(如果你在设置中禁用了「客户端创建 Class」,则需要你手动创建),默认会每五分钟创建一条记录,因此你的应用每个月会因上传统计数据而消耗 9k 次云存储 API 调用。

配置 Redis

Redis 是可选功能,配置 Redis 后,Sniper 可以提供过去十分钟以 5 秒钟为精度的实时视图;此外如果你的应用运行着多个实例,借助 Redis 可以通过合并多个实例的数据减少调用云存储的次数:

app.use(sniper({AV: AV, redis: process.env['REDIS_URL_cache1']}));

定义自己的 URL 分组或忽略规则

你可以给 sniper 传一个 rules 参数,定义一些处理 URL 的规则:

app.use(sniper({
  AV: AV,
  rules: [
    {match: /^GET \/(pdf|docx?).+/, rewrite: 'GET /$1'}, // 将例如 /pdf/overview.pdf 的 URL 重写为 /pdf
    {match: /^GET \/public/, ignore: true}            // 忽略 GET /public 开头的 URL
  ]
}));

sniper 的更多选项

  • specialStatusCodes, 数字数组,为了记录合适大小的数据,默认只会单独记录几个常见的 statusCode, 你可以覆盖默认的值。
  • ignoreStatics, 布尔值,默认启用,会将常见的静态文件 URL 重写为类似 GET *.js 的 URL.
  • commitCycle, 毫秒数,默认五分钟,上传统计数据的间隔,建议设置在 1 分钟到 20 分钟内。
  • realtimeCycle, 毫秒数,默认五秒钟,实时统计数据的刷新间隔。
  • className, 字符串,默认 LeanEngineSniper, 用于存储统计数据的 Class.

Web UI 使用说明

筛选

目前 Sniper 提供了几个维度的筛选功能:路由筛选、实例筛选、StatusCode 筛选、时间段筛选。

默认选项为空,代表不筛选;选项后面的数字代表这一个选项代表的总请求量(不受筛选条件影响);

星号选项则代表在这个维度上对数据进行分组展示,一次只能按照一个维度来分组,分组可以和筛选组合使用;取决于图表类型,只会显示请求量靠前的几个分组,以避免在图表上有太多的线。

路由筛选、StatusCode 筛选仅对和路由有关的图表有效;实例筛选对所有图表都有效。

在两个输入框(分别是开始时间和结束时间)填入类似 -1d, -2h30m, 2015-11-11T06:06:44.857Z 这类时间,点击「时间段筛选」,即可按照时间端筛选所有数据;你还可以点击「路由请求量」或「路由响应时间」图表上的点来自动填写时间。

实时数据

勾选右上角的「追踪实时信息」后,所有图表都会变成以五秒钟为精度的实时信息,Sniper 会从启动实时追踪后开始积累数据(所以一开始是空的),最多保存十分钟的数据。

图表

  • 路由请求量

    默认根据 StatusCode 分为 success, clientError, serverError 三组。

  • 路由响应时间

    因为没有源数据,StatusCode 的筛选和分组不会对该图表生效。

  • 实例请求量

    默认分为 success, clientError, serverError 三组,可以选择按照 StatusCode 分组;只会显示请求量最大的 10 实例。

  • 实例平均响应时间

    只会显示请求量最大的 10 实例。

  • 路由 StatusCode 分布

  • 路由分布

    只会显示请求量最大的 15 个路由。

  • 云调用分布

    只会显示请求量最大的 15 类请求。

  • 云调用次数

  • 云调用平均响应时间

截图

Web UI