Skip to content

Instantly share code, notes, and snippets.

@ngoduykhanh
Last active January 7, 2016 02:32
Show Gist options
  • Save ngoduykhanh/1c61ac5e64898695fffb to your computer and use it in GitHub Desktop.
Save ngoduykhanh/1c61ac5e64898695fffb to your computer and use it in GitHub Desktop.
Prometheus monitoring system overview

Prometheus Server

demo url: http://10.103.1.62:9090

Client

demo url: http://10.103.1.62:9100/metrics

Prometheus is based on a 'pull' mechanism, that scrapes metrics from the configured targets (like passive agent check in Zabbix). However, for short-lived jobs, it provides an intermediary push gateway for scraping metrics.

Client can be written in:

  • Go, Python, Java, Ruby
  • Bash, NodeJS, .Net (Unofficial support libraries)

Client format

...
# HELP node_memory_MemAvailable MemAvailable from /proc/meminfo.
# TYPE node_memory_MemAvailable gauge
node_memory_MemAvailable 5.65276672e+08
# HELP node_memory_MemFree MemFree from /proc/meminfo.
# TYPE node_memory_MemFree gauge
node_memory_MemFree 8.0564224e+07
# HELP node_memory_MemTotal MemTotal from /proc/meminfo.
# TYPE node_memory_MemTotal gauge
node_memory_MemTotal 1.027239936e+09
...

Storage

Prometheus stores data in a local storage and uses LevelDB for indexes. It also can export the data to remote stores like influxDB and OpenTSDB

Alert

Prometheus supports sending alerts to following channels

  • Email
  • Pushover
  • Pagerduty
  • Hipchat
  • Slack
  • Flowdock

Screenshots

An example of Prometheus graph. Prometheus Simple Graph

An example of graphs from PromDash Promdash

An example of sending Prometheus metrics to InfluxDB InfluxDB

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment