GVKun编程网logo

带有 docker swarm 的 Prometheus cAdvisor(docker swarm portainer)

9

在本文中,我们将带你了解带有dockerswarm的PrometheuscAdvisor在这篇文章中,我们将为您详细介绍带有dockerswarm的PrometheuscAdvisor的方方面面,并解

在本文中,我们将带你了解带有 docker swarm 的 Prometheus cAdvisor在这篇文章中,我们将为您详细介绍带有 docker swarm 的 Prometheus cAdvisor的方方面面,并解答docker swarm portainer常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的cAdvisor+InfluxDB+Grafana 搭建 Docker . Swarm集群性能监控平台、cAdvisor+Prometheus+Grafana监控docker、Docker - 安装 - Prometheus - 配置文件详解、Docker Prometheus配置

本文目录一览:

带有 docker swarm 的 Prometheus cAdvisor(docker swarm portainer)

带有 docker swarm 的 Prometheus cAdvisor(docker swarm portainer)

如何解决带有 docker swarm 的 Prometheus cAdvisor?

我已经使用 docker 服务集群设置了一个 docker Cadvisor,需要使用主动服务发现动态监控 docker 集群的节点。

如果我已经使用 docker service 命令通过 docker 集群启动了 prometheus CAdvisor,它运行良好,我能够成功地动态发现 docker 集群节点。但是,如果我在 docker compose-file 中传递了该命令的相同参数,则看不到任何节点。以下是prometheus CAdvisor的docker compose配置。

cadvisor:
image: google/cadvisor
container_name: cadvisor
ports:
    - target: 8080
      mode: host
      published: 8040
network_mode: "host"
deploy:
    mode: replicated
command:
    - --docker_only=true
        labels:
    - "prometheus-job=cadvisor"
        volumes:
    - /:/rootfs:ro
    - /var/run:/var/run
    - /sys:/sys:ro
    - /var/lib/docker:/var/lib/docker:ro
    - /var/run/docker.sock:/var/run/docker.sock:rw

Docker 服务命令:

  docker service create --name cadvisor -l prometheus-job=cadvisor \
--mode=global --publish published=8040,target=8080,mode=host \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock,ro \
--mount type=bind,src=/,dst=/rootfs,src=/var/run,dst=/var/run \
--mount type=bind,src=/sys,dst=/sys,src=/var/lib/docker,dst=/var/lib/docker,ro \
google/cadvisor -docker_only

在这方面的任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

cAdvisor+InfluxDB+Grafana 搭建 Docker . Swarm集群性能监控平台

cAdvisor+InfluxDB+Grafana 搭建 Docker . Swarm集群性能监控平台

1、基本概念

​ 既然是对Docker的容器进行监控,我们就不自己单独搭建cAdvisor、InfluxDB、Grarana了,本文中这三个实例,主要以Docker容器方式运行。

本文中的案例会有四台机器,他们的Host和IP地址如下,四台机器的集群搭建可以参考<Centos7的Docker Swarm集群的简单实例>

c1 -> 10.0.0.31
c2 -> 10.0.0.32
c3 -> 10.0.0.33
c4 -> 10.0.0.34

1.1、什么是cAdvisor?

​ cAdvisor 为Docker容器用户提供了了解运行时容器资源使用和性能特征的工具。cAdvisor的容器抽象基于Google的lmctfy容器栈,因此原生支持Docker容器并能够“开箱即用”地支持其他的容器类型。cAdvisor部署为一个运行中的daemon,它会收集、聚集、处理并导出运行中容器的信息。这些信息能够包含容器级别的资源隔离参数、资源的历史使用状况、反映资源使用和网络统计数据完整历史状况的柱状图。

1.2、什么是InfluxDB?

​ InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。

其主要特色功能

  • 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
  • 可度量性:你可以实时对大量数据进行计算
  • 基于事件:它支持任意的事件数据

