Skip to content

sysboy/stdout2prom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

stdout2prom

Much to the dismay of the Prometheus purists, this application applies arbitrary regular expressions against the STDOUT and creates metrics. I bear no responsibility for the level of anger in your Prometheus admin.

What/How does it do it? stdout2prom reads everything from STDOUT, processes each line with whatever regular expressions you have designed and uses matches to increment counters. It spawns a http endpoint called /metrics that contains these metrics. Point your prometheus at this endpoint.

The regular expressions make use of named subgroups and translate these into labels on the metric. This allows you to generate more complicated metrics, ie counting the number of 200 vs 404 HTTP return codes.

Metrics and their regular expressions are defined in a YAML configuration file, below is an simple example:

basename: "myMetrics"
eatMatches: false
eatAll: false
listen: ":9000"

metrics:
  - name: "post"
    description: "Post times of input packets"
    regex: '.*POST\s+.*\s+(?P<returncode>\d+)\s+(?P<response>\d+)ms'
    value: "response"
    labels:
      - "returncode"

  - name: "packetsOut"
    regex: "output packet"
    description: "Count of the output packets"

Some of the fields might need a little more explanation:

  • basename: This is prefixed to each metric name
  • eatMatches: If a line matches, then don't replicate it to STDOUT.
  • eatAll: If this is true, then don't replicate any lines to STDOUT.
  • listen: HTTP endpoint

For each metric you define, there are the following options:

  • name: your metric will be called this prefixed with the basename from above
  • description: something that describes your metrics
  • regex: a regular expression
  • value: Takes the matching named subgroup and makes it the VALUE of this metrics
  • labels: A list of labels to apply to this metric, these should have matching named subgroups.

Command line options

  -config string
    	Config file. (default "metrics.yml")
  -cpuprofile string
    	write cpu profile to file
  -debug
    	Display more of the inner workings.
  -tardy int
    	Hang around for X seconds after stdin closes

About

Reads stdout, speaks prometheus

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published