二进制安装
官网下载二进制包:
$ wget https://github.com/prometheus/prometheus/releases/download/v2.22.1/prometheus-2.22.1.linux-amd64.tar.gz
创建安装目录:
$ mkdir -p /opt/apps/prometheus/{conf,bin,data}
解压并移动文件:
$ tar xf prometheus-2.22.1.linux-amd64.tar.gz
$ cd prometheus-2.22.1.linux-amd64
$ mv prometheus promtool /opt/apps/prometheus/bin/
$ mv prometheus.yml /opt/apps/prometheus/conf/
创建 Systemd 配置文件:
$ cat > /lib/systemd/system/prometheus.service << EOF
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System
[Service]
ExecStart=/opt/apps/prometheus/bin/prometheus \
--config.file=/opt/apps/prometheus/conf/prometheus.yml \
--storage.tsdb.path=/opt/apps/prometheus/data \
--storage.tsdb.retention=15d \
--web.listen-address=:9090 \
--web.enable-lifecycle
ExecReload=/usr/bin/curl -X POST http://127.0.0.1:9090/-/reload
[Install]
WantedBy=multi-user.target
EOF
上述几个启动选项描述如下:
--config.file
:指定 Prometheus 启动程序使用的主配置文件;--storage.tsdb.path
:Prometheus 本身也是个 tsdb,此选项用来指定一个目录来保存采集到的数据;--storage.tsdb.retention
:指定保存数据的周期,这里指定的15d
表示仅保存 15 天内采集到的数据;--web.listen-address
:指定 Prometheus 监听地址和端口;--web.enable-lifecycle
:如果开启了这个命令行参数,每当prometheus.yml
文件发生改变时,就不需要对 Prometheus 进行重新启动的操作了,而可以通过发送 http 请求到 Prometheus 服务的指定 path 来让服务配置重载,如curl -X POST http://localhost:9090/-/reload
;除了上述已使用的几个选项以外,还有几个常用选项如下:
--web.external-url
:用于返回 Prometheus 的相对和绝对链接地址,可以在后续告警通知中直接点击链接访问 Prometheus Web UI,格式为http[s]:<ip|domain_name>:<port>
;--web.max-connections
:设置同一时间最大连接数;
下面为 prometheus.yml
的配置内容(各配置功用已以注释说明):
# global 模块是全局配置信息,它定义的内容会被 scrape_configs 块中的每个 Job 单独覆盖
global:
# 抓取 target 的时间间隔,设置为 15 秒,默认值为 1 分钟
scrape_interval: 15s
# 计算一条规则配置的时间间隔,设置为 15 秒,默认值为 1 分钟
evaluation_interval: 15s
# 抓取 target 的超时时间,默认值为 10 秒
scrape_timeout: 5s
# 与外部系统通信时添加到任意时间序列或告警所用的外部标签
#external_labels:
# 告警模块
alerting:
alertmanagers:
# 静态配置 Alertmanager 的地址,也可以依赖服务发现动态识别
- static_configs:
# 可以配置多个地址
- targets:
# - alertmanager:9093
# 自定义的 Rule 主要分为 Recording rule 和 Alerting rule 两类
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# 抓取配置
scrape_configs:
# Job 名称很重要,Prometheus 会将该名称作为 Label 追加到抓取的每条时序中
- job_name: 'prometheus-server'
# 指定抓取指标的 path,默认值为 /metrics
metrics_path: /metrics
# 用于请求的协议,默认 http
scheme: http
# 静态方式抓取指标配置
static_configs:
- targets: ['localhost:9090']
启动服务并设置开机自启:
$ systemctl start prometheus && systemctl enable prometheus
启动浏览器访问:
Docker 安装
快速安装 Docker:
$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
直接运行一个 Docker 容器,由于这里默认的 9090 端口已经被上面二进制方式启动的 Prometheus 占用了,所以这里我将容器的 9090 端口映射到 9091 端口,命令如下:
$ docker run -d -p 9091:9090 -v /opt/apps/prometheus/conf/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus prom/prometheus
启动浏览器访问:
评论区