Prometheus监控Docker Swarm集群(一)

cAdvisor简介

为了解决容器的监控问题,Google开发了一款容器监控工具cAdvisor(Container Advisor),它为容器用户提供了对其运行容器的资源使用和性能特征的直观展示。 它是一个运行守护程序,用于收集,聚合,处理和导出有关正在运行的容器的信息。

cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU、内存、网络及文件系统使用情况。

cAdvisor使用go语言开发,如果想了解更多请访问其官方github

安装cAdvisor

cAdvisor 有两种方法来运行,一种是以二进制可执行文件安装运行,配置 systemd 来管理,另一种是以 Docker 容器运行,使用docker-compose来管理,在这里我们只讲docker方式部署与管理方法。

我们可以通过以下命令来在实验环境的虚拟机运行cAdvisor容器:

Docker方式启动

docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=18080:18080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest

以上的启动方式对于管理来说稍显繁琐,为了方便管理,我们使用docker-compose来管理

安装docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
mkdir -p /data/docker-monitor/

docker-compose文件

cat > docker-compose.yml <<EOF
version: '3.2'
volumes:
prometheus_data: {}
grafana_data: {}
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
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
EOF
# Prometheus.yml文件
cat > prometheus.yml <<EOF
global:
scrape_interval: 15s # 每15秒抓取一次数据,默认值为1分钟
evaluation_interval: 15s # 每15秒检测一次可用性,默认值为1分钟
scrape_timeout: 60s # 抓取的超时时间 # Alertmanager
alerting:
alertmanagers:
- static_configs:
#- targets: ['127.0.0.1:9093']
# 抓取配置配置
scrape_configs:
- job_name: 'cadvisor'
scrape_interval: 10s
static_configs:
- targets: ['localhost:8080']
labels:
instance: 'cadvisor-server'
alias: 'cadvisor'
EOF
# 启动
docker-compose up -d

docker会自动去pull images,需要等一会,等待启动完成后,我们直接可以访问 http://192.168.1.220:8080

以上是我们为了大家能了解docker是如何监控实现的方法的,现在我们进入docker监控具体环节,GitHub上已经有了已经配置好的开源,直接拿来用即可。

git clone https://github.com/stefanprodan/dockprom.git
ADMIN_USER=admin ADMIN_PASSWORD=admin docker-compose up -d

先决条件:

  • Docker Engine >= 1.13
  • Docker Compose >= 1.11

Containers:

  • Prometheus (metrics database) http://:9090
  • Prometheus-Pushgateway (push acceptor for ephemeral and batch jobs) http://:9091
  • AlertManager (alerts management) http://:9093
  • Grafana (visualize metrics) http://:3000
  • NodeExporter (host metrics collector)
  • cAdvisor (containers metrics collector)
  • Caddy (reverse proxy and basic auth provider for prometheus and alertmanager)

启动完成以后,我们直接访问http://192.168.1.220:3000端口,使用初始化的账号密码,admin:admin进入,此时会提示你修改密码,修改成你需要的密码即可。

  redis:
image: redis:latest
container_name: redis
restart: unless-stopped
expose:
- 6379
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
# 重启
docker-compose up -d

这时访问CAdvisor,会发现container中已经有了redis这个容器了。

Prometheus监控Docker Swarm集群(一)的更多相关文章

  1. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  2. 云计算之路-阿里云上:节点 CPU 波动引发 docker swarm 集群故障

    非常抱歉,今天 10:05-10:20 左右,我们用阿里云服务器搭建的 docker swarm 集群又出现故障,又是因为突然的节点 CPU 波动. 受这次故障影响的站点有 闪存,博问,班级,园子,短 ...

  3. 云计算之路-阿里云上:3个manager节点异常造成 docker swarm 集群宕机

    今天 11:29 - 11:39 左右,docker swarm 集群 3 个 manager 节点同时出现异常,造成整个集群宕机,由此给您带来很大的麻烦,请您谅解. 受此次故障影响的站点有:博问,闪 ...

  4. [转载] Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0.33 c4 -&g ...

  5. Docker Swarm 集群环境搭建及弹性服务部署

    上一篇文章<Docker Swarm 集群管理利器核心概念扫盲>中我们把 Swarm 重要的概念性知识给大家讲解了一波,理论完事就该实战了,这篇文章带大家从零开始,搭建 Docker Sw ...

  6. 通过docker-machine和etcd部署docker swarm集群

    本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...

  7. 从零开始搭建Docker Swarm集群

    从零开始搭建Docker Swarm集群 检查节点Docker配置 1. 打开Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker2. 添加-H tcp:/ ...

  8. docker + swarm 集群

    docker + swarm 集群 导读 Swarm是Docker公司在2014年12月初新发布的容器管理工具.和Swarm一起发布的Docker管理工具还有Machine以及Compose.Swar ...

  9. Docker Swarm集群

    Docker Swarm集群 IP 10.6.17.11  管理节点 IP 10.6.17.12   节点A IP 10.6.17.13   节点B IP 10.6.17.14   节点C 安装 Sw ...

随机推荐

  1. MySQL事务隔离之MVCC版本控制

    MVCC简介 MVCC是一种多版本并发控制机制. MVCC是为了解决什么问题? 大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和 ...

  2. kubernetes pod的弹性伸缩———基于pod自定义custom metrics(容器的IO带宽)的HPA

    背景 ​ 自Kubernetes 1.11版本起,K8s资源采集指标由Resource Metrics API(Metrics Server 实现)和Custom metrics api(Promet ...

  3. mysql小白系列_03 体系结构-线程池

    thread pool的原理是什么? 为什么用double write就能解决page坏的问题? Innodb redo log 与 binlog有什么区别?有了Innodb redo log为什么还 ...

  4. Centos慢慢长大(一)

    1.写在前面 这将是一个系列性的文章.可能更多的是记录我在学习的过程中的一些感悟吧.我想强调的是在这一系列文章里我会从最小化的安装开始,然后逐渐的增加需要安装的软件.就象一个婴儿的诞生,慢慢的学走路. ...

  5. 查找最大元素(hdu2025)

    输入方式:直接循环输入不带空格的未知长度的字符串. 思考:直接循环输入未知长度的字符串,用while(gets_s()),循环内外不用getchar().(注意,每次字符串都是以整体输入) #incl ...

  6. 【万字图文-原创】 | 学会Java中的线程池,这一篇也许就够了!

    碎碎念 关于JDK源码相关的文章这已经是第四篇了,原创不易,粉丝从几十人到昨天的666人,真的很感谢之前帮我转发文章的一些朋友们. 从16年开始写技术文章,到现在博客园已经发表了222篇文章,大多数都 ...

  7. SQL——CREATE、ALTER、DROP和VIEW

    CREATE DATABASE - 创建新数据库    语法:CREATE DATABASE database_nameALTER DATABASE - 修改数据库    CREATE TABLE - ...

  8. Java——反射三种方式的效率对比

    转载自:https://blog.csdn.net/aitcax/article/details/52694423 1 使用field(效率最高)             long start = S ...

  9. DEDE自增序号 自动增加数字序号 autoindex属性

    在DEDE的模板制作过程中经常会需要用到1,2,3,4....这样的排序方式,这个时候就需要用到DEDE自带的自增序号产生函数 1.按顺序从1开始 需要使用到 [field:global runphp ...

  10. h5 编辑单选框的样式

    radio单选框样式设置 input[type=radio] { display: inline-block; vertical-align: middle; width: 20px; height: ...