ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Telegraf MarkLogic 输入插件:采集 MarkLogic 集群节点健康状态与性能指标完整指南

Telegraf MarkLogic 输入插件:采集 MarkLogic 集群节点健康状态与性能指标完整指南 Telegraf MarkLogic 输入插件采集 MarkLogic 集群节点健康状态与性能指标完整指南【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf本文以 Telegraf 官方 MarkLogic 输入插件inputs.marklogic为核心讲解如何通过 MarkLogic v2 Management API 采集一个或多个 MarkLogic 集群主机的健康状态、CPU、内存、磁盘与 I/O 性能指标并给出完整可用的配置示例、指标字段说明与源码级原理解析。读完本文你将掌握该插件的接入方式、认证与 TLS 配置、全部输出指标的含义以及它在 Telegraf 内部的实际工作流程。插件概述MarkLogic 输入插件用于从一台或多台 MarkLogic 服务器主机收集健康状态指标。该插件自 Telegraf v1.12.0 起加入属于 server 类输入插件可在所有支持的操作系统平台上运行源码注释标记为 server 类型、全平台支持。插件本质上是一个 HTTP 客户端它定时向 MarkLogic 的 Management API 发起请求拉取指定主机的状态视图status view将返回的 JSON 数据解析后转换成 Telegraf 度量measurement 名称为marklogic写入采集管线。其完整实现位于 plugins/inputs/marklogic/marklogic.go插件注册入口位于 plugins/inputs/all/marklogic.go。工作原理从 HTTP 请求到 Telegraf 度量依赖的 MarkLogic Management API从源码常量可以看出插件对接的是 MarkLogic v2 管理接口的主机状态视图// MarkLogic v2 management api endpoints for hosts status statsPath /manage/v2/hosts/ viewFormat viewstatusformatjson即最终请求地址形如http://host:port/manage/v2/hosts/hostname?viewstatusformatjson该接口要求调用方具备manage-user角色权限README 中已明确说明这也是后续配置账号时需要注意的最小权限要求。URL 构造与默认值在Init()阶段插件会为配置中列出的每个主机名拼接完整请求地址。若未显式配置url插件会使用默认值if len(c.URL) 0 { c.URL http://localhost:8002/ }MarkLogic 默认管理端口为 8002。拼接逻辑marklogic.go使用url.Parse与path.Join将 base URL 与/manage/v2/hosts/、主机名逐层合并并追加viewstatusformatjson查询参数最终生成一组完整的sources请求列表。并发采集Gather()阶段对每个主机地址启动一个 goroutine 并发拉取数据并通过sync.WaitGroup等待全部完成单个主机请求失败不会中断其他主机的采集而是通过accumulator.AddError上报错误marklogic.go。因此在多主机集群场景下采集延迟不会随主机数量线性叠加。JSON 解析与类型包装MarkLogic 返回的状态 JSON 中多数指标以{ units: ..., value: ... }的对象形式出现且 value 存在整数、浮点、布尔三种类型。源码据此定义了三个包装结构体marklogic.gotype mlPointInt struct { Value int json:value } type mlPointFloat struct { Value float64 json:value } type mlPointBool struct { Value bool json:value }顶层结构mlHost完整映射了/host-status/status-properties及/host-status/status-detail两个主要 JSON 区段确保解码后的字段能一一对应到输出度量。配置文件与参数详解最小可用配置以下为插件官方示例配置与 sample.conf 完全一致可直接复制到 Telegraf 配置中使用# Retrieves information on a specific host in a MarkLogic Cluster [[inputs.marklogic]] ## Base URL of the MarkLogic HTTP Server. url http://localhost:8002 ## List of specific hostnames to retrieve information. At least (1) required. # hosts [hostname1, hostname2] ## Using HTTP Basic Authentication. Management API requires manage-user role privileges # username myuser # password mypassword ## Optional TLS Config # tls_ca /etc/telegraf/ca.pem # tls_cert /etc/telegraf/cert.pem # tls_key /etc/telegraf/key.pem ## Use TLS but skip chain host verification # insecure_skip_verify false参数说明参数类型默认值说明urlstringhttp://localhost:8002MarkLogic HTTP 服务器管理端口的 Base URL。若启用 TLS此处应写https://形式hosts[]string无需要采集信息的具体主机名列表至少需要一个。多个主机将并发采集usernamestring空HTTP Basic Authentication 用户名需具备manage-user角色权限passwordstring空HTTP Basic Authentication 密码tls_castring空CA 证书路径用于验证服务端证书tls_certstring空客户端证书路径tls_keystring空客户端私钥路径insecure_skip_verifyboolfalse跳过证书链与主机名校验仅用于测试环境username/password只有在两者任一非空时才会注入 HTTP Basic Auth 头见 marklogic.gotls_ca、tls_cert、tls_key、insecure_skip_verify等 TLS 选项由通用 TLS 客户端配置结构体tls.ClientConfig提供其字段定义见 plugins/common/tls/client.go。全局配置选项与其他 Telegraf 插件一致inputs.marklogic同样支持全局与插件级通用配置例如通过name_prefix、name_suffix、name_override修改度量名通过tags增加自定义标签通过fieldpass/fielddrop、tagpass/tagdrop过滤字段与标签以及interval、precision等采集行为设置。完整说明见 docs/CONFIGURATION.md#plugins。指标说明插件输出单个 measurementmarklogic包含 2 个标签和 24 个字段。标签Tags标签含义示例source数据来源主机名MarkLogic 主机名ml1.localid主机节点的唯一 ID2592913110757471141字段Fields字段类型含义onlinebool主机是否在线total_loadfloat总负载sec/sectotal_ratefloat总速率MB/secncpusintCPU 插槽数ncoresintCPU 核心数total_cpu_stat_userfloatCPU 用户态占比total_cpu_stat_systemfloatCPU 内核态占比total_cpu_stat_idlefloatCPU 空闲占比total_cpu_stat_iowaitfloatCPU 等待 I/O 占比memory_process_sizeint进程内存大小memory_process_rssint进程常驻内存 RSSmemory_system_totalint系统总内存memory_system_freeint系统空闲内存memory_process_swap_sizeint进程 swap 大小memory_sizeintMarkLogic 内存总配额host_sizeint主机分配大小MBlog_device_spaceint日志设备空间MBdata_dir_spaceint数据目录空间MBquery_read_bytesint查询读取字节数query_read_loadint查询读取负载merge_read_loadint合并读负载merge_write_loadint合并写负载http_server_receive_bytesintHTTP 服务端接收字节数http_server_send_bytesintHTTP 服务端发送字节数这些字段与源码中fetchAndInsertData函数构建的fieldsmap 完全对应marklogic.go并直接映射自 MarkLogic 状态 JSON 中的total-load、total-rate、total-cpu-stat-*、memory-*、host-size、log-device-space、data-dir-space、query-read-*、merge-*-load、http-server-*-bytes等原始键名。CPU 占比字段在 MarkLogic 中为百分比数值四个字段之和通常接近 100。输出示例以下是 README 提供的真实输出示例时间戳为纳秒marklogic,hostlocalhost,id2592913110757471141,sourceml1.local total_cpu_stat_iowait0.0125649003311992,memory_process_swap_size0i,host_size380i,data_dir_space28216i,query_read_load0i,ncpus1i,log_device_space28216i,query_read_bytes13947332i,merge_write_load0i,http_server_receive_bytes225893i,onlinetrue,ncores4i,total_cpu_stat_user0.150778993964195,total_cpu_stat_system0.598927974700928,total_cpu_stat_idle99.2210006713867,memory_system_total3947i,memory_system_free2669i,memory_size4096i,total_rate14.7697010040283,http_server_send_bytes0i,memory_process_size903i,memory_process_rss486i,merge_read_load0i,total_load0.00502600101754069 1566373000000000000注意示例中的hostlocalhost标签是 Telegraf 在采集时自动添加的默认hostname标签可通过hostname或全局tagpass配置调整并非插件自身产生插件自身产生的标签只有source与id。整数类型的字段在 InfluxDB 行协议中以i后缀标识。源码验证测试用例插件带有完整的单元测试 plugins/inputs/marklogic/marklogic_test.go其中TestMarklogic通过httptest.NewServer模拟一个返回固定 JSON 响应的 MarkLogic 管理接口随后校验Init()能正确解析主机地址并构造请求 URLGather()能正确解析响应并将 24 个字段与source、id两个标签写入 accumulator各字段值与预期值逐一比对如onlinetrue、ncpus1、ncores4、total_cpu_stat_idle99.0578002929688等。测试用例中的响应体约 1286 行还额外包含了丰富的status-detail数据从中可以看到 MarkLogic 状态 API 中除插件已采集字段外的更多可用键如journal-write-*、save-write-*、backup-*、xdqp-*、锁统计等这为基于本插件做二次扩展提供了数据来源参考。实战建议权限配置用于采集的账号必须拥有manage-user角色权限否则 Management API 会拒绝请求返回非 200 状态码。插件在收到非 200 响应时会报错marklogic: API responded with status-code xxx, expected 200见 marklogic.go。多主机集群将集群中所有需要监控的主机名填入hosts数组即可插件会并发采集source标签可区分数据来自哪个节点。TLS 启用若 MarkLogic 管理端口启用了 HTTPS将url配置为https://...并按需配置tls_ca服务端证书校验与tls_cert/tls_key双向 TLS 客户端证书仅在非生产测试环境使用insecure_skip_verify true。超时控制插件内置 HTTP 客户端超时为 5 秒见 marklogic.go若集群负载较高导致响应缓慢需结合全局interval合理设置采集周期避免请求堆积。告警设计可重点围绕online节点在线状态、total_cpu_stat_idleCPU 空闲率、memory_system_free系统空闲内存、log_device_space/data_dir_space磁盘空间余量等字段配置阈值告警。【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表