0. 简介
一般来说,关于一个运转时的复杂体系,假如体系出了问题是很难排查的,为此,咱们需求再各种要害点上加上监控,经过监控获取的数据,解决问题。
Prometheus就是这么一款监控体系,其本质上是一个时序数据库
,存储了监控方针体系在各个时刻点上的监控数据。其不仅能够用于关于基础设施,如服务器,数据库等,还能够利用其SDK,用于各种自定义的服务的监控。
Grafana是一个监控仪表体系,帮助用户简化监控的复杂度,用户只需求供给监控的数据,其就可生成各种可视化的仪表,其支撑多种数据库作为查询数据库,不过运用最多的仍是Prometheus。
1. 监控体系组成
Prometheus生态体系包含多个组件,其间许多是可选的:
- 用于采集和存取时刻序列数据的 Prometheus server
- 用于监测运用的客户端库
- 用于支撑短期的作业的 push gateway
-
Exporter
,不同的监控需求由不同的exporter
处理,如node-exporter
、mysql-exporter
等 - 用于处理告警的 alertmanager
- 多种东西支撑
Prometheus大多数组件运用 Go 言语编写,易于构建和布置为二进制可执行文件。
Prometheus开源社区供给了许多的东西,包括各种exporter
以及不同言语的client
,在链接。
总结起来,咱们需求建立的Prometheus+Grafana监控体系,其根本的架构图如下所示:Exporter监控东西担任获取数据;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的页面也能够查到:
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作为数据源。
3.3 下载Dashboard装备
虽然能够自定义面板,可是关于一些常见数据的监控,开源社区都有着较为完善的Dashboard模板能够下载即用,极大提升。官方搜索链接,当咱们在搜索栏搜索node
时,会出现许多Dashboard,挑选自己想要的仪表盘。
这时候挑选Copy ID to clipboard
:
然后去Grafana服务上挑选Dashboards -> Import dashboard
,粘贴ID,点击load,就能够得到想要的仪表盘了。
如下:
当然,也能够挑选下载json装备然后上传。
4. 小结
以上,一个监控体系就大致建立完成了,有关Prometheus的一些具体的装备以及细节,咱们留待后边具体介绍。
5. 参考文档
Prometheus 中文文档
Prometheus 主机监控
一文搞懂Prometheus、Grafana(含腾讯云上实战)