当前位置: 首页 > 编程日记 > 正文

docker logstash_用于监视Kubernetes和Docker的六大开源工具

5c643c8690883366224eaf1ccdad67c8.png

Kubernetes和Docker是在DevOps圈中最常听到的两个词。Docker是一个工具,它使你能够以容器化的方式运行应用程序,Kubernetes是一个用于编排、管理容器的平台——如果你想使用Docker CLI去手动地管理数千个容器,这是不切实际的。然而,仅仅通过Kubernetes管理并运行数千个容器是不够的,你还需要监控这些容器,以确保服务处于最佳运行状态。这一过程被称为网站可靠性工程(Site Reliability Engineering),是由谷歌提出并推广的一个术语。可观测性和分析性是SRE的重要组成部分。它可细分为以下三个部分:
  • 监控,从应用程序和宿主机中提取数值指标,这些指标可以被可视化和分析,以显示资源的当前状态。一旦提取到了数值指标,就可以使用它们来设置告警规则、促进分析和调试,并更好的做出决策。

  • 日志,帮助开发人员在容器发生故障时,排除出错原因。容器日志随着容器生命周期的结束也就消失了。Kubernetes和Docker确实提供了一种浏览容器日志的方式,但是它的功能非常有限。因此,在任何以容器构成的环境中,集中式的管理日志是必须的。

  • 跟踪,帮助你调试在网络上运行的服务,并跟踪请求链路,直到找到问题的根源。在微服务体系结构中,当多个服务/容器相互发送请求以完成一个业务任务时,需要一个适当的跟踪解决方案。

本文将详细讲解六个最热门的开源工具,专门用于容器化服务的监控和分析。Prometheus

c9570b7e7a63f2c4017ccc877992c3a4.png

