Gathering detailed insights and metrics for swagger-stats
Gathering detailed insights and metrics for swagger-stats
Gathering detailed insights and metrics for swagger-stats
Gathering detailed insights and metrics for swagger-stats
@types/swagger-stats
TypeScript definitions for swagger-stats
profoundjs-swagger-stats
API Telemetry and APM. Trace API calls and Monitor API performance, health and usage statistics in Node.js Microservices, based on express routes and Swagger (Open API) specification
swagger-stats-ux
API Observability. Trace API calls and Monitor API performance, health and usage statistics in Node.js Microservices, based on express routes and Swagger (Open API) specification
swagger-stats-ioredis
API Telemetry and APM. Trace API calls and Monitor API performance, health and usage statistics in Node.js Microservices, based on express routes and Swagger (Open API) specification
npm install swagger-stats
Typescript
Module System
Node Version
NPM Version
64.3
Supply Chain
97.1
Quality
74.1
Maintenance
50
Vulnerability
100
License
JavaScript (99.43%)
HTML (0.57%)
Total Downloads
7,154,886
Last Day
1,095
Last Week
40,276
Last Month
144,442
Last Year
1,555,969
907 Stars
464 Commits
139 Forks
21 Watching
9 Branches
16 Contributors
Latest Version
0.99.7
Package Id
swagger-stats@0.99.7
Unpacked Size
5.02 MB
Size
1.62 MB
File Count
90
NPM Version
9.6.7
Node Version
20.3.0
Publised On
16 Jun 2023
Cumulative downloads
Total Downloads
Last day
13.8%
1,095
Compared to previous day
Last week
13.8%
40,276
Compared to previous week
Last month
3.9%
144,442
Compared to previous month
Last year
-2%
1,555,969
Compared to previous year
1
swagger-stats traces REST API requests and responses in Node.js Microservices, and collects statistics per API Operation. swagger-stats detects API operations based on express routes. You may also provide Swagger (Open API) specification, and swagger-stats will match API requests with API Operations defined in swagger specification.
swagger-stats exposes statistics and metrics per API Operation, such as GET /myapi/:parameter
, or GET /pet/{petId}
swagger-stats provides built-in Telemetry UX, so you may enable swagger-stats in your app, and start monitoring immediately, with no infrastructure requirements. Navigate to
http://<your app host:port>/swagger-stats/
swagger-stats stores details about each request/response in Elasticsearch, so you may use Kibana to perform detailed analysis of API usage over time, build visualizations and dashboards
See dashboards/elastic6
for swagger-stats Kibana visualizations and dashboards
swagger-stats exposes metrics in Prometheus format, so you may use Prometheus and Grafana to setup API monitoring and alerting
See dashboards/prometheus
for swagger-stats Grafana dashboards
With statistics and metrics exposed by swagger-stats you may spot problematic API endpoints, see where most of errors happens, catch long-running requests, analyze details of last errors, observe trends, setup alerting.
swagger-stats provides:
npm install swagger-stats --save
If you haven't added prom-client already, you should do this now. It's a peer dependency of swagger-stats as of version 0.95.19.
npm install prom-client@12 --save
1const swStats = require('swagger-stats'); 2const apiSpec = require('swagger.json'); 3app.use(swStats.getMiddleware({swaggerSpec:apiSpec}));
1const swStats = require('swagger-stats'); 2const apiSpec = require('swagger.json'); 3 4const fastify = require('fastify')({ 5 logger: true 6}); 7 8// Enable swagger-stats 9fastify.register(require('fastify-express')).then(()=>{ 10 fastify.register(swStats.getFastifyPlugin, {swaggerSpec:apiSpec}); 11}); 12
express-to-koa
can be used which is just a simple Promise
wrapper.
1const swStats = require('swagger-stats'); 2const apiSpec = require('swagger.json'); 3const e2k = require('express-to-koa'); 4app.use(e2k(swStats.getMiddleware({ swaggerSpec:apiSpec })));
1const swStats = require('swagger-stats'); 2const swaggerSpec = require('./petstore.json'); 3 4const init = async () => { 5 6 server = Hapi.server({ 7 port: 3040, 8 host: 'localhost' 9 }); 10 11 await server.register({ 12 plugin: swStats.getHapiPlugin, 13 options: { 14 swaggerSpec:swaggerSpec 15 } 16 }); 17 18 await server.start(); 19 console.log('Server running on %s', server.info.uri); 20};
1const restify = require('restify'); 2const swStats = require('swagger-stats'); 3const apiSpec = require('swagger.json'); 4 5const server = restify.createServer(); 6 7server.pre(swStats.getMiddleware({ 8 swaggerSpec:apiSpec, 9}));
See /examples
for sample apps
$ curl http://<your app host:port>/swagger-stats/stats
{
"startts": 1501647865959,
"all": {
"requests": 7,
"responses": 7,
"errors": 3,
"info": 0,
"success": 3,
"redirect": 1,
"client_error": 2,
"server_error": 1,
"total_time": 510,
"max_time": 502,
"avg_time": 72.85714285714286,
"total_req_clength": 0,
"max_req_clength": 0,
"avg_req_clength": 0,
"total_res_clength": 692,
"max_res_clength": 510,
"avg_res_clength": 98,
"req_rate": 1.0734549915657108,
"err_rate": 0.4600521392424475
},
"sys": {
"rss": 59768832,
"heapTotal": 36700160,
"heapUsed": 20081776,
"external": 5291923,
"cpu": 0
},
"name": "swagger-stats-testapp",
"version": "0.90.1",
"hostname": "hostname",
"ip": "127.0.0.1"
}
Take a look at Documentation for more details on API and returned statistics.
$ curl http://<your app host:port>/swagger-stats/metrics
# HELP api_all_request_total The total number of all API requests received
# TYPE api_all_request_total counter
api_all_request_total 88715
# HELP api_all_success_total The total number of all API requests with success response
# TYPE api_all_success_total counter
api_all_success_total 49051
# HELP api_all_errors_total The total number of all API requests with error response
# TYPE api_all_errors_total counter
api_all_errors_total 32152
# HELP api_all_client_error_total The total number of all API requests with client error response
# TYPE api_all_client_error_total counter
api_all_client_error_total 22986
. . . . . . . . . .
To collect prom-client default metrics:
1const swaggerStats = require('swagger-stats'); 2const promClient = require('prom-client'); 3 4promClient.collectDefaultMetrics();
Some Node.js specific metrics are included, such as event loop lag:
# HELP nodejs_eventloop_lag_seconds Lag of event loop in seconds.
# TYPE nodejs_eventloop_lag_seconds gauge
nodejs_eventloop_lag_seconds 0.000193641 1597303877464
. . . . . . . . . .
See Changelog
If you find a bug, or have an enhancement in mind please post issues on GitHub.
MIT
No vulnerabilities found.
Reason
no dangerous workflow patterns detected
Reason
no binaries found in the repo
Reason
license file detected
Details
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
SAST tool detected but not run on all commits
Details
Reason
Found 2/20 approved changesets -- score normalized to 1
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
branch protection not enabled on development/release branches
Details
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
Reason
project is not fuzzed
Details
Reason
23 existing vulnerabilities detected
Details
Score
Last Scanned on 2024-12-16
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More