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_usage | CPU使用率 |
system_load_average_1m | load |
jvm_memory_used_bytes | 内存使用字节,包含各种内存区 |
jvm_memory_max_bytes | 内存最大字节,包含各种内存区 |
jvm_gc_pause_seconds_count | gc次数,包含各种gc |
jvm_gc_pause_seconds_sum | gc耗时,包含各种gc |
jvm_threads_daemon | 线程数 |
2、Nacos 监控指标
指标 | 含义 |
---|---|
http_server_requests_seconds_count | http请求次数,包括多种(url,方法,code) |
http_server_requests_seconds_sum | http请求总耗时,包括多种(url,方法,code) |
nacos_timer_seconds_sum | Nacos config 水平通知耗时 |
nacos_timer_seconds_count | Nacos 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 服务的监控,让使用者能够全面掌控其运行状态、性能表现以及服务间的调用关系,便于及时发现和解决问题,保障系统稳定高效运行。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。