当讨论开源监控解决方案时,首先想到的就是Prometheus。它在开发社区中非常流行,是CNCF的毕业项目。Prometheus最初由SoundCloud创建并开放源代码。Prometheus简化了提取数值指标的过程,直接从一个基于时间序列的监控端点中提取。适用于监视高度动态变化的容器环境。Prometheus由三个部分组成:Prometheus server、Alertmanager和exporters。exporters以独立进程或容器的方式运行在目标机器上,生成各种指标数据,通过API的方式发送给Prometheus server。Prometheus server负责服务发现,也可以从exporters直接拉取指标数据,然后将数据存储在Prometheus的数据库中,用于可视化或告警服务。Alertmanager用于设置告警规则,分析Prometheus数据库中的数据,当触发某个规则时,向接收者发送警报。在这里可以找到大量的exporters,它们都得到了Prometheus的官方支持和社区的维护。Prometheus已经成为监控云原生应用的行业标准。尽管它以服务发现的简单性、易用性、告警服务和与Kubernetes的集成而闻名,但指标数据只能被Prometheus server拉取的方式并不理想。这意味着exporters必须能够被Prometheus server访问。然而,在Prometheus中实现了一个pushgateway,它支持将数据直接推送给Prometheus server,而不是由Prometheus server主动拉取。Prometheus的另一个缺点是它不能很好地水平扩展。这个问题可以在Thanos adaptation of Prometheus(https://improbable.io/blog/thanos-prometheus-at-scale)找到解决方案。相关工具和技术:Grafana、Cortex、Thanos、Prometheus Exporters、Alert Manager、Istio、Prometheus Operator。

986cdc47e24936cacc6721985d33f044.png

图1:Prometheus图表Grafana

c9570b7e7a63f2c4017ccc877992c3a4.png

Grafana是一款开源的指标分析和可视化套件。它允许你使用来自多个数据源(如Prometheus、Elasticsearch、MySQL、Postgres和Redis)的数据创建自定义仪表板。此外,Grafana有自己的告警系统和基于角色的访问控制(RBAC)系统。Grafana作为一种数据可视化工具,在Prometheus的用户中非常出名,它可以有效地可视化存储在Prometheus中的指标数据。Grafana为来自各种数据源的数据提供了大量官方和社区构建的定制化仪表板,允许用户轻松地设置仪表板并监控数据。Grafana提供另一种相关产品Loki,它将Kubernetes中的日志聚集起来,并与Grafana UI很好地集成在一起。相关工具和技术:Loki、Prometheus。

a2ecf0914d29f35b12f643103c3d14e8.png

图2:Grafana中Kubernetes资源仪表板Elastic Stack

c9570b7e7a63f2c4017ccc877992c3a4.png

Elastic Stack是一组来自Elastic的开源产品,旨在帮助用户实时搜索、分析和可视化来自任何类型的数据源的任何格式的数据。该产品之前被称为ELK,每个字母代表公司的一款主要产品:Elasticsearch,Logstash和Kibana。Elastic Stack利用Elasticsearch提供监测和日志解决方案。为了聚合日志,人们倾向于使用Elasticsearch进行存储,使用Logstash或Fluentd发送日志,使用Kibana进行可视化。Fluentd不是Elastic Stack的一部分,但它广泛地应用于Kubernetes环境中,用以代替Logstash。类似地,Metricbeat用于获取指标数据并在Kibana上进行可视化。Elastic Stack企业版附带了X-Pack,X-Pack是一组支持报表、警报和基于角色的访问控制(RBAC)等功能的附加工具。默认情况下,Elastic Stack GUI(Kibana)不支持RBAC。你必须使用Elastic Stack企业版本来启用RBAC。相关工具和技术:X-pack、Metricbeat、Logstash、Kibana。

a84dc647a9606503ffd0e00f59a6936b.png

图3:Elasticsearch中的发现视图。Sensu Go

c9570b7e7a63f2c4017ccc877992c3a4.png

Sensu Go是一款用于多云监控的遥测和服务健康检测解决方案。帮助你查看服务器、容器、服务、应用程序、功能和跨任何公有或私有云的连接设备。Sensu可以和Prometheus一起运行,以获得两种解决方案的最佳效果,也可以在没有Prometheus的情况下自己运行。因为将应用程序级别的指标数据导出到Prometheus需要将Prometheus SDK加载到应用程序的代码库中,并暴露一个端口,所以Sensu与Prometheus一起工作是最好的。然后,该端口负责收集数据并存储在Prometheus server中。这听起来好像有很多工作要做——有时确实如此。Sensu通过使用sidecar的方式来避免这种复杂性。在应用程序旁部署了一个Sensu代理。Sensu代理不断地收集数据并发送给Prometheus server,这样就不需要更改应用程序代码了。Sensu也可以脱离Prometheus工作,独自在Kubernetes中运行,在Kubernetes中,Sensu有自己的服务器来存储和可视化由Sensu代理收集的数据。相关工具和技术:Prometheus。

c331dfa7825884d3f4230c448d4d9e6a.png

图4:Sensu中的事件Sysdig Inspect

c9570b7e7a63f2c4017ccc877992c3a4.png

Sysdig公司有两款开源产品:Sysdig Inspect和Falco。在这里,我们将重点讨论Inspect,Sysdig Inspect用于监视和捕获系统中运行的容器进程,并允许深入这些进程以进行事后取证。帮助分析应用程序性能、排查错误并监视任何可能出现错误的处理器。此外,如果你的系统遭到了破坏,Sysdig帮助你了解破坏是如何发生的,以及在这个过程中丢失了哪些数据。Sysdig Inspect是一个非常强大的工具,它关注于系统的性能调优和安全性调查。相关工具和技术:Grafana、Sysdig、Sysdig Falco。

1b0a11e721bf41021620f3f772689699.png

图5:Sysdig检查概述Jaeger

c9570b7e7a63f2c4017ccc877992c3a4.png

Jaeger是一种端到端的分布式跟踪解决方案,由Uber Engineering开源。帮助你在复杂的分布式系统中监视和排查事务故障。在现代微服务体系结构中,大多数操作问题都属于网络和可观察性的范畴。当发生服务故障时,你不知道请求是如何通过网络从一个服务转到另一个服务来完成单个业务请求的。调试变得异常困难。Jaeger目前在CNCF下孵化,Jaeger使用跟踪技术来寻找出错原因、性能和延迟优化,以及分布式事务监控。Jaeger可以与Istio一起使用,Istio是由谷歌开源的一款流行的服务网格实现。相关工具和技术:Prometheus、Jaeger、Zipkin、Istio。

26539284d061592236daaaeb50dc86fd.png

图6:Jaeger轨迹追踪图总结

c9570b7e7a63f2c4017ccc877992c3a4.png

这些工具在科技行业中被广泛使用,它们都有各自的特点。然而,大多数解决方案都需要熟练的技能去部署和持续的维护,这可能会成为DevOps团队的负担,并分散他们对业务的注意力。没有一个解决方案可以满足所有需求,因为每个工具都侧重于可观察性和分析的一个或两个特定方面。通过将这些工具混合在一起,可以针对自己的业务需求获得独特的解决方案。为了便于比较,下面的图表概述了本文讨论的每种工具提供的特性。

8e0b8ff0ae0a283da331e9d0ba805365.png

原文链接:https://devops.com/top-six-open-source-tools-for-monitoring-kubernetes-and-docker/Kubernetes实战培训

c9570b7e7a63f2c4017ccc877992c3a4.png

Kubernetes实战培训将于2020年7月24日在深圳开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:云原生介绍、微服务;Docker基础、Docker工作原理、镜像、网络、存储、数据卷、安全;Kubernetes架构、核心组件、常用对象、网络、存储、认证、服务发现、调度和服务质量保证、日志、监控、告警、Helm、实践案例等,点击下方图片或者阅读原文链接查看详情。

83785e8beb3dd2af378b64daf5ee308a.png

相关文章:

大道至简第一章读后感

当今社会,信息化飞速发展,软件的需求也越来越高,而《大道至简》给我们点透了编程的精义。 大道至简第一是讲的便是编程的精义,文章借愚公移山这个故事来阐释编程的基本思路:出现一个问题(惩山北之塞&#x…

nginx resolver 指令的使用

官方解释下就是:反向代理的场景,upstream后端用域名时,配置resolver以便于nginx能够解析该域名 Configures name servers used to resolve names of upstream servers into addresses 官网地址:http://nginx.org/en/docs/http/ngx…

以太坊和EOS DApp数量上升

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 目前,在最受欢迎的智能合约平台以太坊和EOS上,每月大约有180个新的去中心化应用程序(DApps),该数量处于历史最高…

转载iOS开发中常见的警告及错误

iOS警告收录及科学快速的消除方法 前言:现在你维护的项目有多少警告?看着几百条警告觉得心里烦么?你真的觉得警告又不是错误可以完全不管么? 如果你也被这些问题困惑,可以和我一起进行下面的操作。其实大部分的警告都是…

数学思想 —— 低维与高维的统一

在平面几何有勾股定理:“假设三角形ABC的两边AB、AC互相垂直,则有关系: AB2AC2BC2当我们拓展到空间,类比平面几何的勾股定理并研究三棱锥的侧面面积与底面面积的关系时,我们可得到相应结论:假设三棱锥A-BCD…

python键_在Python中创建键命令

我正在根据我在网上找到的一个脚本编写我自己的简单键记录器。但是,我正在尝试编写一个键命令,以便在键入此命令时记录器程序将关闭。我该怎么做?(我也知道它一点也不安全,但这与这个程序无关) 例如&#x…

对标以太坊的EOS再火,也拼不过InterValue的区块链4.0

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 2017年6月26日上线的数字货币EOS,仅用5天时间,就融了1.85亿美元,一举打破ICO的融资记录。 至2018年4月12日&a…

python中ttk和tkinter_Python tkinter与ttk日历

我正在使用 this代码在我的Tkinter上创建一个简单的日历.当我在主根窗口上放置日历时,日历显示正常.因此,我决定放置另一个按钮,它将创建一个Tkinter顶层窗口并在顶层窗口上放置另外一个日历.但这次它无法显示日历,而是它给了我这个错误,“TclError:无法打包. 18913…

Ubuntu dns

在Ubuntu系统网络设备启动的流程中,会依赖/etc/network/interface的配置文件初始化网络接口,所以直接在/etc/network/interface之中配置好对应的dns服务器会最先写入/etc/resolv.conf。所以我们可以在其中添加如下内容: dns-nameserve…

web图片识别

<!doctype html><html lang"en"><head> <meta charset"UTF-8"> <title>图像识别</title> <script src"../js/jquery.js"></script></head><body><canvas id"canv…

通俗易懂,到底什么是区块链?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 2017年9月4日&#xff0c;中国政府正式明令禁止ICO和数字货币交易行为&#xff0c;随即关闭了多个数字货币交易所。同时政府也多次声明&#xff0…

select三级联动 怎么删除前一个的_python测试开发django57.xadmin选项二级联动

前言当我们选择项目分类的时候&#xff0c;一个项目下关联多个模块&#xff0c;同时有这两个选项框的时候&#xff0c;需要实现选中一个项目&#xff0c;模块里面自动删除出该项目下的模块&#xff0c;如下图这种解决基本思路&#xff1a;1.写个jqeury脚本监听change事件2.ajax…

安装wdcp的方法和bug

1.Wdcp安装SSH登录系统,这里讲解源码编译安装和RPM包安装两种 a.源码编译安装 下载源码包wget http://dl.wdlinux.cn:5180/lanmp_laster.tar.gz 解压并安装 tar zxvf lanmp_laster.tar.gz sh in.sh linux安装wdcp之后mysql找不到my.cnf&#xff0c;locate my-medium.cnf。 cp /…

第七周读书笔记

《深入理解计算机系统》从程序设计与性能优化的角度介绍了计算机系统&#xff0c;让我从程序员的角度了解了计算机系统&#xff0c;更深入地理解了硬件、操作系统和编译系统等对应用程序性能和正确性的影响&#xff0c;并掌握了基本的程序优化设计技术&#xff0c;为编写更高效…

是什么限制了区块链技术的应用?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 2017年已经匆匆离去&#xff0c;回顾过去一整年&#xff0c;似乎区块链应用一直处于隐忍未发的状态&#xff0c;很多项目的落地已处于验证阶段&…

软件包管理(rpmyum)

一、rpm包管理器 rpm是一个功能强大的包管理工具&#xff0c;可用于构建&#xff0c;安装&#xff0c;查询&#xff0c;验证&#xff0c;更新和卸载软件包。 用法&#xff1a; rpm [OPTION...] 配置文件&#xff1a; /var/lib/rpm/ 已安装rpm包的元数据 选项&#xff1a; -i&am…

python yield理解_对Python中Yield的理解

看到下面这段程序的时候&#xff0c;有点不明白这个yield到底是个啥东西&#xff0c;看了网上很多的博客&#xff0c;大致理解了yield的含义&#xff0c;所以记录下来。要说yield首先要说python中的生成器&#xff0c;那么什么是生成器?假设有一个包含一百万个元素的列表&…

Linux下文件的三种时间戳

Linux下文件的三种时间标记 三种时间对应关系表 columncolumncolumn访问时间Accessatime修改时间Modifymtime状态改动时间Changectime如何查看文件文件的三种时间戳 stat filename 三种时间戳的解释 访问时间&#xff1a;读一次文件的内容&#xff0c;这个时间就会更新。比如mo…

比特币和以太坊本质有什么区别?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 14年的时候&#xff0c;币圈 &#xff08;当时还没有链圈之说&#xff0c;链圈应该是17年的事情了&#xff0c;区块链概念的流行是15年底&#xf…

HDU1402(FFT入门)

题目链接&#xff1a;http://acm.hdu.edu.cn/status.php?userReykjavik11207&pid1402&status5 本题数据范围为5e4&#xff0c;常规方法O(n2)肯定是不行的。 FFT是离散傅里叶变换DFT的快速形式 对多项式f(x) a0 a1x a2x2 an-1xn-1&#xff0c;有两种表示法&#x…

python怎么读_如何用Python读写文件

前面我们已经介绍了很多Python相关的基础知识&#xff0c;大家是不是对Python已经有了进一步认识了呢&#xff1f;作为人工智能时代的热门编程语言&#xff0c;开始接触并学习Python的孩子越来越多&#xff0c;家长们都不想让自己的孩子落于人后&#xff0c;近期前来找陈老师咨…

什么是区块链智能合约?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 自从2009年第一枚比特币诞生&#xff0c;九年多时间里&#xff0c;区块链技术正在被应用在人们生活的各方各面&#xff0c;从1.0时代的数字货币&…

python数据分析基础 余本国_Python数据分析基础

本书根据作者多年教学经验编写, 条理清楚, 内容深浅适中, 尽量让读者从实例出发, 结合课后练习, 少走弯路。本书涉及的内容主要包括Python数据类型与运算、流程控制及函数与类、Pandas库的数据处理与分析等。作者通过近三轮的教学&#xff0c;对Python3.x的基础知识进行了筛选和…

stm32F042 (二) 按键触发中断

已经实现GPIO口输出高低电平控制LED&#xff0c;这里实现按键触发中断来改变LED闪亮的频率&#xff0c;因为PB3连着LED&#xff0c;所以PB3的输出模式没有改变&#xff0c;随意选一个GPIO口PA7接按键产生中断。因为nucleo开发板是裸板&#xff0c;所以按键、上拉电阻是另找在面…

区块链和智能合约的关系

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 尽管比特币&#xff08;Bitcoin&#xff09;和以太坊&#xff08;Ethereum&#xff09;是经常被一起提及的两个词&#xff0c;但实际上&#xff0…

repo同步代码_iTOP-4412开发板android4.0代码下载和编译

Android4.0 源码可以从光盘&#xff0c;网盘获取稳定版本&#xff0c;也可以从 GitHub 下载我们的开发版本。GitHub 仅提供源码下载&#xff0c;不提供二进制下载&#xff0c;二进制文件存放在光盘和网盘中。基于迅为4412开发板6.3.1.1 repo 下载android 代码管理不同于 uboot,…

vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除...

一、SPA 不是指水疗。是 single page web application 的缩写。中文翻译为 单页应用程序 或 单页Web应用&#xff0c;更多解释请自行搜索。 所有的前端人员都应该明白我们的页面的 url 构成&#xff1a;http://www.fengcms.com/index.html?namefungleo&old32#mylove/is/wo…

神奇的输入 while(cin....)如何在遇见换行之后进入下一层循环读入

1 cin>>m>>n;2 for(int i1;i<m;i){4 int x0;5 char ch ;6 while(ch!10) //在遇到换行之后进入下一层循环读入。7 {8 x;9 cin>>c[x]; 10 chgetchar(); 11 } 神奇的输入。 get skill&#xff01;转载于:https://www.cnblogs.com/zyker/p/588…

区块链中的“智能合约”有何应用?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 如刺金般闪耀的区块链时代&#xff0c;投资者的热潮还将持续升温&#xff0c;与此同时金融的大佬已经开始注意到区块链应用落地场景的实现&#xff…

米勒罗宾素性测试(Miller–Rabin primality test)

1 #include<iostream> //该程序为哥德巴赫猜&#xff08;想输出所有的组合&#xff09;2 #include<cmath>3 #include<cstdlib>4 #include<ctime>5 #include<cstdio>6 7 using namespace std;8 9 typedef unsigned long long ull; 10 typedef u…