0. 简介

一般来说,关于一个运转时的复杂体系,假如体系出了问题是很难排查的,为此,咱们需求再各种要害点上加上监控,经过监控获取的数据,解决问题。

Prometheus就是这么一款监控体系,其本质上是一个时序数据库,存储了监控方针体系在各个时刻点上的监控数据。其不仅能够用于关于基础设施,如服务器,数据库等,还能够利用其SDK,用于各种自定义的服务的监控。

Grafana是一个监控仪表体系,帮助用户简化监控的复杂度,用户只需求供给监控的数据,其就可生成各种可视化的仪表,其支撑多种数据库作为查询数据库,不过运用最多的仍是Prometheus。

1. 监控体系组成

Prometheus+Grafana搭建监控系统

Prometheus生态体系包含多个组件,其间许多是可选的:

  • 用于采集和存取时刻序列数据的 Prometheus server
  • 用于监测运用的客户端库
  • 用于支撑短期的作业的 push gateway
  • Exporter,不同的监控需求由不同的exporter处理,如node-exportermysql-exporter
  • 用于处理告警的 alertmanager
  • 多种东西支撑

Prometheus大多数组件运用 Go 言语编写,易于构建和布置为二进制可执行文件。

Prometheus开源社区供给了许多的东西,包括各种exporter以及不同言语的client,在链接。

总结起来,咱们需求建立的Prometheus+Grafana监控体系,其根本的架构图如下所示:Exporter监控东西担任获取数据;Prometheus搜集存储数据,供给对外的查询接口;Grafana作为仪表盘,担任更友爱地展示监控数据。

Prometheus+Grafana搭建监控系统

下面,咱们以监控一台Linux服务器为例子,建立一个体系节点的各项方针的监控体系。

2. Prometheus建立

2.1 Prometheus装置布置

Prometheus支撑多种操作体系,在产品官网上供给了各个体系的二进制文件进行下载,能够下载tar包进行装置布置。

当然,其也能够经过docker等容器进行布置,下面介绍其作为docker容器的布置。

首先咱们能够将其装备文件prometheus.yml文件保存在本地目录,启动时经过-v参数进行挂载。

global:
  scrape_interval:     15s
  evaluation_interval: 15s
alerting:
  alertmanagers:
  - static_configs:
    - targets:
rule_files:
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

然后经过docker run指令运转:

$ sudo docker run --name prometheus -d -p 9090:9090 -v /data/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

运转成功后,经过浏览器,拜访http://$IP:9090可看到体系界面。

2.2 装备介绍

Prometheus有许多的装备,下面咱们介绍这儿用得上的两种,其他的能够在网上资料中学习。

global

用于定义prometheus的大局装备。

global:
  scrape_interval:     15s
  evaluation_interval: 15s
  scrape_timeout: 10s

scrape_interval:指定从监控端抓取数据的时刻距离(默以为15s),假如在特定的job中指定了时刻距离方针,则该job中以特定的时刻距离为准; evaluation_interval:用于指定检测告警规则的时刻距离,每15s重新检测告警规则,并对改变进行更新; scrape_timeout:定义拉取实例方针的超时时刻。

scrape_configs

用于指定Prometheus抓取的方针信息。

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

Prometheus关于监控数据的抓取,经过装备job的方法进行操作。在job里边指定了一组方针抓取所必须的信息,例如方针地址、端口、标签和验证信息等。抓取的时刻距离运用上面global模块装备的时刻,也可在该job中独自指定。 在实际环境中,一般会依据抓取方针的类型不同,如Mysql、mongodb、kafka等,分成多个job来进行。

默许装备只有一个监控方针,即prometheus server自身,端口为9090,假如不指定途径,默许会从/metrics途径抓取。

2.3 node-exporter

node-exporter运用Go言语编写,它首要用来监控主机体系的各项性能参数,可搜集各种主机方针的库,还供给了textfile功能,用于自定义方针。

官方并不建议经过Docker的方法布置node-exporter,由于它需求拜访主机体系,经过docker布置的方法,需求把任何非根装置点都绑定到容器中,并经过--path.rootfs参数指定。所以咱们选用二进制装置的方法。

下载地址是下载。

$ wget --no-check-certificate https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz # 下载
$ tar -xvf node_exporter-1.6.0.linux-amd64.tar.gz # 解压
$ cd node_exporter-1.6.0.linux-amd64/
$ ./node_exporter & # 后台运转

经过以上操作,然后在http://ip:9100/metrics就能够看到node-exporter获取到的方针。

假如想让Prometheus抓取到节点的方针,还需求在上一节说到的装备中参加节点的装备:

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'xxx'
    honor_timestamps: true
    scrape_interval: 15s
    scrape_timeout: 10s
    metrics_path: /metrics
    scheme: http
    follow_redirects: true
    static_configs:
    - targets:
      - x.x.x.x:9100

这样,就能够搜集到x.x.x.x这个主机的节点信息,在Prometheus的页面也能够查到:

Prometheus+Grafana搭建监控系统

3. Grafana可视化

3.1 Grafana装置

和Prometheus相同,Grafana也能够选用Docker装置,其装置指令如下:

sudo docker run --name=grafana -d -p 3000:3000 grafana/grafana

然后在http://ip:3000就能够拜访,默许账密都是admin

3.2 添加数据源

挑选Administration -> Data Sources -> Add data source,挑选Prometheus作为数据源。

Prometheus+Grafana搭建监控系统
填写数据源称号与URL,完成后点击“save&test”按键,假如正常会收到Success提示。
Prometheus+Grafana搭建监控系统

3.3 下载Dashboard装备

虽然能够自定义面板,可是关于一些常见数据的监控,开源社区都有着较为完善的Dashboard模板能够下载即用,极大提升。官方搜索链接,当咱们在搜索栏搜索node时,会出现许多Dashboard,挑选自己想要的仪表盘。

这时候挑选Copy ID to clipboard

Prometheus+Grafana搭建监控系统

然后去Grafana服务上挑选Dashboards -> Import dashboard,粘贴ID,点击load,就能够得到想要的仪表盘了。

Prometheus+Grafana搭建监控系统

如下:

Prometheus+Grafana搭建监控系统

当然,也能够挑选下载json装备然后上传。

4. 小结

以上,一个监控体系就大致建立完成了,有关Prometheus的一些具体的装备以及细节,咱们留待后边具体介绍。

5. 参考文档

Prometheus 中文文档

Prometheus 主机监控

一文搞懂Prometheus、Grafana(含腾讯云上实战)