《企业实战分享 · 常用运维中间件》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,如需交流,欢迎留言评论。👍

文章目录

    • 写在前面的话
    • Rancher (K8S服务管理)
    • Nacos(注册&配置中心)
    • SB Admin(健康检查)
    • Kibana(ES面板)
    • Prometheus(业务资源监控)
    • Grafana(资源监控看板)
    • Zipkin(链路追踪)
    • Skywalking(链路追踪)
    • Kafka(消息中间件)
    • 总结陈词

写在前面的话

笔者所在公司(下文简称“公司”),开发采用前后端分离模式,后端技术栈SpringCloud,前端技术栈Vue/Nuxt
由于整体涉及较多前端和后端服务,因此才采用K8S进行容器编排部署,同时为保障各项服务更好的运维监测,也配套了诸多中间件。
本篇博文鉴于此背景,挑选几个较为常见的中间件,简单加以分享说明,期望与君共勉。


Rancher (K8S服务管理)

【技术简介】
公司采用Kubernetes作为微服务部署方案,Kubernetes (简称 K8S)是一个开源的容器编排平台,旨在简化容器化应用程序的部署、管理和自动化运维。
Rancher 是一个完整的容器管理平台,它提供了对Kubernetes等多种容器编排引擎的支持,同时提供了额外的功能和工具,用于简化容器集群的部署、管理和运维。

【能做什么】
简单理解,Rancher是可视化操控K8S服务部署的管理页面,下面就介绍一下Rancher的常用操作,操作包含但不限于查看服务状态、查看容器日志和执行命令行、服务的启动停止等。
这些操作可以理解为,把传统的Centos服务器上做的一些操作可视化了,对开发人员更加友好。

【实操:执行命令&查看日志】
Rancher00

【实操:重新部署应用】
重新部署应用一般用于业务出错时或者刚发布后业务无法访问时使用。
Rancher00

【增加应用副本】
当grafna上面的pods内存使用率过高是,可以增加对应应用的副本数,
查看容器日志01

注意:增加副本可以随时增加,但是减少副本要等没什么业务的时候再减少。

查看容器日志 - 命令行方式】

  1. 进入装有kubectl的k8s节点服务器,以查看收费后端容器日志为例,它的容器名称为onelink-micro-charge(一般和项目名、镜像名是一致的),所属namespace为onelink(不同环境的namespace可能不一样,这个要和运维确认),先查看pod列表
kubectl get pod -n onelink | grep onelink-micro-charge

查看容器日志02

  1. 选择其中一个pod,查看日志
# 最常用!!!
# 从最近100行开始,持续监控容器日志
kubectl logs -f --tail=100 onelink-micro-charge-6cd766567f-ngptx -n onelink

# 查看容器的全量日志
kubectl logs onelink-micro-charge-6cd766567f-ngptx -n onelink

# 持续监控容器的全量日志
kubectl logs -f onelink-micro-charge-6cd766567f-ngptx -n onelink

# 查看最近1小时的容器日志
kubectl logs --since=1h onelink-micro-charge-7ccb64db88-7wss5 -n onelink

# 查看2022-09-09 14:04:40之后的容器日志,这个时间是UTC时间
kubectl logs --since-time="2022-09-09T14:04:40+00:00" onelink-micro-charge-7ccb64db88-7wss5  -n onelink

【查看容器日志 - Rancher方式】

  1. 进入所在项目

Rancher02

  1. 查看pod列表

Rancher01

  1. 查看pod日志

Rancher02


Nacos(注册&配置中心)

【技术简介】
公司由于后端技术栈为SpringCloudAlibaba,因此采用Nacos作为注册中心和配置中心,经常需要和 Nacos后台界面打交道,上去看服务注册状态和常见配置信息等等。

【Nacos 能做什么】
注册中心能查看健康服务实例情况,进行服务的上线/下线。
配置中心能查看当前的配置情况,并支持做出相应的调整。
Nacos操作太简单了,傻瓜式的,具体不展开了,有使用的开发基本可以理解。

Tips:可以比对实例数是否跟K8S的PODS数不一致,如果不一致可能是开发调试程序注册上来了。

Nacos


SB Admin(健康检查)

