开发者社区> 游客3ahaqkwfmkcwc> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

基于 Prometheus + Grafana 实现 Nexus 监控观测

简介: 前言 Nexus 是开源的 Maven 私服仓库,同时 Nexus 还支持 Npm 、 .Net、Golang 、Python 等开发语言的包管理。Nexus 也是我们重度使用的一个应用,Nexus 保存着 Tap 各开发组的代码构建产物。Nexus 出现问题会导致项目 CI 、CD 流程阻断。本文旨在通过 Prometheus + Grafana 实现 Nexus 运行时监控观测,帮助运维人员更加了解 Nexus ,轻松从容应对线上各种疑难杂症。
+关注继续查看

前言

Nexus 是开源的 Maven 私服仓库,同时 Nexus 还支持 Npm 、 .Net、Golang 、Python 等开发语言的包管理。Nexus 也是我们重度使用的一个应用,Nexus 保存着 Tap 各开发组的代码构建产物。Nexus 出现问题会导致项目 CI 、CD 流程阻断。本文旨在通过 Prometheus + Grafana 实现 Nexus 运行时监控观测,帮助运维人员更加了解 Nexus ,轻松从容应对线上各种疑难杂症。

  • Nexus Version:3.29.2-02

metrics 采集

Nexus 提供了 Prometheus 格式数据的接口,这个接口需要授权 nx-metrics-all 才能访问,所以,将 metrics 采集到 Prometheus 里,需要做如下。

  • metrics 接口:http://localhost:8081/service/metrics/prometheus

创建 metrics 接口权限账户

给指标接口创建一个单独的 metrics 账户,然后创建一个新的 Role(nx-metrics) , 将 nx-metrics-all 给这个角色,然后将角色给 metrics 账户。如下图。

image

配置 Prometheus 

metrics 账户准备好后,在 Prometheus 侧添加如下配置项:

global:
  scrape_interval: 15s
  scrape_timeout: 10s
  evaluation_interval: 15s
alerting:
  alertmanagers:
  - static_configs:
    - targets: []
    scheme: http
    timeout: 10s
scrape_configs:
- job_name: nxrm
  scrape_interval: 15s
  scrape_timeout: 10s
  metrics_path: /service/metrics/prometheus
  scheme: http
  basic_auth:
    username: metrics
    password: metrics
  static_configs:
  - targets:
    - localhost:8081

配置无误后,metrics 已经收集到 Prometheus 了。可以在 Prometheus 里查询  org_sonatype_nexus_ 打头的指标,有就代表配置成功了。

grafana 绘制面板

Nexus metrics 总共有超过 2k 多行。在绘制观测面板前,需要先分析下采集的 metrics 信息

分析 metrics 

Nexus 暴露出来的指标,主要分三个类别:

  • Component :相关组件的运行时指标,比如文件存储组件 FileBlobStore,以  org_sonatype_nexus_ 前缀开头的系列指标。
  • Jetty :Web 容器,负责接收响应请求的,以  org_eclipse_jetty_ 前缀开头的系列指标。
  • Jvm :Jvm Runtime,反应堆内存、非堆内存、GC 回收等,以 jvm_ 前缀开头的系列指标。

其中,Component 指标是最多的,也有部分 Component 根本就没有使用,指标一直为 0,这部分指标就可以不用绘制面板。

绘制观测面板

经过上面分析,可以绘制出如下观测面板。

Nexus Component

image

这个面板绘制了常用的组件运行信息,以 LdapServerComponent 为例,我们启用了这个组件,对接了公司内部的 LDAP 。之前有用户反馈登录失败,最后排查到是 Nexus 访问 LDAP Server 出现了问题,如果有了这个观测图,就能很清楚的看到 LdapServerComponent 内部的运行情况,快速定位问题。另外,Component Exceptions 面板也能集中观测到所有组件的异常信息,这里只要指标大于 0 ,就代表 Nexus 服务出问题了。

Jetty WebAppContext

image

Jetty 面板反应了 Nexus 的流量情况,请求响应等信息。其中 Jetty 线程池,可以关注 wait-jobs(等待线程池执行的任务数) 这个指标,如果这个指标一直大于 0 ,则表示 Nexus Server 出现性能问题了。

