docker学习(12):docker监控方案之prometheus(代码片段)

chenjin2018 chenjin2018     2023-01-18     373

关键词:

Docker常用的监控方案

Prometheus

Prometheus架构

      Prometheus是一种很不错的监控方案,它提供了监控数据搜集、存储、处理、可视化和警告一套完整的解决方案,下面是Prometheus的架构

技术分享图片

Prometheus Server

      Prometheus Server负责从Exporter拉取和存储监控数据,并提供一套灵活的查询语言(PromQL)供用户使用

 

Exporter

      Exporter负责收集目标对象(host,container...)的性能数据,并通过HTTP接口提供Prometheus Server获取

 

Alertmanager

      用户可以定义基于监控数据的告警规则,规则会触发告警。一旦Alertmanager收到告警,会通过预定义的方式发出告警通知。支持的方式包括Email、PagerDuty、Webhook等

 

Prometheus的优势

      (1)通过维度对数据进行说明,附加更多的业务信息,进而满足不同业务的需求。同时维度是可以动态添加的,比如再给数据加上一个user维度,就可以按用户来统计容器内存使用量了

      (2)Prometheus丰富的查询语言能够灵活、充分地挖掘数据的价值

 

部署Prometheus

      环境说明

            我们将通过Prometheus监控两台Docker Host:10.211.55.17和10.211.55.21,监控host和容器两个层次的数据,按照构架图,我们需要运行如下组件

Prometheus Server

      Prometheus Server本身也将以容器的方式运行在host 10.211.55.21上

 

Exporter

      Prometheus有很多现成的Exporter,完整列表可参照https://prometheus.io/docs/instrumenting/exporters/

      这里将使用

            (1)Node Exporter,负责收集host硬件和操作系统数据。它将以容器方式运行在所有host上

            (2)cAdvisor,负责收集容器数据。它将以容器的方式运行在所有host上

 

Grafana

      显示多维数据,Grafana本身也将以容器方式运行在host 10.211.55.21上

 

运行Node Exporter

      在两台主机上执行如下命令

sudo docker run -d -p 9100:9100 -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "/(sys|proc|dev|host|etc)($|/)"

      这里使用了--net=host,这样Prometheus Server可以直接与Node Exporter通信。Node Exporter启动后,将通过9100提供host的监控数据,在浏览器中通过http://10.211.55.17:9100/metrics测试一下

技术分享图片

 

运行cAdvisor

      在两个主机上执行一下命令

sudo docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker:/var/lib/docker:ro --publish=8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor:latest

      这里使用了--net=host,这样Prometheus Server可以直接与cAdvisor通信。cAdvisor启动后,将通过8080提供host的监控数据,在浏览器中通过http://10.211.55.17:8080/metrics测试一下

技术分享图片

 

运行Prometheus Server

      先在主机10.211.55.21上编写prometheus.yml文件,其具体内容如下

sudo vim Prometheus.yml