【技术简介】
Spring Boot Admin 是一个用于监控和管理 Spring Boot 应用程序的开源项目。它提供了一个直观的 Web 界面,用于监控多个 Spring Boot 应用程序的运行状态、健康状况、配置信息等,并提供了一些管理功能,如日志查看、应用程序重启等。
Spring Boot Admin 是建立在 Spring Boot Actuator 基础之上的,它利用 Actuator 提供的监控和管理功能,并在此基础上提供了更加直观和友好的界面,帮助用户更方便地监控和管理 Spring Boot 应用程序。因此,Spring Boot Admin 可以看作是 Actuator 的一个扩展和增强。
Spring Boot Admin 是一个非常实用的工具,可以帮助开发团队更好地监控和管理 Spring Boot 应用程序,提高应用程序的稳定性和可靠性。

【SB Admin 能做什么】

实时监控:Spring Boot Admin 可以实时监控多个 Spring Boot 应用程序的运行状态和性能指标,如内存使用情况、线程数、GC 日志等。
健康检查:Spring Boot Admin 可以检查每个应用程序的健康状况,并提供可视化的健康报告,帮助用户快速识别出问题所在。
配置管理:Spring Boot Admin 可以查看和修改每个应用程序的配置信息,包括环境变量、配置文件等,方便用户动态调整应用程序的配置。
日志查看:Spring Boot Admin 可以查看每个应用程序的日志文件,支持实时日志输出和搜索功能,方便用户快速定位和解决问题。
事件通知:Spring Boot Admin 支持事件通知机制,当应用程序出现异常或状态变化时,可以通过邮件、Slack 等方式通知管理员。
多租户支持:Spring Boot Admin 支持多租户模式,可以为不同的用户或团队提供独立的监控和管理界面。

换通俗一点的话来说,可以全局监控服务健康情况,也可以查看单个服务的健康详情,更多用法,参考网上资料即可。

【展示效果】
SBA01
SBA02

【拓展 - 如何代码自定义指标】
1、实质是运行在监控服务的,如下图所示:
自定义指标01
2、应用的监控指标扩展信息可以通过实现InfoContributor自定义,如下图:
自定义指标02

Tips:更多用法,参考网上资料即可。


Kibana(ES面板)

【技术简介】
Kibana是一个开源的数据可视化工具,用于实时分析和可视化大规模数据集。它是 Elastic Stack 中的一个组件,主要用于展示和分析 Elasticsearch 中的数据。
公司虽然单独开发了日志查阅界面,用于查阅ES日志数据,但毕竟编码阶段考虑有限。此时就可以直接使用Kibana中应用日志界面能看到的日志数据,这边能看到更全,利用的更好。

【Kibana 能做什么】
Kibana 能用在挺多地方,包含但不限于如下:
1、Discover 数据探索 – 快速检索ES索引数据,比应用日志更灵活
2、Dev Tools 开发工具 - 手动写JSON查询
3、Visualize 可视化 – 导出最慢的N个接口
4、Dashboard 仪表盘 – 用的较少
下面附上两个功能截图,这块可以实操一下,先不展开介绍,有需要另行补充。
Kibana查询02
Kibana查询02


Prometheus(业务资源监控)

【技术描述】
Prometheus 是一个开源的系统监控和报警工具包,专为可靠性和可扩展性设计,适用于动态的云原生环境。它最初由 SoundCloud 开发,并于 2012 年开源。作为云原生计算基金会(CNCF)的重要项目之一,Prometheus 在现代微服务和分布式系统中得到了广泛应用。

【实战运用】
笔者所在公司采用Prometheus监控所有服务、还包含各个中间件的状态。
框架层面也封装了自定义指标,例如数据库和HTTP请求相关指标,更多指标来源于各SpringBoot服务的/actuator/prometheus接口。
当生产环境遇到服务指标异常的时候,可以打开Prometheus,查看相应的指标信息。更复杂的指标,推荐使用Grafana看板查看仪表盘。

【示例效果 - 查询自定义指标】
利用Prometheus排查收费服务的连接数。
Prometheus


Grafana(资源监控看板)

【技术描述】
1、将Prometheus的采集指标数据,可视化展示出来;
2、可以添加网上现场的模板库,参考Grafana官网文档库,也可以自己做一些看板;

【查看仪表盘】
image.png
image.png
image.png
image.png
image.png
image.png


