arthas 监控 docker里的项目 docker摄像头_Docker

1、安装Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

Docker 包括三个基本概念:

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比

如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker架构如图下图所示:

arthas 监控 docker里的项目 docker摄像头_docker_02

Docker最直接便捷的安装方式就是使用官方安装脚本自动安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

检验:

arthas 监控 docker里的项目 docker摄像头_Docker_03

使用国内Docker镜像仓库,配置Docker镜像加速:

vim /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

重启Docker:

service docker restart

检验是否成功:

docker info

arthas 监控 docker里的项目 docker摄像头_docker_04

2、Docker安装prometheus以及grafana:

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架构:

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 等.

arthas 监控 docker里的项目 docker摄像头_docker_05

Docker安装prometheus
将prometheus.yml放置在/path/prometheus文件目录下,
文件内容如下:

global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Defaul
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is eve
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ['localhost:9090']

Docker命令启动:

docker run -d --name=prometheus --restart=always\
    -p 9090:9090 \
    -v /path/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

查看运行状态:

arthas 监控 docker里的项目 docker摄像头_docker_06

浏览器访问hostip:9090,出现以下界面说明安装成功。

arthas 监控 docker里的项目 docker摄像头_数据_07

查看prometheus server自身的监控数据,hostip:9090/metrics

arthas 监控 docker里的项目 docker摄像头_数据_08

Docker安装grafana,命令如下:

Docker run -d --name=grafana --restart=always -p 3000:3000 grafana/grafana

查看docker containers列表

arthas 监控 docker里的项目 docker摄像头_docker_09

初次使用账号admin,密码admin登录:

arthas 监控 docker里的项目 docker摄像头_docker_10

添加prometheus server的数据库data source:

arthas 监控 docker里的项目 docker摄像头_Docker_11


arthas 监控 docker里的项目 docker摄像头_Docker_12

输入prometheus地址后保存测试能否检测到:

arthas 监控 docker里的项目 docker摄像头_Docker_13


arthas 监控 docker里的项目 docker摄像头_docker_14

导入prometheus的dashboard:

arthas 监控 docker里的项目 docker摄像头_数据_15

返回Home主页,查看prometheus监控数据界面:

arthas 监控 docker里的项目 docker摄像头_Docker_16

3、prometheus监控openstack云服务平台

Docker安装openstack的监控exporter(相当于数据采集器),

Openstack的api接口信息如下:

arthas 监控 docker里的项目 docker摄像头_数据_17

创建admin.novarc文件内容如下:

OS_PROJECT_DOMAIN_NAME=Default
OS_USER_DOMAIN_NAME=Default
OS_PROJECT_NAME=admin
OS_USERNAME=admin
OS_PASSWORD=admin
OS_IDENTITY_API_VERSION=3
OS_AUTH_URL=http://192.168.30.54/identity/v3

Docker命令启动:

docker run -itd \
--name=openstack  -p 9183:9183\
 --env-file=$(pwd)/admin.novarc\
 --restart=unless-stopped moghaddas/prom-openstack-exporter

采集数据端口9183:

arthas 监控 docker里的项目 docker摄像头_数据_18

在prometheus server的配置文件中加入target:

arthas 监控 docker里的项目 docker摄像头_数据_19

在grafana中导入官方opensatck监控仪表盘,编号是7924:

监控

arthas 监控 docker里的项目 docker摄像头_Docker_20

选择数据库:

arthas 监控 docker里的项目 docker摄像头_Docker_21

进入仪表盘:

arthas 监控 docker里的项目 docker摄像头_Docker_22

4、prometheus监控openstack的宿主机:
Docker安装node-exporter:

docker run -d \
  --net="host" \
  --pid="host" \
  --name node-exporter \
  -v "/:/host:ro,rslave" \
  quay.io/prometheus/node-exporter \
  --path.rootfs /host

查看运行状态:

arthas 监控 docker里的项目 docker摄像头_数据_23

查看监控数据:

arthas 监控 docker里的项目 docker摄像头_docker_24

在prometheus配置中添加任务job任务,然后在grafana中导入node-exporter仪表盘(编号11207),查看监控仪表盘:

arthas 监控 docker里的项目 docker摄像头_数据_25