ubuntu系统docker方式安装Prometheus+grafana保姆及教程

本文详细介绍了如何在Linux系统中安装Docker、配置镜像加速、设置docker-compose、安装Prometheus和Grafana,并配置告警通知和数据源。还包括了如何使用Grafana展示Prometheus数据的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装docker

1、进入root用户保证有足够的权限

sudo -i

2、创建目录:

sudo mkdir -p /etc/docker

3、配置镜像加速:

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["http://hub-mirror.c.163.com"]

}

EOF

4、设置变量:

export DOWNLOAD_URL="http://mirrors.163.com/docker-ce"

5、安装curl下载工具:

snap install curl

6、安装docker:

curl -fsSL https://get.docker.com/ | sh

7、查看版本信息

docker -v

8、查看docker运行状态

systemctl status docker

9、安装docker-compose

curl -SL https://github.com/docker/compose/releases/download/v2.23.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

10、授权:

sudo chmod +x /usr/local/bin/docker-compose

11、查看信息:

docker-compose -v


2、docker-compose安装Prometheus

注意:以下操作尤其是创建配置文件添加文件里的内容的时候一定要注意缩进

1、切换到root用户

sudo -i

2、创建监控文件:

mkdir /data/docker-prometheus -p

3、连级创建目录:

mkdir /data/docker-prometheus/{grafana,prometheus,alertmanager} -p

4、进入到件监控文件内:

cd /data/docker-prometheus/

5、创建alert manager报警配置

vim alertmanager/config.yml

global:

#163服务器

smtp_smarthost: 'smtp.163.com:465'

#发邮件的邮箱

smtp_from: 'yuansui@163.com'

#发邮件的邮箱用户名,也就是你的邮箱

smtp_auth_username: 'yuansui@163.com'

#发邮件的邮箱密码

smtp_auth_password: '123456'

#进行tls验证

smtp_require_tls: false

route:

group_by: ['alertname']

#当收到告警的时候,等待group_wait配置的时间,看是否还有告警,如果有就一起发出去

group_wait: 10s

#如果上次告警信息发送成功,此时又来了一个新的告警数据,则需要等待group配置的时间才可以发送出去

group_interval: 10s

#如果上次告整信息发送成功,且问题没有解决,则等待 repeat_interval配置的时间再次发送告警数据

repeat_interval: 10m

# 全局报警组,这个参数是必选的

receiver: email

receivers:

- name: 'email'

email_configs:

- to: 'yuansui@163.com'

inhibit_rules:

- source_match:

severity: 'critical'

target_match:

severity: 'warning'

equal: ['alertname', 'dev', 'instance']

解释:

全局配置部分

  • smtp_smarthost: 指定用于发送电子邮件的 SMTP 服务器地址和端口。
  • smtp_from: 指定发件人的邮箱地址。
  • smtp_auth_username: 指定用于 SMTP 身份验证的邮箱用户名。
  • smtp_auth_password: 指定用于 SMTP 身份验证的邮箱密码。
  • smtp_require_tls: 指定是否需要使用 TLS 进行安全连接,应该设置为 true 以确保安全连接。

告警路由配置部分

  • group_by: 告警信息按照哪些标签进行分组,这里是按照 alertname 标签进行分组。
  • group_wait: 告警触发后等待一定时间,看是否还有相同告警,如果有则一起发送。
  • group_interval: 如果上次告警信息发送成功,此时又来了一个新的告警数据,需要等待的时间才可以发送出去。
  • repeat_interval: 如果上次告警信息发送成功且问题没有解决,则等待一定时间再次发送告警数据。
  • receiver: 全局报警接收者,指定了默认的接收者为 email。

接收者配置部分

  • 定义了一个名为 email 的接收者,配置了发送邮件的相关信息,包括收件人邮箱地址等。

抑制规则部分

  • 定义了抑制规则,当源告警的严重程度为 'critical' 时,目标告警的严重程度为 'warning',并且告警名称、开发环境和实例都相同时,执行抑制。

6、配置grafana配置文件

vim grafana/config.monitoring

GF_SECURITY_ADMIN_PASSWORD=admin

GF_USERS_ALLOW_SIGN_UP=false

解释:

GF_SECURITY_ADMIN_PASSWORD=admin

表示grafana登陆密码是admin

GF_USERS_ALLOW_SIGN_UP=false

是禁止用户自行注册新的账号。


7、创建Prometheus配置文件

vim prometheus/prometheus.yml

# 全局配置
global:
  scrape_interval: 15s  # 将搜刮间隔设置为每15秒一次,默认是1分钟
  evaluation_interval: 15s  # 每15秒评估一次规则,默认是一分钟

# Alertmanager 配置
alerting:
  alertmanagers:
    - static_configs:
        - targets: ['alertmanager:9093']

# 报警(触发器)配置
rule_files:
  - "alert.yml"

# 搜刮配置
scrape_configs:
  - job_name: 'prometheus'
    # 覆盖全局默认值,每15秒从该作业中刮取一次目标
    scrape_interval: 15s
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'cadvisor'
    scrape_interval: 15s
    static_configs:
      - targets: ['cadvisor:8080']
        labels:
          instance: Prometheus服务器

  - job_name: 'node-exporter'
    scrape_interval: 15s
    static_configs:
      - targets: ['node_exporter:9100']
        labels:
          instance: Prometheus服务器

解释:
全局配置部分定义了scrape_interval和evaluation_interval,分别表示搜刮间隔和评估规则的间隔时间。
报警配置中指定了Alertmanager的地址和端口。
搜刮配置中定义了三个作业(job):
prometheus作业覆盖了全局默认值,将搜刮间隔设置为每15秒一次,从localhost:9090进行搜刮。
cadvisor作业指定了搜刮间隔为15秒,从cadvisor:8080进行搜刮,并为该作业添加了一个标签instance: Prometheus服务器。
node-exporter作业同样指定了搜刮间隔为15秒,从node_exporter:9100进行搜刮,并添加了一个标签instance: Prometheus服务器。


8、创建告警配置

vim prometheus/alert.yml

groups:
- name: Prometheus alert
  rules:
  - alert: 服务告警
    expr: up == 0
    for: 30s
    labels:
      severity: critical
    annotations:
      summary: "服务器异常,实例: {{ $labels.instance }}"
      description: "{{ $labels.job }} 服务器已关闭"

解释:
name字段指定了告警组的名称为Prometheus alert。
rules字段下面定义了一个名为服务告警的告警规则:
expr指定了告警规则表达式,即当up指标的值为0时触发告警。
for字段指定了在多长时间内连续出现该情况才会触发告警,这里设置为30秒。
labels字段下面指定了告警级别severity为critical。
annotations字段下面定义了告警的摘要和描述信息,使用了{{ $labels.instance }}和{{ $labels.job }}等模板变量来展示具体的实例和作业名称


9、创建docker-compose配置

vim docker-compose.yaml

version: '3.3'

volumes:
  prometheus_data: {}
  grafana_data: {}

networks:
  monitoring:
    driver: bridge

services:
  prometheus:
    image: ubuntu/prometheus
    container_name: prometheus
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./prometheus/:/etc/prometheus/
      - 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=20d'
    networks:
      - monitoring
    links:
      - alertmanager
      - cadvisor
      - node_exporter
    expose:
      - '9090'
    ports:
      - 9090:9090
    depends_on:
      - cadvisor

  

alertmanager:
    image: prom/alertmanager
    container_name: alertmanager
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./alertmanager/:/etc/alertmanager/
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/alertmanager'
    networks:
      - monitoring
    expose:
      - '9093'
    ports:
      - 9093:9093

  cadvisor:
    image: google/cadvisor
    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'

  node_exporter:
    image: prom/node-exporter
    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
    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

解释:

在这个配置中,prometheus服务是核心组件,它使用prom/prometheus:v2.45.1镜像,并将配置文件挂载到./prometheus/目录。它还定义了一些命令行参数来配置Prometheus,如--config.file指定了配置文件路径,--storage.tsdb.path指定了数据存储路径,--web.enable-lifecycle启用了热加载配置等。此外,prometheus服务通过depends_on字段依赖于cadvisor服务,这意味着在启动prometheus之前,会先启动cadvisor。

alertmanager服务使用prom/alertmanager:v0.26.0镜像,并将配置文件挂载到./alertmanager/目录。它定义了--config.file参数来指定配置文件路径,--storage.path参数指定了数据存储路径。

cadvisor服务使用goole/cadvisor:latest镜像,它是一个容器资源使用监控工具。

node_exporter服务使用prom/node-exporter:v1.7.0镜像,它用于导出主机的各种监控指标。

最后,grafana服务使用grafana/grafana:10.1.1镜像,它是一个流行的开源监控仪表板和可视化工具。它将配置文件挂载到./grafana/provisioning/目录,并使用./grafana/config.monitoring文件中定义的环境变量进行配置。它通过depends_on字段依赖于prometheus服务,并将端口3000映射到主机。


10、检查docker-compose.yaml 文件配置是否正确

docker-compose config -q    #检查配置有问题才有输出

11、启动docker-compose

docker-compose up -d      #启动所有docker-compose服务并后台运行

12、查看是否启动成功

docker  ps

13、访问web页面查看

Prometheus访问地址:

http://192.168.1.144:9090 无用户名和密码

 

grafana访问地址:

http://192.168.1.144:3000                      用户名密码 admin/admin

alter manager访问地址:

http://192.168.1.144:9093 无用户名和密码

node_exporter访问地址:

http://192.168.1.144:9100/metrics 无用户名和密码

3、使用grafana展示Prometheus图形

1、登陆到grafana的web页面

2、选择添加数据源

3、设置适当的Prometheus服务器url(例如:http://prometheus:9090)

4、点击“保存并测试”以保存新的数据源

5、导入仪表盘

完成

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值