StatsD Admin Interface

The StatsD admin/management interface is a plain-text TCP service exposed on port 8126 (default), used to inspect daemon state and clear in-memory aggregates. Supported commands are `stats`, `counters`, `gauges`, `timers`, `delcounters`, `delgauges`, `deltimers`, `health [up|down]`, `config`, and `quit`. Each command is line-terminated; the daemon responds with one or more lines of plain text and the command name as a terminator (`END`). Wildcards (`*`) are supported on the delete commands. The interface is intended for telnet/netcat-style operator use and for tooling that wants to snapshot counters or toggle health checks.

StatsD Admin Interface is one of 3 APIs that StatsD publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Admin, Health Check, Management, Operator, and TCP. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

statsd-admin-interface-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: StatsD Admin Interface
  version: 1.0.0
  description: >-
    OpenAPI projection of the StatsD admin/management interface. The native
    transport is a line-oriented plain-text protocol over TCP/8126 (default),
    not HTTP — but every supported command (`stats`, `counters`, `gauges`,
    `timers`, `delcounters`, `delgauges`, `deltimers`, `health [up|down]`,
    `config`, `quit`) is a self-contained request/response interaction with
    well-defined inputs and outputs and is therefore modeled here as a virtual
    `GET`/`POST` resource so that tools that consume OpenAPI (Spectral, MCP
    adapters, client generators) can reason about the surface.
  contact:
    name: StatsD Maintainers
    url: https://github.com/statsd/statsd
  license:
    name: MIT
    url: https://github.com/statsd/statsd/blob/master/LICENSE
servers:
- url: tcp://{host}:{port}
  description: Native admin TCP interface
  variables:
    host:
      default: 127.0.0.1
      description: Address of the StatsD daemon
    port:
      default: '8126'
      description: Default admin port (`mgmt_port`)
tags:
- name: Stats
  description: Inspect Aggregated In-Memory State
- name: Counters
  description: Inspect Or Delete Counters
- name: Gauges
  description: Inspect Or Delete Gauges
- name: Timers
  description: Inspect Or Delete Timers
- name: Health
  description: Health Check Control
- name: Configuration
  description: Runtime Configuration Inspection
paths:
  /stats:
    get:
      summary: Get Server Stats
      description: >-
        Return the daemon's own self-stats — uptime in seconds,
        `messages.last_msg_seen` in seconds since the last metric was received,
        and `messages.bad_lines_seen` since startup. Backends append their own
        keys (e.g., `graphite.last_flush`, `graphite.flush_time`).
      operationId: getStats
      tags:
      - Stats
      responses:
        '200':
          description: Plain-Text Stats Block, Terminated By `END`.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/AdminStatsResponse'
  /counters:
    get:
      summary: List All Counters
      description: Dump the current value of every in-memory counter as a JSON-like object literal.
      operationId: listCounters
      tags:
      - Counters
      responses:
        '200':
          description: Current Counter Snapshot.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/CounterMap'
  /gauges:
    get:
      summary: List All Gauges
      description: Dump the current value of every in-memory gauge.
      operationId: listGauges
      tags:
      - Gauges
      responses:
        '200':
          description: Current Gauge Snapshot.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/GaugeMap'
  /timers:
    get:
      summary: List All Timers
      description: Dump the raw value list collected for every in-memory timer since the last flush.
      operationId: listTimers
      tags:
      - Timers
      responses:
        '200':
          description: Current Timer Snapshot.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/TimerMap'
  /delcounters:
    post:
      summary: Delete Counters
      description: >-
        Delete one or more counters by name. Wildcards are supported (e.g.,
        `sandbox.test.*`).
      operationId: deleteCounters
      tags:
      - Counters
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeletePatterns'
      responses:
        '200':
          description: Deletion Acknowledgement.
          content:
            text/plain:
              schema:
                type: string
                example: 'deleted: sandbox.test.foo'
  /delgauges:
    post:
      summary: Delete Gauges
      description: Delete one or more gauges by name; wildcards supported.
      operationId: deleteGauges
      tags:
      - Gauges
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeletePatterns'
      responses:
        '200':
          description: Deletion Acknowledgement.
          content:
            text/plain:
              schema:
                type: string
  /deltimers:
    post:
      summary: Delete Timers
      description: Delete one or more timers by name; wildcards supported.
      operationId: deleteTimers
      tags:
      - Timers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeletePatterns'
      responses:
        '200':
          description: Deletion Acknowledgement.
          content:
            text/plain:
              schema:
                type: string
  /health:
    get:
      summary: Get Health Status
      description: Return the daemon's current health status as configured by `healthStatus`.
      operationId: getHealth
      tags:
      - Health
      responses:
        '200':
          description: Current Health Status.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/HealthStatus'
    post:
      summary: Set Health Status
      description: >-
        Set the daemon's health status to `up` or `down`. Useful for draining
        load balancers ahead of a deployment.
      operationId: setHealth
      tags:
      - Health
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HealthStatus'
      responses:
        '200':
          description: Updated Health Status.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/HealthStatus'
  /config:
    get:
      summary: Dump Current Configuration
      description: >-
        Return the currently loaded configuration document as a JSON-like
        object literal — equivalent to inspecting `exampleConfig.js` post-load.
      operationId: dumpConfig
      tags:
      - Configuration
      responses:
        '200':
          description: Loaded Configuration.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Config'
