Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: oson00 am 02.07.04 - 16:24:22

Titel: Erreichbarkeit eines Servers testen
Beitrag von: oson00 am 02.07.04 - 16:24:22
Hallo,

ich habe ein Problem. Ich möchte in LotusScript die Erreichbarkeit eines Servers testen. Wie kann ich dies am elegantesten lösen?

Gibt's es bei Cluster-Anwendungen besondere Konstelationen?

Gruß

OSon
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Glombi am 02.07.04 - 16:41:39
Hier ein kleines Script, dass prüft, ob die names.nsf auf einem Server geöffnet werden kann.

Dim session As New NotesSession
Dim db As NotesDatabase
Dim servername As String
servername = "Dein Server"

Set db = session.GetDatabase( servername, "names.nsf" )
If db.IsOpen Then
 If Instr(db.Server,servername) > 0 Then      
    Msgbox "Server erreicht"      
 Else
    Msgbox "Anderer Cluster-Server erreicht"
 End If
Else
 Msgbox "Server nicht erreicht"   
End If


Es wird auch Failover auf einen Cluster berücksichtigt.

Andreas
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: oson00 am 02.07.04 - 16:46:26
Wunderbar! Ja, so müßte es klappen! Vielen Dank!
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: oson00 am 06.07.04 - 16:37:02
es funktioniert leider nicht, da ich die in einem periodischen Agenten nutzen möchte. Dort gibt er mir immer folgendes aus:

Cannot open databases on machines other than the server running your program

Aber das kann doch eigentlich nicht sein, oder??? Das ist mir ja noch nie aufgefallen!
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Semeaphoros am 06.07.04 - 17:15:48
Doch, das ist so. Zugriff auf andere Server aus Agenten heraus gibt es erst ab Domino 6 - Sicherheitsproblem.
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: oson00 am 06.07.04 - 17:18:13
oha!

hat denn dann jemand eine idee wie ich feststellen kann, ob ein server läuft oder ausgefallen ist?
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Driri am 06.07.04 - 17:20:06
Ich habs nicht getestet, aber läßt sich nicht wenigstens die Eigenschaft einer DB von einem anderen Server abfragen ?

z.B. db.Title ?
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Semeaphoros am 06.07.04 - 17:25:43
Man nehme irgend eine Replikation, die alle 15 Minuten  läuft ... zum Bleistift das names.nsf innerhalb derselben Domäne.

Man setze dort drauf einen Monitor und lasse sich von diesem Monitor benachrichtigen, wenn die Replikation ausfällt.

Moment, gibts da nicht die Severprobe? Oder gibts die erst ab D6? Ich meine, die war schon im 5er vorhanden ...

Natürlich gibt es das schon im 5er: Configurations / Mointoring / Probes
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: oson00 am 06.07.04 - 17:35:07
ja, nun gut, aber was nützt mir das im script-code? kann ich das irgendwie anzapfen! darin liegt ja mein problem.

Ich habe einen Agenten, der soll nur laufen, wenn ein anderer server ausgefallen ist. und das muss ich per script irgendwie abfragen.

