美文网首页Docker容器程序园
构建Docker容器监控系统

构建Docker容器监控系统

作者: 赵阳_c149 | 来源:发表于2019-10-30 15:26 被阅读0次

在对容器进行测试和运维的过程中,经常需要对其进行监控,监控信息的主要来源就是日志。

Prometheus

Prometheus 是系统监控常用的工具。该项目最初是在SoundCloud上进行构建,由前google员工开发。为了让项目得到更多的关注,也是为了吸引更多的开发者对其进行完善,项目的开发者于 2012年对其进行开源,并于2016年加入CNCF,从而使其成为了继k8s之后的第二个托管项目。

Prometheus主要有以下特性:

  1. 多维数据模型:每条数据是包括度量名称和健值对标示的时间序列数据。例如对docker系统进行监控的过程中,获得了一下数据,其中metrics为container_cpu_user_seconds_total,一个健值对为image="goharbor/harbor-portal:v1.9.1"

container_cpu_user_seconds_total{container_label_build_date="20190906",container_label_com_docker_compose_config_hash="e9b74016b82d3dcef80df09387bcea54c6f96c1727a18a4df88bdcb4e9e4e8e4",container_label_com_docker_compose_container_number="1",container_label_com_docker_compose_oneoff="False",container_label_com_docker_compose_project="harbor",container_label_com_docker_compose_service="portal",container_label_com_docker_compose_version="1.24.1",container_label_maintainer="",container_label_name="Photon OS 2.0 Base Image",container_label_vendor="VMware",id="/docker/b84902ed5f168c2e17e9fca0328d5bbe12c87a7a24e646bc514715d46e5965f1",image="goharbor/harbor-portal:v1.9.1",name="harbor-portal"} 60.99

  1. PromSQL:灵活性查询语言,可以利用多维数据完成复杂的查询。
  2. 不依赖分布式存储,单个服务器节点可以直接工作。对部署环境的要求较低。
  3. 基于Http的pull方式采集时间序列数据。很多监控对象本身没有提供http的接口,Prometheus的生态系统中有许多工具可以为其他形式的日志提供http接口。
  4. 推送时间序列数据通过PushGateway组件支持,临时性的任务,减少开销。
  5. 通过服务发现或静态配置发现目标,在k8s中较为常用。
  6. 多种图形模式及仪表盘支持。事实上,Prometheus本身的仪表盘并不是很出众,可以通过集成其他的工具取得更加丰富生动的展示效果。

架构

pro_framework.png

short-lived jobs:短任务。
jobs/exporters:长期任务,可以用于收集nginx,mysql等服务的日志。
service discovery:自动发现监控对象,在k8s中经常使用。
Alertmanager:用于报警。Prometheus本身不支持报警,需要集成其他插件。
promQL:基于promQL,可以通过grafana增强展示效果。

用docker安装Prometheus

docker pull prom/Prometheus

运行容器

docker run -d -p 9090:9090 prom/Prometheus

此时容器还不能使用,因为还没有为其提供配置文件。可以从容器内copy出配置文件:

cd /opt
docker cp <CONTAINER_ID>:/etc/prometheus/prometheus.yml ./

删除原容器,并重新启动,这一次将本地的配置文件bind入容器:

docker run -d -p 9090:9090 -v /opt/prometheus.yml:/etc/prometheus/prometheus.yml  prom/prometheus

配置文件的主要内容:
global:全局配置,采集时间间隔等等

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.

rules:阈值有没有达到,如果阈值达到就报警

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

默认情况下,Prometheus监控自己。

访问

http://<HOSTNAME>:9090/


prom_ui.png
  • alerts:报警
  • graph:SQL语句
  • Status:pro本身的情况

cAdvisor

Prometheus不支持直接采集docker容器内日志 ,因为它只能从http接口获得信息,而docker容器默认情况下不提供日志的http接口。cAdvisor(container advisor)是Google的开源项目,用于收集正在运行的容器资源使用和性能信息,并对外提供http接口。

docker安装

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=8080:8080   --detach=true   --name=cadvisor   google/cadvisor:latest

访问UI

http://<HOSTNAME>:8080/


cAdvisor_ui.png

HTTP API

http://<HOSTNAME>:8080/metrics

修改Prometheus的配置文件/opt/prometheus.yml,添加一个job

- job_name: 'docker'
static_configs:
- targets: ['<HOSTNAME>:8080']
static_configs表示是手动配置。

重启Prometheus容器

docker restart 8a8d08043423

重新访问Prometheus,中已经能看到容器的metrics了:


prom_docker.png

Grafana

Grafana是一个开源的度量分析和可视化系统。

Docker安装

docker run -d --name=grafana -p 3000:3000 grafana/grafana

访问UI

http://<HOSTNAME>:3000/


grafana_ui.png

登录并修改管理员密码:
admin/admin->admin/Welcome1@

添加数据源

data sources,

  1. 选择prom
  2. http url http://<HOSTNAME>:9090
  3. save & test

还可以添加各种各样的数据源

grafana_dbsource.png

添加仪表盘

create->dashboard
可以导入模版,Grafana官网提供了许多模版以供使用。
https://grafana.com/grafana/dashboards
这里我选择了
https://grafana.com/grafana/dashboards/193
现在可以在Grafana的dashboard中看到和修改视图了:

grafana_edit.png

【1】https://prometheus.io/
【2】https://github.com/google/cadvisor
【3】https://grafana.com/

相关文章

  • 构建Docker容器监控系统

    在对容器进行测试和运维的过程中,经常需要对其进行监控,监控信息的主要来源就是日志。 Prometheus Prom...

  • 09、构建Docker容器监控系统

    1、为什么要监控?要监控什么? 监控的意义:(1) 对系统不间断实时监控(2) 实时反馈系统当前状态(3) 保证业...

  • Docker基础

    来源:Docker容器安全监控系统设计与实现_简智强 Docker架构 Docker作为Linux容器管理...

  • 详解docker容器的资源监控方案

    docker资源的监控方案 如何监控docker容器整体的资源利用率呢?如何监控独立docker容器的资源利用率呢...

  • Docker 快速容器监控

    1 快速启动测试应用 2 开启Docker UI进行容器系统监控 docker run -d -p 9000:9...

  • Docker容器技术安全

    Docker容器技术安全 来源:Docker容器安全监控系统设计与实现_简智强    云计算的迅猛发展伴随着云安全...

  • Docker容器监控系统初探

    随着线上服务的全面docker化,对docker容器的监控就很重要了。SA的监控系统是物理机的监控,在一个物理机跑...

  • docker集群管理工具kubernetes初步搭建

    前言:Kubernetes 是Google开源的容器集群管理系统,它构建于docker技术之上,基于Docker构...

  • Docker容器安全机制

    来源:Docker容器安全监控系统设计与实现_简智强 Docker安全是Docker团队和广大使用者都极为...

  • Docker容器的监控系统

    1. 对Docker容器进行监控的意义 当宿主机上运行多个容器应用时,容器的运行情况如:CPU使用率、内存使用率、...

网友评论

    本文标题:构建Docker容器监控系统

    本文链接:https://www.haomeiwen.com/subject/iziovctx.html