安装和配置
https://github.com/prometheus/prometheus/releases/download/v2.53.3/prometheus-2.53.3.darwin-arm64.tar.gz

- prometheus:这是一个二进制文件,主要用于启动Prometheus的程序,它是我们的核心程序
- prometheus.yml:这个是Prometheus的配置文件,主要用于存储一些Prometheus的相关配置
- promtool:用于检查Prometheus的配置等操作
Prometheus是不依赖任何的外部Runtime的,可以直接运行二进制文件
启动 Prometheus 时默认会直接去引用prometheus.yml这个配置文件
通过 Docker 安装和启动 Prometheus
前提:安装 Docker 和 docker-composer
通过 docker-composer 安装 Prometheus(git clone 的方式)
mkdir /data/
cd /data/
git clone https://gitee.com/linge365/docker-prometheus.git
cd docker-prometheus
1
2
3
4
2
3
4

docker-compose up -d


web 访问地址
应用 | 访问地址 |
---|---|
prometheus | http://10.0.0.21:9090 |
grafana | http://10.0.0.21:3000 |
altermanager | http://10.0.0.21:9093 |
node-exporter | http://10.0.0.21:9100/metrics |


# 1. Global Configuration(全局配置)
global:
scrape_interval: 15s # 默认抓取间隔,单位秒,决定 Prometheus 拉取目标的频率
evaluation_interval: 15s # 告警规则评估间隔
scrape_timeout: 10s # 每次抓取的超时时间,单位秒
external_labels: # 添加全局标签,适用于所有指标
monitor: 'example-monitor'
# 2. Scrape Configuration(抓取配置)
scrape_configs:
# 2.1. 监控 Node Exporter(主机资源监控)
- job_name: 'node' # 任务名称,用于标识任务
scrape_interval: 30s # 该任务的抓取间隔
static_configs:
- targets: ['localhost:9100', '192.168.1.100:9100'] # Node Exporter 目标地址
# 2.2. 监控应用服务(例如 Web 服务)
- job_name: 'web-service'
scrape_interval: 15s
static_configs:
- targets: ['web-server-1:8080', 'web-server-2:8080']
# 2.3. 监控 Kubernetes 集群(使用服务发现)
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- api_server: 'https://kubernetes.default.svc:443'
role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
target_label: app
# 2.4. 监控 MySQL 数据库(MySQL Exporter)
- job_name: 'mysql'
scrape_interval: 30s
static_configs:
- targets: ['mysql-server:9104']
# 3. Alert Configuration(告警配置)
alerting:
alertmanagers:
- static_configs:
- targets:
- 'alertmanager:9093' # 告警处理服务器的地址
# 4. Alert Rules Configuration(告警规则配置)
rule_files:
- 'alert.rules' # 引入外部规则文件,用于告警规则定义
# 5. Remote Storage Configuration(远程存储配置)
remote_read:
- url: "http://remote-storage.example.com/api/v1/read"
remote_write:
- url: "http://remote-storage.example.com/api/v1/write"
# 6. Other Settings(其他设置)
# 日志和其他高级配置可以根据需要添加。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
各参数详细解释
- 全局配置(global)
- 全局配置定义了 Prometheus 的基本行为和指标
- scrape_interval:控制 Prometheus 拉取目标数据的频率,通常设置为 15s 或 30s。过短可能带来较大的负载
- evaluation_interval:定义告警规则评估的频率。通常与 scrape_interval 保持一致
- scrape_timeout:设置每次抓取目标的最大超时时间。设置过短可能会导致抓取失败,过长则会浪费资源
- external_labels:全局标签,用于标记 Prometheus 实例或集群环境中的指标。例如,可以设置为 monitor: 'prod-monitor' 用于区分生产环境的 Prometheus 实例
- 抓取配置(scrape_configs)
- 这是 Prometheus 配置的核心部分,定义了 Prometheus 如何抓取不同目标的数据。每个 scrape_config 包含以下配置
- job_name:抓取任务的名称,用于区分不同的抓取任务。例如,node 用于监控主机资源,mysql 用于监控数据库
- static_configs 或 kubernetes_sd_configs
- static_configs:用于手动指定目标地址(如 IP 和端口)
- kubernetes_sd_configs:用于基于 Kubernetes 服务发现自动抓取监控目标
- targets:指定抓取目标的地址列表。例如,localhost:9100 是 Node Exporter 监听的端口
- relabel_configs:标签重命名规则。可以对抓取的指标标签进行重命名、过滤或添加新的标签
- 告警配置(alerting)
- alertmanagers:指定 Prometheus 将告警发送到的目标(通常是 Alertmanager 服务)
- targets:定义了 Alertmanager 服务的地址,Prometheus 将告警信息通过 HTTP 发送到这些目标
- alertmanagers:指定 Prometheus 将告警发送到的目标(通常是 Alertmanager 服务)
- 告警规则配置(rule_files)
- 告警规则文件定义了 Prometheus 触发告警的条件。你可以在 prometheus.yml 配置中引用一个或多个规则文件
- alert.rules:告警规则文件的路径,可以是相对路径或绝对路径。告警规则文件内容包括各种指标的阈值规则
- 远程存储配置(remote_read 和 remote_write)
- Prometheus 支持将数据写入远程存储系统(如 Thanos 或 Cortex)以进行长期存储,也可以从远程存储中读取历史数据
- remote_read:配置从远程存储读取数据
- remote_write:配置将数据写入远程存储
- 根据具体需求,Prometheus 配置文件还可以包含其他配置项,如日志配置、认证配置等
总结
整个 Prometheus 配置文件结构是层次化的,包含全局配置、抓取配置、告警配置、规则文件配置、远程存储配置等多个部分。每个部分都可以根据不同的监控需求进行定制
global:定义全局行为,如抓取频率
scrape_configs:定义具体的抓取任务,决定 Prometheus 监控哪些目标
alerting:配置告警系统,通常与 Alertmanager 配合使用
rule_files:定义告警触发条件
remote_read 和 remote_write:设置远程存储与 Prometheus 的集成
启动 Prometheus:./prometheus