# my global config
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.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global evaluation_interval.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here its Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: prometheus

    # metrics_path defaults to /metrics
    # scheme defaults to http.

    static_configs:
    - targets: [localhost:9090,localhost:8080,localhost:9100,10.211.55.17:9100,10.211.55.17:8080

技术分享图片

      编写好配置文件后执行一下命令,以容器的方式来运行prometheus

sudo docker run -d -p 9090:9090 -v /home/chenjin/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus --net=host prom/prometheus 

技术分享图片

      这里使用了--net=host,这样Prometheus Server可以直接与Exporter和Grafana通信。上面的配置文件中最重要的是-targets里面的内容,指定从哪些exporter抓取数据。这里指定了两台主机上的Node Exporter个cAdvisor,另外localhost:9090就是Prometheus Server自己,可见Prometheus本身也会收集自己的监控数据。可以通过http://10.211.55.21:9090/metrics测试一下 

技术分享图片

      在浏览器中打开http://10.211.55.21:9090,点击菜单Status -> Targets 

技术分享图片

      如下图所示 

技术分享图片

      所有Target的State都是都是UP状态,说明Prometheus Server能够正常获取监控数据

 

运行Grafana

      在主机10.211.55.21上执行如下命令

sudo docker run -d -i -p 3000:3000 -e "GF_SERVER_ROOT_URL=http://grafana.server.name" -e "GF_SECURITY_ADMIN_PASSWORD=secret" --net=host grafana/grafana

      这里使用了--net=host,这样Grafana可以直接与Prometheus Server通信。-e "GF_SECURITY_ADMIN_PASSWORD=secret"指定了Grafana admin用户和密码secret

      Grafana启动后,在浏览器中打开http://10.211.55.21:3000

技术分享图片

      登录后,Grafana将引导我们配置Data Source 

技术分享图片

      Name为Date Source命令,例如prometheus

      Type选择Prometheus

      Url输入Prometheus Server的地址

      其他保持默认,点击下面的Save & Test 

技术分享图片

      配置完成后,Grafana就能够访问Prometheus中存放的监控数据了 

技术分享图片

 

docker监控之prometheus(代码片段)

以下内容为学习记录,可以参考MDN原文。环境nodev12.18.1npm6.14.5vscode1.46MicrosoftEdge83概念定义在Object构造函数之上的方法,称为静态方法(staticmethod)。assignObject.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目... 查看详情

docker1.12.1之swarm集群搭建与使用

1:前言在docker1.12版本之前,众所周知dokcer本身只能单机上运行,而集群则要依赖mesos、kubernetes、swarm等集群管理方案。其中swarm是docker公司自己的容器集群管理工具,在当时的热度还是低于前两者。docker1.12.0版本发布中,Docker公... 查看详情

docker管理监控方案

docker相关管理可分为四类:docker基础功能、docker监控、docker集群管理和docker系统认证管理。docker管理的基础或信息来源都是docker命令行或dockerAPI。docker基础功能docker基础功能,如容器管理、镜像管理,直接调用docker命令或dockerAPI... 查看详情

云原生之docker实战使用docker部署nightingale运维监控平台

【云原生之Docker实战】使用docker部署nightingale运维监控平台一、nightingale平台介绍1.nightingale简介2.nightingale特点3.nightingale整体架构二、检查本地docker状态1.检查docker状态2.检查docker信息三、下载nightingale项目代码四、安装nightingale1.... 查看详情

云原生之docker实战使用docker部署prometheus服务监控系统

【云原生之Docker实战】使用Docker部署Prometheus服务监控系统一、Prometheus服务监控系统介绍1.Prometheus介绍2.Prometheus特点3.Prometheus架构图3.Prometheus的组件二、检查本地系统版本三、检查docker环境1.检查docker版本2.检查docker状态四、安装... 查看详情

云原生之docker实战使用docker部署linux系统监控平台netdata

【云原生之Docker实战】使用Docker部署Linux系统监控平台Netdata一、Netdata介绍1.netdata简介2.netdatar特点二、检查本地Docker环境1.宿主机系统版本2.检查Docker版本3.检查docker状态三、安装docker-compose1.下载docker-compose二进制包2.给文件增加... 查看详情

云原生之docker实战使用docker部署ward服务器监控工具

【云原生之Docker实战】使用Docker部署Ward服务器监控工具一、Ward介绍1.Ward简介2.Ward特点二、检查宿主机系统版本1.检查操作系统版本2.检查系统内核三、检查本地docker环境1.检查docker服务状态2.检查docker版本3.开启IPv4forwarding4.检查do... 查看详情

云原生之docker实战使用docker部署serverstatus服务器监控系统

【云原生之Docker实战】使用Docker部署ServerStatus服务器监控系统一、ServerStatus介绍二、检查宿主机系统版本三、检查本地docker环境1.检查docker服务状态2.检查docker配置信息3.开启IPv4forwarding四、安装docker-compose1.下载docker-compose二进制... 查看详情

云原生之docker实战使用docker部署glances系统监控工具

...目录标题一、glances介绍1.glances简介2.glances特点二、本地docker环境检查1.检查docker版本2.检查docker状态3.检查dockercompose版本三、glances镜像介绍四、下载glances镜像五、使用docker-cli部署glances六、使用dockercompose部署glances1.创建安装目... 查看详情

docker最常用的监控方案-每天5分钟玩转docker容器技术(78)

当Docker部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要。在本章中,我们将讨论几个目前比较常用的容器监控工具和方案,为大家构建自己的监控系统提供参考。首先我们会讨论Docker自带的几个... 查看详情

docker最常用的监控方案-每天5分钟玩转docker容器技术(78)

当Docker部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要。在本章中,我们将讨论几个目前比较常用的容器监控工具和方案,为大家构建自己的监控系统提供参考。650)this.width=650;"title="https://image.i... 查看详情

docker学习-容器监控与日志管理

当Docker部署规模变大后,需要对容器进行监控,一般Docker自带几个监控子命令ps、top和stats,然后是现在流行的开源监控工具PrometheusDocker自带的监控子命令psdockerps,列出容器,方便查看当前的运行的容器,以下是命令语法与参数语... 查看详情

docker学习--基本docker命令(代码片段)

1、移除旧的容器dockerrm-fusdp402、拉新镜像dockerpull127.0.0.1:5000/usdp/video:c823、基于镜像,启动运行一个自己的容器dockerrun-d-p4000:22-p4001:8080-p4002:1521-p4003:445-p4004:3999-p4005:8443-p4006:18011-p4007:18043--nameusdp40-hu 查看详情

docker学习笔记之docker连接网络的设置

1、如果docker主机不需要通过代理连接外网则docker的相关命令(如dockersearch)或docker容器与网络相关的操作都可以正常进行,不需要特殊设置。 2、当docker主机是通过代理才能连接外网时,采用服务方式启动守护进程如果docker... 查看详情

docker之常见问题&解决方案

Docker问题积累1.使用Dockerfile构建镜像时报错2.Docker时区问题3.启动Docker进程失败–Centos7.X4.docker启动失败5.Docker启动失败–ubuntu6.dockerpull镜像失败http://blog.csdn.net/u010472499/article/details/54929678本文出自“运维自动化”博客,请务必保... 查看详情

docker学习笔记总结(代码片段)

文章目录1.卸载docker服务步骤(实用!!)2.docker私有库3.容器数据卷的使用4.容器卷和主机互通互联5.容器卷ro和rw读写规则6.卷的继承和共享7.docker安装tomcat8.docker安装mysql8.1运行mysql容器8.2dockermysql容器卷配置(非常重要)8.3docke... 查看详情

docker学习笔记之核心概念

Docker核心概念:DockerDaemonDockerContainerDockerRegistryDockerClient通过restAPI和DockerDaemon进程进行交互,控制Container的启动,运行和关闭。Daemon会向Registry拉image。  查看详情

日志管理之dockerlogs-每天5分钟玩转docker容器技术(87)

...我们将讨论监控容器的各种可用技术和方案,首先会介绍Docker自带的logs子命令,然后讨论 查看详情