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