Giter Club home page Giter Club logo

pingdom-exporter's Introduction

Pingdom Metrics Exporter for Prometheus

Prometheus exporter for uptime metrics exposed by the Pingdom API.

Running

Make sure you expose the Pingdom API Token via the PINGDOM_API_TOKEN environment variable:

# Expose the Pingdom API Token
export PINGDOM_API_TOKEN=<api-token>

# Run the binary with the default options
bin/pingdom-exporter

Usage

bin/pingdom-exporter -h

Usage of bin/pingdom-exporter:
  -default-uptime-slo float
    	default uptime SLO to be used when the check doesn't provide a uptime SLO tag (i.e. uptime_slo_999 to 99.9% uptime SLO) (default 99)
  -metrics-path string
    	path under which to expose metrics (default "/metrics")
  -outage-check-period int
    	time (in days) in which to retrieve outage data from the Pingdom API (default 7)
  -port int
    	port to listen on (default 9158)
  -tags string
    	tag list separated by commas

Supported Pingdom Tags

uptime_slo_xxx

This will instruct pingdom-exporter to use a custom SLO for the given check instead of the default one of 99%. Some tag examples and their corresponding SLOs:

  • uptime_slo_99 - 99%, same as default
  • uptime_slo_995 - 99.5%
  • uptime_slo_999 - 99.9%
pingdom_exporter_ignored

Checks with this tag won't have their metrics exported. Use this when you don't want to disable some check just to have it excluded from the pingdom-exporter metrics.

You can also set the -tags flag to only return metrics for checks that contain the given tags.

Docker Image

We no longer provide a public Docker image. See the Development section on how to build your own image and push it to your private registry.

Exported Metrics

Metric Name Description
pingdom_up Was the last query on Pingdom API successful
pingdom_rate_limit_remaining_requests The remaining requests allowed before hitting the short-term or long-term rate limit in the Pingdom API.
pingdom_uptime_status The current status of the check (1: up, 0: down)
pingdom_uptime_response_time_seconds The response time of last test, in seconds
pingdom_slo_period_seconds Outage check period, in seconds (see -outage-check-period flag)
pingdom_outages_total Number of outages within the outage check period
pingdom_down_seconds Total down time within the outage check period, in seconds
pingdom_up_seconds Total up time within the outage check period, in seconds
pingdom_uptime_slo_error_budget_total_seconds Maximum number of allowed downtime, in seconds, according to the uptime SLO
pingdom_uptime_slo_error_budget_available_seconds Number of seconds of downtime we can still have without breaking the uptime SLO

Development

All relevant commands are exposed via Makefile targets:

# Build the binary
make

# Run the tests
make test

# Check linting rules
make lint

# Build Docker image
make image

# Push Docker images to registry
make publish

pingdom-exporter's People

Contributors

danielfm avatar damoun avatar josephsalisbury avatar rockyluke avatar cryptobioz avatar marians avatar jochbru avatar nlamirault avatar rabenhorst avatar sbower avatar

Stargazers

Victor Bogo avatar Colum avatar Aidan Gaudron avatar Tristan Horn avatar Ibrahim Diallo avatar Marcus Teixeira avatar Norihiko Asami avatar  avatar  avatar  avatar  avatar Roberto Rodrigues Junior avatar  avatar Semyon avatar SoapiestWaffles avatar Łukasz Szczęsny avatar Robert Jerzak avatar Gustavo Belfort avatar Nik Voss avatar Stephan Kölle avatar Jim D'Agostino avatar Shiv Pathak avatar Sean Johnson avatar Rafael Silveira avatar Alan Berman avatar Lucas M. A. Costa avatar Camil Blanaru avatar  avatar Antoine Méausoone avatar

Watchers

 avatar James Cloos avatar Stephan Kölle avatar  avatar

pingdom-exporter's Issues

Use golang-image instead of ca-certs for running the application

Hi there,

first of all, thanks for your work of setting up a Pingdom-exporter which works fine. Is there a reason why you are using the ca-certs image for running the app instead of the default golang-image? The golang-image includes bash so we are able to get credentials from vault and use them as environment variables.

Thanks in advance

Hitting API limits

This exporter seems to produce so much API requests that we hit the limits even with 90s scrape interval. Is there any room for optimising the amount of requests?

Drop stale metrics after deleting a check in Pingdom

If we delete a check in Pingdom, the pingdom-exporter server will continue to report metrics for the dropped check. Currently, we need to restart pingdom-exporter for it to stop reporting metrics for the deleted check.

Ideally, pingdom-exporter should detect dropped checks and stop reporting metrics for the deleted check.

Lots of errors

