您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

把K8s做到可观测,都需要哪些选型?

时间:2022-06-29 10:54:07  来源:搜狐号  作者:Data数据分析站

作者 | 云昭

可观测对于微服务盛行的年代来讲,十分必要。成千上万的微服务给开发和运维团队带来了指数级的维护成本。要解决这个难题,就势必引入高效的监控工具来辅助技术管理和决策。而K8s作为当下微服务领域的一个热门选手,如何有效选择和部署监控K8s集群工具就成为了一个大家共同关注的话题。

PART 01

问题

在K8s环境中,应用程序运行在跨集群内的多个节点,同时服务也将分布在多个集群和多个云中,这就使得追踪、监控这些应用程序及其所依赖的基础设施的健康状况,非常具有挑战性。

K8s监控涉及从K8s集群收集指标、识别关键事件,目的是确保所有硬件、软件和应用程序按预期运行。因此,将指标集中汇总在一个中心位置,将有效帮助开发者了解和维护整个 K8s队列以及在其上运行的应用或服务的健康状况。

而要做到全方位监控非常困难,其中的两个难点在于:

1、容器化和K8s创建的抽象层之间的监控;

2、K8s环境中运行的应用程序的动态特性之间的监控。

这篇文章探讨了一些不错的K8s监控和日志工具,包括用于监控的Prometheus和用于可视化和仪表板的Grafana等。

PART 02

K8s可观测工具

目前业界流行的用于K8s容器监控的开源工具并不少,比较常见的有:Prometheus、Grafana、Elasticsearch、Thanos等。

1. Prometheus

Prometheus是一个开源系统监控和警报工具包,最初在 SoundCloud 构建,灵感来自 google 使用的 Borgmon 工具。自 2012 年成立以来,许多公司和组织都采用了 Prometheus,该项目拥有非常活跃的开发者和用户社区。

Prometheus 于 2016 年加入云原生计算基金会,成为继K8s之后的第二个托管项目。虽然本文在K8s监控的背景下讨论 Prometheus,但它可以满足各种各样的监控需求,比如帮助简化指标收集、关联事件和警报、提供安全性以及进行大规模故障排除和跟踪。

Prometheus的主要功能之一就是指标收集,这里的指标是什么?这要根据用户想要测量的内容或应用程序而异。对于 Web 服务器,它可能是请求时间,对于数据库,它可能是活动连接数或活动查询数等。Prometheus收集并存储用户指定的指标作为时间序列数据。可以分析指标以了解集群及其组件的运行状态。

Prometheus的可靠性非常出色。这有助于确保在用户的环境中出现其他问题时,Prometheus仍然可以访问。每个Prometheus服务器都是独立的。本地时间序列数据库使其独立于远程存储或其他远程服务。这有助于快速识别问题并接收有关受监控集群和应用程序系统性能的实时反馈。

Prometheus的主要组件,包括Prometheus服务器和Alertmanager,整体架构如下图所示。虽然Prometheus提供了 Web UI,但它通常与Grafana结合使用以实现更灵活的可视化。

2. Grafana

Grafana是一个完全托管的应用程序和基础设施可视化平台,可与Prometheus等监控软件配合使用。Prometheus和Grafana的组合正在成为 devops 团队用于存储和可视化时间序列数据的越来越常见的监控堆栈。Prometheus作为存储后端,Prafana作为分析和可视化的接口。

3. Thanos

Thanos作为度量(Metric)系统,它提供了一种简单且经济高效的方式来集中和扩展基于Prometheus的监控系统。

4. Elasticsearch(ES)

Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎。它几乎适用于所有数据类型:数字、文本、地理位置、结构化数据、非结构化数据等。

5. Logstash

Logstash是一个开源的服务器端数据处理管道,可同时从多个来源获取数据,并对其进行转换,然后将其发送到合适的存储区。

6. Kibana

Kibana提供了 Elasticsearch 数据进行可视化的免费开放的用户界面,并允许用户在Elastic Stack中进行导航。它提供了一种数据可视化和探索工具,用于日志和时间序列分析、应用程序监控和运营智能用例。从跟踪查询负载,到理解请求在整个应用的运转,都能有效完成。

许多团队单独或组合使用这些监控和日志记录工具来创建自己的解决方案并解决特定的容器监控和K8s应用程序监控需求。目前市面上比较流行的K8s监控工具组合大体上可以分为两种:

Prometheus+Grafana,Elasticsearch+Logstash+Kibana。后者通常被称为ELK堆栈或Elastic Stack,目前这套组合是免费和开源的。

PART 03

注意事项

无论是单独部署还是组合部署,监控工具的使用都必然会带来一定的复杂性,尤其当遇到情况复杂的K8s集群时——可能在不同的云环境中运行不同的K8s发行版,难度将陡然增加。

一般来说,需要注意以下几点:

1. Prometheus单独配置不适用于大规模场景

由于应用程序载入问题、手动配置门槛较高、配置不同步,大规模的Prometheus配置管理会给开发运维团队带来十分艰巨的挑战。

举个例子,截至 2019 年底,Uber 的工作负载已增长到 4,000 多个微服务。要管理和操作此类复杂的应用程序,技术团队需要更加高级的可观测性,这需要为每个应用程序进行抓取、仪表板和警报的专用配置。而创建这些配置,并将它们应用到每个环境——通常是手动完成,并且每次发生变化时都以临时方式完成,这对于一家起来说是难以承担的。

2. Prometheus和Grafana在多集群环境中适用性有限制