Zipkin(链路追踪)

【技术简介】
Zipkin 是一个开源的分布式跟踪系统,用于收集、存储、搜索和可视化跨多个服务的跟踪数据。
Zipkin 主要负责收集整合所有服务生成的跟踪信息,提供全局视图和跨服务的调用链分析功能。
Zipkin 接收由 Sleuth 生成的跟踪数据,并将这些数据存储在后端存储系统中(如 Elasticsearch、MySQL 等),并提供了一个用户界面用于查询和可视化这些数据。
参考:《企业实战分享 · Sleuth + Zipkin 实现链路追踪》

【实战运用】
笔者所在公司将日志数据采集后,统一存储在ES中,并自研日志查询页面,如下图:
应用日志查询
通过点击对应请求日志的链路追踪操作按钮,可以跳转到Zipkin的展示页,如下图:
Zipkin


Skywalking(链路追踪)

【技术简介】
Apache SkyWalking 是一个开源的应用性能监控和分布式追踪系统,主要用于监控、追踪和诊断分布式系统中的应用程序。它支持云原生、微服务和容器化环境,帮助开发者和运维人员对系统的性能和行为进行全面的监控和分析。

Tips:和Zipkin同为链路追踪产品。

【实战说明】
笔者所在公司,其中的运维部门采用的链路追踪产品,可以通过在服务器上安装Agent的方式,从整体层面监控全局日志,可覆盖所有产品线。
效果如下图:Skywalking界面


Kafka(消息中间件)

【技术简介】
Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。
笔者所在公司采用Kafka开发了消息中心,基于事件驱动机制管理系统内部消息交互,本板块涉及内容较多,后续另起专题介绍,暂不展开。

【监控插件效果】
Kafka监控插件01
Kafka监控插件02

【自研监控页面】
自研监控界面


总结陈词

上文简单介绍了几款公司当前在使用的运维中间件,帮助大家学习。
作为普通开发人员,可以不用熟悉全部的中间件,但至少应该知道什么场景需要使用什么工具。
当然,如果作为对技术有热情的,可以单独一个个深入了解,这里仅仅抛砖引玉。

💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。

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

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

相关文章

《昇思25天学习打卡营第6天|网络构建》

文章目录 前言:今日所学:1. 定义模型类2. 模型层3. 模型参数 前言: 在第六节中我们学习了网络构建,了解了神经网络模型是由神经网络层和Tensor操作构成,我们使用的mindspore.nn中提供了常见的升级网络层的实现&#x…

Spark on k8s 源码解析执行流程

Spark on k8s 源码解析执行流程 1.通过spark-submit脚本提交spark程序 在spark-submit脚本里面执行了SparkSubmit类的main方法 2.运行SparkSubmit类的main方法,解析spark参数,调用submit方法 3.在submit方法里调用doRunMain方法,最终调用r…

Python学习速成必备知识,(20道练习题)!

