Prometheus 监控服务简介

Prometheus是一个开源的系统监控和报警的工具,监控方式新颖, 设计思想🐂, 符合三观,2012年项目开始,4年的迭代后于2016年正式release。

prometheus-history

Features

  • 灵活的查询语言(PromQL)
  • 多维数据模型(有metric名称和键值对确定的时间序列)
  • 不依赖分布式存储(LevelDB)
  • 通过pull方式采集时间序列,通过http协议传输
  • 通过pushgateway的push时间序列的方式
  • 监控数据通过服务或者静态配置或DNS discovery 来发现
  • 支持图表

Components

  • Prometheus 服务, 用来收集和存储时间序列数据
  • 各语言export sdk 支持
  • 短时jobs的push gateway
  • 基于Rails/SQL的GUI dashboard
  • 针对其他服务的外部exporter
  • alertmanager(报警)
  • 命令行工具查询
  • HTTP API

Prometheus的组件和它的架构

prometheus-basic

开始

1
2
3
4
#: 下载
wget https://github.com/prometheus/prometheus/releases/download/v1.4.1/prometheus-1.4.1.linux-amd64.tar.gz

tar zxf prometheus-1.4.1.linux-amd64.tar.gz

配置(prometheus.yml)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# my global config
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
evaluation_interval: 15s # By default, scrape targets every 15 seconds.
# scrape_timeout is set to the global default (10s).

# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'tzj-monitor'

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "alert.rules"
# - "second.rules"

# A scrape configuration containing exactly one endpoint to scrape:
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s

static_configs:
- targets: ['localhost:9090']

启动

1
./prometheus -config.file=prometheus.yml

访问

1
http://localhost:9090/metrics

prometheus-dashboard

关于代理

我司针对所有服务均是服务化的, 我们期望所有服务都有一个服务名, 比如我们使用的是 http://a.io/$service_name/ 的形式来访问服务, 此时只需要给prometheus 传个参即可

1
./prometheus -config.file=prometheus.yml -web.external-url=http://a.io/prometheus.svc/