docker容器监控系统

2023-11-09

第1章监控软件介绍

1.1监控工具

  • 国外:Mrtg、cacti、Nagios、Zabbix、smokeping、ganglia
  • 国内:小米监控,夜莺系统(滴滴打车)
  • 原理是让主库处写相关操作,而从数据库处理select查询,从而减轻数据库的IO压力,避免误操作将数据写入从库而导致数据不一致。

第2章Cadvisor+Influxdb+Grafana

2.1Cadvisor+InfluxDB+Grafana介绍

2.1.1Cadvisor(数据采集)

  • Cadvisor是由google开发出来的单节点资源信息的监控工具。方便其他组件如Granfana、Prometheus
    进行数据抓取,可以对主机上的资源及容器和性能数据进行监控。它使用Go语言开发,采用Linux中Cgroup获取容器资源信息。

  • Google的Kubernetes中也默认将其作为单点的资源监控工具,各节点默认安装Cadvisor。

  • 产品特点:
    1)可以展示主机和容器两个层次的监控数据;
    2)可以展示历史变化数据;
    3)谷歌公司的开源产品;
    4)监控指标齐全;
    5)方便部署,有官方的docker镜像;
    6)(缺点)默认只在保存1分钟数据,可以集成InfluxDB(解决存储问题)等第三方存储使用。
    Cadvisor操作界面简陋,并且需要在不同页面跳转,只能监控一个host,但是可以将监控数据导出给第三方工具,所以值只作为一个数据采集器。

2.1.2InfluxDB(数据存储)

  • InfluxDB是非关系型数据库,时序性数据库(开源)由Go语言开发。它可以高性能的查询与存储时序性数据,被广泛用于存储系统的监控数据。
  • 应用场景:性能监控、应用程序指标、物联网传感器数据和实时分析等的后端存储。
  • 主要功能:
    1)基于时间序列,支持与时间有关的相关函数 (如最大、最小、求和等);
    2)可度量行:可以实时计算大量数据;
    3)基于事件:支持任意的时间数据。
  • 主要特点:
    1)无结构(无模式):可以是任意数量的列;
    2)支持拓展;
    3)支持min、max、sum、count、mean、median 等一系列函数,方便统计;
    4)原生的HTTP支持,内置HTTP API;
    5)强大的类SQL语法;
    6)自带管理界面,方便使用。

2.1.3Granfana(数据展现)

  • Granfana是一个可视化面板(Dashboard)工具,图表和布局漂亮,有功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB等组件作为数据源。
  • Granfana主要特性:
    1)灵活丰富的图形化选项;
    2)可以混合多种风格;
    3)支持白天和夜间模式;
    4)支持多个数据源。

2.2监控组件架构

在这里插入图片描述

部署方案:
1)创建自定义网络monitor(自定义网络名称),用于后期容器加入此网络中;
2)创建InfluxDB容器,创建数据用户、数据库;
3)创建Cadvisor容器;
4)创建Granfana容器,配置granfana。

2.3具体部署

2.3.1安装docker-ce

[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@docker ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker ~]# yum makecache fastyum makecache fast
[root@docker ~]# yum -y install wget
[root@docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@docker ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@docker ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@docker ~]# yum -y install docker-ce
[root@docker ~]# service docker start

2.3.2镜像加速器

sudo mkdir -p /etc/docker  //一般都有,就不用创建了
tee /etc/docker/daemon.json <<-'EOF' 
{
 "registry-mirrors": ["https://naa7mog3.mirror.aliyuncs.com"] 
}
 EOF
systemctl daemon-reload 
systemctl restart docker
[root@docker ~]# systemctl start docker
[root@docker ~]# systemctl enable docker  //开机自启
[root@docker ~]# docker info  //查看环境信息
[root@docker ~]# docker version //查看环境信息

2.3.3下载组件镜像

[root@docker ~]# docker pull tutum/influxdb
[root@docker ~]# docker pull gogle/cadvisor
[root@docker ~]# docker pull grafana/grafana
[root@docker ~]# docker images

在这里插入图片描述

2.3.4创建自定义网络

[root@docker ~]# docker network create monitor  //创建网络monitor
[root@docker ~]# docker network ls  //查看
[root@docker ~]# docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
[root@docker ~]# docker ps -l

访问测试

在这里插入图片描述

可以自行选择模板

2.3.5创建数据库和数据库用户

CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.6创建Cadvisor容器

[root@docker ~]# docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --net monitor --publish=8080:8080 --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
  • –mout:把宿主机的相文目录绑定到容器中,这些目录都是Cadvisor需要采集的目录文件和监控内容;
  • -storage_driver:指定Cadvisor的存储驱动、数据库主机、数据库名。