InfluxDB的主要特点

  • 无结构(无模式):可以是任意数量的列
  • 可拓展的
  • 支持min, max, sum, count, mean, median 等一系列函数,方便统计
  • 原生的HTTP支持,内置HTTP API
  • 强大的类SQL语法
  • 自带管理界面,方便使用

1.3、什么是Grafana?

​ Graphite 是一款开源的监控绘图工具。可以实时收集、存储、显示时间序列类型的数据(time series data),有些类似Kibana的东西。

以下是官方的说明

  • 用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。
  • 常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。
  • 有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、Cloudwatch、Prometheus、InfluxDB、Elasticsearch。

2、开始安装Docker性能监控组件

2.1、创建一个overlay网络

​ 在docker 1.12以前, swarm集群需要一个额外的key-value存储(consul, etcd etc). 来同步网络配置, 保证所有容器在同一个网段中. 在docker 1.12已经内置了这个存储, 集成了overlay networks的支持。

​ 下面我们创建一个名为logging的overlay网络,用于后面的容器间相互通信。

➜ /Users/lion >docker network create --driver overlay logging
451negncg10ahru13hgn2k9nt
➜ /Users/lion >docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
1299968d22b6        bridge              bridge              local
60g7y3cbkdfe        docker-net          overlay             swarm
4d7292be91ca        docker_gwbridge     bridge              local
e1b111616be1        host                host                local
dxo4vcd9mig1        ingress             overlay             swarm
451negncg10a        logging             overlay             swarm
bc0a8040cae6        none                null                local

​ 在docker network ls列表中,可以看到logging网络的SCOPEswarm,表示在整个swarm集群是生效的。如果是在多台主机的集群中,overlay网络在没有被使用的时候,只会在manage节点出现,使用后会自动同步到其他节点。

2.2、安装InfluxDB 0.13

​ 我们第一个先安装 InfluxDB,在用于收集swarm性能数据

docker service create --network logging \
-p 8083:8083 -p 8086:8086 \
--mount source=influxdb-vol,type=volume,target=/var/lib/influxdb \
--name=influxdb \
--constraint ''node.hostname==c1'' \
tutum/influxdb

8086用于Influxdb数据读写,8083用于数据库管理界面

--constraint ''node.hostname==c1'' 对服务进行约束,指定在c1机器上运行

—mount 挂载一个类型为volume的目录到容器上,实现数据持久化。在c1上运行docker volume ls命令可以查看目录的情况,运行docker volume inspect influxdb-vol命令,可以查看目录的详细信息

​ InfluxDB容器创建成功后,可以通过http://10.0.0.31:8083/打开管理界面。点击右上角的齿轮图标,登录到InfluxDB数据库,默认用户名是root,密码是root,然后点击save进行保存

​ 创建cadvisor数据库,用于收集存储Docker Swarm的性能数据,在输入框输入CREATE DATABASE "cadvisor"然后按回车,执行命令。

​ 在输入框输入SHOW DATABASES,可以看到我们刚才创建的数据库 ​

2.3、安装cAdvisor 0.24.1

​ 创建cAdvisor容器,并连接到InfluxDB。​

docker service create --network logging \
--name cadvisor \
-p 8080:8080 \
--mode global \
--mount source=/var/run,type=bind,target=/var/run,readonly=false \
--mount source=/,type=bind,target=/rootfs,readonly=true \
--mount source=/sys,type=bind,target=/sys,readonly=true \
--mount source=/var/lib/docker,type=bind,target=/var/lib/docker,readonly=true \
google/cadvisor:v0.24.1 -storage_driver=influxdb -storage_driver_host=influxdb:8086 -storage_driver_db=cadvisor

--mode global 在集群中的每个节点创建一个服务,能够收集每一台机器的docker性能数据

--mount 挂载本地docker socket用于监控docker性能

-storage_driver=influxdb 指定存储驱动,使cadvisor将数据存储到数据库中,更多存储插件,请参考这里

-storage_driver_host=influxdb:8086 InfluxDB数据库的地址

