docker || Prometheus监控容器

prometheus是什么?

是一个监控软件-》监控容器非常好,也可以监控其他的非容器的业务,例如:MySQL,nginx,redis,系统等
也是一个时序数据库
时序数据库:安装事情发生的时间记录数据的数据库 --》time series database

为什么需要配置文件Prometheus.yml?

我们需要修改配置文件,添加需要监控的主机。

grafana是什么?

grafana 是非常专业的出图软件:专门从别的数据库里抽取数据

监控容器通过安装部署Prometheus+cAdvisor实现

首先是得到配置文件Prometheus.yml

第1步:拉取镜像

[root@docker ~]# docker pull prom/prometheus
Using default tag: latest
latest: Pulling from prom/prometheus
Digest: sha256:f5c29683a301d4e5427fb0d985f794b1f743498310a4eadee75e85f5dba73a6d
Status: Image is up to date for prom/prometheus:latest
docker.io/prom/prometheus:latest

[root@docker ~]#  docker images
REPOSITORY                             TAG            IMAGE ID       CREATED         SIZE
prom/prometheus                        latest         a07b618ecd1d   37 hours ago    234MB

第2步:启动Prometheus的容器

[root@docker ~]# docker run -d -p9090:9090 --name sc-prom-1 prom/prometheus
49f6d66868da1cf48b19c79f67d00c58e234615953da4c74715aca06bd6fe091

[root@docker ~]# docker ps
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                       NAMES
49f6d66868da   prom/prometheus   "/bin/prometheus --c…"   4 seconds ago   Up 2 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   sc-prom-1

第3步:登录Prometheus的web界面

访问宿主机的ip对应的9090端口

http://192.168.102.136:9090

第4步:得到Prometheus的配置文件,从容器里直接拷贝出来

[root@docker ~]# mkdir /lianxi/prom
[root@docker ~]# cd /lianxi/prom
[root@docker prom]# docker cp sc-prom-1:/etc/prometheus/prometheus.yml .
Preparing to copy...
Successfully copied 2.56kB to /lianxi/prom/.
[root@docker prom]# ls
prometheus.yml

Prometheus监控容器需要使用一个软件cAdvisor;得到prometheus.yml之后,开始部署(需要机器里安装docker-compose)

  1. 编辑Prometheus.yml主配置文件,添加监控的容器cAdvisor为目标容器

[root@docker prom]# cat prometheus.yml |egrep -v "#|^$"
global:
alerting:
  alertmanagers:
    - static_configs:
        - targets:
rule_files:
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: cadvisor
    scrape_interval: 5s
    static_configs:
    - targets:
      - cadvisor:8080

2.新建一个docker-compose.yml文件

[root@docker prom]# vim docker-compose.yml
[root@docker prom]# cat docker-compose.yml 
version: '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: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    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

3.上传cadvisor.tar镜像到宿主机,导入镜像

[root@docker prom]# ls
cadvisor.tar  docker-compose.yml  prometheus.yml

[root@docker prom]# docker load -i cadvisor.tar 
ace0eda3e3be: Loading layer  5.843MB/5.843MB
33bb68b99ee4: Loading layer  102.4MB/102.4MB
d3174d703c76: Loading layer  13.25MB/13.25MB
8b7599e512b6: Loading layer  44.19MB/44.19MB
Loaded image: gcr.io/cadvisor/cadvisor:latest

[root@docker prom]# docker images
gcr.io/cadvisor/cadvisor               latest         68c29634fe49   2 years ago     163MB

4.使用docker compose去启动Prometheus,cAdvisor,redis容器

[root@docker prom]# docker compose up -d
[+] Running 2/3
 ⠿ Container redis       Started                                                                                                                                                                            1.4s
 ⠿ Container cadvisor    Started                                                                                                                                                                            2.2s
 ⠿ Container prometheus  Starting                                                                                                                                                                           2.2s
Error response from daemon: driver failed programming external connectivity on endpoint prometheus (b038de792eca4716282f4ebbb9cc4678f7afbdff0a6557c37de5964a23eabbec): Bind for 0.0.0.0:9090 failed: port is already allocated

这里遇到一个报错:说Prometheus容器的端口已被分配。

解决:停掉之前获取Prometheus的配置文件的容器或者修改Prometheus配置文件或者换个端口号。

[root@docker prom]# docker ps
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS         PORTS                                       NAMES
49f6d66868da   prom/prometheus   "/bin/prometheus --c…"   13 minutes ago   Up 5 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   sc-prom-1
[root@docker prom]# docker stop sc-prom-1
sc-prom-1
[root@docker prom]# docker rm sc-prom-1
sc-prom-1

[root@docker prom]# docker compose down
[+] Running 4/4
 ⠿ Container prometheus  Removed                                                                                                                                                                            0.0s
 ⠿ Container cadvisor    Removed                                                                                                                                                                            0.3s
 ⠿ Container redis       Removed                                                                                                                                                                            0.2s
 ⠿ Network prom_default  Removed   
                                                                                                                                                                         0.1s
[root@docker prom]# docker compose up -d
[+] Running 4/4
 ⠿ Network prom_default  Created                                                                                                                                                                            0.1s
 ⠿ Container redis       Started                                                                                                                                                                            0.5s
 ⠿ Container cadvisor    Started                                                                                                                                                                            0.8s
 ⠿ Container prometheus  Started                                                                                                                                                                            1.3s
[root@docker prom]# docker ps
CONTAINER ID   IMAGE                             COMMAND                   CREATED         STATUS                            PORTS                                       NAMES
da5b1d6be192   prom/prometheus:latest            "/bin/prometheus --c…"   8 seconds ago   Up 6 seconds                      0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   prometheus
b60662a84522   gcr.io/cadvisor/cadvisor:latest   "/usr/bin/cadvisor -…"   8 seconds ago   Up 7 seconds (health: starting)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   cadvisor
7c2f76e3e516   redis:latest                      "docker-entrypoint.s…"   8 seconds ago   Up 7 seconds                      0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   redis
[root@docker prom]# 

5.访问cadvisor的效果

http://192.168.102.136:8080

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩未零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值