prometheus--入门必备之安装和监控容器

发布于:2023-01-15 ⋅ 阅读:(736) ⋅ 点赞:(0)

目录

1.prometheus是什么?

2.监控容器和真实服务器分别如何实现

2.1安装

2.1.1docker安装promethues

2.1.2二进制安装promethues

2.2.prometheus怎么监控容器?


 

prometheus官网网站

Prometheus - Monitoring system & time series database

docker里面有一个命令也可以进行简单的监控

docker stats

1.prometheus是什么?

Prometheus是一个开源系统监控和警报工具包, 按照时序数据库

prometheus分数据收集和数据存储和数据展示及告警

有prometheus server和exporter和pushgateway和Aletmanger和相关出图和展示工具五大块组成,核心是prometheus server,由retrieval和TSDB和HTTP server组成,retrieval接收pull的消息,有两种pull类型,针对长作业是在上面部署exporters收集数据,针对短作业是用pushgetway拉取指标,而HTTP server支持可视化和告警

图片名词解释:

short-lived jobs :短时间作业

jobs:长时间作业

exporter:一直工作,是prometheus的代理,负责收集工作的指标数据给prometheus server:prometheus服务器

prometheus targets:被监控的服务器

pushgateway:拉取指标

TSDB:时序数据库

promql:prometheus语句

API clients:提供接口

Grafna:提供可视化界面

push alerts:推送

Alertmanager:告警功能

2.监控容器和真实服务器分别如何实现

容器里面 ——》要安装exporter

真实服务器 ——》docker自带容器可以收集数据

2.1安装

2.1.1docker安装promethues

使用容器安装
docker run --name prometheus-1 -p 9090:9090 -d prom/prometheus

接口
http://192.168.2.116:9090/graph   --》访问图形界面
http://192.168.2.116:9090/metrics  --》有接口数据,然后可以使用grafna出图展示

2.1.2二进制安装promethues

首先在官网下载一个压缩包,然后再用xftp传输进虚拟机里面

Download | Prometheus

[ root@lb1 prom]# mkdir /prom专门新建一个目录存放
[root@1b1 prom]# ls
prometheus-2.29.1.linux-amd64 prometheus-2.29.1.linux-amd64.tar.gz[root@lb1 prom]# mv prometheus-2.29.1.linux-amd64/* / prom移动
[root@lb1 prom]# cd /prom
[root@lb1 prom]#
[root@lb1 prom]# ls
console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool[ root@lb1 prom]# pwd
/prom
[ root@lb1 prom]# PATH=/prom: $PATH
修改环境变量[ root@lb1 prom]# which prometheus
/ prom/ prometheus
[ root@lb1 prom]#在后台启动prometheus
[root@lb1 prom]# nohup prometheus --config.file=/prom/prometheus.yml &[1]23051
[root@lb1 prom]# nohup:忽略输不并把输出追加到"nohup.out"

2.2.prometheus怎么监控容器?

Monitoring Docker container metrics using cAdvisor | Prometheus

依赖于一个容器 cAdvisor

cAdvisor:分析并公开来自运行容器的资源使用和性能数据

下载
 curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
给与可执行权限
chmod +x /usr/local/bin/docker-compose
mkdir compoes_way

创建prometheus.yml文件
scrape_configs:
- job_name: cadvisor
  scrape_interval: 5s
  static_configs:
  - targets:
    - cadvisor:8080

创建docker-compose.yml文
version: '3.2'  #版本 3.2
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
    - 9090:9090
    command:
    - --config.file=/etc/prometheus/prometheus.yml
    volumes:
    - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
    depends_on:
    - cadvisor
  cadvisor:
    image: google/cadvisor:latest
    container_name: cadvisor
    privileged: true 
    ports:
    - 8080:8080
    volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro
    depends_on:
    - redis
  redis:
    image: redis:latest
    container_name: redis
    ports:
    - 6379:6379
    
导入cadvisor镜像
.....

运行安装
docker-compose up -d

docker-compose ps#得到如下结构表示成功了
   Name                 Command               State           Ports
----------------------------------------------------------------------------
cadvisor     /usr/bin/cadvisor -logtostderr   Up      8080/tcp
prometheus   /bin/prometheus --config.f ...   Up      0.0.0.0:9090->9090/tcp
redis        docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp

Docker-Compose.yml配置讲解

version: '2.0'  # 版本号
services:  #固定名称
  redis-6374:      #服务名称 可自定义如:elasticsearch,redis,mysql,abcd等
    image: whayercloud.registry:5000/redis:5-alpine   #从指定的镜像中启动容器,可以是存储仓库、标签
                              #以及镜像 ID  如果镜像不存在,Compose 会自动拉去镜像
    container_name: sdqj-components-redis-6374  #确定app容器的命名
    privileged: true   #开启权限
    network_mode: "host"   #可以指定使用服务或者容器的网络 其他参数:bridge none等
    restart: always
    environment:  #保存MY_HOST_IP变量到镜像里面,启动的容器也会包含这些变量设置
      MY_HOST_IP: ${MY_HOST_IP}  #后面要用到MY_HOST_IP参数
    volumes:
    #  - /var/lib/mysql  只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
    #  - ./cache:/tmp/cache   以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器
    #  - /opt/data:/var/lib/mysql  使用绝对路径挂载数据卷
      - ${SDQJ_COMPONENTS_DIR}/redis-cluster/6375/conf/redis.conf:/usr/local/etc/redis/redis.conf#容器外文件映射到容器内,修容器件外路径的redis.conf完成容器内的修改
    command: >  #可以覆盖容器启动后默认执行的命令
      sh -c "echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf   
      && redis-server /usr/local/etc/redis/redis.conf --cluster-announce-ip ${MY_HOST_IP} --appendonly yes"  #用了变量和创建的地址~
    ports:
      - "8080"    #映射端口 端口小于60你可能会得到错误得结果
      #- "8080:8080" 其他格式
      #- "3000-3005" 随机端口
    deploy:   #配置资源限制  除下面两个 还有其他
      resources:
        limits:#限制不超过 50M 的内存和 0.50(50%)可用处理时间(CPU)
          cpus: '0.50'
          memory: 50M
        reservations:  #留 20M 了内存和 0.25 CPU时间
          cpus: '0.25'
          memory: 20M
    networks:   #加入指定网络
      - front-tier
      - back-tier

networks:
  front-tier:
    driver: bridge
  back-tier:
driver: bridge