-storage_driver_db=cadvisor 数据库名称

如果要指定用户名可以用-storage_driver_user参数,默认是root

如果要指定密码可以用-storage_driver_password参数,默认是root

cAdvisor运行以后,可以通过http://10.0.0.31:8080/查看到Docker运行的机器和容器情况。

​ 通过http://10.0.0.31:8080/docker/,可以看到Docker服务器的基本信息,如Host、镜像数据、窗口数据等情况。多刷新几次会发现,每次都是不同的Host Name,这是因为Docker Swarm会默认使用到集群的任意一台机器上。稍后我们会介绍如何通过Grafana获取指定机器的数据指标。

​ 验证cAdvisor是否已经向InfluxDB存入数据。打开http://10.0.0.31:8083/的InfluxDB管理界面,点击右上角Database切换到cadvisor数据库,然后在输入框输入SHOW MEASUREMENTS可以看到已经创建了很多个表。

​ 假如我们要查询CPU数据,可以在输入框输入select * from cpu_usage_system limit 100,可以看到结果集如下:

2.4、安装Grafana

​ 安装Grafana,连接到InfluxDB容器

docker service create --network logging \
-p 3000:3000 \
--name grafana \
-e INFLUXDB_NAME=cadvisor \
-e INFLUXDB_USER=root \
-e INFLUXDB_PASS=root \
-e GF_SMTP_ENABLED=true \
-e GF_SMTP_SKIP_VERIFY=true \
-e GF_SMTP_HOST=smtp.163.com:25 \
-e GF_SMTP_USER=static@163.com \
-e GF_SMTP_PASSWORD=fuck123 -e GF_SMTP_FROM_ADDRESS=static@163.com \
--constraint ''node.hostname==elk2'' \
grafana/grafana

默认admin的用户名和密码是admin/admin

也可以通过-e "GF_SECURITY_ADMIN_PASSWORD=passwd"参数来指定一个admin用户名的密码

2.5、登录到Grfana,并配置数据源

​ 运行起Grfana容器后,通过浏览器打开http://10.0.0.31:3000,输入用户名admin,密码admin进行登录

​ 点击左上角图标, 选择Data Sources, 然后点击Add data source,添加完以上信息后,点击Add,会看到提示Success Data source is working,如下图

在Name输入influxdb_source

在Type选择InfluxDB

在Url输入http://influxdb:8086

在Database输入cadvisor

在User输入root

在Password输入root

2.6、配置Grafana的Docker监控

​ 现在是比较有趣的部分,让我们来用Grafana绘制,cAdvisor存储到InfluxDB的数据图表。

2.6.1、Filesystem storage limit and usage

​ 点击左上角的图标,鼠标移动到Dashboard菜单,在展开的菜单中,点击New。然后在切换的页面中,点击Graph

​ 在接下来的页面中,点击图形的Panel Title,在弹出的菜单中选择Edit

​ 在General面板中的Title处,输入Filesystem storage limit and usage

​ 在Metrics面板的 Panel data source选择Influxdb_source,点击右侧的Add query

A query:SELECT mean("value") FROM "fs_limit" WHERE "com.docker.swarm.node.id" = ''cjip6qvmbfvf4sk4wzc1a37h0'' AND $timeFilter GROUP BY time($interval) fill(null)
B query:SELECT mean("value") FROM "fs_usage" WHERE "com.docker.swarm.node.id" = ''cjip6qvmbfvf4sk4wzc1a37h0'' AND $timeFilter GROUP BY time($interval) fill(null)

其中cjip6qvmbfvf4sk4wzc1a37h0c1的nodeID,通过docker node ls可以获取到

​ 在Axes面板,Left Y->Unit->data(Metric)->bytes, Right Y->Unit->data(Metric),最后点击Graph右侧的X进行关闭,就可以看到状态了。

2.6.2、CPU Usage

​ 鼠标移到屏幕左侧的三个小点,点击Add Panel,创建一个Graph绘图,点击图形的Panel Title,在弹出的菜单中选择Edit,在General面板的Title输入CPU Usage

