一、Prometheus简介
Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。
作为新一代的监控框架,Prometheus 具有以下特点:
强大的多维度数据模型:
1、时间序列数据通过 metric 名和键值对来区分。
2、所有的 metrics 都可以设置任意的多维标签。
3、数据模型更随意,不需要刻意设置为以点分隔的字符串。
4、可以对数据模型进行聚合,切割和切片操作。
5、支持双精度浮点类型,标签可以设为全 unicode。
灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
易于管理: Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。
使用 pull 模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。
可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端。
可以通过服务发现或者静态配置去获取监控的 targets。
有多种可视化图形界面。
易于伸缩。
需要指出的是,由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100% 准确的情形。但如果用于记录时间序列数据,Prometheus 具有很大的查询优势,此外,Prometheus 适用于微服务的体系架构。
参考网址:
1、Prometheus官方网站:https://prometheus.io/
2、grafana官方网站:https://grafana.com/
3、Prometheus官方文档:https://prometheus.io/docs/prometheus/latest/getting_started/
4、Prometheus 入门与实践:https://www.ibm.com/developerworks/cn/cloud/library/cl-lo-prometheus-getting-started-and-practice/index.html
5、 实战 Prometheus 搭建监控系统 https://www.codercto.com/a/35819.html
6、 Prometheus操作指南 https://github.com/yunlzheng/prometheus-book
https://yunlzheng.gitbook.io/prometheus-book/
7、Prometheus实战 https://songjiayang.gitbooks.io/prometheus/content/introduction/
二、Prometheus 服务端部署
1、下载服务端安装程序:
2、安装服务端程序:
tar xvfz prometheus-*.tar.gz
cd prometheus-*
cp -rf /software/prometheus/prometheus-2.9.2.linux-amd64/* /usr/local/prometheus
3、配置服务端监控自己:
修改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
static_configs:
- targets: ['localhost:9090']
4、启动服务端程序
# Start Prometheus.
# By default, Prometheus stores its database in ./data (flag --storage.tsdb.path).
./prometheus --config.file=prometheus.yml
curl localhost:9090/metrics
三、Prometheus 客户端部署
tar -xf node_exporter-0.18.0.linux-amd64.tar.gz
cp node_exporter-0.18.0.linux-amd64/* /usr/local/nodes/node
cd /usr/local/nodes/node
./node_exporter
curl http://localhost:9100/metrics
四、配置监控客户端
修改Prometheus 服务端配置(prometheus.yml):
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.0.107:9090']
- job_name: 'server'
static_configs:
- targets: ['192.168.0.107:9100']
重启服务端Prometheus 进程。
ps -lef|grep prometheus
kill -9 14577
nohup ./prometheus --config.file=prometheus.yml&
五、Prometheus 插件部署
六、Prometheus 展示组件grafana部署
1、下载grafana https://grafana.com/grafana/download?platform=linux
2、安装grafana
$ wget https://dl.grafana.com/oss/release/grafana-6.1.6-1.x86_64.rpm
$ yum install fontconfig【依赖】
$ yum install freetype* 【依赖】
$ yum install urw-fonts 【依赖】
$ yum localinstall grafana-6.1.6-1.x86_64.rpm
$ systemctl daemon-reload
$ systemctl start grafana-server
$ systemctl status grafana-server
$ systemctl enable grafana-server.service
$ curl http://localhost:3000/login
默认账号密码admin admin 登录后改密码
3、配置grafana
1)添加数据源
2)配置数据源
3)增加模板
增加Node Exporter Full模板
https://grafana.com/dashboards/1860
4)展示结果