Jvm Runtime

image

Jvm 的指标不用多说,和一般应用的 jvm 一样。它反应了应用的内存情况,包括堆内存和非堆内存,以及堆外内存,还有 GC 执行情况等。以内存观测为例,我们的 Nexus 服务是从 ECS 迁移的 K8s 环境中的,当时给 pod 的内存资源设置了 request 、limit 4G,给 jvm xmx 设置了 2G,运行后还会出现内存告警,实际使用内存远超 xmx 设置的大小。从贴出截图已经可以看出答案,是因为 Nexus 使用了超过 2G 的堆外内存(Direct Buffers + Mapped Buffers)。

    结语

    添加 Nexus 观测指标,一是可以清晰的了解这个软件的运行时情况,更加精准的给运行资源。二是方便出现类似问题时,可以快速排查问题。三是可以根据指标信息制定告警规则,比用户先一步发现问题。上面展示的 Grafana 面板已经分享到 Grafana Dashboards 市场了,可以通过如下链接找到 ID 直接导入到 Grafana 中,欢迎下载。

    版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

    相关文章
    全方位解读服务网格(Service Mesh)的背景和概念
    为了解决微服务框架的侵入性问题,我们引入服务网格。
    1209 0
    PolarDB 并行查询的前世今生
    本文会深入介绍PolarDB MySQL在并行查询这一企业级查询加速特性上做的技术探索、形态演进和相关组件的实现原理,所涉及功能随PolarDB MySQL 8.0.2版本上线。
    476 0
    企业内部应用接入钉钉获取部门及人员信息
    企业内部应用接入钉钉,同时通过API获取当前企业下部门及人员信息
    1160 0
    MySQL模糊查询再也用不着 like+% 了!
    我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基用户数据的关键字进行全文查找,电子商务网站需要根据用户的查询条件,在可能需要在商品的详细介绍中进行查找,这些都不是B+树索引能很好完成的工作。 通过数值比较,范围过滤等就可以完成绝大多数我们需要的查询了。但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较,全文索引就是为这种场景设计的。
    25665 0
    阿里云云原生一体化数仓正式发布  助力企业数据驱动业务创新
    云原生一体化数仓是集阿里云大数据产品MaxCompute、DataWorks、Hologres三种产品能力于一体的一站式大数据处理平台。核心是3个一体化和全链路数据治理能力,包括离线实时一体、湖仓一体、分析服务一体、全链路数据治理。
    1587 0
    全面公测|Grafana服务:一张图表胜过千行指标&日志
    Grafana 帮助运维人员轻松处理各类运维过程中遇到的各类数据可视化与分析难题。目前阿里云 Grafana 服务全面免费公测,帮助企业轻松构建运维数据可视化平台,轻松实现数据驱动运维!
    1129 0
    一起学Golang系列(五)初次接触Go语言可能遇到的各种坑!
    前面介绍了Go语言的基础语法,所谓磨刀不误砍柴工,希望大家还是能熟悉掌握这些基础知识,这样后面真正学起Go来才会得心应手。 作为初学者。Go语言的语法有些和java类似,但也有很多不一样的地方。刚开始都会遇到各种各样的坑。下面就来总结下学习go语言的过程中,遇到的各种坑。
    996 0
    设备接入--海康摄像头SDK
    springboot-对接海康摄像头,兼容window和Linux环境
    1314 0
    Flink SQL 在快手的扩展和实践
    快手实时计算团队技术专家张静、张芒在 FFA 2021 的分享
    1126 0
    无影云桌面,企业与个人的应用神器
    阿里云无影云桌面( Elastic Desktop Service)的原产品名为弹性云桌面,融合了无影产品技术后更名升级。它可以为您提供易用、安全、高效的云上桌面服务,帮助您快速构建、高效管理桌面办公环境,提供安全、灵活的办公体系。
    276271 0
    1
    文章
    0
    问答
    文章排行榜
    最热
    最新
    相关电子书
    更多
    低代码开发师(初级)实战教程
    立即下载
    阿里巴巴DevOps 最佳实践手册
    立即下载
    冬季实战营第三期:MySQL数据库进阶实战
    立即下载