一,实验环境
IP 角色
192.168.189.15 prometheus、node1
192.168.189.16 altermanager、node2
192.168.30.189.17 grafana、node3
注意部署的时候
全部关闭防火墙和核心防护
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config && setenforce 0
部署
1.1Prometheus部署
192.168.189.15
下载prometheus
mkdir /software && cd /software
wget https://github.com/prometheus/prometheus/releases/download/v2.19.0/prometheus-2.19.0.linux-amd64.tar.gz
tar zxvf prometheus-2.19.0.linux-amd64.tar.gz
mv prometheus-2.19.0.linux-amd64 /usr/local/prometheus
1.2 安装prometeus
useradd -M -s /sbin/nologin prometheus
mkdir -p /data/prometheus
chown -R prometheus:prometheus /usr/local/prometheus /data/prometheus
[root@prometheus ~]# cat /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
Environment="GOMAXPROCS=4"
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/data/prometheus \
--storage.tsdb.retention=30d \
--web.console.libraries=/usr/local/prometheus/console_libraries \
--web.console.templates=/usr/local/prometheus/consoles \
--web.listen-address=0.0.0.0:9090 \
--web.read-timeout=5m \
--web.max-connections=10 \
--query.max-concurrency=20 \
--query.timeout=2m \
--web.enable-lifecycle
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
NoNewPrivileges=true
LimitNOFILE=infinity
ReadWriteDirectories=/data/prometheus
ProtectSystem=full
SyslogIdentifier=prometheus
Restart=always
1.3启动prometheus
[root@prometheus ~]# systemctl daemon-reload
[root@prometheus ~]# systemctl enable prometheus && systemctl start prometheus
[root@prometheus ~]# netstat -lntp | grep prometheus
tcp6 0 0 :::9090 :::* LISTEN 16704/prometheus
验证一下
IP192.168.198.15:9595
已安装完毕,接下来搞配置文件
2.1 介绍一下主要配置文件的名称,
全局配置 global
告警配置 alerting
规则文件配置 rule_files
拉取配置 scrape_configs
远程读写配置 remote_read、remote_write
全局配置 global
global:
# 默认拉取频率
[ scrape_interval: <duration> | default = 1m ]
# 拉取超时时间
[ scrape_timeout: <duration> | default = 10s ]
# 执行规则频率
[ evaluation_interval: <duration> | default = 1m ]
# 通信时添加到任何时间序列或告警的标签
# external systems (federation, remote storage, Alertmanager).
external_labels:
[ <labelname>: <labelvalue> ... ]
# 记录PromQL查询的日志文件
[ query_log_file: <string> ]
告警配置 alerting
alerting指定与Alertmanager相关的设置
alerting:
alert_relabel_configs:
[ - <relabel_config> ... ]
alertmanagers:
[ - <alertmanager_config> ... ]
规则文件配置 rule_files
rule_files指定prometheus加载的任何规则的位置,从所有匹配的文件中读取规则和告警。目前没有规则。
rule_files:
[ - <filepath_glob> ... ]
拉取配置 scrape_configs:
scrape_configs指定prometheus监控哪些资源。默认会拉取prometheus本身的时间序列数据,通过http://localhost:9090/metrics进行拉取。
一个scrape_config指定一组目标和参数,描述如何拉取它们。在一般情况下,一个拉取配置指定一个作业。在高级配置中,这可能会改变。
可以通过static_configs参数静态配置目标,也可以使用支持的服务发现机制之一动态发现目标。
此外,relabel_configs在拉取之前,可以对任何目标及其标签进行修改。 scrape_configs: job_name:
<job_name>
# 拉取频率
[ scrape_interval: <duration> | default = <global_config.scrape_interval> ]
# 拉取超时时间
[ scrape_timeout: <duration> | default = <global_config.scrape_timeout> ]
# 拉取的http路径
[ metrics_path: <path> | default = /metrics ]
# honor_labels 控制prometheus处理已存在于收集数据中的标签与prometheus将附加在服务器端的标签("作业"和"实例"标签、手动配置的目标标签和由服务发现实现生成的标签)之间的冲突
# 如果 honor_labels 设置为 "true",则通过保持从拉取数据获得的标签值并忽略冲突的服务器端标签来解决标签冲突
# 如果 honor_labels 设置为 "false",则通过将拉取数据中冲突的标签重命名为"exported_<original-label>"来解决标签冲突(例如"exported_instance"、"exported_job"),然后附加服务器端标签
# 注意,任何全局配置的 "external_labels"都不受此设置的影响。在与外部系统的通信中,只有当时间序列还没有给定的标签时,它们才被应用,否则就会被忽略
[ honor_labels: <boolean> | default = false ]
# honor_timestamps 控制prometheus是否遵守拉取数据中的时间戳
# 如果 honor_timestamps 设置为 "true",将使用目标公开的metrics的时间戳
# 如果 honor_timestamps 设置为 "false",目标公开的metrics的时间戳将被忽略
[ honor_timestamps: <boolean> | default = true ]
# 配置用于请求的协议
[ scheme: <scheme> | default = http ]
# 可选的http url参数
params:
[ <string>: [<string>, ...] ]
# 在每个拉取请求上配置 username 和 password 来设置 Authorization 头部,password 和 password_file 二选一
basic_auth:
[ username: <string> ]
[ password: <secret> ]
[ password_file: <string> ]
# 在每个拉取请求上配置 bearer token 来设置 Authorization 头部,bearer_token 和 bearer_token_file 二选一
[ bearer_token: <secret> ]
# 在每个拉取请求上配置 bearer_token_file 来设置 Authorization 头部,bearer_token_file 和 bearer_token 二选一
[ bearer_token_file: /path/to/bearer/token/file ]
# 配置拉取请求的TLS设置
tls_config:
[ <tls_config> ]
# 可选的代理URL
[ proxy_url: <string> ]
# Azure服务发现配置列表
azure_sd_configs:
[ - <azure_sd_config> ... ]
# Consul服务发现配置列表
consul_sd_configs:
[ - <consul_sd_config> ... ]
# DNS服务发现配置列表
dns_sd_configs:
[ - <dns_sd_config> ... ]
# EC2服务发现配置列表
ec2_sd_configs:
[ - <ec2_sd_config> ... ]
# OpenStack服务发现配置列表
openstack_sd_configs:
[ - <openstack_sd_config> ... ]
# file服务发现配置列表
file_sd_configs:
[ - <file_sd_config> ... ]
# GCE服务发现配置列表
gce_sd_configs:
[ - <gce_sd_config> ... ]
# Kubernetes服务发现配置列表
kubernetes_sd_configs:
[ - <kubernetes_sd_config> ... ]
# Marathon服务发现配置列表
marathon_sd_configs:
[ - <marathon_sd_config> ... ]
# AirBnB's Nerve服务发现配置列表
nerve_sd_configs:
[ - <nerve_sd_config> ... ]
# Zookeeper Serverset服务发现配置列表
serverset_sd_configs:
[ - <serverset_sd_config> ... ]
# Triton服务发现配置列表
triton_sd_configs:
[ - <triton_sd_config> ... ]
# 静态配置目标列表
static_configs:
[ - <static_config> ... ]
# 目标relabel配置列表
relabel_configs:
[ - <relabel_config> ... ]
# metric relabel配置列表
metric_relabel_configs:
[ - <relabel_config> ... ]
# 每次拉取样品的数量限制
# metric relabelling之后,如果有超过这个数量的样品,整个拉取将被视为失效。0表示没有限制
[ sample_limit: <int> | default = 0 ]
远程读写配置 remote_read/remote_write:
remote_read/remote_write将数据源与prometheus分离,当前不做配置。
# 与远程写功能相关的设置
remote_write:
[ - <remote_write> ... ]
# 与远程读功能相关的设置
remote_read:
[ - <remote_read> ... ]
正在持续更新中。。。。