1. Prometheus简介
老规矩,先给出官网地址
Prometheus 是一个开源系统监控和警报工具包,最初是在 SoundCloud 构建的。自2012年推出以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,并明确项目的治理结构,Prometheus 于 2016 年加入云原生计算基金会,成为继 Kubernetes 之后的第二个托管项目。
Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录时的时间戳一起存储,以及称为标签的可选键值对。
2. docker安装
3. docker-compose安装
4. 下载prometheus镜像至本地
需要有一台有外网环境的电脑
# 下载prometheus和grafana镜像
docker pull prom/prometheus:v2.52.0
docker pull grafana/grafana:11.0.0
# 导出镜像为tar
docker save -o prometheus.tar prom/prometheus:v2.52.0
docker save -o grafana.tar grafana/grafana:11.0.0
# 将.tar包上传至目标服务器
# 导入镜像
docker load -i grafana.tar
docker load -i prometheus.tar
5. 创建docker-compose.yaml文件
networks:
monitoring:
driver: bridge
services:
prometheus:
image: prom/prometheus:v2.52.0
user: root # 使用root用户运行,防止出现缺失权限导致的启动异常
container_name: prometheus
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro # 本地时区挂载在镜像中
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml # 挂载配置文件
- ./prometheus/data:/prometheus # 挂载数据存储目录
command:
- '--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' # 控制台模板
# 热加载配置
- '--web.enable-lifecycle'
# api配置
#- '--web.enable-admin-api'
# 历史数据最大保留时间,默认15天,这里使用默认值也够用了,防止占用大量磁盘
- '--storage.tsdb.retention.time=15d'
networks:
- monitoring
ports:
- 9090:9090
grafana:
image: grafana/grafana:11.0.0
user: root # 使用root用户运行,防止出现缺失权限导致的启动异常
container_name: grafana
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./grafana/data:/var/lib/grafana # 挂载数据存储目录
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin # 指定admin账户的密码
networks:
- monitoring
ports:
- 3000:3000
6. 创建prometheus配置文件
vim prometheus.yml
# 全局配置
global:
scrape_interval: 15s # 将搜刮间隔设置为每15秒一次。默认是每1分钟一次。
evaluation_interval: 15s # 每15秒评估一次规则。默认是每1分钟一次。
# 搜刮配置
scrape_configs:
- job_name: 'prometheus'
# 覆盖全局默认值,每15秒从该作业中刮取一次目标
scrape_interval: 15s
static_configs:
- targets: ['localhost:9090']
- job_name: 'node-exporter' # node_exporter监控节点
scrape_interval: 15s
static_configs:
- targets: ['192.168.0.160:9100']
labels:
instance: 192.168.0.160
7. 运行prometheus
docker-compose up -d prometheus
浏览器访问:http://192.168.0.xxx:9090,如下图
8. 运行grafana
docker-compose up -d grafana
浏览器访问:http://192.168.0.xxxx:3000,如下图
账号:admin
密码:admin(与docker-compose配置的默认密码有关,第一次登录会强制修改密码)
9. 安装node_exporter,主机监控
(1). 下载node_exporter Download | Prometheus
(2). 将node_exporter安装包上传至服务器
(3). 解压安装包
# 解压
tar -zxvf node_exporter-1.8.1.linux-amd64.tar.gz
# 重名命文件夹
mv node_exporter-1.8.1.linux-amd64/ node_exporter
(4). 创建node_exporter服务
# 将node_exporter添加至系统可执行程序
cp node_exporter /usr/local/bin/
# 创建服务配置
vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
Restart=on-failure
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9100
[Install]
WantedBy=multi-user.target
# 重新加载systemctl指令
systemctl daemon-reload
# 启动nodex_exporter
systemctl start node_exporter
10. 修改promethus配置文件,添加node_exporter监控节点
# 多个node_exporter配置参考
- job_name: 'node-exporter'
scrape_interval: 15s
static_configs:
- targets: ['192.168.0.160:9100']
labels:
instance: 192.168.0.160
- targets: ['192.168.0.170:9100']
labels:
instance: 192.168.0.170
11. 重启prometheus
docker-compose restart prometheus
进入status=》Targets页面,如下图
12. 配置grafana
(1). 创建prometheus数据源,如下图步骤
(2). 创建可视化面板
可视化面板市场:Grafana dashboards | Grafana Labs
这里推荐使用:16098