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. java 字符串转为list

     List<String> idList = Arrays.asList(irIds.split(",")); 

  2. Apache 慢连接dos

    http://neue.v2ex.com/t/108717------不实用 http://www.blogjava.net/bukebushuo/articles/293776.html http: ...

  3. linux DRM/KMS 测试工具 modetest、kmscude、igt-gpu-tools (二)

    kmscube   kmscube is a little demonstration program for how to drive bare metal graphics without a c ...

  4. Java 8 中如何优雅的处理集合

    Java 8 中如何优雅的处理集合(Stream API) 在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增.删.改.查.聚合.统计.过滤等操作.相比之下,关系型数据库中也同样有 ...

  5. 转 document.compatMode介绍

    对于document.compatMode,很多朋友可能都根我一样很少接触,知道他的存在却不清楚他的用途.今天在ext中看到 document.compatMode的使用,感觉这个对于我们开发兼容性的 ...

  6. MySQL的CHAR 和 VARCHAR的区别

    CHAR 和 VARCHAR 类型,CHAR 列的长度固定, VARCHAR 列中的值为可变长字符串.在检索的时候,CHAR 列删除了尾部的空格,而 VARCHAR 则保留这些空格s

  7. 2.Linux系统之硬盘与分区基础知识

    我们是在虚拟机上安装的Linux系统.在安装的过程中,可能会遇到磁盘分区的问题,我们下面简单介绍一下分区的原理. 1.硬盘的基础知识 下面是一块空白的硬盘: 这是一块格式化后的硬盘: 格式化就是,在空 ...

  8. 非静态代码块(非static初始化块)&静态代码块(static初始化块)

    非静态代码块: TestOrder: package com.aff.singleton; /* 类的第四个成员:初始化块(代码块) 代码块: 如果有修饰的话只能使用static 分类:非静态代码块: ...

  9. MySQL8.0 忘记密码、重置密码

    修改my.cnf [mysqld] 域中添加skip-grant-tables 重启mysqld服务 systemctl restart mysqld 重新使用空密码登录,直接敲回车 mysql -u ...

  10. 03 . Redis集群

    Redis集群方案 Redis Cluster 集群模式通常具有 高可用.可扩展性.分布式.容错等特性.Redis分布式方案一般有两种 客户端分区方案 客户端 就已经决定数据会被 存储到哪个 redi ...