Monitoring von Documentum DCM 6.5

Eines vorweg: „Monitoring“ ist ein wenig übertrieben… Jedoch habe ich mit der Zeit gelernt, dass es von Nutzen sein kann, ein paar Werte immer im Blick zu haben. Im folgenden möchte ich kurz beschreiben, wie ich dabei vorgegangen bin.

Auf einem der Content Server läuft alle 15 Minuten ein Job, welcher ein Skript anstösst, dieses sieht vereinfacht wie folgt aus:

Pfad zu idql.exe docbase -UAdminBenutzer -P -n pfad_zum_dql_skript.dql > logfile.log

IDQL ist auf dem Content Server vorhanden und dadurch dass es auch auf diesem ausgeführt wird, ist kein Passwort erforderlich. Das so erstellt Logfile werte ich mit einem kleinen VB-Skript aus und versende gegebenfalls eine SMS / Mail.

Folgende DQL Skripts lasse ich dabei jeweils laufen:

„Schlafende“ Workflows: Wenn viele Workflows zum verarbeiten anstehen, ist das noch nichts tragisches, kann aber manchmal der Vorbote für gröbere Probleme sein.

SELECT   count(*) FROM  dmi_workitem WHERE  r_runtime_state < 2 and  r_auto_method_id <> ‚0000000000000000‘;go

Paused Workflows: ALARM! Der Java Method Server hat ein Problem und muss neu gestartet werden.

select count(distinct f.r_object_id)from dm_workflow f, dmi_workitem i, dm_activity a, dmi_package p, dm_sysobject(all) s where f.r_object_id = i.r_workflow_id and f.r_object_id = p.r_workflow_id and p.r_component_id = s.r_object_id and i.r_act_def_id = a.r_object_id and i.r_runtime_state > 3 and f.r_runtime_state < 4 and s.object_name like ‚%‘ and f.object_name like ‚%’order by i.r_creation_date desc , i.r_act_seqnoenable(ROW_BASED); go

FAST Queue: FAST ist die Fulltext Engine vom DCM 6.5 SP1. Wenn diese den Content nicht mehr indexiert, sammeln sich die Objekte in dieser Queue an.

SELECT   count(*) FROM  dmi_queue_item WHERE  name=’dm_fulltext_index_user‘ and  task_state is nullstring; go

Rendition Queue: Wenn dort Objekte länger als 15min drin sind, stimmt da sicher was nicht….

SELECT  count(*) FROM  dm_queue WHERE  name in (‚dm_mediaserver‘, ‚dm_autorender_win31‘, ‚dcm_custom_job‘) and  date_sent > (DATE(NOW)-(60*0.000694)) and  date_sent < (DATE(NOW)-(1*0.000694))ORDER BY  sign_off_user desc, priority DESC, date_sent ASC; go

Das ganze lässt sich beliebig ausbauen und auf die persönlichen Bedürfnisse anpassen. Neben einer professionellen Lösung mag dies lächerlich aussehen, aber die oben beschriebenen Skripts sind schnell implementiert, funktionieren und ermöglichen es mir, rechtzeitig zu reagieren.