架构与组成
先上一张官网的架构图:
Prometheus的构成:
The Prometheus ecosystem consists of multiple components, many of which are optional:
- the main Prometheus server which scrapes and stores time series data(Prometheus server 取数据、时序数据库、网页服务)
- client libraries for instrumenting application code(各种语言的客户端,可集成到项目中,采集业务数据)
- a push gateway for supporting short-lived jobs
- special-purpose exporters for services like HAProxy, StatsD, Graphite, etc.(各种exporter 给Prometheus server 提供数据)
- an alertmanager to handle alerts(alertmanager用于告警)
- various support tools(grafana等第三方支持)
其中Prometheus server和exporters是必须的
安装Prometheus server
方式1:去官网下载二进制安装包
方式2:使用docker快速体验 docker pull bitnami/prometheus
我这里选择方式2
docker run -d --name prometheus --rm -p 9090:9090 bitnami/prometheus:latest
启动dockr容器后,浏览器访问 ip:9090 就能看到Prometheus server的网页:
点 Status>Targets 就能看到我们监控的目标:
这个监控目标来自哪儿呢?
咱们进容器看下他的配置文件(把这个默认配置文件复制出来,待会儿有用):cat /opt/bitnami/prometheus/conf/prometheus.yml
:
...
scrape_configs:
static_configs:
- targets: ["localhost:9090"]
是不是就和网页上的target对上了?
运行exporter
exporter就是运行在你要监控的目标上,收集监控目标的数据,提供给Prometheus server
exporter分为很多种,比如:
- 获取机器cpu/内存/io/磁盘/网络等等数据的node_exporter(可以在官网下载, 也可以在github下载)
- 获取redis数据的redis exporter
- 获取MySQL数据的mysqld_exporter
- ……
以node_exporter为例,去github上下载二进制包,上传到机器上,解压后进入目录,直接运行node_exporter(默认端口9100)
浏览器访问ip:9100/metrics
就能看见node_exporter所提供的数据了:
这些字段的含义,后面再细讲。
将node_exporter加入prometheus的targets
修改默认配置文件为如下内容:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090", "192.168.xx.xx:9100"] # exporter所在机器的IP+端口
然后重新启动容器:
docker run -d -p 9090:9090 \
-v $(pwd)/prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml \ # 使用上面修改的配置文件,替换容器内的配置文件
--name prometheus --rm bitnami/prometheus
然后浏览器访问prometheus server网页(ip:9090),Status>Targets 可以看到新加入到node_exporter:
在搜索框可以搜索node_exporter提供的各项指标数据,及其图表。比如搜索 node_load5 (top 命令的近5分钟负载):
以上就是promethus的简单使用(安装Prometheus server,运行node_exporter,将node_exporter加入到Prometheus的监控对象中),更详细的解读,在下一篇文章中