​ 在Metrics面板选择influxdb_source数据源。

​ query的内容如下:

A query:SELECT mean("value") FROM "cpu_usage_system" WHERE "com.docker.swarm.node.id" = ''cjip6qvmbfvf4sk4wzc1a37h0'' AND "com.docker.swarm.task.name" = ''cadvisor.0'' AND $timeFilter GROUP BY time($interval) fill(null)
B query:SELECT mean("value") FROM "cpu_usage_system" WHERE "com.docker.swarm.node.id" = ''cjip6qvmbfvf4sk4wzc1a37h0'' AND "com.docker.swarm.task.name" = ''influxdb.1'' AND $timeFilter GROUP BY time($interval) fill(null)

注意替换node.id

com.docker.swarm.task.name是选择监控的容器名称,示例中只监控运行在c1机器上的cadvisorinfluxdb服务

​ 在Axes面板,Left Y->Unit->time->Hertz(1/s), Right Y->time->Hertz(1/s),最后点击Graph右侧的X进行关闭,就可以看到状态了,到现在我们已经产生两个给图如下:

2.6.3、Memory Usage

​ 点击屏幕上的ADD ROW,继续创建一个Graph绘图,点击图形的Panel Title,在弹出的菜单中选择Edit,在General面板的Title输入Memory Usage

​ 在Metrics面板选择influxdb_source数据源,query如下:

A query:SELECT mean("value") FROM "memory_usage" WHERE "com.docker.swarm.node.id" = ''cjip6qvmbfvf4sk4wzc1a37h0'' AND "container_name" = ''cadvisor.0.4go1l7pbtq7gcgfxjcxhpzbtu'' AND $timeFilter GROUP BY time($interval) fill(null)
B query:SELECT mean("value") FROM "memory_usage" WHERE "com.docker.swarm.node.id" = ''cjip6qvmbfvf4sk4wzc1a37h0'' AND "container_name" = ''influxdb.1.5mfb5qoownsfms9vkfgowlsaq'' AND $timeFilter GROUP BY time($interval) fill(null)

​ 在Axes面板,Left Y->Unit->data(Metric)->bytes, Right Y->Unit->data(Metric),最后点击Graph右侧的X进行关闭。

2.6.4、Network Traffic

​ 鼠标移到新创建这一行屏幕左侧的三个小点,点击Add Panel,创建一个Graph绘图,点击图形的Panel Title,在弹出的菜单中选择Edit,在General面板的Title输入Network Traffic

​ 在Metrics面板选择influxdb_source数据源,query如下:

A query:SELECT mean("value") FROM "rx_bytes" WHERE "com.docker.swarm.node.id" = ''cjip6qvmbfvf4sk4wzc1a37h0'' AND $timeFilter GROUP BY time($interval) fill(null)
B query:SELECT mean("value") FROM "tx_bytes" WHERE "com.docker.swarm.node.id" = ''cjip6qvmbfvf4sk4wzc1a37h0'' AND $timeFilter GROUP BY time($interval) fill(null)

​ 在Axes面板, Left Y->Unit->data rate->bytes/sec, Right Y->Unit->time->bytes/sec,最后点击Graph右侧的X进行关闭。

cAdvisor+Prometheus+Grafana监控docker

cAdvisor+Prometheus+Grafana监控docker

                               cAdvisor+Prometheus+Grafana监控docker

一、cAdvisor(需要监控的主机都要安装)

官方地址:https://github.com/google/cadvisor

CAdvisor是谷歌开发的用于分析运行中容器的资源占用和性能指标的开源工具。CAdvisor是一个运行时的守护进程,负责收集、聚合、处理和输出运行中容器的信息。
注意在查找相关资料后发现这是最新版cAdvisor的bug,换成版本为google/cadvisor:v0.24.1 就ok了,映射主机端口默认是8080,可以修改。

sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8090:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:v0.24.1

cAdvisor exposes a web UI at its port:
http://<hostname>:<port>/

下图为cAdvisor的web界面,数据实时刷新但是不能存储。


 查看json格式
 http://192.168.247.212:8090/metrics
 

二、Prometheus

官方地址:https://prometheus.io/
随着容器技术的迅速发展,Kubernetes 已然成为大家追捧的容器集群管理系统。Prometheus 作为生态圈 Cloud Native Computing Foundation(简称:CNCF)中的重要一员,其活跃度仅次于 Kubernetes, 现已广泛用于 Kubernetes 集群的监控系统中。本文将简要介绍 Prometheus 的组成和相关概念,并实例演示 Prometheus 的安装,配置及使用,以便开发人员和云平台运维人员可以快速的掌握 Prometheus。
Prometheus 简介
Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。
作为新一代的监控框架,Prometheus 具有以下特点:

    强大的多维度数据模型:

  •         时间序列数据通过 metric 名和键值对来区分。
  •         所有的 metrics 都可以设置任意的多维标签。
  •         数据模型更随意,不需要刻意设置为以点分隔的字符串。
  •         可以对数据模型进行聚合,切割和切片操作。
  •         支持双精度浮点类型,标签可以设为全 unicode。


    灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
    易于管理: Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
    高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。
    使用 pull 模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。
    可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端。
    可以通过服务发现或者静态配置去获取监控的 targets。
    有多种可视化图形界面。
    易于伸缩。

需要指出的是,由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100% 准确的情形。但如果用于记录时间序列数据,Prometheus 具有很大的查询优势,此外,Prometheus 适用于微服务的体系架构
Prometheus 组成及架构

Prometheus 生态圈中包含了多个组件,其中许多组件是可选的:

  •     Prometheus Server: 用于收集和存储时间序列数据。
  •     Client Library: 客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server。当 Prometheus server 来 pull 时,直接返回实时状态的 metrics。
  •     Push Gateway: 主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的 metrics,对于机器层面的 metrices,需要使用 node exporter。
  •     Exporters: 用于暴露已有的第三方服务的 metrics 给 Prometheus。
  •     Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。一些其他的工具。


Prometheus 架构图

安装步骤:

wget https://github.com/prometheus/prometheus/releases/download/v2.8.0/prometheus-2.8.0.linux-amd64.tar.gz
tar -xf prometheus-2.8.0.linux-amd64.tar.gz
cd prometheus-2.8.0.linux-amd64
修改配置文件prometheus.yml,添加以下内容
    static_configs:
    - targets: ['192.168.247.211:9090']
  - job_name: 'docker'
    static_configs:
    - targets:
      - "192.168.247.211:8090"
      - "192.168.247.212:8090"

cp prometheus promtool /usr/local/bin/

启动:
nohup prometheus --config.file=./prometheus.yml &

 我的完整简单prometheus.yml配置文件:

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['192.168.247.211:9090']
  - job_name: 'docker'
    static_configs:
    - targets: 
      - "192.168.247.211:8090"
      - "192.168.247.212:8090"

访问:http://192.168.247.211:9090

三、Grafana

官方地址:https://grafana.com/
安装步骤:

wget https://dl.grafana.com/oss/release/grafana-6.0.1-1.x86_64.rpm
sudo yum localinstall grafana-6.0.1-1.x86_64.rpm -y
systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
#设置开机自启动
Enable the systemd service so that Grafana starts at boot.
sudo systemctl enable grafana-server.service

1.访问:http://192.168.247.211:3000/login
默认密码:admin/admin

2.配置Prometheus数据源


3.下载模板模板地址:https://grafana.com/dashboards

4.导入模板

5.成品

 







Docker - 安装 - Prometheus - 配置文件详解

Docker - 安装 - Prometheus - 配置文件详解

普罗米修斯

官方下载
有的时候官方下载连接会失败,所以这里选择 docker 镜像来进行安装部署,非常的简单

