Prometheus-配置解析
Posted liujiliang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus-配置解析相关的知识,希望对你有一定的参考价值。
1.Prometheus整体架构图
2.配置文件
# 全局配置 global: scrape_interval: 15s # 多久 收集 一次数据 evaluation_interval: 30s # 多久评估一次 规则 scrape_timeout: 10s # 每次 收集数据的 超时时间 # 当Prometheus和外部系统(联邦, 远程存储, Alertmanager)通信的时候,添加标签到任意的时间序列或者报警 external_labels: monitor: codelab foo: bar # 规则文件, 可以使用通配符 rule_files: - "first.rules" - "my/*.rules" # 远程写入功能相关的设置 remote_write: - url: http://remote1/push write_relabel_configs: - source_labels: [__name__] regex: expensive.* action: drop - url: http://remote2/push # 远程读取相关功能的设置 remote_read: - url: http://remote1/read read_recent: true - url: http://remote3/read read_recent: false required_matchers: job: special # 收集数据 配置 列表 scrape_configs: - job_name: prometheus # 必须配置, 自动附加的job labels, 必须唯一 honor_labels: true # 标签冲突, true 为以抓取的数据为准 并 忽略 服务器中的, false 为 通过重命名来解决冲突 # scrape_interval is defined by the configured global (15s). # scrape_timeout is defined by the global default (10s). metrics_path: ‘/metrics‘ # scheme defaults to ‘http‘. # 文件服务发现配置 列表 file_sd_configs: - files: # 从这些文件中提取目标 - foo/*.slow.json - foo/*.slow.yml - single/file.yml refresh_interval: 10m # 刷新文件的 时间间隔 - files: - bar/*.yaml # 使用job名作为label的 静态配置目录 的 列表 static_configs: - targets: [‘localhost:9090‘, ‘localhost:9191‘] labels: my: label your: label # 目标节点 重新打标签 的配置 列表. 重新标记是一个功能强大的工具,可以在抓取目标之前动态重写目标的标签集。 可以配置多个,按照先后顺序应用 relabel_configs: - source_labels: [job, __meta_dns_name] # 从现有的标签中选择源标签, 最后会被 替换, 保持, 丢弃 regex: (.*)some-[regex] # 正则表达式, 将会提取source_labels中匹配的值 target_label: job # 在替换动作中将结果值写入的标签. replacement: foo-${1} # 如果正则表达匹配, 那么替换值. 可以使用正则表达中的 捕获组 # action defaults to ‘replace‘ - source_labels: [abc] # 将abc标签的内容复制到cde标签中 target_label: cde - replacement: static target_label: abc - regex: replacement: static target_label: abc bearer_token_file: valid_token_file # 可选的, bearer token 文件的信息 - job_name: service-x # HTTP basic 认证信息 basic_auth: username: admin_name password: "multiline mysecret test" scrape_interval: 50s # 对于该job, 多久收集一次数据 scrape_timeout: 5s sample_limit: 1000 # 每次 收集 样本数据的限制. 0 为不限制 metrics_path: /my_path # 从目标 获取数据的 HTTP 路径 scheme: https # 配置用于请求的协议方案 # DNS 服务发现 配置列表 dns_sd_configs: - refresh_interval: 15s names: # 要查询的DNS域名列表 - first.dns.address.domain.com - second.dns.address.domain.com - names: - first.dns.address.domain.com # refresh_interval defaults to 30s. # 目标节点 重新打标签 的配置 列表 relabel_configs: - source_labels: [job] regex: (.*)some-[regex] action: drop - source_labels: [__address__] modulus: 8 target_label: __tmp_hash action: hashmod - source_labels: [__tmp_hash] regex: 1 action: keep - action: labelmap regex: 1 - action: labeldrop regex: d - action: labelkeep regex: k # metric 重新打标签的 配置列表 metric_relabel_configs: - source_labels: [__name__] regex: expensive_metric.* action: drop - job_name: service-y # consul 服务发现 配置列表 consul_sd_configs: - server: ‘localhost:1234‘ # consul API 地址 token: mysecret services: [‘nginx‘, ‘cache‘, ‘mysql‘] # 被检索目标的 服务 列表. 如果不定义那么 所有 服务 都会被 收集 scheme: https tls_config: ca_file: valid_ca_file cert_file: valid_cert_file key_file: valid_key_file insecure_skip_verify: false relabel_configs: - source_labels: [__meta_sd_consul_tags] separator: ‘,‘ regex: label:([^=]+)=([^,]+) target_label: ${1} replacement: ${2} - job_name: service-z # 收集 数据的 TLS 设置 tls_config: cert_file: valid_cert_file key_file: valid_key_file bearer_token: mysecret - job_name: service-kubernetes # kubernetes 服务 发现 列表 kubernetes_sd_configs: - role: endpoints # 必须写, 必须是endpoints, service, pod, node, 或者 ingress api_server: ‘https://localhost:1234‘ basic_auth: # HTTP basic 认证信息 username: ‘myusername‘ password: ‘mysecret‘ - job_name: service-kubernetes-namespaces kubernetes_sd_configs: - role: endpoints # 应该被发现的 kubernetes 对象 实体 api_server: ‘https://localhost:1234‘ # API Server的地址 namespaces: # 可选的命名空间发现, 如果省略 那么所有的命名空间都会被使用 names: - default - job_name: service-marathon # Marathon 服务发现 列表 marathon_sd_configs: - servers: - ‘https://marathon.example.com:443‘ tls_config: cert_file: valid_cert_file key_file: valid_key_file - job_name: service-ec2 ec2_sd_configs: - region: us-east-1 access_key: access secret_key: mysecret profile: profile - job_name: service-azure azure_sd_configs: - subscription_id: 11AAAA11-A11A-111A-A111-1111A1111A11 tenant_id: BBBB222B-B2B2-2B22-B222-2BB2222BB2B2 client_id: 333333CC-3C33-3333-CCC3-33C3CCCCC33C client_secret: mysecret port: 9100 - job_name: service-nerve nerve_sd_configs: - servers: - localhost paths: - /monitoring - job_name: 0123service-xxx metrics_path: /metrics static_configs: - targets: - localhost:9090 - job_name: 測試 metrics_path: /metrics static_configs: - targets: - localhost:9090 - job_name: service-triton triton_sd_configs: - account: ‘testAccount‘ dns_suffix: ‘triton.example.com‘ endpoint: ‘triton.example.com‘ port: 9163 refresh_interval: 1m version: 1 tls_config: cert_file: testdata/valid_cert_file key_file: testdata/valid_key_file # Alertmanager相关的配置 alerting: alertmanagers: - scheme: https static_configs: - targets: - "1.2.3.4:9093" - "1.2.3.5:9093" - "1.2.3.6:9093"
3.基于consul的服务发现
注意: Prometheus的consul_sd_config
使用的是catalog的API。
使用http接口注册consul
# curl -X PUT -d ‘{"ID": "node_exporter", "Name": "node_exporter", "Address": "10.6.28.37", "Port": 9100, "Tags": ["lock"], "EnableTagOverride": false}‘ http://10.6.28.37:8500/v1/agent/service/register
# curl -s http://10.6.28.37:8500/v1/agent/services|jq { "node_exporter": { "ID": "node_exporter", "Service": "node_exporter", "Tags": [ "lock" ], "Address": "10.6.28.37", "Port": 9100, "EnableTagOverride": false, "CreateIndex": 0, "ModifyIndex": 0 } }
以上是关于Prometheus-配置解析的主要内容,如果未能解决你的问题,请参考以下文章