我们想向我们的监控环境添加一些脚本,为此我们需要一些有关 XML 查询的帮助
阻塞
总连接数
CPU 消耗最高的 ML 摄取过程
长时间运行的过程
统计信息 - CPU、内存等
任何森林倒下
我们正在创建一个自助服务工具来监控上述情况
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){}
)
您可以从
获取给定 Host 上给定 Appserver 的请求列表并将它们相加:
count(xdmp:server-status(xdmp:hosts(), xdmp:servers())/*:request-statuses/*:request-status)
但是,您可能只想查看每个应用程序服务器的
request-rate
(报告每秒请求数)。
3. CPU 消耗最高的 ML 摄取过程没有一种机制可以获取每个事务/请求的 CPU 消耗。它不是在那个水平上计量和测量的。
头( 对于 xdmp:server-status(xdmp:hosts(), xdmp:servers())/
:request-statuses/:request-status 中的 $request 按 $request/*:start-time/xs:dateTime(.) 升序排序 返回$请求 )
您可以从
获取指标。有各种cpu、内存等主机状态字段。
xdmp:host-status(xdmp:hosts())
6。任何森林都塌陷了您可以检查
并决定应用什么标准。例如,列出不是
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