10/6/2020 6:16:05 AMERRO[31342] Error getting outages for check 2635213: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:05 AMERRO[31342] Error getting outages for check 5359231: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:05 AMERRO[31342] Error getting outages for check 4665874: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:05 AMERRO[31342] Error getting outages for check 2635216: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:05 AMERRO[31342] Error getting outages for check 5359222: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:05 AMERRO[31342] Error getting outages for check 5359229: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:05 AMERRO[31343] Error getting outages for check 6131396: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 5359222: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 2635201: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 6413727: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 5666227: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 5359226: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 5359292: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 5161261: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 6258891: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 5299779: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 4665874: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:16:35 AMERRO[31372] Error getting outages for check 2635183: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:17:29 AMERRO[31426] Error getting outages for check 6127627: 500 Internal Server Error: Internal Server Error source="main.go:205" 10/6/2020 6:28:50 AMERRO[32107] Error getting outages for check 6212135: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:28:50 AMERRO[32107] Error getting outages for check 6258891: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:28:50 AMERRO[32108] Error getting outages for check 5359224: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:28:50 AMERRO[32108] Error getting outages for check 6131396: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:28:55 AMERRO[32113] Error getting outages for check 2635216: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:28:55 AMERRO[32113] Error getting outages for check 2635213: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:28:55 AMERRO[32113] Error getting outages for check 6131396: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:02 AMERRO[32119] Error getting outages for check 2652829: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:02 AMERRO[32119] Error getting outages for check 2635213: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:02 AMERRO[32119] Error getting outages for check 5359292: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:02 AMERRO[32119] Error getting outages for check 2635201: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:02 AMERRO[32119] Error getting outages for check 2634712: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:05 AMERRO[32122] Error getting outages for check 2652829: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:05 AMERRO[32122] Error getting outages for check 6258891: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:05 AMERRO[32122] Error getting outages for check 5359222: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:05 AMERRO[32122] Error getting outages for check 2634712: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:05 AMERRO[32122] Error getting outages for check 6212135: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:20 AMERRO[32137] Error getting outages for check 6212135: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:20 AMERRO[32137] Error getting outages for check 5359292: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:20 AMERRO[32137] Error getting outages for check 4665874: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:20 AMERRO[32137] Error getting outages for check 2634712: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:20 AMERRO[32138] Error getting outages for check 5359229: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:29:50 AMERRO[32167] Error getting checks: invalid character '<' looking for beginning of value source="main.go:119" 10/6/2020 6:30:05 AMERRO[32182] Error getting outages for check 6127627: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:30:05 AMERRO[32182] Error getting outages for check 2635201: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:30:05 AMERRO[32182] Error getting outages for check 5359292: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:30:05 AMERRO[32182] Error getting outages for check 6258891: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:30:05 AMERRO[32182] Error getting outages for check 5299779: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:30:05 AMERRO[32182] Error getting outages for check 5161261: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:30:05 AMERRO[32182] Error getting outages for check 6413727: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:30:05 AMERRO[32182] Error getting outages for check 5359264: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:51 AMERRO[32828] Error getting outages for check 5359226: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:51 AMERRO[32828] Error getting outages for check 5359292: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:51 AMERRO[32828] Error getting outages for check 6131396: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:51 AMERRO[32828] Error getting outages for check 2635213: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:51 AMERRO[32828] Error getting outages for check 2635216: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:51 AMERRO[32829] Error getting outages for check 5666227: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:51 AMERRO[32829] Error getting outages for check 2635201: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:51 AMERRO[32829] Error getting outages for check 5359230: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:51 AMERRO[32829] Error getting outages for check 5161261: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:55 AMERRO[32833] Error getting outages for check 5359231: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:40:56 AMERRO[32833] Error getting outages for check 2635213: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:41:04 AMINFO[0000] Pingdom Exporter v1.3.0-2-g8dd8b64 listening on http://0.0.0.0:9158 source="main.go:317" 10/6/2020 6:41:25 AMERRO[0021] Error getting outages for check 2652829: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:41:25 AMERRO[0021] Error getting outages for check 4665874: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:42:18 AMERRO[0074] Error getting outages for check 6127627: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:42:20 AMERRO[0076] Error getting outages for check 5359264: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:42:20 AMERRO[0076] Error getting outages for check 5359230: invalid character '<' looking for beginning of value source="main.go:205" 10/6/2020 6:42:20 AMERRO[0076] Error getting outages for check 5161261: invalid character '<' looking for beginning of value source="main.g

Update base image

the centurylink/ca-certs base image seems to be outdated. please build another version and release with updated ca-certs.

pingdom relys on let's encrypt certs and it seems the CA change for let's encrypt lately broke the image which is now failing to scrape images from the API

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.