头图

Nacos 介绍

Nacos 组件简介

Nacos 是阿里巴巴开源的一款强大的云原生应用配套工具,它是一个高度集成且功能丰富的平台,特别适合构建和管理现代云原生应用的微服务架构。

Nacos 提供以下核心功能:

  • 服务发现与健康检查:Nacos 支持 DNS 与 RPC 服务发现协议,允许自动发现、路由与负载均衡微服务实例。它通过健康检查机制监控服务实例状态,确保将请求转发给健康的实例,故障实例会被自动移除服务列表。
  • 动态配置服务:提供了一个集中式的配置管理平台,使得应用可以在运行时动态获取或更新配置,无需重启。配置变更时,Nacos 能实时推送给相关应用实例。
  • 动态 DNS 服务:支持权重路由的 DNS 服务,有助于灵活管理流量分配,便于实施蓝绿部署、灰度发布及流量镜像等策略。
  • 服务与元数据管理:为微服务和应用提供丰富服务注册信息及元数据管理能力,便于进行更细致的服务治理和监控。

相比其他同类工具如 Eureka,Nacos 拥有更多优势,包括但不限于配置管理、消息总线功能、更健壮的健康检查机制、对多数据中心的良好支持等,这些特性使 Nacos 成为构建复杂分布式系统时的优选方案。

在分布式系统中,服务之间的相互调用依赖于 Nacos 的服务发现功能。如果 Nacos 出现故障或数据不准确,服务消费者可能无法正确找到服务提供者。同时,当 Nacos 作为配置管理中心时,存储着应用程序的各种关键配置信息,如数据库连接字符串、日志级别、业务规则等。任何配置信息的错误或不及时更新都可能对应用程序产生严重影响。因此,监控 Nacos 的运行状态对于确保服务稳定性和可靠性至关重要。通过深入了解 Nacos 的监控指标,并合理应用它们来优化服务性能,开发人员可以更加有效地管理和维护微服务系统。

暴露 Nacos 指标

Nacos 指标数据的暴露可以通过如下的配置来开启:

1、在 Nacos 的 application.properties 文件中添加如下配置

management.endpoints.web.exposure.include=*

2、重启 Nacos,并通过如下的访问地址校验是否能访问到指标数据

http://{ip}:8848/nacos/actuator/prometheus

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。

图片

数据采集

我们将通过 DataKit 中的 Nacos 采集器对 Nacos 的监控指标进行采集。采集器配置说明如下:

1、开启 Nacos 采集器

cp /usr/local/datakit/conf.d/prom/prom.conf.sample /usr/local/datakit/conf.d/prom/nacos-prom.conf

2、修改 nacos-prom.conf 配置文件

[[inputs.prom]]
  urls = ["http://nacos.default:8848/nacos/actuator/prometheus"]
  ## 忽略对 url 的请求错误
  ignore_req_err = false
  ## 采集器别名
  source = "nacos"
  metric_types = []
  measurement_prefix = "nacos_"
  ## 采集间隔 "ns", "us" (or "µs"), "ms", "s", "m", "h"
  interval = "10s"
  ## TLS 配置
  tls_open = false
  ## 自定义Tags
  [inputs.prom.tags]
  # some_tag = "some_value"
  # more_tag = "some_other_value"

主要参数说明:

  • urls:prometheus 指标地址,这里填写 Nacos 暴露出来的指标 url
  • source:采集器别名,建议写成nacos
  • interval:采集间隔
  • measurement_prefix:指标前缀,便于指标分类查询
  • tls_open:TLS 配置
  • metric_types:指标类型,不填,代表采集所有指标

3、重启 Datakit 服务让配置生效

datakit service -R

关键指标

1、JVM Metrics

指标含义
ystem_cpu_usageCPU使用率
system_load_average_1mload
jvm_memory_used_bytes内存使用字节,包含各种内存区
jvm_memory_max_bytes内存最大字节,包含各种内存区
jvm_gc_pause_seconds_countgc次数,包含各种gc
jvm_gc_pause_seconds_sumgc耗时,包含各种gc
jvm_threads_daemon线程数

2、Nacos 监控指标

指标含义
http_server_requests_seconds_counthttp请求次数,包括多种(url,方法,code)
http_server_requests_seconds_sumhttp请求总耗时,包括多种(url,方法,code)
nacos_timer_seconds_sumNacos config 水平通知耗时
nacos_timer_seconds_countNacos config 水平通知次数
nacos_monitor{name='longPolling'}Nacos config长连接数
nacos_monitor{name='configCount'}Nacos config配置个数
acos_monitor{name='dumpTask'}Nacos config配置落盘任务堆积数
nacos_monitor{name='notifyTask'}Nacos config配置水平通知任务堆积数
nacos_monitor{name='getConfig'}Nacos config读配置统计数
nacos_monitor{name='publish'}Nacos config写配置统计数
nacos_monitor{name='ipCount'}Nacos naming ip个数
nacos_monitor{name='domCount'}Nacos naming域名个数(1.x 版本)
nacos_monitor{name='serviceCount'}Nacos naming域名个数(2.x 版本)
nacos_monitor{name='failedPush'}Nacos naming推送失败数
nacos_monitor{name='avgPushCost'}Nacos naming平均推送耗时
nacos_monitor{name='leaderStatus'}Nacos naming角色状态
nacos_monitor{name='maxPushCost'}Nacos naming最大推送耗时
nacos_monitor{name='mysqlhealthCheck'}Nacos naming mysql健康检查次数
nacos_monitor{name='httpHealthCheck'}Nacos naming http健康检查次数
nacos_monitor{name='tcpHealthCheck'}Nacos naming tcp健康检查次数

3、Nacos 异常指标

指标含义
nacos_exception_total{name='db'}数据库异常
nacos_exception_total{name='configNotify'}Nacos config水平通知失败
nacos_exception_total{name='unhealth'}Nacos config server之间健康检查异常
nacos_exception_total{name='disk'}Nacos naming写磁盘异常
nacos_exception_total{name='leaderSendBeatFailed'}Nacos naming leader发送心跳异常
nacos_exception_total{name='illegalArgument'}请求参数不合法
nacos_exception_total{name='nacos'}Nacos请求响应内部错误异常(读写失败,没权限,参数错误)

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “Nacos”, 选择 “Nacos 监控视图”,点击 “确定” 即可添加视图。

图片

图片

图片

图片

注意:该视图模板要求监控数据要打上 env 的标签。

监控器(告警)

CPU 使用率过高告警

图片

图片

水平通知失败告警

图片

图片

推送失败告警

图片

图片

总结

总之,通过对 Nacos 服务的监控,让使用者能够全面掌控其运行状态、性能表现以及服务间的调用关系,便于及时发现和解决问题,保障系统稳定高效运行。


观测云
21 声望85 粉丝

云时代的系统可观测平台