一遇风云变化龙

Prometheus-v2.53.2 快速部署

作者头像
空青、 本文作者

2024-9-10 阅读 79 约 4分钟读完

评论0

1、基础介绍

Prometheus 是由 Soundcloud 使用 Go 语言开发的时序数据库(简称TSDB)但它的功能并非局限于TSDB,因为它还支持对目标(如服务器、应用程序等)进行监控;
因此,我们也可以理解Prometheus是一款开源的"监控系统",但仅仅依托Prometheus 不足以支撑整个监控系统,它需要结合生态内其他的组件来构建-个完整的IT监控系统。
例如:AleartManager、Grafana、PushGateway 等等。

网站:https://prometheus.io/
github:https://github.com/prometheus

选择最新的v2.53.2-LTS版本安装

2、Docker安装部署

2.1 快速启动

快速启动查看配置及数据目录,便于映射做数据持久化

docker pull prom/prometheus:v2.53.2
docker run --name prometheus -d -p 9090:9090 prom/prometheus:v2.53.2
docker ps --no-trunc|grep prometheus

/bin/prometheus
--config.file=/etc/prometheus/prometheus.yml         # 容器内配置文件
--storage.tsdb.path=/prometheus                      # 容器内数据落盘
--web.console.libraries=/usr/share/prometheus/console_libraries
--web.console.templates=/usr/share/prometheus/consoles

2.2 准备挂载目录及文件

# /data/prometheus/data目录,准备用来挂载放置prometheus的数据
# /data/prometheus/config目录,准备用来放置prometheus的配置文件
# /data/prometheus/rules目录,准备用来挂载放置prometheus的规则文件

1、创建挂载目录
mkdir -p /data/prometheus/{data,config,rules}

2、授权相关文件夹权限(必须777)
chmod -R 777 /data/prometheus/data
chmod -R 777 /data/prometheus/config
chmod -R 777 /data/prometheus/rules

3、准备配置文件
cat > /data/prometheus/config/prometheus.yml << EOF
global:
  # 数据采集间隔
  scrape_interval:     45s
  # 告警检测间隔
  evaluation_interval: 45s

# 告警规则
rule_files:
  # 这里匹配指定目录下所有的.rules文件
  - /prometheus/rules/*.rules

# 采集配置
scrape_configs:
  # 采集项(prometheus)
  - job_name: 'prometheus'
    static_configs:
      # prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
      - targets: ['localhost:9090']
EOF

4、查看一下配置文件
cat /data/prometheus/config/prometheus.yml

prometheus配置项说明
global:全局配置 (如果有内部单独设定,会覆盖这个参数)
alerting:告警插件定义。这里会设定alertmanager这个报警插件
rule_files:告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现
scrape_configs:采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现
remote_write:用于远程存储写配置
remote_read:用于远程读配置

3、启动容器

3.1 docker-run

# 启动prometheus
# config.file:指定容器中,配置文件的位置
# web.enable-lifecycle:启动此项后,当配置文件发生变化后,可通过HTTP API 发送 post 请求到 /-/reload,实现热加载,如:curl -X POST http://47.105.39.189:9090/-/reload
# -v /etc/localtime:/etc/localtime:ro表示让容器使用宿主机的时间, :ro表示只读(注:此方式只针对宿主机和容器的时区文件均为/etc/localtime)
docker run --name prometheus -d \
    -p 9090:9090 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /data/prometheus/data:/prometheus/data \
    -v /data/prometheus/config:/prometheus/config \
    -v /data/prometheus/rules:/prometheus/rules \
    prom/prometheus:v2.53.2 --config.file=/prometheus/config/prometheus.yml --web.enable-lifecycle

3.2 docker-compose


# cat docker-compose.yaml 
version: '3.8'

services:
  prometheus:
    image: prom/prometheus:v2.53.2
    container_name: prometheus
    restart: on-failure:3
    privileged: true
    ports:
      - "9090:9090"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/prometheus/data:/prometheus/data
      - /data/prometheus/config:/prometheus/config
      - /data/prometheus/rules:/prometheus/rules
    command: >
      --config.file=/prometheus/config/prometheus.yml
      --web.enable-lifecycle
    network_mode: "host"         # 共享宿主机hosts解析,网络建议选择仅主机模式
    networks:
      - prom_net
networks:
  prom_net:
    driver: bridge

4、登录验证

Use local time          # 使用当地时间
Enable query history    # 开启查询历史
Enable autocomplete     # 开启自动补全
Enable highlighting     # 开启高亮显示
Enable linter           # 开启提示功能

5、二进制安装

1、下载解压安装
wget https://github.com/prometheus/prometheus/releases/download/v2.53.2/prometheus-2.53.2.linux-amd64.tar.gz
tar xf prometheus-2.53.2.linux-amd64.tar.gz -C /etc/
ln -s /etc/prometheus-2.53.2.linux-amd64 /etc/prometheus
cd /etc/prometheus
cp prometheus.yml prometheus.yml.bak

./prometheus --version

2、基础配置
# cat prometheus.yml
global: 
  scrape_interval: 1m

scrape_configs:
  - job_name: "prometheus" 
    metrics_path: "/metrics"
    static_configs:
    - targets: ["localhost:9090"]

  - job_name: "grafana" 
    metrics_path: "/metrics"
    static_configs:
    - targets: 
      - "localhost:3000"

#校验语法
./promtool check config prometheus.yml

3、以服务的方式启动
cat /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus server
Documentation=https://prometheus.io/

[Service]
User=root
Restart=always
ExecStart=/etc/prometheus/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/etc/prometheus/data \
  --storage.tsdb.retention.time=60d \
  --web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=20
TimeoutStopSec=20
SendSIGKILL=no
LimitNOFILE=8192

[Install]
WantedBy=multi-user.target

#重新加载配置
curl -X POST http://localhost:9090/-/reload
上一篇 Grafana-v10.4.10 快速部署 下一篇 Linux的web管理工具
评论