docker拉起服务

1.docker-compose.yml文件和prometheus.yml文件

        编写这两个文件是第一步,也是重中之重的一步,因为大多数的问题都来自这里,一旦配置错误,搞什么后面都错了。

所以下面会先给出我的docker-compose.yml和prometheus.yml中的配置并进行讲解:

首先肯定创建redis服务的容器得有,这是数据的来源,不然后面都是鬼扯。

有了redis服务,剩下的就是监控体系的服务创建了——

1.1 prometheus服务

在这个服务中其他的都是正常配置,唯一不同的就是volumn配置项,除了数据的挂在项之外,还有一个prometheus.yml;这个配置项是定义prometheus监控指标的配置的,其中会定义抓取的目标(服务+端口)、抓取到的实例名称和抓取的时间间隔,我定义的是5秒;

# prometheus.yml
global:
  scrape_interval: 5s  # 抓取间隔时间

scrape_configs:
  - job_name: 'redis'
    static_configs:
      - targets: ['redis-exporter:9121']  # redis-exporter 服务的地址和端口

1.2 redis-exporter

这个是干嘛的呢,可以这样理解:redis服务运行的时候,是一个独立的容器,是一个黑盒的过程,所以现在就需要通过这个redis-exporter将redis服务给“暴露”出来;在environment配置项中需要正确填写redis服务所在的端口,在redis-exporter将redis给暴露出来之后,不难想到prometheus其实是需要监控redis-exporter所在的端口(这点需要注意)

除了redis-exporter,还有mysqld-exporter、等等;镜像可在docker hub中自行查询,也可直接问gpt(手动狗头)

1.3 8429victoriametrics

因为后续需要写实时脚本将普罗米修斯中的数据插入到vm中,所以还需要起一个vm的服务,vm是一个tsdb,不懂的可以看我之前的文章有写,这里8249是因为vm的默认端口是8248,我本地的8248的端口被正式项目的vm占用了,所以用来区分

# docker-composer.yml
version: "3"
services:
  # 服务体系
  redis:
    image: redis:latest
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - ./redis/data:/data
      - ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf

  # 以下是监控体系
  prometheus:
    image: prom/prometheus:latest
    container_name: "prometheus"
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - "./prometheus.yml:/etc/prometheus/prometheus.yml"
      - "./prometheus_data:/prometheus"

  redis-exporter:
    image: oliver006/redis_exporter
    container_name: redis-exporter
    ports:
      - "9121:9121"
    environment:
      - REDIS_ADDR=redis://redis:6379

  8429victoriametrics:
    image: victoriametrics/victoria-metrics:latest
    container_name: victoria-metrics
    volumes:
      - "./victoria_data:/victoria-metrics-data"
    ports:
      - "8429:8429"
    restart: always

2.监控

2.1启动容器

在docker-compose.yml文件和prometheus.yml文件所在的目录下docker-compose up ,使用docker-compose ps命令查看所有的容器,如果四个容器都在,说明启动成功

2.2 查看监控到的实例

如果prometheus被争取的拉起了,那么这个服务是有着自带的web console界面的,浏览器访问http://localhost:9090/graph就可以看到界面;

输入 redis_up 来检查 Redis 实例是否运行正常:

如果这个实例的值是1;表示 Redis 实例是“up”的,也就是说,它是可达的。

这是点击graph就能查询并看到各项指标了;这里我监控的是我正式项目的redis服务(有着其它服务的心跳),所以是有数据的。如图

就完成了使用prometheus监控redis

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