@Driri: wenn ich ein db.open(server, database) machen, bekomme ich schon einen fehler. geht leider nicht! :( das db-Objekt bleibt leer und ich komme nicht an den Titel!
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: eknori am 06.07.04 - 17:53:06
mir würde dazu folgenede Lösung einfallen:

der Agent, der bei Ausfall des Servers laufen soll enthält im Code vor dem eigentlichen Code eine kleine Routine, die ein Konsolenkommando auf dem zu testenden Server absetzt ( siehe dazu http://www.eknori.de/tipps/detail.php?nr=89&kategorie=tipps (http://www.eknori.de/tipps/detail.php?nr=89&kategorie=tipps) )
Nur wenn da ein Rückgabewert kommt, wird in die eigentliche Routine verzweigt; jetzt wo ich das Schreibe kommt mir das irgendwie bekannt vor; ich glaube ich habe das auf LDD schon mal irgendwo gesehen.

Fazit: der Agent läuft scheduled; fürht seine eigentliche Routine nur aus, wenn Server 1 down ist.
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Semeaphoros am 06.07.04 - 18:40:03
Absetzen eines Consolen-Commandos, das könnte gehen.

Alternativ würde ich sehen, dass man mit der Serverr-Probe ein Mail abschickt bei Fehler und diese Mail einer Mail-In-Datenbank zukommen lässt. Dort stösst man einen "After Mail Arrives"-Agenten an, der den Code ausführt.
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Driri am 07.07.04 - 09:56:24
Hi,

ich hab gerade noch nen Script ausgebuddelt, mit dem man die Serververfügbarkeit testen können soll (habs nicht getestet). Das kann man sicherlich mit ein paar Anpassungen für deinen Fall nutzen.

This agent will poll all servers to see if they are up and it will send you a mail message with the details.

Code
Dim servername As Variant
Dim view As NotesView
Dim doc As NotesDocument
Dim x As Integer
Dim session As New NotesSession
Dim dbase2 As NotesDatabase

servername = session.GetEnvironmentString("MailServer",True)

Dim dbase As New NotesDatabase(servername,"Names.nsf")
Dim nlog As New NotesLog("Server Responsiveness List")

Call nlog.OpenMailLog(session.UserName,"Server Check Results")

Set view = dbase.GetView("Servers")
Set doc = view.GetFirstDocument
On Error Resume Next

While Not (doc Is Nothing)
   servername = doc.getItemValue("ServerName")
   Dim dbasecollection As New NotesDBDirectory(ServerName(0))
   Set dbase2 = dbasecollection.GetFirstDatabase(Database)

   If Err <> 0 Then
      Call nlog.LogAction("Unable to Access Server " & _
      servername(0))
      Err = 0
   Else
      Call nlog.LogAction("Server " & servername(0) & " OK")
   End If

   Set Doc = view.GetNextDocument(Doc)
Wend

nlog.Close
Messagebox("Finished Polling Servers")
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Semeaphoros am 07.07.04 - 10:29:59
So auf den ersten Blick läuft das unter 5 aber nur unter einem Client korrect und nicht scheduled auf einem Server
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Driri am 07.07.04 - 12:31:49
Ich habs noch mal gescheduled getestet und die Ergebnisse des Agents waren korrekt.
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: oson00 am 07.07.04 - 15:15:56
Also, ich hab's auf eine, 5.0.11er Server probiert und er hat mir wieder die Fehlermeldung

Cannot open databases on machines other than the server running your program

ausgegeben. Ich versuche gerade die laufenden Server innerhalb eines Clusters herauszubekommen.

Mittels des absetzen eine Befehls auf der Serverkonsole auf dem anderen Server und Auswertung des Rückgabewerts, kann ich allerdings herausbekommen, welcher Server läuft.
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Semeaphoros am 07.07.04 - 15:19:18
oson00: Das ist genau das, was ich eigentlich erwartet hätte.

Driri: hast Du das auf einem 6er Server getestet? Oder was local gescheduled? Auf einem 5er server dürfte es eigentlich wirklich nicht laufen.
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Driri am 07.07.04 - 15:23:28
Nö, ich hab das auf nem 5er Server gescheduled getestet. Allerdings hab ich den ganzen Log-Kram durch Prints ersetzt, sollte aber keinen Unterschied machen.
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Semeaphoros am 07.07.04 - 16:18:09
Das sollte wirklich keinen Unterschied machen, der Fehler sollte vom DBDirectory her kommen. Ist das eine der jüngeren 5er Versionen? Vielleicht hat Iris ja wieder einmal eine Funktionalität früher eingebaut als dokumentiert .....
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Driri am 07.07.04 - 16:23:27
Getestet auf ner 5.0.10-Maschine.
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Semeaphoros am 07.07.04 - 16:27:52
Seltsam, das wäre ja älter als der 5.0.11 von oson00 ....
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Driri am 07.07.04 - 16:40:05
Jo, is wirklich komisch. Aber wie gesagt, bei mir läuft es. Vielleicht trotzdem nen Versionsproblem ?
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Semeaphoros am 07.07.04 - 16:44:26
Ist wirklich nicht auszuschliessen
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Glombi am 07.07.04 - 17:00:13
Sind die Server evtl. in einem Cluster? Vielleicht funktioniert ja in diesem Fall ein Failover, obwohl es eigentlich nicht so sein dürfte.
Eine vernünftige Erklärung habe ich dafür nicht. Ausser es ist ein Bug in 5.0.10.

Andreas
Titel: Re:Erreichbarkeit eines Servers testen
Beitrag von: Driri am 07.07.04 - 17:13:12
Der Server, auf dem ich den Agent gestartet habe, steht in einem Cluster. Aber er prüft ja alle anderen Server außerhalb des Clusters auch ohne Fehlermeldung ab. Bei unserem nicht aktiven Testserver meckert er auch an, daß dieser nicht erreichbar ist, sieht also wirklich so aus, als wenn das korrekt läuft.  :-\