Sindbad~EG File Manager
swagger: '2.0'
info:
version: 0.99.7
title: swagger-stats API
description: |
### Telemetry for your APIs
### Trace API calls and monitor API performance, health and usage statistics in Node.js Microservices
contact:
name: swagger-stats team
email: sv2@slana.tech
url: 'http://swaggerstats.io'
license:
name: MIT
url: 'http://opensource.org/licenses/MIT'
basePath: /
schemes:
- http
consumes:
- application/json
produces:
- application/json
paths:
/swagger-stats/stats:
get:
description: |
#### Returns statistics
operationId: /swagger-stats/stats
produces:
- application/json
parameters:
- name: fields
in: query
description: |
#### Statistics fields to return. Multiple fileds may be specified as an array
* **method** - Baseline Metrics per Requests Method
* **timeline** - Baseline Metrics collected for each 1 minute interval during last 60 minutes
* **lasterrors** - request and response details for the last 100 errors (last 100 error responses)
* **longestreq** - request and response details for top 100 requests that took longest time to process (time to send response)
* **apidefs** - API definitions froim swagger specification
* **apistats** - Baseline Metrics per each API Operation. API operation is path and method combination from the swagger spec. Swagger specification is optional. swagger-stats will detect and monitor API operations based on express routes.
* **apiop** - API Operation parameters metrics: parameter passed count, mandatory parameter missing count (for API Operation parameters defined in swagger spec)
* **errors** - Count of responses per each error code, top "not found" resources, top "server error" resources
* **all** or * - all fields
Baseline metrics are: counts of requests and responses(total and by response class), processing time (total/avg/max), content length(total/avg/max) for requests and responses, rates for requests and errors.
required: false
type: array
items:
type: string
enum:
- method
- timeline
- lasterrors
- longestreq
- apidefs
- apistats
- apiop
- errors
- all
- "*"
collectionFormat: csv
- name: path
in: query
description: |
#### Path of API Operation, to get statistics on individual API Operation. Use when field apiop is specified.
Example:
##### fields=apiop&method=GET&path=/v2/pet/{petId}
required: false
type: string
- name: method
in: query
description: |
#### Method of API Operation, to get statistics on individual API Operation. Use when field apiop is specified.
Example:
##### fields=apiop&method=GET&path=/v2/pet/{petId}
required: false
type: string
responses:
'200':
description: Statistcs
schema:
$ref: '#/definitions/stats'
'403':
description: Authentication required (if Authentication is enabled by configuration)
default:
description: unexpected error
/swagger-stats/metrics:
get:
description: |
#### Returns Prometheus Metrics. The following metrics are provided:
|Name |Type |Labels |Description
|:--------------|:--------|:----------|:----------
|`api_all_request_total`|counter|-|The total number of all API requests received|
|`api_all_success_total`|counter|-|The total number of all API requests with success response|
|`api_all_errors_total`|counter|-|The total number of all API requests with error response|
|`api_all_client_error_total`|counter|-|The total number of all API requests with client error response|
|`api_all_server_error_total`|counter|-|The total number of all API requests with server error response|
|`api_all_request_in_processing_total`|gauge|-|The total number of all API requests currently in processing (no response yet)|
|`nodejs_process_memory_rss_bytes`|gauge|-|Node.js process resident memory (RSS) bytes|
|`nodejs_process_memory_heap_total_bytes`|gauge|-|Node.js process memory heapTotal bytes|
|`nodejs_process_memory_heap_used_bytes`|gauge|-|Node.js process memory heapUsed bytes|
|`nodejs_process_memory_external_bytes`|gauge|-|Node.js process memory external bytes|
|`nodejs_process_cpu_usage_percentage`|gauge|-|Node.js process CPU usage percentage|
|`api_request_total`|counter|method<br/>path<br/>code|The total number of all API requests|
|`api_request_duration_milliseconds`|histogram|method<br/>path<br/>le|API requests duration|
|`api_request_size_bytes`|histogram|method<br/>path<br/>le|API requests size|
|`api_response_size_bytes`|histogram|method<br/>path<br/>le|API response size|
operationId: /swagger-stats/metrics
produces:
- text/plain
responses:
'200':
description: Prometheus Metrics
schema:
type: string
example: |
# HELP api_all_request_total The total number of all API requests received
# TYPE api_all_request_total counter
api_all_request_total 80
. . . .
# HELP api_request_total The total number of all API requests
# TYPE api_request_total counter
api_request_total{method="GET",path="/v2/pet/{petId}",code="200"} 1
api_request_total{method="GET",path="/v2/pet/{petId}",code="302"} 1
. . . .
# HELP api_request_duration_milliseconds API requests duration
# TYPE api_request_duration_milliseconds histogram
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="5"} 3
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="10"} 3
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="25"} 4
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="50"} 4
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="100"} 4
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="250"} 4
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="500"} 4
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="1000"} 4
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="2500"} 4
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="5000"} 4
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="10000"} 4
api_request_duration_milliseconds_bucket{method="GET",path="/v2/pet/{petId}",le="+Inf"} 4
api_request_duration_milliseconds_count{method="GET",path="/v2/pet/{petId}"} 4
api_request_duration_milliseconds_sum{method="GET",path="/v2/pet/{petId}"} 12
. . . .
'403':
description: Authentication required (if Authentication is enabled by configuration)
default:
description: unexpected error
/swagger-stats/logout:
get:
description: Logout user (if Authentication is enabled by configuration)
operationId: /swagger-stats/logout
responses:
'200':
description: User logged out
default:
description: unexpected error
definitions:
baselinestats:
type: object
description: |
Baseline statistics object. Provides core metrics on request-reponse processing. Baseline statistics are calculated in in several different contexts.
* `all` stats contains total values for all requests and responses
* In `timeline`, each bucket contains baseline stats calculated for a time interval
* In `method` baseline stats are calculated per each request method
* `apistats` provides baseline stats per each API Operation
properties:
requests:
type: integer
description: Total number of requests received
responses:
type: integer
description: Total number of responses sent
errors:
type: integer
description: Total number of error responses
info:
type: integer
description: Total number of informational responses
success:
type: integer
description: Total number of success responses
redirect:
type: integer
description: Total number of redirection responses
client_error:
type: integer
description: Total number of client error responses
server_error:
type: integer
description: Total number of server error responses
total_time:
type: integer
description: Sum of total processing time (from request received to response finished)
max_time:
type: integer
description: Maximum observed processed time
avg_time:
type: number
description: Average processing time
total_req_clength:
type: integer
description: Total (Sum) of Content Lengths of received requests
max_req_clength:
type: integer
description: Maximum observed Content length in received requests
avg_req_clength:
type: number
description: Average Content Length in received requests
total_res_clength:
type: integer
description: Total (Sum) of Content Lengths of sent responses
max_res_clength:
type: integer
description: Maximum observed Content Length in sent responses
avg_res_clength:
type: number
description: Average Content Length in sent responses
req_rate:
type: number
description: Request Rate
err_rate:
type: number
description: Error Rate
apdex_threshold:
type: number
description: Current Apdex threshold
apdex_satisfied:
type: number
description: Total number of `satisfied` requests - success and response time <= apdex_threshold
apdex_tolerated:
type: number
description: Total number of `tolerated` requests - success and response time <= apdex_threshold
apdex_score:
type: number
description: Apdex score - (apdex_satisfied + (apdex_tolerated/2))/responses
sysstats:
type: object
description: System statistics - memory usage and CPU usage of node process. As returned by process.memoryUsage() and process.cpuUsage().
properties:
rss:
type: integer
description: Memory Usage - Resident Set Size, as returned by process.memoryUsage()
heapTotal:
type: integer
description: Memory Usage - Total Size of the Heap, as returned by process.memoryUsage()
heapUsed:
type: integer
description: Memory Usage - Heap actually Used, as returned by process.memoryUsage()
external:
type: integer
description: Memory Usage - External memory, as returned by process.memoryUsage()
cpu:
type: integer
description: CPU Usage % - as returned by process.cpuUsage(), calculated per [https://github.com/nodejs/node/pull/6157](https://github.com/nodejs/node/pull/6157)
methods:
type: object
description: Statistics per request method
properties:
GET:
$ref: '#/definitions/baselinestats'
POST:
$ref: '#/definitions/baselinestats'
PUT:
$ref: '#/definitions/baselinestats'
DELETE:
$ref: '#/definitions/baselinestats'
additionalProperties:
$ref: '#/definitions/baselinestats'
stats:
type: object
description: Stats object is returned by /stats API. It always inlcudes main properties (`startts`, `name`, `version`, `hostname`, `ip`), `all` statistics, and `sys' statistics. Depending on parameters passed to /stats API call, additional statistics properties will be included as well.
required:
- startts
- all
- sys
- name
- version
- hostname
- ip
- apdexThreshold
properties:
startts:
type: integer
format: int64
description: timestamp when collection of statistic started - application start time
name:
type: string
description: Name
version:
type: string
description: Version
hostname:
type: string
description: Hostname
ip:
type: string
description: IP address
apdexThreshold:
type: string
description: |
Current Apdex Threshold, in milliseconds. Default: `25`.
In Apdex calculation, request considered Satisfied if it is answered in less then this Threshold (< 25ms),
and request is Tolerating if it's answered in less then Threshold * 4 (<100 ms)
See [Apdex calculation](https://en.wikipedia.org/wiki/Apdex)
all:
$ref: '#/definitions/baselinestats'
sys:
$ref: '#/definitions/sysstats'
methods:
$ref: '#/definitions/methods'
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists