Cadvisor+InfluxDB+Grafan+Prometheus(详解)

目录

一、Cadvisor+InfluxDB+Grafan案例概述

(一)Cadvisor 

Cadvisor 产品特点:

(二)InfluxDB

InfluxDB应用场景:

InfluxDB主要功能:

InfluxDB主要特点:

(三)Grafana

Grafana主要特性:

(四)Prometheus产品简介

Prometheus的主要特征有:

二、Cadvisor+InfluxDB+Grafan监控组件架构


一、Cadvisor+InfluxDB+Grafan案例概述

        Docker作为目前十分出色的容器管理技术,得到大量企业的青睐,在生产环境中使用Docker容器部署服务及应用的场景越来越多。所以面对日益庞大的docker服务群应用,如何具有针对性的,有效的监控也变成了企业运维人员工作需求。

        容器信息采集及监控的方案有很多,有docker自身的docker stats命令、Scout、Data Dog、Prometheus等,

        本次为大家分享两款比较经典的容器开源监控组合方案

Cadvisor +InfluxDB+Grafana

Cadvisor +Prometheus+Grafana

(一)Cadvisor 

        Cadvisor 是Google用来监测单节点资源信息的监控工具。 Cadvisor 提供了基础查询界面和http接口,方便其他组件如Grafana 、Prometheus等进行数据抓取。Cadvisor 可以对Docker主机上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况等。Cadvisor 使用Go语言开发,利用Linux的Cgroups获取容器的资源使用信息。

        Google的Kubernetes中也默认地将其作为单节点的资源监控工具,各个节点默认会安装上Cadvisor组件。

        Cadvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行Cadvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。

Cadvisor 产品特点:

可以展示主机和容器两个层次的监控数据。

可以展示历史变化数据。

谷歌公司的开源产品。

监控指标齐全。

方便部署,有官方的docker镜像。

默认只在本地保存1分钟数据,可以集成InfluxDB等第三方存储使用。

        由于 Cadvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 Host,这不免会让人质疑它的实用性。

        但 Cadvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。

        我们可以把 Cadvisor  定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。

(二)InfluxDB

        InfluxDB是一个由InfluxData开发的开源非关系型时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。

        InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

        同类型的数据库产品还有Elasticsearch、Graphite等。

InfluxDB应用场景:

性能监控,应用程序指标,物联网传感器数据和实时分析等的后端存储。

InfluxDB主要功能:

基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);

可度量性:你可以实时对大量数据进行计算;

基于事件:它支持任意的事件数据;

InfluxDB主要特点:

无结构(无模式):可以是任意数量的列;

支持拓展;

支持min, max, sum, count, mean, median 等一系列函数,方便统计;

原生的HTTP支持,内置HTTP API;

强大的类SQL语法;

自带管理界面,方便使用;

(三)Grafana

        Grafana是一个可视化面板(Dashboard)工具,有着非常漂亮的图表和布局等展示功能,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB等组件作为数据源。

Grafana主要特性:

灵活丰富的图形化选项;

可以混合多种风格;

支持白天和夜间模式;

支持多个数据源;

(四)Prometheus产品简介

        Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包。

        自2012年成立以来,很多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。 它现在是一个独立的开源项目,可以独立于任何公司进行维护。 为了强调这一点,并阐明项目的治理结构,Prometheus于2016年加入Cloud Native Computing Foundation(云原生基金会),作为继Kubernetes之后的第二个托管项目。

Prometheus的主要特征有:

多维度数据模型-由指标键值对标识的时间序列数据组成;

PromQL,一种灵活的查询语言;

不依赖分布式存储; 单个服务器节点是自治的;

以HTTP方式,通过pull模型拉取时间序列数据;

支持通过中间网关推送时间序列数据;

通过服务发现或者静态配置,来发现目标服务对象;

支持多种多样的图表和界面展示。

二、Cadvisor+InfluxDB+Grafan监控组件架构

监控组件架构图:

提示:InfluxDB用于数据存储,Cadvisor 用户数据采集,Grafana用于数据展示。

监控组件架构部署方案:

创建自定义网络monitor(自定义网络名称),用于后期容器加入此网络中;

创建Influxdb容器,创建数据用户、数据库;

创建Cadvisor 容器;

创建Grafana容器,配置grafana;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/66750.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyCat配置文件schema.xml讲解

1.MyCat配置 1.1 schema标签 如果checkSQLschema配置的为false,那么执行DB01.TB_ORDER时就会报错,必须用use切换逻辑库以后才能进行查询。 sqlMaxLimit如果未指定limit进行查询,列表查询模式默认为100,最多只查询100条。因为用mycat后默认数…

linux自定义网络访问规则

1.更改防火墙默认区域为trusted firewall-cmd --set-default-zonetrusted 2.新建一个zone,将想要访问本机80端口的ip,如:192.168.3.99 ,添加的这个zone中,同时在这个zone中放行80端口。 firewall-cmd --permanent --ne…

SEO搜索引擎优化

目录 场景 内部业务To B (Business-to-Business,B2B)需要降低SEO,反爬 客户业务To C (Business-to-Consumer,B2C)需要提高SEO TDK优化 Title(标题) Description(描述) Keywords&#xff…

windows 安装免费3用户ccproxy ubuntu 代理上网

Windows 上进行安装 ubuntu 上进行设置 方法一 (临时的手段) 如果仅仅是暂时需要通过http代理使用apt-get,您可以使用这种方式。 在使用apt-get之前,在终端中输入以下命令(根据您的实际情况替换yourproxyaddress和proxyport)。 终…

布谷鸟配音:一站式配音软件

这是一款智能语音合成软件,可以快速将文字转换成语音,拥有多种真人模拟发音,可以选择不同男声、女声、童声,以及四川话、粤语等中文方言和外语配音,并且可对语速、语调、节奏、数字读法、多音字、背景音等进行全方位设…

初识Container

1. 什么是Container(容器) 要有Container首先要有Image,也就是说Container是通过image创建的。 Container是在原先的Image之上新加的一层,称作Container layer,这一层是可读可写的(Image是只读的&#xff0…

Mybatis-Plus使用updateById()、update()将字段更新为null

文章目录 一、问题背景二、问题原因三、解决方案1. 设置全局的field-strategy2. 对某个字段设置单独的field-strategy3. 使用UpdateWrapper方式更新(推荐使用) 本文主要介绍了Mybatis-Plus使用updateById()、update()将字段更新为null,文中通…

Redis 6.5 服务端开启多线程源码

redis支持开启多线程,只有从socket到读取缓冲区和从输出缓冲区到socket这两段过程是多线程,而命令的执行还是单线程,并且是由主线程执行 借鉴:【Redis】事件驱动框架源码分析(多线程) 一、main启动时初始化…

freeswitch的mod_xml_curl模块动态获取dialplan

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 mod_xml_curl模块支持从web服务获取xml配置,本文介绍如何动态获取dialplan配置。 环境 centos:CentOS release 7.0 (Final)或以上版本 freeswitch:v1.6.20 GCC:4.8.5…

HTTPS安全通信

HTTPS,TLS/SSL Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本传输协议,网景公式设计了SSL(Secure Sockets Layer)协议用于对Http协议传输的数据进行加密,保证会话过程中的安全性。 使用TCP端口默认为443 TLS:(Transport Layer Security,传输层…

View绘制流程-Window创建

前言: View绘制流程中,主要流程是这样的: 1.用户进入页面,首先创建和绑定Window; 2.首次创建以及后续vsync信号来临时,会请求执行刷新流程; 3.刷新流程完成后,会通知SurfaceFlin…

(力扣)用两个栈实现队列

这里是栈的源代码:栈和队列的实现 当然,自己也可以写一个栈来用,对题目来说不影响,只要符合栈的特点就行。 题目: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、pe…

【HDFS】每天一个RPC系列----complete(二):客户端侧

上图给出了最终会调用到complete RPC的客户端侧方法链路(除去Router那条线了)。 org.apache.hadoop.hdfs.DFSOutputStream#completeFile(org.apache.hadoop.hdfs.protocol.ExtendedBlock): 下面这个方法在complete rpc返回true之前,会进行重试,直到超过最大重试次数抛异…

深度优先搜索与动态规划|543, 124, 687

深度优先搜索与动态规划|543. 二叉树的直径,124. 二叉树中的最大路径和,687. 最长同值路径 二叉树的直径二叉树中的最大路径和最长同值路径 二叉树的直径 好久没写二叉树了,主要还是看遍历的顺序是什么样的。 # Definition for a binary tr…

代码随想录算法训练营之JAVA|第二十五天| 491. 递增子序列

今天是第25天刷leetcode,立个flag,打卡60天。 算法挑战链接 491. 递增子序列https://leetcode.cn/problems/non-decreasing-subsequences/ 第一想法 题目理解:在给定的一个数组中,找出全部的递增列表。要求不能有重复。 这是一…

【mars3d - 报错】使用mars3d加载时的一些报错和不生效问题

在使用过程中遇到过很多报错,不管大的还是小的,在这里总结下,应该会持续更新; 1、设置贴地之后报错 可能是因为 arcType:Cesium.arcType.NONE 与 clampToGround:true 是相互冲突的,两个都设置就…

jdk1.7与jdk1.8的HashMap区别2-底层原理区别

jdk1.7与jdk1.8的HashMap区别1-基本结构与属性对比_ycsdn10的博客-CSDN博客 一、代码区别 1.代码数:JDK1.7与JDK1.8相差了一倍的代码 2.方法数:JDK1.7是40个,JDK1.8是51个(只算基本方法) 二、Hash差别 1.JDK1.7 st…

深入学习 Redis - 事务、实现原理、指令使用及场景

目录 一、Redis 事务 vs MySQL事务 二、Redis 事务的执行原理 2.1、执行原理 2.2、Redis 事务设计这么简单,为什么不涉及成 MySQL 那样强大呢? 三、Redis 事务的使用 3.1、使用场景 3.2、具体演示 开启/执行/放弃事务 watch 监控 watch 实现原理…

SQL Server数据库如何添加Oracle链接服务器(Windows系统)

SQL Server数据库如何添加Oracle链接服务器 一、在添加访问Oracle的组件1.1 下载Oracle的组件 Oracle Provider for OLE DB1.2 注册该组件1.2.1 下载的压缩包解压位置1.2.2 接着用管理员运行Cmd 此处一定要用管理员运行,否则会报错 二、配置环境变量三、 重启SQL Se…

Android Studio System.out.println()中文乱码

第一步: 打开studio64.exe.vmoptions加入-Dfile.encodingUTF-8 第二步: File-Settings-Editor-File Encodings 把所有的编码格式改为UTF-8 尝试跑一下代码,如果还不行,重启IDE 再试试。