[root@docker ~]# docker ps -l

访问测试
在这里插入图片描述

下拉可以看到宿主机(linux)信息,点击蓝字docker container可以看到容器信息。
在这里插入图片描述

也可以自行创建容器检测。这里不做演示。

2.3.7创建Grafana容器

[root@docker ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
[root@docker ~]# docker ps -l

访问测试,首次访问用户名和密码都是admin,之后修改密码(123456)。
在这里插入图片描述

添加数据源influxdb
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点save,画错了。。。。。
在这里插入图片描述

第3章Cadvisor+Prometheus+Grafana

3.1部署Cadvisor

[root@docker ~]# docker rm -f $(docker ps -aq)   //删除之前做的
[root@docker ~]# docker run -d --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 

登录测试 192.168.9.9:8080

3.2Prometheus 介绍

  • Prometheus是一个开源系统监控和警报工具包,现在是一个独立的开源项目。它在2016年加入CNCF(Cloud Native Computing Foundation云原生),是kubernetes之后的第二个托管项目。
  • 主要特征:
    1)多维度数据模型,由指标键值对标识的时间序列数据组成;
    2)PromQL,一种灵活的查询语言;
    3)不依赖分布式存储,单个服务器节点是自治的;
    4)以HTTP方式,通过pull模型拉取时间序列数据;
    5)支持通过中间网关推送时间序列数据;
    6)通过服务发现或者静态配置,来发现目标服务对象;
    7)支持多种多样的图表和界面展示。

3.3Prometheus 部署

[root@docker ~]# docker pull prom/prometheus
[root@docker ~]# vim /tmp/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 it's 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']
  - job_name: 'docker'      
    static_configs:
   - targets: ['192.168.9.9:8080']

targets后面可以添加多个IP,用逗号分隔。

[root@docker ~]# docker run -d --name=prometheus -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml -v /etc/localtime:/etc/localtime prom/prometheus
[root@docker ~]# docker ps -l

访问测试(192.168.9.9:9090)
在这里插入图片描述

status,targets查看主机状态
在这里插入图片描述
在这里插入图片描述

点击url查看详细信息

在这里插入图片描述
在这里插入图片描述

界面难看,所以结合grafana使用。

3.4部署Grafana

[root@docker ~]# docker run -d --name=grafana -p 3000:3000 grafana/grafana

和前面一样做。添加数据源,出图或者调用模板。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择prometheus然后点击import即可。
在这里插入图片描述

若要采集多个多个宿主机,就在/tmp/prometheus.yml最后添加主机IP,用逗号分隔。

3.5 CIG与CPG的区别

若有docker,则二选一。
若部署kubernetes,则选择Cadvisor+Prometheus+Grafana环境。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker容器监控系统 的相关文章

  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 监控子进程的内存使用情况

    我有一个 Linux 守护进程 它分叉几个子进程并监视它们是否崩溃 根据需要重新启动 如果父进程可以监视子进程的内存使用情况 以检测内存泄漏并在超出一定大小时重新启动子进程 那就太好了 我怎样才能做到这一点 您应该能够从 proc PID
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • Linux 上的基准测试程序

    对于一项任务 我们需要使用不同的优化和参数来对我们的实现进行基准测试 有没有一种可行的方法可以在Linux命令行 我知道时间 上使用不同的参数对小程序进行基准测试 从而为我提供CSV或类似内容的时间数据 输出可能类似于 Implementa
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建

随机推荐

  • FinClip 小程序原生页面要获取权限时该使用哪些接口?比uniapp更方便吗?

    概念 在小程序里面有一些权限需要小程序 微信 给予 比如用户手机号 运动步数 摄像头 通讯地址 iOS端 相机权限 二维码扫描接口 scanCode 选择图片接口 chooseImage 拍照 选择视频接口 chooseVideo 录像 C
  • xss绕过方法

    xss绕过方法 1 改变大小写 将大小写穿插编写 可以转换为 2 关闭标签 利用大于号 gt 关闭标签使得xss生效 gt 3 利用html标签触发事件 很多标签都可以对过滤进行绕过 格式 lt 标签 事件 执行语句 例如 p style
  • 汽车结构之仪表

    为了使驾驶员能够掌握汽车及各系统的工作情况 在汽车驾驶室内的仪表板上装有各种指示仪表 指示灯及各种报警信号装置 汽车上常用的仪表有车速里程表 发动机转速表 机油压力表 燃油表 冷却液温度 水温 表等 它们通常与各种信号灯一起安装在仪表板上
  • Fastjson出现$ref问题

    解决FastJson中 ref 循环引用检测 的问题的几种方式 一 现象 项目中用json形式来存储一个集合对象 用fastjson发现多了一些东西 ref 了解之后才发现是重复引用的问题 id 1 orderList id 2 date
  • gitlab配置与启动

    首先是初始化 命令 sudo gitlab ctl reconfigure 初始化后我们查看gitlab的启动状态 好了之后 我们只需去 etc gitlab gitlab rb文件中配置外部url及对应开放端口即可 如下 好的 配置完毕
  • 类加载学习

    一 类使用的7个阶段 类从被加载到虚拟机内存中开始 到卸载出内存 它的整个生命周期包括 加载 Loading 验证 Verification 准备 Preparation 解析 Resolution 初始化 Initiallization
  • Vue3.0 使用 axios访问本地 json文件并读取数据

    Vue3 0 vue cli4 5 访问本地 json文件并读取数据 使用 axios 首先要在对应的 vue cli4 5 项目下安装 axios 输入 npm install save axios 进行安装 npm install sa
  • 使用服务配置Config客户端获取不到yml文件下多级属性值Could not resolve placeholder ‘config.info‘ in value “${config.info}“

    使用服务配置Config客户端获取不到yml文件下多级属性值Could not resolve placeholder config info in value config info 问题 比如我这里想获取config下面的info信息
  • MySQL 索引底层为什么选择B+Tree

    MySQL 索引底层为什么选择B Tree
  • 16.5 C++智能指针-unique_ptr

    16 1 C 智能指针 new delete探秘 16 2 C 智能指针 shared ptr 16 3 C 智能指针 weak ptr 16 4 C 智能指针 shared ptr使用场景 陷阱 性能分析与使用建议 16 5 C 智能指针
  • 【网络安全】网络安全期末大题 复习题

    简答题 每小题10分 共10分 1 计算机操作系统还原的操作步骤一般有哪些 当电脑开机的时候 请尝试按下F8或f7 看电脑上显示F8还是F7 按方向下键选择 MaxDOS 备份 还原 维护系统 按方向下键选择 快速全自动备份还原系统 按 E
  • 永恒之蓝(MS17-010)

    目录 追溯了解 百度 网络IP查找 环境条件 复现流程 445端口 使用MSF的永恒之蓝漏洞模块 扫描模块 攻击模块 温馨提醒 纯水文 如果不幸翻到这篇文章 可以立刻关闭 先整理两个学习的链接 本文学习第一个 https blog csdn
  • 2023高教社杯数学建模思路 - 案例:ID3-决策树分类算法

    文章目录 0 赛题思路 1 算法介绍 2 FP树表示法 3 构建FP树 4 实现代码 建模资料 0 赛题思路 赛题出来以后第一时间在CSDN分享 https blog csdn net dc sinor type blog 1 算法介绍 F
  • 使用frp进行内网穿透

    frp概述 frp 是一个高性能的反向代理应用 可以帮助您轻松地进行内网穿透 对外网提供服务 支持 tcp http https 等协议类型 并且 web 服务支持根据域名进行路由转发 frp 采用 C S 模式 将服务端部署在具有公网 I
  • 科学数学工程工具MATLAB软件2023a中文版下载安装,MATLAB特色

    MATLAB软件是一款被广泛应用于科学计算和工程设计领域的软件 其独特的功能使其成为了许多行业专业人员的首选 下面将会介绍MATLAB软件的独特功能并举例说明其在实际应用中的作用 MATLAB信号处理功能 MATLAB获取 hairuank
  • 【资源共享】好用的视觉软件Adaptive Vision Studio

    TRITOP Professional 2018 TRITOPBasic2018 PONTOS Live 2018 GOM Scan 2018 GOM Inspect Professional 2018 ATOS Professional
  • 【语义分割】分层多尺度注意力 Hierarchical multi-scale attention for semantic segmentation

    文章目录 1 摘要 2 引言 3 本文相关方法 3 1 Multi scale context methods 3 2 Relational context methods 3 3 Multi scale inference 3 4 Aut
  • 显式内存管理

    程序员在处理现实生活中国的C C 程序的时候 常会遇到诸如程序运行时突然退出 或占用的内存越来越多 最后不得不定期重启的一些典型状况 这些问题的源头可以追溯到C C 中的显式堆内存管理上 通常情况下 这些症状都是由于程序没有正确处理堆内存的
  • tomcat 乱码问题

    测试环境 apache tomcat 6 0 48 操作系统 win7 中文 默认GBK编码 一 浏览器采用的字符集 测试jsp
  • docker容器监控系统

    文章目录 第1章监控软件介绍 1 1监控工具 第2章Cadvisor Influxdb Grafana 2 1Cadvisor InfluxDB Grafana介绍 2 1 1Cadvisor 数据采集 2 1 2InfluxDB 数据存储