基础题练习 1、打印出1-100之间的所有偶数: for num in range(1, 101):if num % 2 0:print(num) 2、打印出用户输入的字符串的长度: string input("请输入一个字符串:")print("字符串的长度为:", len(str…

PHP验证日本手机电话号码

首先,您需要了解手机号码的规格。 根据 ,手机和PHS(个人手持电话系统)可以理解为以“070”、“080”和“090”开头的11位数字。 此外,以“050”开头的11位特定IP电话号码也将包含在该目标中。 关于以“060”开头的F…

Git 基础-创建版本库 git init、添加到暂存区git add、查看状态git status、查看改动git diff

1.创建版本库 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。 在目录中执行 git init,就可以创建一个 Git 仓库了。 注意: 没事不要手动修改 .git 目录里面的文件,不然改乱了,可能就…

初识Java(复习版)

一. 什么是Java Java是一种面向对象的编程语言,和C语言有所不同,C语言是一门面向过程的语言。偏底层实现,比较注重底层的逻辑实现。不能一味的说某一种语言特别好,每一种语言都是在特定的情况下有自己的优势。 二.Java语言发展史…

Redis哨兵和集群模式

特性哨兵模式集群模式高可用性是是数据分片否是水平扩展否是配置复杂度低高管理复杂度低高多键操作支持是否(有限制) 哨兵模式 原理: Redis 哨兵模式是一种高可用性解决方案,它通过监控 Redis 主从架构,自动执行故障…

JavaSEJava8 时间日期API + 使用心得

文章目录 1. LocalDate2. LocalTime3. LocalDateTime3.1创建 LocalDateTime3.2 LocalDateTime获取方法 4. LocalDateTime转换方法4.1 LocalDateTime增加或者减少时间的方法4.2 LocalDateTime修改方法 5. Period6. Duration7. 格式转换7.1 时间日期转换为字符串7.2 字符串转换为…

怎么导出等长,差分对的走线长度?

简介 今天需要导出等长组,差分对的走线长度?这个需要怎么做呢? 差分对和等长组 先来熟悉一下等长组和差分对的概念(表现在软件上) 差分对,是一对两个网等长组,多个网络 导出各自的数据 打开…

马斯克宣布xAI将在8月份推出Grok-2大模型 预计年底推出Grok-3

在今年内,由特斯拉创始人马斯克创立的人工智能初创公司xAI将推出两款重要产品Grok-2和Grok-3。马斯克在社交平台上透露了这一消息,其中Grok-2预计在今年8月份面世,而Grok-3则计划于年底前亮相。 除此之外,马斯克还表示&#xff0c…

LLM指令微调Prompt的最佳实践(二):Prompt迭代优化

文章目录 1. 前言2. Prompt定义3. 迭代优化——以产品说明书举例3.1 产品说明书3.2 初始Prompt3.3 优化1: 添加长度限制3.4 优化2: 细节纠错3.5 优化3: 添加表格 4. 总结5. 参考 1. 前言 前情提要: 《LLM指令微调Prompt的最佳实践(一)&#…

初试总分409分,专业课143,西电821专业

非常感谢自己考研409分上岸西安电子科技大学,杭州研究院,专业课143分,跟的研梦,讲课以及答疑还是非常专业的。 821专业课课本总共有四本,都在官网考纲的参考书里写了,不过主要参考其中两本,一本…

Go GMP:并发编程实践

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

速锐得解码汽车以太网技术特点接口定义数据传输及应用

在当前的汽车工业中,随着技术的飞速发展,车载网络技术也在不断进步与更新。其中,具备以太网的车型已成为一个新兴趋势,这主要归功于车载以太网技术在车内带宽需求较高的系统上的应用,如高级驾驶辅助系统(AD…

RabbitMQ 消息传递

消息何去何从 mandatory和immediate是channel.basicPublish方法中的两个参数,他们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。RabbitMQ提供的备份交换器可以将未能被交换器路由的消息(没有绑定队列或者没有匹配的绑定)存…

java基于ssm+jsp 二手交易平台网站

1商家能模块 商家首页,在商家首页页面可以查看个人中心、商品分类管理、商品信息管理、订单信息管理、订单配送管理信息,如图1所示。 图1商家首页界面图 个人中心,用户通过个人中心可以查看用户名、用户姓名、头像、性别、手机号码、邮箱等信…

【C语言】register 关键字

在C语言中,register关键字用于提示编译器将变量尽量存储在CPU的寄存器中,而不是在内存中。这是为了提高访问速度,因为寄存器的访问速度比内存快得多。使用register关键字的变量通常是频繁使用的局部变量。 基本用法 void example() {regist…

第三届行为科学与应用心理学国际会议(BSAP2024)

会议日期:2024年9月13-15日 会议地点:马来西亚 吉隆坡 会议官网:https://www.iaast.cn/meet/home/Bx116rPM 出版检索:SSCI&SCI 【支持单位】 苏库尔IBA大学 苏库尔IBA大学.png 【大会主席】 【出版与检索】

​​​​​​​​​​​​​​Spark Standalone集群环境

目录 Spark Standalone集群环境 修改配置文件 【workers】 【spark-env.sh】 【配置spark应用日志】 【log4j.properties】 分发到其他机器 启动spark Standalone 启动方式1:集群启动和停止 启动方式2:单独启动和停止 连接集群 【spark-shel…

Librechat快速部署指南

引言 Github的开源免费程序里,Librechat作为AI对话使用,现阶段可谓是最佳选择,配合聚合API >>进行使用,能够保证成本最低,自由度最高,私密性最强,功能丰富且界面美观,如此以来…