
离线 TA的专栏
- 打卡等级:热心大叔
- 打卡总天数:228
- 打卡月天数:0
- 打卡总奖励:3489
- 最近打卡:2025-04-12 13:54:36
|
目录
- 1.Prometheus整体架构图
- 2.配置文件
- 3.基于consul的服务发现
- 4.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\nmysecret\ntest"
-
- 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的 使用的是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
- }
- }
复制代码 4.prometheus配置详解
当查询的时候存在十分复杂的表达式,这样会降低prometheus的性能可以使用Recording rules
允许您预先计算经常需要的或计算上昂贵的表达式,并将其结果保存为新的 time series。这对于仪表板尤其有用,每次刷新时它都需要重复查询相同的表达式。 将复杂的计算后台计算 放到一个新的时序里
二元算术运算符 应用于 应用于 即时向量/即时向量 时,运算符将应用于左侧向量中的元素及其在右侧向量中的匹配到的元素.
运算结果被传播到结果向量中,并且度量名称被丢弃.那些在右侧向量中没有匹配条目的条目 不是结果的一部分。
例如: - employee_age_bucket_bucket{le=~"20|30|40"} + employee_age_bucket_bucket{le=~"30|40|50"}
复制代码返回的结果是: - {instance="10.0.86.71:8080",job="prometheus",le="30"} 6000{instance="10.0.86.71:8080",job="prometheus",le="40"} 8000
复制代码到此这篇关于Prometheus配置解析小姐的文章就介绍到这了,更多相关Prometheus配置内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:  进行删除处理。
4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
|