详情可以去看云了解

看云

添加配置文件

[root@k8s-master deploy]# pwd
/home/deploy
[root@k8s-master deploy]#
[root@k8s-master deploy]# vim prometheus.yml

Ruby

Copy

编写配置文件 prometheus.yml

# my global config
global:
  # 设置抓取数据的时间间隔,间隔设置为每15秒一次。默认为每1分钟。
  scrape_interval:     15s
  # 设定抓取数据的超时时间,默认为10s
  scrape_timeout: 15s
  # 设置规则刷新,每15秒刷新一次规则。默认值为每1分钟。
  evaluation_interval: 15s

# 监控报警配置(需要额外安装 alertmanager组件)
alerting:
  alertmanagers:
  - static_configs:
    # 设定alertmanager和prometheus交互的接口,即alertmanager监听的ip地址和端口
    - targets: ["k8s.dev-share.top:9093"]

# 报警规则文件
rule_files:
  - ''/home/deploy/alertmanager/rules/*.yml''

# 普罗米修斯与抓取模块交互的接口配置
scrape_configs:
  # 一定要全局唯一, 采集 Prometheus 自身的 metrics
  - job_name: ''prometheus''
    # metrics_path defaults to ''/metrics''
    # scheme defaults to ''http''.
    static_configs:
      - targets: [''k8s.dev-share.top:9090'']

  # 一定要全局唯一, 采集 远程mysql的 metrics
  - job_name: ''uat-mysql''
    static_configs:
      # 因为阿里云有安全组策略,所以这里使用了外网域名
      - targets: [''k8s.dev-share.top:9104'']

  # 一定要全局唯一, 采集 远程mysql的 metrics
  - job_name: ''prod-mysql''
    static_configs:
      # 因为阿里云有安全组策略,所以这里使用了外网域名
      - targets: [''k8s.dev-share.top:9105'']

YAML

Copy

下载 Docker 镜像 / 安装 / 容器自启动 非集群用法配置

[root@k8s-master deploy]# docker pull prom/prometheus
[root@k8s-master deploy]#
[root@k8s-master deploy]# docker run -d --restart always --name prometheus -p 9090:9090 -v /home/deploy/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

Ruby

Copy

URL: 访问 http://k8s.dev-share.top:9090/targets

Docker Prometheus配置

Docker Prometheus配置

问题出在您的Dockerfiledocker-compose文件中。 Dockerfileprometheus.yml复制到/etc/prometheus目录。 docker-compose还将卷安装在同一目录中。在这种情况下,容器内目录中的现有文件将被屏蔽,因为docker将它们安装在现有文件之上。文件仍在容器中,但无法访问。从Dockerfile中删除COPY或从docker-compose中删除卷,或将它们挂载到另一个目录中。

,

此更新很适合我:

Dockerfile-prometheus:

...
COPY ./prometheus.yml /etc/prometheus/prometheus.yml
COPY ./prometheus.json /etc/prometheus/file_sd/prometheus.json
...

docker-compose.yml:

...
prometheus:
  container_name: grafana_prometheus_ctnr
  build:
    context: .
    dockerfile: Dockerfile-prometheus
  volumes:
    - ./prometheus-data:/etc/prometheus
  ports:
    - 9090:9090
  networks:
    - grafana-ntwk
...

prometheus.yml:

global:
  scrape_interval: 15s
  evaluation_interval: 15s
  scrape_timeout: 10s

scrape_configs:
  - job_name: 'monitoring'
    file_sd_configs:
      - files:
        - /etc/prometheus/file_sd/*.json

关于带有 docker swarm 的 Prometheus cAdvisordocker swarm portainer的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于cAdvisor+InfluxDB+Grafana 搭建 Docker . Swarm集群性能监控平台、cAdvisor+Prometheus+Grafana监控docker、Docker - 安装 - Prometheus - 配置文件详解、Docker Prometheus配置等相关知识的信息别忘了在本站进行查找喔。

本文标签: