当前位置: 首页 > news >正文

CouchDB 可观测最佳实践

CouchDB 简介

Apache CouchDB 是一款面向文档的开源数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。它使用 JSON 格式来存储文档,文档可以包含各种类型的数据,如字符串、数字、数组、对象等。CouchDB 采用了分布式架构,Couch 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB 的目标具有高度可伸缩性,提供了高可用性和高可靠性。

对 CouchDB 进行监控,能优化其运行性能,提升响应速度,合理配置资源,让系统处于最佳工作状态。通过有效的监控,可以助力保障系统稳定,提前察觉故障隐患,同时为容量规划提供支撑,适配业务数据增长。

观测云

观测云是一个统一实时监测平台,它提供全面的系统可观测性解决方案,帮助用户快速实现对云平台、云原生、应用及业务的监控需求。观测云的核心功能包括:基础设施监测,日志采集和分析,用户访问监测(RUM),应用性能监测(APM),服务可用性监测(拨测),安全巡检,智能监控等等。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

DataKit 是观测云的数据采集器,提供 CouchDB 采集器用于采集 CouchDB 相关的指标数据。

部署 DataKit

登录观测云控制台,点击「集成」 -「DataKit」 - 「Linux」,复制安装命令,在主机中可以一键安装。

DataKit 开启 CouchDB 采集器

DataKit 目前支持 Prometheus 格式的数据采集。在配置 DataKit 之前,找到并编辑 CouchDB 启动配置文件,通常是在 /opt/couchdb/etc/local.ini,修改为如下,并重启 CouchDB 服务。

[prometheus]
additional_port = true
bind_address = 0.0.0.0
port = 17986

进入 DataKit 安装目录下的 conf.d/couchdb 目录,复制 couchdb.conf.sample 并命名为 couchdb.conf。示例如下:

[[inputs.prom]]## Collector alias.source = "couchdb"## Exporter URLs.urls = ["http://127.0.0.1:17986/_node/_local/_prometheus"]## TLS configuration.tls_open = false# tls_ca = "/tmp/ca.crt"# tls_cert = "/tmp/peer.crt"# tls_key = "/tmp/peer.key"## Set to 'true' to enable election.election = true## Customize tags.[inputs.prom.tags]# some_tag = "some_value"# more_tag = "some_other_value"## (Optional) Collect interval: (defaults to "30s").# interval = "30s"

保存配置之后,重启 DataKit 即可。

datakit service -R

CouchDB 关键指标说明

监控 CouchDB 时,有以下关键指标需要关注:

  • 系统资源指标:包括 CPU 内存磁盘以及网络相关信息,这些在主机或者容器层面的监控中包含,本文不再赘述
  • 数据库运行状态:包括正常运行时间,不同日志级别的消息数量等
  • 数据库性能指标,包括数据库读写,打开的数据库数量,打开的文件描述符数量等
  • HTTP 请求指标:包括视图与临时视图读取的次数、以及超时的次数,HTTP 请求与批量请求的数量等
  • 复制:统计失败的复制器变更管理器、变更工作队列、变更读取器等的数量,复制器调度程序崩溃与待处理的作业数量,连接所有者以及工作进程意外终止的次数
  • 缓存:身份验证缓存命中、未命中以及总请求次数

关键指标说明:

指标描述类型单位
uptime_secondsCouchDB 的正常运行时间浮点数秒(s)
erlang_memory_bytesErlang 模拟器动态分配的内存大小,用于监控 CouchDB 对内存资源的占用情况浮点数字节(B)
open_databases_total打开的数据库数量浮点数计数
open_os_files_total打开的文件描述符数量浮点数计数
database_reads_total从数据库中读取文档的次数浮点数计数
database_writes_total数据库被更改的次数浮点数计数
database_purges_total数据库被清除的次数浮点数计数
httpd_temporary_view_reads_total临时视图读取的次数,临时视图的使用情况对数据库性能有一定影响,监控该指标可以评估临时视图的使用频率和必要性浮点数计数
httpd_view_reads_total视图读取的次数,视图是 CouchDB 中用于查询数据的重要机制,该指标反映了视图的使用情况和查询负载浮点数计数
httpd_view_timeouts_totalHTTP 视图超时的次数浮点数计数
httpd_requests_totalHTTP 请求的数量,反映了系统对外提供服务的请求负载浮点数计数
httpd_bulk_requests_total批量请求的数量浮点数计数
httpd_status_codesHTTP状态码响应的数量。状态码包括:200、201、202、204、206、301、304、400、403、404、405、406、409、412、414、415、416、417、500、501、503浮点数计数
request_time_seconds不包含 MochiWeb 的情况下,CouchDB 内部请求的时长浮点数秒(s)
couch_replicator_changes_manager_deaths_total失败的复制器变更管理器数量(复制器用于在不同数据库之间同步数据)浮点数计数
couch_replicator_changes_queue_deaths_total失败的复制器变更工作队列数量浮点数计数
couch_replicator_changes_reader_deaths_total失败的复制器变更读取器数量浮点数计数
couch_replicator_connection_owner_crashes_total连接所有者在至少拥有一个连接时崩溃的次数浮点数计数
couch_replicator_connection_worker_crashes_total工作进程意外终止的次数浮点数计数
couch_replicator_jobs_crashed复制器调度程序崩溃的作业数量浮点数计数
couch_replicator_jobs_pending复制器调度程序中待处理的作业数量浮点数计数
couch_log_requests_total记录的日志级别消息数量。级别包括:alert(警报)、critical(严重)、debug(调试)、emergency(紧急)、error(错误)、info(信息)、notice(通知)、warning(警告)浮点数计数
auth_cache_hits_total身份验证缓存命中次数浮点数计数
auth_cache_misses_total身份验证缓存未命中次数浮点数计数
auth_cache_requests_total身份验证缓存请求次数浮点数计数

其他指标详细列表,可以参考观测云集成文档:CouchDB - 观测云文档

场景视图

监控器

针对 CouchDB 服务器请求的异常(4xx 和 5xx),以及响应时间,进行监控告警。

5xx 请求异常

4xx 请求异常

请求响应时长较高

总结

通过对 CouchDB 的监控,观测云能够帮助用户全面掌握 CouchDB 的运行状态,及时发现并解决问题,提升数据库的稳定性和性能。

http://www.xdnf.cn/news/542341.html

相关文章:

  • ChatGPT助力继续教育自动答题
  • PyTorch进阶实战指南:01自定义神经网络组件开发
  • LLM的应用
  • Java转Go日记(四十四):Sql构建
  • 服务器磁盘不同格式挂载区别
  • Python数据可视化再探——Matplotlib模块 之一
  • python-数据可视化(大数据、数据分析、可视化图像、HTML页面)
  • [ 计算机网络 ] 深入理解TCP/IP协议
  • 万亿健康服务市场新挑战:传统上门按摩平台的技术架构升级迫在眉睫
  • c语言- 如何构建CMake项目(Linux/VSCode)
  • uniapp-商城-63-后台 商品列表(分类展示商品的删除)
  • [每日一题] 3355. 零数组变换 i
  • 如何删除 HP 笔记本电脑中的所有数据:3 种解决方案说明
  • [Java] idea的调试介绍
  • win7无线网络名称显示为编码,连接对应网络不方便【解决办法】
  • Journal of Real-Time Image Processing 投稿过程
  • 推扫式高光谱相机VIX-N230重磅发布——开启精准成像新时代
  • Python爬虫(30)Python爬虫高阶:Selenium+Scrapy+Playwright融合架构,攻克动态页面与高反爬场景
  • 数论:数学王国的密码学
  • 新凌印 4.2.0 | 国内短视频去水印下载~图集下载
  • CodeBuddy全新升级:体验Craft智能体的对话式编程革命
  • 在 Excel 中使用东方仙盟软件————仙盟创梦IDE
  • Awesome ChatGPT Prompts:释放AI对话潜力的开源利器
  • java每日精进 5.20【MyBatis 联表分页查询】
  • NODE-I916 I721模块化电脑发布,AI算力与超低功耗的完美平衡
  • Java 06API时间类
  • CHI中ordering的抽象
  • 第四章、SKRL(2): API(Models and Model instantiators)
  • 银行反欺诈理论、方法与实践总结(下):解决方案
  • 【动手学深度学习】1.1~1.2 机器学习及其关键组件