docker-compose五分钟快速安装prometheus
本文介绍如何通过docker-compose快速安装prometheus。请先对照安装环境检查自己的环境是否具备,具体对照如下:
安装环境
Linux服务器(或VMware虚拟机)IP:192.168.1.110
操作系统:CentOS7
docker社区版: docker-ce 23.0.4
docker-compose: 1.16.1
安装步骤
我们将prometheus安装在/opt目录下,同时还需要安装配套的 grafana, alertmanager。
因此我们分别为它们三个创建自己的安装目录,如下:
1)创建目录
mkdir -p /opt/prometheus/{prometheus,grafana,altermanager}
2)创建配置文件
为alertmanager创建配置文件/opt/prometheus/alertmanager/config.yml
global:
# 163邮件服务器
smtp_smarthost: 'smtp.163.com:465'
# 发送邮件邮箱
smtp_from: 'soosky@163.com'
# 发送邮件账号
smtp_auth_username: '修改为你的邮件账号'
# 发送邮件密码
smtp_auth_password: '修改为你的邮箱密码'
# 是否进行TLS验证
smtp_require_tls: false
route:
group_by: ['altertname']
# 当收到告警时,等待group_wait配置的时间,看是否还有警告,如果有就一起发出去
group_wait: 10s
# 如果上次告警信息发送成功,此时又来一个新的告警数据,则需要等待group_interval时间才能发送
group_interval: 10s
# 如果上次告警信息发送成功,且问题没有解决,则等待repeat_interval时间再次发送告警数据
repeat_interval: 10m
# 全局报警组,这个参数是必选的
receiver: email
receivers:
- name: 'email'
# 接收邮件邮箱
email_configs:
- to: '49186456@qq.com'
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['altertname', 'dev', 'instance']
为grafana创建配置文件/opt/prometheus/grafana/config.monitoring
# grafana web控制台密码
GF_SECURITY_ADMIN_PASSWORD=password
# grafana是否允许注册
GF_USERS_ALLOW_SIGN_UP=false
为prometheus创建配置文件/opt/prometheus/prometheus/prometheus.yml
# 全局配置
global:
scrape_interval: 15s # 搜刮间隔配置;默认60s
evaluation_interval: 15s # 每15s评估一次规则;默认60s
# Prometheus发送告警信息给Alertmanager,Alertmanager的配置
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager:9093']
# 报警(触发器)配置
rule_files:
- "alert.yml"
# 搜刮配置
scrape_configs:
# 配置收集prometheus的数据
- job_name: 'prometheus'
# 覆盖全局默认值,每15s从该作业中刮取一次目标
scrape_interval: 15s
static_configs:
- targets: ['localhost:9090']
# 配置收集alertmanager的数据
- job_name: 'alertmanager'
scrape_interval: 15s
static_configs:
- targets: ['alertmanager:9093']
# 配置收集docker的数据
- job_name: 'cadvisor'
scrape_interval: 15s
static_configs:
- targets: ['cadvisor:8080']
labels:
instance: 192.168.1.110 # Prometheus服务器
# 配置收集linux的数据
- job_name: 'node-exporter'
scrape_interval: 15s
static_configs:
- targets: ['node_exporter:9100']
labels:
instance: 192.168.1.110 # Prometheus服务器
创建配置文件/opt/prometheus/prometheus/alert.yml
groups:
- name: Prometheus alert
rules: 服务告警
# 对任何实体超过30s无法联系的情况发出警报
- alert: # 服务告警
expr: up == 0
for: 30s
labels:
severity: critical
annotations:
summary: "服务器异常,实例:{{ $labels.instance }}"
description: "{{ $labels.job }} 服务已关闭"
创建docker-compose的脚本文件/opt/prometheus/script/docker-compose.yml
version: '3.3'
volumes:
prometheus_data: {}
grafana_data: {}
networks:
monitoring:
driver: bridge
services:
prometheus:
image: prom/prometheus:v2.37.6
container_name: prometheus
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ../prometheus/:/etc/prometheus
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml' # prometheus的配置文件
- '--storage.tsdb.path=/prometheus' # prometheus数据存储目录
- '--web.console.libraries=/usr/share/prometheus/console_libraries' # 控制台的库
- '--web.console.templates=/usr/share/prometheus/consoles' # 控制台模板
- '--web.enable-lifecycle' # 热加载配置
#- '--web.enable-admin-api' # api配置
- '--storage.tsdb.retention.time=7d' # 历史数据最大保留时间,默认15天
networks:
- monitoring
links:
- alertmanager
- cadvisor
- node_exporter
expose:
- '9090'
ports:
- '9090:9090'
depends_on:
- cadvisor
alertmanager:
image: prom/alertmanager:v0.25.0
container_name: alertmanager
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ../alertmanager/:/etc/alertmanager
command:
- '--config.file=/etc/alertmanager/config.yml' # alertmanager的配置文件
- '--storage.path=/alertmanager' # 数据存储目录
networks:
- monitoring
expose:
- '9093'
ports:
- 9093:9093
# 监控容器
cadvisor:
image: google/cadvisor:v0.33.0
container_name: cadvisor
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys/:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
networks:
- monitoring
expose:
- '8080'
# 监控 linux
node_exporter:
image: prom/node-exporter:v1.5.0
container_name: node-exporter
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc|rootfs/var/lib/docker)($$|/)'
networks:
- monitoring
ports:
- '9100:9100'
grafana:
image: grafana/grafana:9.4.3
container_name: grafana
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- grafana_data:/var/lib/grafana
- ../grafana/provisioning/:/etc/grafana/provisioning/
env_file:
- ../grafana/config.monitoring
networks:
- monitoring
links:
- prometheus
ports:
- 3000:3000
depends_on:
- prometheus
3)运行脚本
在 /opt/prometheus/script/目录下执行命令
docker-compose up -d
4)访问
- prometheus
http://192.168.1.110:9090
- grafana
# 账号:admin/password
http://192.168.1.110:3000
- alertmanager
http://192.168.1.110:9093
- node-exporter
http://192.168.1.110:9100/metrics
至此,通过docker-compose快速搭建完成了一个prometheus环境。