MarkLogic XML 查询

问题描述 投票:0回答:1

我们想向我们的监控环境添加一些脚本,为此我们需要一些有关 XML 查询的帮助

  1. 阻塞

  2. 总连接数

  3. CPU 消耗最高的 ML 摄取过程

  4. 长时间运行的过程

  5. 统计信息 - CPU、内存等

  6. 任何森林倒下

我们正在创建一个自助服务工具来监控上述情况

database-connection marklogic cpu-usage health-check marklogic-10
1个回答
0
投票

有许多不同的功能可用于获取您正在寻找的大部分信息:

xdmp:host-status()
xdmp:server-status()
xdmp:forest-status()
。下面我将发布一些具体的代码示例。

如果您想绘制一段时间内的一些信息以了解速率和趋势,并能够以不同的粒度(每分钟、每小时、每天)查看事物,还可以使用“管理 REST 端点”。

1。封锁

使用

这篇关于锁的 MarkLogic 知识库文章

中的代码,您可以列出所有被阻止并等待其他事务锁的事务: declare namespace server ="http://marklogic.com/xdmp/status/server"; declare variable $host := xdmp:host(); for $server in xdmp:servers() return for $request in xdmp:server-status($host,$server)//server:request-status let $transaction-id := $request/server:transaction-id let $start-time := $request/server:start-time/text() order by $request/server:start-time ascending return ( "Server : "||xdmp:server-name($server), "Transaction : "||$transaction-id, "Started at : "||$start-time, try{ xdmp:transaction-locks($host, $transaction-id) }catch($e){} )

2。连接总数

您可以从

xdmp:server-status

 获取给定 Host 上给定 Appserver 的请求列表并将它们相加:
count(xdmp:server-status(xdmp:hosts(), xdmp:servers())/*:request-statuses/*:request-status)

但是,您可能只想查看每个应用程序服务器的 
request-rate

(报告每秒请求数)。

3. CPU 消耗最高的 ML 摄取过程

没有一种机制可以获取每个事务/请求的 CPU 消耗。它不是在那个水平上计量和测量的。

    运行时间最长的进程
  1. 头( 对于 xdmp:server-status(xdmp:hosts(), xdmp:servers())/

    :request-statuses/

    :request-status 中的 $request 按 $request/*:start-time/xs:dateTime(.) 升序排序 返回$请求 )

5。统计数据 - CPU、内存等

您可以从

xdmp:host-status

获取指标。有各种cpu、内存等主机状态字段。
xdmp:host-status(xdmp:hosts())

6。任何森林都塌陷了

您可以检查

xdmp:forest-status()

并决定应用什么标准。例如,列出不是 
open 的原始森林:
import module namespace admin = "http://marklogic.com/xdmp/admin"   at "/MarkLogic/admin.xqy";
declare namespace f = "http://marklogic.com/xdmp/status/forest";

for $forest in admin:get-forest-ids(admin:get-configuration())
let $status := xdmp:forest-status($forest)
let $forestName := $status/f:forest-name/text()
let $forestState := $status/f:state/text()
let $isMaster := $status/f:master-forest/text() eq $forest 
let $isDown := $forestState ne "open"   
where $isMaster and $isDown 
return $forestName||": "||$forestState

© www.soinside.com 2019 - 2024. All rights reserved.