components:
  schemas:
    AdminStatsResponse:
      type: object
      description: Self-stats returned by the `stats` command.
      properties:
        uptime:
          type: integer
          description: Seconds since the daemon started.
        'messages.last_msg_seen':
          type: integer
          description: Seconds since the most recent metric line was received.
        'messages.bad_lines_seen':
          type: integer
          description: Number of unparseable metric lines since startup.
        'graphite.last_flush':
          type: integer
          description: Seconds since the last Graphite flush (Graphite backend only).
        'graphite.last_exception':
          type: integer
          description: Seconds since the last Graphite flush exception.
        'graphite.flush_length':
          type: integer
          description: Bytes written in the last Graphite flush.
        'graphite.flush_time':
          type: integer
          description: Milliseconds spent in the last Graphite flush.
    CounterMap:
      type: object
      description: Map of counter bucket name to current integer value since last flush.
      additionalProperties:
        type: number
      example:
        'statsd.bad_lines_seen': 0
        'statsd.packets_received': 1234
        'app.requests.completed': 87
    GaugeMap:
      type: object
      description: Map of gauge bucket name to its currently retained numeric value.
      additionalProperties:
        type: number
      example:
        'fuel.level': 0.5
        'temperature': 98.6
    TimerMap:
      type: object
      description: Map of timer bucket name to the raw observation list since the last flush.
      additionalProperties:
        type: array
        items:
          type: number
      example:
        'request.duration':
        - 12
        - 14
        - 19
        - 320
    DeletePatterns:
      type: object
      description: One or more bucket name patterns (wildcards permitted) to delete.
      required:
      - patterns
      properties:
        patterns:
          type: array
          items:
            type: string
          minItems: 1
          example:
          - 'sandbox.test.*'
    HealthStatus:
      type: object
      description: Daemon health status as exposed to load balancers and external health probes.
      required:
      - status
      properties:
        status:
          type: string
          enum:
          - up
          - down
          example: up
    Config:
      type: object
      description: Loaded configuration document — mirrors `exampleConfig.js`.
      properties:
        port:
          type: integer
          default: 8125
          description: UDP port to listen for metrics on.
        address:
          type: string
          default: 0.0.0.0
          description: Address to listen on.
        mgmt_port:
          type: integer
          default: 8126
          description: TCP port for the management interface.
        mgmt_address:
          type: string
          default: 0.0.0.0
        flushInterval:
          type: integer
          default: 10000
          description: Milliseconds between backend flushes.
        percentThreshold:
          type: array
          items:
            type: number
          default:
          - 90
          description: Percentiles to compute for timer metrics.
        deleteIdleStats:
          type: boolean
          default: false
        deleteCounters:
          type: boolean
          default: false
        deleteGauges:
          type: boolean
          default: false
        deleteTimers:
          type: boolean
          default: false
        deleteSets:
          type: boolean
          default: false
        backends:
          type: array
          items:
            type: string
          description: NPM module names of backends to load.
          example:
          - './backends/graphite'
        prefixStats:
          type: string
          default: statsd
          description: Prefix applied to the daemon's own self-stats.
        debug:
          type: boolean
          default: false
        dumpMessages:
          type: boolean
          default: false
        healthStatus:
          type: string
          default: up
          enum:
          - up
          - down