使用Prometheus和cAdvisor来监控所创建的环境~EHW2018「开发环境设置」
总结
这篇文章是为了「企业“Hello, World”2018圣诞日历」的12/14而写的。在这个圣诞日历中,我们考虑到跨越多个条目的连贯故事,并计划在一个条目中尽可能涵盖一个主题。
这个记录的主题是使用Prometheus和cAdvisor来监控构建的环境。在本文之后,将与之前构建的环境相结合,形成这样一个世界。
前提条件
抱歉
-
- このEnterpfise “hello, world”シリーズは、ネタのためのエントリです。実環境でそのまま利用ことを目的とはしていません。
- 動かしやすさを優先してセキュリティを意図的に低くする設定など入れてありますのでご注意ください。
请指定读者
作为「企业“你好,世界”2018」的梗,我们设想了以下情况:
用几个容器来搭建开发环境。对了,必须要监控一下。不能只搭而不管。
普罗米修斯
普罗米修斯是一部古希腊的神话故事。
Prometheus是一个工具,可以将指标集中收集并查询。
它从多个数据提供方的”exporter”中定期收集数据值,并以用户指定的方式查看测量数据。
一起思考一下,cAdvisor
Prometheus会从多个“exporter”中收集数据,其中之一是从docker容器主机收集值的机制“cAdvisor”。我们将使用它来收集在这个Advent Calendar系列中创建的docker容器的测量值。
Docker Compose 可以进行重新表述为 “容器组合”。
在这个帖子中,我们将同时处理两个容器。
-
- ネットワークについて、新たに”intnet”を新設しました。基盤側だけが使うネットワークとして利用するイメージです。
-
- cAdvisorは、コンテナのホスト側の状態もいろいろ公開する雰囲気であることから、ネットワークを分けようと考えました。そのため、intnetという名称のdockerの内部ネットワークを作成しています。
- 後述しますが、prometheus自体も、認証がかけられる機能はなさそうです。後で公開側からは直接には見えないようにしようと考えており、その意味でも内部ネットワークを使おうと考えています。
ersion: '3.7'
networks:
extnet:
name: my-external-net
intnet:
name: my-internal-net
(中略)
cadvisor:
image: google/cadvisor:latest
restart: always
networks:
- intnet
ports:
- 8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
tty: true
stdin_open: true
prometheus:
image: prom/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
restart: always
networks:
- extnet
- intnet
ports:
- 9090:9090
volumes:
- '${CONF_DIR}/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml'
links:
- cadvisor
普罗米修斯的配置
Prometheus会指定其自身的操作,并确认Docker容器的运行情况。
global:
scrape_interval: 15s
external_labels:
monitor: 'ehw2018-monitor'
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: 'docker'
scrape_interval: 5s
static_configs:
- targets:
- cadvisor:8080
启动
由于Advent Calendar已经有其他服务正在运行,所以只会上传本次的内容。
$ sudo docker-compose up cadvisor prometheus
外貌等
Prometheus可以将从“exporter”收集到的值以“console”和“graph”的形式进行查看。下图展示了以1分钟间隔收集并绘制“container_cpu_system_seconds_total”查询的示例。(由于在写作时没有做任何特殊操作,因此没有变化)
请留意
按照Prometheus原始网站的安全性说明,单独来看,它并没有准备特定的认证机制。因此,在本系列中,计划采取通过某种中间件使用,或者将其放置在仅用于进行认证的反向代理的后面等相应的处理。
总结
在这篇文章中,我们将讨论”Enterprise “hello, world” 2018 Advent Calendar 2018″(EHW2018)的第14天,以Prometheus和cAdvisor为主题,介绍如何监控创建的环境。
作为EHW2018的话题,我打算在之后对我们设计的监控机制进行认证,并且开始着手开发应用程序。