原文章地址 : Prometheus介绍与MySQL监控
普罗米修斯是一个开源系统监控和警报工具包。
它能监控很多东西,比如机器,JMX,数据库,一些软件等。
git地址: https://github.com/prometheus
架构图:
其大概的工作流程是:
data
目录下),并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。Prometheus 中存储的数据为时间序列,是由 metric 的名字和一系列的标签(键值对)唯一标识的,不同的标签则代表不同的时间序列。
http_requests_total
, 表示 http 请求的总数。http_requests_total{method="Get"}
表示所有 http 请求中的 Get 请求。当 method=“post” 时,则为新的一个 metric。{
,例如:http_requests_total{method="POST",endpoint="/api/tracks"}
。Counter :一种累加的 metric,典型的应用如:请求的个数,结束的任务数, 出现的错误数等等。
Gauge :可以任意加减。
Histogram :
data/wal
下的日志防止崩溃--storage.tsdb.retention.time
在Prometheus中数据往往不够直观,可以使用Grafana来展示数据。
Grafana支持多种数据源,包括Prometheus。
Grafana的Dashboard的对应的json文件也都有提供,因此十分方便
Premetheus下载地址
配置服务端:prometheus/prometheus.yml
文件
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# 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=` to any timeseries scraped from this config.
# 监控自己
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
#抓取的目标的名字,以及地址
- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104']
启动prometheus.exe,此时在浏览器中输入localhost:9090
,点击Status->Target
抓取自己的数据成功,由于mysql还没有暴露抓取的指标,因此还处于down。
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'root' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
flush privileges;
#swtest是要监控的数据库
set DATA_SOURCE_NAME=exporter:root@(localhost:3306)/swtest
set path=%path%;DATA_SOURCE_NAME='exporter:root@(localhost:3306)
mysqld_exporter.exe
http://localhost:9104/metrics
,看到有非常多的数据表示成功,如果仅仅只有几十条数据或者更少,说明暴露指标过程中有问题,一般是数据库登录问题在prometheus界面输一个指标name,比如mysql_exporter_collector_duration_seconds
,点击execute,Graph,可以看见数据
conf/sample.ini
为conf/custom.ini
,编辑内容,更该http_port
,默认为3000,建议更改# The http port to use
http_port = 10000
在命令行上启动,在浏览器中输入localhost:10000
,登录admin:admin
登录后在侧边栏点击Configuration,选择dataSource,Grafana支持多种数据源
填入对应数据,保存。
需要导入对应的dashboard,可以自定义,也可以使用已经写好的https://github.com/percona/grafana-dashboards
,clone后在dashboards目录下
有常用的dashboard的json文件。
在dashboard选择manage,选择import,然后上传dashboards/MySQL_Overview.json
,然后点击import
成功界面:
一法通万法通
参考:
https://prometheus.io/docs/introduction/overview/
https://www.ibm.com/developerworks/cn/cloud/library/cl-lo-prometheus-getting-started-and-practice/index.html