Prometheus + Grafana,开源监控神器!
Posted 苍青浪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus + Grafana,开源监控神器!相关的知识,希望对你有一定的参考价值。
1 Prometheus介绍
Prometheus是一个开源系统监控和警报工具包,用于收集和聚合指标作为时间序列数据,即将指标信息、记录的时间戳以及称为标签的可选键值对一起存储,详细介绍请查看官方文档
2 Prometheus及其组件安装
因Prometheus组件基本都是用Go编写的,所以更易于构建和部署,解压文件后,进入相应目录运行二进制文件即可
Prometheus安装
下载并解压prometheus到监控服务器
wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz # 在线下载资源包,也可直接访问地址在浏览器下载后上传至服务器 tar -xzvf prometheus-2.32.1.linux-amd64.tar.gz -C Program # 解压到指定目录 mv Program/prometheus-2.32.1.linux-amd64 Program/prometheus-2.32.1 # 重命名
运行prometheus
# 运行prometheus cd prometheus-2.32.1 # 进入解压并重命名后的目录 ./prometheus # 运行prometheus ./prometheus --config.file=prometheus.yml # 或者指定配置文件运行 # 以上两种都是前台运行,要想执行其它操作需先结束prometheus,所以可以使用nohup命令使其后台运行 nohup ./prometheus --config.file=prometheus.yml > prometheus.log 2>&1 &
也可以配置service文件,使用systemctl命令管理应用,执行命令vim /usr/lib/systemd/system/prometheus.service,复制并修改以下信息,写入prometheus.service文件中
[Unit] Description=Prometheus # 先启动network.target After=network.target [Service] # 定义启动默认进程,即主进程 Type=simple # 以root用户启动 User=root # 启动当前服务的命令,注意修改路径和参数 ExecStart=/root/Program/prometheus-2.32.1/prometheus --config.file=/root/Program/prometheus-2.32.1/prometheus.yml Restart=on-failure [Install] WantedBy=multi-user.target
重新加载配置文件systemctl daemon-reload,最后启动程序systemctl start prometheus.service,查看是否启动成功systemctl status prometheus.service,若未关闭SELinux使用service文件方式会启动失败,具体失败原因请查看日志报错信息,查看日志命令:journalctl -xe配置正确则浏览器可成功访问到9090端口的地址,访问http://192.166.66.24:9090/出现下图界面,点击【Status】→【Targets】,prometheus应处于UP状态
PromQL介绍
PromQL是Prometheus内置的数据查询语言,支持对时间序列数据丰富的查询,聚合以及逻辑运算能力。广泛应用在Prometheus的日常应用当中,包括对数据查询、可视化、告警处理当中,下文介绍告警、Grafana都会用到PromQL语句。
mysqld_exporter组件安装
mysqld_exporter是用于监控MySQL服务器指标的,比如:连接数、QPS等信息,同样安装在被监控服务器上,前提肯定是被监控服务器上已安装MySQL,然后开始运行mysqld_exporter,步骤如下:
1.下载并解压mysqld_exporter到被监控服务器
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz # 在线下载资源包,也可直接访问地址在浏览器下载后上传至被测服务器 tar -xzvf mysqld_exporter-0.13.0.linux-amd64.tar.gz # 解压压缩包 mv mysqld_exporter-0.13.0.linux-amd64 mysqld_exporter-0.13.0 # 重命名
2.创建文件vim .my.cnf,保存已安装MySQL的账号密码,格式如下:
[client] user=root password=123456
3.进入prometheus-2.32.1目录,在prometheus.yml文件中添加MySQL相关信息
# 在prometheus.yml文件中添加如下信息,指明监控目标 - job_name: mysqld_exporter static_configs: - targets: ["192.166.66.22:9104"]
4.运行mysqld_exporter
# 进入pushgateway-1.4.2目录,启动mysqld_exporter ./pushgateway --config.my-cnf=/root/mysqld_exporter-0.13.0/.my.cnf # ←前台运行,↓或者后台运行 nohup ./mysqld_exporter --config.my-cnf=/root/mysqld_exporter-0.13.0/.my.cnf > mysqld_exporter.log 2>&1 & # 也可以使用service文件启动,参考上文service文件配置
还可以使用supervisor管理进程的方式,有关supervisor的使用网上有很多资料,请自行查找,此处不做过多介绍,步骤如下:
- 安装supervisor:yum install supervisor -y
- 启动并设为开机自启:systemctl start supervisord.service && systemctl enable supervisord.service
- 配置启动文件,自建配置文件通常放在/etc/supervisord.d/目录,创建ini格式的文件vim mysqld_exporter.ini,填写如下信息
# 名称 [program:mysqld_exporter] # 以root用户启动 user=root # 启动mysqld_exporter的命令 command=/root/mysqld_exporter-0.13.0/mysqld_exporter --config.my-cnf=/root/mysqld_exporter-0.13.0/.my.cnf # 设为自启,随supervisor启动,后续只需关心supervisor的状态 autostart=true # 设为自动重启,随supervisor而重启 autorestart=true # 日志保存路径 stdout_logfile=/root/mysqld_exporter-0.13.0/mysqld_exporter.log # 日志文件保留个数,等于0则不备份 stdout_logfile_backups=10
最后重启supervisor:systemctl restart supervisord.service,查看mysqld_exporter的状态,应处于UP状态,访问http://192.166.66.22:9104/metrics也能获取MySQL的指标,数据中有如下查询语句相关的数据才是正确的
node_exporter组件安装
node_exporter是用来收集服务器系统数据的,监控服务器CPU、内存、磁盘、等信息,安装在被监控服务器上,以监控两台服务器为例,将node_exporter压缩包上传至两台服务器后解压并重命名为node_exporter-1.3.1
1.下载并解压node_exporter到被监控服务器,多台服务器则都要下载安装
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz # 在线下载资源包,也可直接访问地址在浏览器下载后上传至被测服务器 tar -xzvf node_exporter-1.3.1.linux-amd64.tar.gz -C Program # 解压到指定目录 mv Program/node_exporter-1.3.1.linux-amd64 Program/node_exporter-1.3.1 # 重命名
2.进入prometheus-2.32.1目录,在prometheus.yml文件中添加node相关信息
# 在prometheus.yml文件中添加如下信息,指明监控目标 - job_name: node_exporter static_configs: - targets: ["localhost:9100"] labels: # 添加标签 nodename: node_24 # 为服务器添加标签名称 - targets: ["192.166.66.22:9100"] labels: nodename: node_22 # 两个服务器节点可以也写一起,如下所示: - job_name: node_exporter static_configs: - targets: ["localhost:9100","192.166.66.22:9100"]
3.运行node_exporter
# 进入node_exporter-1.3.1目录,启动node_exporter ./node_exporter # 前台运行 nohup ./node_exporter --web.listen-address=":9100" > node_exporter.log 2>&1 & # 使用nohup命令后台运行 # 也可以使用service文件和supervisor方式启动,具体参考上文配置
浏览器访问Prometheus地址http://192.166.66.24:9090/,点击【Status】→【Targets】,查看服务状态,全部处于UP状态
alertmanager组件安装
Alertmanager是一个告警管理组件,Prometheus发出告警分为两步,首先,Prometheus按告警规则向Alertmanager发送警告,所以告警规则是在Prometheus上定义的,然后,由Alertmanager负责管理这些告警,比如把告警去重、分组、聚合等操作后通过邮件等方式将告警通知给对应的负责人。简单介绍一下,步骤如下:
1.下载并解压alertmanager到监控服务器
wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz # 在线下载资源包,也可直接访问地址在浏览器下载后上传至服务器 tar -xzvf alertmanager-0.23.0.linux-amd64.tar.gz -C Program # 解压到指定目录 mv alertmanager-0.23.0.linux-amd64 alertmanager-0.23.0 # 重命名
2.进入alertmanager-0.23.0目录,编辑alertmanager.yml文件,修改如下信息
global: # 全局配置,配置发送邮件的信息 smtp_smarthost: smtp.qq.com:465 # 腾讯邮箱服务器及端口 smtp_from: 1234567890@qq.com # 用于发送告警的邮箱 smtp_auth_username: 1234567890@qq.com # 登录的邮箱名 smtp_auth_password: dydiacuvduanyqdi # 邮箱授权码,请登录用于发送的邮箱在设置→账户中开启 smtp_require_tls: false # 不启用TLS route: # 路由组配置 group_by: [\'alertname\'] # 分组依据,可分多个组 group_wait: 30s # 第一次满足告警条件后等待多久发送邮件 group_interval: 50s # 出现新告警后等待多久发送邮件 repeat_interval: 2h # 若已经成功发送邮件等待多久后再次发送 receiver: \'email\' # 定义收件组名称 receivers: # 收件组配置 - name: \'email\' email_configs: - to: 987654321@qq.com # 收件人邮箱,可添加多个邮箱 …… inhibit_rules: - source_match: severity: \'critical\' target_match: severity: \'warning\' equal: [\'alertname\', \'dev\', \'instance\']
3.运行alertmanager
# 进入alertmanager-0.23.0目录,启动node_exporter ./alertmanager --config.file=/root/Program/alertmanager-0.23.0/alertmanager.yml # 前台运行 nohup ./alertmanager --config.file=/root/Program/alertmanager-0.23.0/alertmanager.yml --cluster.advertise-address="0.0.0.0:9093" > alertmanager.yml.log 2>&1 & # 后台运行 # 同样也可使用service文件和supervisor方式启动,具体参考上文配置
在Prometheus的Web页面,点击【Status】→【Targets】,可以看到新增alertmanager服务并处于up状态
4.修改prometheus-2.32.1目录中的prometheus.yml文件
alerting: alertmanagers: - static_configs: - targets: - localhost:9093 # 取消注释,将alertmanager改为IP或主机名 rule_files: - "first_rules.yml" # 取消注释 - "second_rules.yml" # 取消注释,可直接把规则写在一个yml文件中,此处分了两个,second调用first中的信息 scrape_configs: ………………忽略之前的配置信息,追加以下信息…………………… - job_name: alertmanager static_configs: - targets: ["localhost:9093"]
5.配置规则,在prometheus-2.32.1目录下创建规则文件,若在其它目录创建,则注意修改prometheus.yml中rules.yml路径
- 创建first_rules.yml文件,vim first_rules.yml,添加一条规则,如下
groups: - name: node_rules rules: - record: instance:node_load expr: node_load1
创建second_rules.yml文件,vim second_rules.yml,添加如下信息
groups: - name: node_alerts rules: - alert: system_load expr: instance:node_load > 5 for: 2m labels: severity: warning annotations: summary: 主机【$labels.nodename】的2分钟负载超出阈值,当前为$value%
执行命令./promtool check config prometheus.yml或./promtool check rules first_rules.yml检查规则配置是否正确
重启prometheus服务后,在Prometheus的Web页面,点击【Status】→【Rules】,可以看到配置的规则
6.使用Stress工具或其它压测工具进行负载测试,在Prometheus的Web告警页面可看到状态变化,满足规则要求就会收到告警邮件
7.可自定义邮件格式,若邮件格式配置有误则无法收到邮件,使用默认邮件请忽略此步骤,步骤如下:
定义邮件格式及内容,创建并进入目录mkdir template;cd template,创建文件vim mytemp.tmpl,填写如下信息
define "mytemp.html" - if gt (len .Alerts.Firing) 0 - - range $index, $alert := .Alerts - ********** <span style=color:red;font-size:36px;font-weight:bold;> 监控告警 </span>**********<br> <span style=font-size:20px;font-weight:bold;> 告警类型:</span> $alert.Labels.alertname <br> <span style=font-size:20px;font-weight:bold;> 告警级别:</span> $alert.Labels.severity 级 <br> <span style=font-size:20px;font-weight:bold;> 故障主机:</span> $alert.Labels.instance <br> <span style=font-size:20px;font-weight:bold;> 主机标签:</span> $alert.Labels.nodename <br> <span style=font-size:20px;font-weight:bold;> 告警内容:</span> $alert.Annotations.summary <br> <span style=font-size:20px;font-weight:bold;> 故障时间:</span> $alert.StartsAt.Local <br> ********** ~ 结束 ~ **********<br> <br> <br> - end - end - end
使用自定义的邮件格式,编辑alertmanager.yml文件,添加如下信息
templates: # 配置自定义告警邮件格式地址 - \'/root/Program/alertmanager-0.23.0/template/mytemp.tmpl\' receivers: ……忽略已配置信息…… html: \' template "mytemp.html" . \' # 自定义使用的邮件模板和邮件标题 headers: Subject: "告警邮件: .GroupLabels.SortedPairs.Values[.Status | toUpper: .Alerts.Firing | len ]"
在alertmanager-0.23.0目录,执行命令./amtool check-config alertmanager.yml检查配置是否正确
8.再次使用压测工具,对系统进行负载测试,满足设定规则后就会收到自定义格式的告警邮件啦
3 Grafana介绍
Grafana 是一个开源的可视化分析平台,能够将数据以非常美观的图形化方式展示出来,支持对来自多种数据源的数据进行查询、分析和可视化处理,详细介绍请查看官方文档Grafana安装
支持多平台安装,也可使用Docker安装,以安装到Centos8.3为例
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.3-1.x86_64.rpm # 下载Grafana yum install grafana-enterprise-8.3.3-1.x86_64.rpm -y # 安装Grafana systemctl start grafana-server && systemctl enable grafana-server # 启动并设为开机自启
Grafana默认端口是3000,启动Grafana后浏览器访问http://192.166.66.24:3000,默认账号密码都是admin,首次登录会让修改密码
Grafana使用方法
1.添加数据源
登录成功后点击设置图标,默认进入数据源管理页面,点击【ADD data source】,选择数据源Prometheus,填写URL地址,其它项都可以默认,点击【Save&test】
2.创建DashBoard
添加数据源之后,创建DashBoard,可自定义,官方也提供了很多的漂亮的仪表盘供选择,所以直接导入即可使用,通过仪表盘ID或下载文件后导入点击进入官方Dashboard,根据安装的prometheus组件搜索关键字,比如:node、mysql,选择喜欢的模板复制ID或下载文件点击加号图标→点击【Import】→填写模板ID→点击【Load】→选择数据源,其它项都可默认→点击【Import】
之后就能够看到漂亮的页面展示啦,设置好同步时间,然后使用压测工具对服务器进行压测,图表就会同步更新啦,如下图所示,开始压测后CPU、内存、磁盘等数据开始升高
点击独立面板的标题可进行放大查看、编辑、导出、复制、移除等操作对于MySQL数据图形化展示也是相同的步骤,直接搜索模板导入即可使用,如下图所示,每次数据请求,面板图表展示都会有变化
至此Prometheus + mysqld_exporter + node_exporter + alertmanager + Grafana整合监控部署完成
使用Prometheus+Grafana监控MySQL实践
一、介绍Prometheus
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。
Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。
Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。
输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。
与其他监控系统相比,Prometheus的主要特点是:
- 一个多维数据模型(时间序列由指标名称定义和设置键/值尺寸)。
- 非常高效的存储,平均一个采样数据占~3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
- 一种灵活的查询语言。
- 不依赖分布式存储,单个服务器节点。
- 时间集合通过HTTP上的PULL模型进行。
- 通过中间网关支持推送时间。
- 通过服务发现或静态配置发现目标。
- 多种模式的图形和仪表板支持。
二、Prometheus架构概览
该图说明了普罗米修斯(Prometheus)及其一些生态系统组件的整体架构:
它的服务过程是这样的Prometheus daemon负责定时去目标上抓取metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。
Prometheus:支持通过配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目标。支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。
Alertmanager:是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。
PushGateway:这个组件是支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。
如果有使用过statsd的用户,则会觉得这十分相似,只是statsd是直接发送给服务器端,而Prometheus主要还是靠进程主动去抓取。
大多数Prometheus组件都是用Go编写的,它们可以轻松地构建和部署为静态二进制文件。访问prometheus.io以获取完整的文档,示例和指南。
三、Prometheus的数据模型
Prometheus从根本上所有的存储都是按时间序列去实现的,相同的metrics(指标名称) 和label(一个或多个标签) 组成一条时间序列,不同的label表示不同的时间序列。为了支持一些查询,有时还会临时产生一些时间序列存储。
metrics name&label指标名称和标签
每条时间序列是由唯一的”指标名称”和一组”标签(key=value)”的形式组成。
指标名称:一般是给监测对像起一名字,例如http_requests_total这样,它有一些命名规则,可以包字母数字_之类的的。通常是以应用名称开头_监测对像_数值类型_单位这样。例如:push_total、userlogin_mysql_duration_seconds、app_memory_usage_bytes。
记住,针对http_requests_total这个metrics name无论是增加标签还是删除标签都会形成一条新的时间序列。
查询语句就可以跟据上面标签的组合来查询聚合结果了。
如果以传统数据库的理解来看这条语句,则可以考虑http_requests_total是表名,标签是字段,而timestamp是主键,还有一个float64字段是值了。(Prometheus里面所有值都是按float64存储)。
四、Prometheus四种数据类型
Counter
Counter用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。
例如:http_response_total{method=”GET”,endpoint=”/api/tracks”} 100,10秒后抓取http_response_total{method=”GET”,endpoint=”/api/tracks”} 100。
Gauge
Gauge常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置。
例如: memory_usage_bytes{host=”master-01″} 100 < 抓取值、memory_usage_bytes{host=”master-01″} 30、memory_usage_bytes{host=”master-01″} 50、memory_usage_bytes{host=”master-01″} 80 < 抓取值。
Histogram
Histogram(直方图)可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供count和sum全部值的功能。
例如:{小于10=5次,小于20=1次,小于30=2次},count=7次,sum=7次的求和值。
Summary
Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。
例如:count=7次,sum=7次的值求值。
它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。
五、安装运行Prometheus(二进制版)
下面介绍如何使用Prometheus和Grafana对MySQL服务器性能进行监控。
我们用到了以下两个exporter:
- node_exporter – 用于机器系统数据收集
- mysqld_exporter – 用于MySQL服务器数据收集
Grafana是一个开源的功能丰富的数据可视化平台,通常用于时序数据的可视化。它内置了以下数据源的支持:
下面是我们安装时用到的架构图:
首先安装GO
1
2
3
|
$ yum install go
$ go version
go version go1.6.3 linux/amd64
|
下载安装Prometheus(https://prometheus.io/download/)
1
2
3
4
|
$ wget https://github.com/prometheus/prometheus/releases/download/v1.6.2/prometheus-1.6.2.linux-amd64.tar.gz
$ tar xvf prometheus-1.6.2.linux-amd64.tar.gz -C /usr/local/
$ ln -sv /usr/local/prometheus-1.6.2.linux-amd64/ /usr/local/prometheus
$ cd /usr/local/prometheus
|
首先,在创造上的主机文件系统的最小Prometheus配置文件prometheus.yml
(替换你要监控的IP地址):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: [‘localhost:9090‘]
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: [‘10.10.0.186:9100‘]
labels:
instance: db1
- job_name: mysql
static_configs:
- targets: [‘10.10.0.186:9104‘]
labels:
instance: db1
|
10.10.0.186是我们数据库主机的IP,端口则是对应的exporter的监听端口。
启动Prometheus
1
2
3
4
5
6
7
8
|
$ ./prometheus -config.file=prometheus.yml
INFO[0000] Starting prometheus (version=1.6.2, branch=master, revision=b38e977fd8cc2a0d13f47e7f0e17b82d1a908a9a) source=main.go:88
INFO[0000] Build context (go=go1.8.1, user=root@c99d9d650cf4, date=20170511-12:59:13) source=main.go:89
INFO[0000] Loading configuration file prometheus.yml source=main.go:251
INFO[0000] Loading series map and head chunks... source=storage.go:421
INFO[0000] 1032 series loaded. source=storage.go:432
INFO[0000] Starting target manager... source=targetmanager.go:61
INFO[0000] Listening on :9090 source=web.go:259
|
Prometheus内置了一个web界面,我们可通过http://monitor_host:9090
进行访问:
在Status
->Targets
页面下,我们可以看到我们配置的两个Target,它们的State
为DOWN
。
下一步我们需要安装并运行exporter,下载exporters并解压到被监控端服务器:
1
2
|
$ wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.14.0.linux-amd64.tar.gz
$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz
|
被监控安装GO环境
1
2
3
|
$ yum install go -y
$ go version
go version go1.6.3 linux/amd64
|
安装运行node_exporter
1
2
|
$ tar xvf node_exporter-0.14.0.linux-amd64.tar.gz -C /usr/local/
$ nohup /usr/local/node_exporter-0.14.0.linux-amd64/node_exporter &
|
安装运行mysqld_exporter
mysqld_exporter需要连接到Mysql,所以需要Mysql的权限,我们先为它创建用户并赋予所需的权限.
1
2
|
mysql> GRANT REPLICATION CLIENT,PROCESS ON *.* TO ‘mysql_monitor‘@‘localhost‘ identified by ‘mysql_monitor‘;
mysql> GRANT SELECT ON *.* TO ‘mysql_monitor‘@‘localhost‘;
|
创建.my.cnf
文件并运行mysqld_exporter:
1
2
3
4
|
$ cat /usr/local/mysqld_exporter-0.10.0.linux-amd64/.my.cnf
[client]
user=mysql_monitor
password=mysql_monitor
|
1
2
|
$ tar xvf mysqld_exporter-0.10.0.linux-amd64.tar.gz -C /usr/local/
$ /usr/local/mysqld_exporter-0.10.0.linux-amd64/mysqld_exporter -config.my-cnf="/usr/local/mysqld_exporter-0.10.0.linux-amd64/.my.cnf" &
|
我们再次回到Status
->Targets
页面,可以看到两个Target的状态已经变成UP
了:
接下来就可以看图形了
Prometheus自带的图形并不够强大,于是我们可以使用Grafana作为Prometheus的Dashboard。
六、安装运行Grafana
1
2
|
$ wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.2.0-1.x86_64.rpm
$ sudo yum localinstall grafana-4.2.0-1.x86_64.rpm
|
编辑配置文件/etc/grafana/grafana.ini,修改dashboards.json段落下两个参数的值:
1
2
3
|
[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards
|
安装仪表盘(Percona提供)
1
2
|
$ git clone https://github.com/percona/grafana-dashboards.git
$ cp -r grafana-dashboards/dashboards /var/lib/grafana
|
运行以下命令为Grafana打个补丁,不然图表不能正常显示:
1
2
|
$ sed -i ‘s/expr=(.).replace((.).expr,(.).scopedVars(.*)var (.)=(.).interval/expr=1.replace(2.expr,3.scopedVars4var 5=1.replace(6.interval, 3.scopedVars)/‘ /usr/share/grafana/public/app/plugins/datasource/prometheus/datasource.js
$ sed -i ‘s/,range_input/.replace(/"{/g,"\"").replace(/}"/g,"\""),range_input/; s/step_input:""/step_input:this.target.step/‘ /usr/share/grafana/public/app/plugins/datasource/prometheus/query_ctrl.js
|
最后我们运行Grafana服务
1
2
3
|
$ systemctl daemon-reload
$ systemctl start grafana-server
$ systemctl status grafana-server
|
我们可通过http://monitor_host:3000
访问Grafana网页界面(缺省的帐号/密码为admin/admin):
然后我们到Data Sources
页面添加数据源:
系统监控概览
MySQL监控概览
<参考资料>
https://github.com/percona/grafana-dashboards
https://www.percona.com/blog/…
如果只是想监控MySQL或MongoDB,那么请使用PMM(Percona Monitoring and Management)监控工具,在Prometheus+Granafa基础之上添加了慢查询收集等额外功能,更专业的MySQL&MongoDB监控系统。
完结。。。
以上是关于Prometheus + Grafana,开源监控神器!的主要内容,如果未能解决你的问题,请参考以下文章
Centos7 docker部署监控Prometheus+Grafana