虽然Prometheus和Grafana可以很好地协同用于单个集群,但在多集群环境中,用户可能必须将Thanos添加到用户的工具集中以聚合数据并提供长期存储和全局视图。用户仍然可能面临数据保留和HA(高可用性)的限制,导致一些人更喜欢 ELK 堆栈。

基于这种多集群的复杂性,许多公司团队更喜欢使用 Datadog、Cloudwatch 和 New Relic 等商业解决方案将监控作为服务。

PART 04

写在最后

K8s对于当下的大规模应用的技术架构的重要性不言而喻。而K8s的可观测性(监控)工具目前也成为了开发运维团队绕不过去的一道门槛。不管是Prometheus、Grafana 还是ELK,这些工具在业务中已经得到了不错的性能验证,希望本文可以给大家到来一些有益的思考。

参考资料:

https://dzone.com/articles/kube.NETes-monitoring-with-prometheus

https://prometheus.io/docs/



Tags:K8s   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
我们一起聊聊K8s定时备份MySQL并发送到指定邮箱
边车容器(sidecar):边车容器就是与主容器一起在一个pod中运行的容器,为业务容器赋能,共享一个网络空间,所以可以用127.0.0.1:3306连接主容器的数据库。一、背景:一开始的初衷是,想...【详细内容】
2023-12-29  Search: K8s  点击:(74)  评论:(0)  加入收藏
升级就崩溃,K8s需要LTS版本!
Kubernetes集群不是在升级,就是在升级的路上。而对于维护K8s集群的团队来说,最担心的莫过于,系统因为K8s升级而引发了服务器大规模崩溃。想象一下,K8s升级发生在某个晚上,突然某...【详细内容】
2023-12-05  Search: K8s  点击:(220)  评论:(0)  加入收藏
k8s部署维护问题汇总
集群问题系统Error: unknown flag: --etcd-quorum-read删除service 里面的相应字段start request repeated too quickly for kube-apiserver.service查看是不是有之前的进程...【详细内容】
2023-11-30  Search: K8s  点击:(197)  评论:(0)  加入收藏
五分钟 k8s 实战-滚动更新与优雅停机
当我们在生产环境发布应用时,必须要考虑到当前系统还有用户正在使用的情况,所以尽量需要做到不停机发版。所以在发布过程中理论上之前的 v1 版本依然存在,必须得等待 v2 版本启...【详细内容】
2023-11-30  Search: K8s  点击:(242)  评论:(0)  加入收藏
五分钟 K8s 实战-应用探针
今天进入 kubernetes 的运维部分(并不是运维 kubernetes,而是运维应用),其实日常我们大部分使用 kubernetes 的功能就是以往运维的工作,现在云原生将运维和研发关系变得更紧密了...【详细内容】
2023-11-27  Search: K8s  点击:(185)  评论:(0)  加入收藏
Kubernetes创始人发声!K8s在被反噬!
Kubernetes 变得太复杂了,它需要学会克制,否则就会停止创新,直至丢失大本营。Kubernetes 联合创始人Tim Hockin 罕见发声。在今年的 KubeCon 上,他建议,Kubernetes 核心维护者应...【详细内容】
2023-11-27  Search: K8s  点击:(156)  评论:(0)  加入收藏
K8s-服务网格实战-配置 Mesh(灰度发布)
在上一篇 k8s-服务网格实战-入门Istio中分享了如何安装部署 Istio,同时可以利用 Istio 实现 gRPC 的负载均衡。今天我们更进一步,深入了解使用 Istio 的功能。从 Istio 的流量...【详细内容】
2023-11-08  Search: K8s  点击:(339)  评论:(0)  加入收藏
Wasm的野心:取代K8s,不如结合K8s
作者丨B. Cameron Gain编译丨诺亚出品 | 51CTO技术栈(微信号:blog51cto)虽然WebAssembly (Wasm)已被证明在浏览器和某些有针对性的服务器部署中可以很好地工作,但允许开发人员“...【详细内容】
2023-11-07  Search: K8s  点击:(375)  评论:(0)  加入收藏
在本地 K8s 中轻松部署自签 TLS 证书
随着互联网的飞速发展,安全性日益成为我们关注的焦点。HTTPS 已从一项奢侈的技术逐渐成为现代网络交互的标准。它不仅仅是保护信息的重要工具,更是实现信任和品质的象征...【详细内容】
2023-11-03  Search: K8s  点击:(254)  评论:(0)  加入收藏
K8s-服务网格实战-入门Istio
背景终于进入大家都比较感兴趣的服务网格系列了,在前面已经讲解了: 如何部署应用到 kubernetes 服务之间如何调用 如何通过域名访问我们的服务 如何使用 kubernetes 自带的配...【详细内容】
2023-11-01  Search: K8s  点击:(231)  评论:(0)  加入收藏
▌简易百科推荐
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(8)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(15)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(54)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(47)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(39)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(51)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(68)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(88)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(86)  评论:(0)  加入收藏
花 15 分钟把 Express.js 搞明白,全栈没有那么难
Express 是老牌的 Node.js 框架,以简单和轻量著称,几行代码就可以启动一个 HTTP 服务器。市面上主流的 Node.js 框架,如 Egg.js、Nest.js 等都与 Express 息息相关。Express 框...【详细内容】
2024-01-16  程序员成功  微信公众号  Tags:Express.js   点击:(88)  评论:(0)  加入收藏
站内最新
站内热门
站内头条