Prometheus概述
Prometheus是源于 Google Borgmon 的一个开源监控系统,用 Golang 开发。被很多人称为下一代监控系统。 Prometheus 基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供 HTTP 接口就可以接入监控系统,不需要任何 SDK
Prometheus架构
- Exporter是指输出被监控组件信息的Http接口,目前互联网公司常用的组件大部分都有 exporter 可以直接使用,比如 Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等)。
- Prometheus主服务器,用来收集和存储时间序列数据
- 应用程序client代码库
- 短时jobs的push gateway
- 基于Rails/SQL的GUI dashboard
- 用于报警的alertmanager
- 命令行工具查询
Prometheus安装
step1 解压
tar xvfz prometheus-*.tar.gz
step2 配置
此处配置Prometheus 进行自我监控,创建一个prometheus.yml内容如下:
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
target_groups:
- targets: ['localhost:9090']
labels:
group: 'prometheus'
# Another job or machine
- targets: ['localhost:3000']
labels:
group: 'rails-app'
step3 启动运行
./prometheus --config.file=prometheus.yml
或者直接使用docker 容器运行
sudo docker run -d -p 7070:9090 -v /home/bozhon/docker/volumes/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /home/bozhon/docker/volumes/prometheus/storage:/prometheus --restart=always prom/prometheus
step4 验证查看
访问Prometheus所在服务器地址,本例使用docker的形式运行,访问http://172.17.25.122:7070
第一篇只是针对监控自身的数据安装部署运行了Prometheus,下一篇会举例更实用的监控配置