promethues的介绍
- promethues的官网
https://prometheus.io - promethues下载地址
https://github.com/prometheus/alertmanager
promethues的特点
- 多维数据模型,由度量名和键值对标识的时间序数据
- promSQL 一种灵活的查询语言,利用多维数据完成复杂查询
- 不依赖分布式存储,单个服务器节点可直接工作
- 基于HTTP的pull方式采集时间序列数据(主要方式)
- 推送时间序列数据,通过pushgateway组件支持
- 通过服务发现或静态配置发现目标多种图形模型,及表盘支持
promethues的数据模型
promethues将所有数据存储在时间序列数据库中,具有相同度量名称以及标签属于同一指标
每个指标的其度量名称和键值对(也称为标签)是其唯一的标识
promethues的指标类型
- counter: 递增的计数器
- gauge: 可以任意变化的数值
- histogram: 对一段时间内的数据进行采样,并对所有数值求和并统计数量
- summary: 于histogram类型
指标类型只发生在自己要写被监控端采集信息时,用到。于服务端没有关系
promethues的作业和实例
- 实例: 可以抓取的目标成为实例(instance)targets 中的目标即为一个实例
- 作业:具有相同目标实例的集合,称为作业(job)一个job_name,即为作业
- job_name: 'nacos'
metrics_path: '/nacos/actuator/prometheus' #nacos暴露的metrics的地址
static_configs:
- targets: ['172.19.15.121:8848']
promethues的配置文件介绍
全局配置文件
global
# 被监控端,监控数据采集的时间间隔
[scrape_interval: <duration> | default= 1m]
# 被监控端,超时时间
[ scrape_timeout : <duration> | default = 10s ]
# 报警间隔的最小周期
[ evaluation_interval: <duration> | default = 1m]
# 外部标签
external_lables:
[ <lablename>: <lablevalue> ]
# 配置告警规则
rule_files:
[ - <filepath_glob> ...]
# 配置被监控端监控指标
scrape_configs:
[ - <scrape_config> ... ]
# 配置告警部分
## 对告警部分重新打标签
altering:
alter_relablel_configs:
[ - <relable_config> ...]
## 告警组件连接地址
altermanagers:
[ - <altermanager_config> ...]
# 远程存储(时间序列数据库)
remote_write:
[ - <remote_write> ...]
remove_read:
[ - <reomte_read> ...]
被采集端配置
scrape_configs:
job_name: <job_name>
# 被监控端采集数据的时间间隔
[scrape_interval: <duration> | defaule=<global_config.scrape_interval>]
# 连接被监控端的超时时间
[scrape_interval: <duration> | default=<global_config.scrape_timeout>]
# 被监控端采集数据的路径
[ metrics_path: <path> | default = /metrics]
# 是否覆盖自定义标签
[ honor_lables: <boolean> | defaul=false]
# 采集方式默认http
[ shema: <schema> | default = http ]
# 参数
params:
[<string> : <string>,...]
# basic 认证
basic_auth:
[ username: <sting> ]
[ password: <secret>]
[ password_file: <sting>]
# 令牌认证
[ bearer_token: <secret>]
[bearer_token_file: /path/to/bearer/token/file]
# ssh
tls_config:
[<tls_config>]
# 代理
[proxy_url: <string> ]
# consul服务发现
consul_sd_configs:
s [ - <cpmsul_sd_config> ]
# dns服务发现
dns_sd_configs:
[ - <dns_sd_config>]
# 文件服务发现
file_sd_configs:
[ - <file_sd_config> ...]
# k8s服务发现
kubernetes_sd_configs:
[ -<kubernetes_sd_config>]
# 静态服务发现
static_configs:
[ -<static_config>]
# 数据采集之前重新打标签
relabel_configs:
[ -<relabel_config>]
# 数据采集后打标签
metric_relabel_configs:
[ -<relabel_config>]
#采集样本的数量,如果超过了就失败了
[sample_limit: <int> | default = 0]
relabel_configs 重新打标签
重新打标签的意义
- 命名标签名
- 删除标签
- 过滤目标
#重新打标签,允许对任何目标及标签进行修改
relabel_configs:
#源标签
[source_labels: '['<labelname>'],[...]']
# 多个源标签连接时的分隔符
[ separator: <string> | default = ;]
# 重新标记的标签名
[ target_label: <labelname>]
# 正则表达式匹配的标签值
[regex: <regex> | default = (.*)]
[modules: <unit64>]
# 替换正则表达式的分组,分组引用$1 $2
[replacement: <string> | default =1]
# 基于正则表达式匹配执行的操作,默认替换动作
[action: <relabel_action> | default = replace]
action 动作
replace:默认,通过replace匹配source_label的值,使用replacement来引用表达式匹配的分组
keep: 删除regex与连接不匹配的source_labels。保留匹配的目标
drop: 删除regex于连接匹配的目标source_label。保留不匹配的目标
#keep 和 drop 根据匹配的source_label来决定采不采集信息
labeldrop: 删除regex匹配的标签
labelkeep:删除于regex不匹配的标签
# labeldrop和labelkeep于标签有关系
hashmod: 设置target_label为modules连接的哈希值source_labels
labelmap:匹配regex所有的标签名称,然后复制匹配标签的值进行分组,replacement分组来引用($1 ,$2 ,$3) 替代
支持服务发现
azure_sd_configs
dns_sd_configs
file_sd_configs
file_sd_configs
gce_sd_configs
kubernetes_sd_configs
网友评论