1、Prometheus简介
Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。从2012年开始,许多公司和组织开始使用Prometheus。该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与到该项目中。目前它是一个独立的开源项目,且不依赖与任何公司。为了强调这点和明确该项目治理结构,Prometheus在2016年继Kurberntes之后,加入了Cloud Native Computing Foundation。主要具有如下功能:
①多维 数据模型(时序由 metric 名字和 k/v 的 labels 构成)。
②灵活的查询语句(PromQL)。
③无依赖存储,支持 local 和 remote 不同模型。
④采用 http 协议,使用 pull 模式,拉取数据,简单易懂。
⑤监控目标,可以采用服务发现或静态配置的方式。
⑥支持多种统计数据模型,图形化友好。
1.2、核心架构
从这个架构图,也可以看出 Prometheus 的主要模块包含, prometheus server, exporters, pushgateway, PromQL, Alertmanager, WebUI 等。下面我就简单介绍各个组件实现的功能:
- prometheus server: 定期从静态配置的 targets 或者服务发现(主要是DNS、consul、k8s、mesos等)的 targets 拉取数据。
- exporters:负责向prometheus server做数据汇报的程序统。而不同的数据汇报由不同的exporters实现,比如监控主机有node-exporters,mysql有MySQL server exporter,更多请参考链接。
- pushgateway:主要使用场景为:
Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。
总结:实现类似于zabbix-proxy功能; - Alertmanager:实现prometheus的告警功能。
- webui:主要通过grafana来实现webui展示。
1.3、适用场景
Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。
Prometheus,它的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。 如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统。
2、docker部署Prometheus并监控mysql
docker pull prom/mysqld-exporter
docker pull prom/prometheus
2.2、启动mysqld-exporter
docker run -d --name mysqld_exporter --restart=always -p 9104:9104 -e DATA_SOURCE_NAME="root:Password123@(172.17.0.2:3306)/" prom/mysqld-exporter
访问url:http://ip:port/metrics
效果如下:
2.3、新建目录prometheus,编辑配置文件prometheus.yml
mkdir /bigdata/prometheus
cd /bigdata/prometheus
vim prometheus.yml
内容如下:
!!!注意事项:配置文件中mysql的ip为docker容器内网ip,可以使用如下命令查看
docker inspect 容器id | gerp IPAddress
2.4、启动prometheus
docker run -d -p 9090:9090 -v /bigdata/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
效果如下:
2.5、收集docker中MySQL的运行信息
如下图所示:
在Graph页面通过指定表达式进行搜索可看到图表或日志信息
docker run -d -p 3000:3000 -v /bigdata/grafana-storage/:/var/lib/grafana —name=grafana grafana/grafana:latest
访问网址:http://ip:port