CA Spectrum API – DACHSUG 2015

CA Spectrum ist ein Monitoring-Tool mit dem man sehr professionell und sicher das Netzwerk und die umliegende Infrastruktur monitoren kann.

CA Spectrum klassifiziere ich primär als Tool für das Fault-Management, also ein Tool um schnellst möglich ein Problem eingeutig identifizieren zu können – und weniger z.B. für ein Management-Reporting, – auch wenn es diese Disziplin mittels Reporting-DB mit erledigen kann.

In den letzten Jahren hatte es nach der Aprisma-Übernahme durch Concord und dann CA immer wieder etwas rumort und Anwender erwarten die jährliche Bestätigung auf der DACHSUG, der Usergroup für die deutschsprachige Region, dass es mit Spectrum weitergeht -weitere Entwicklung, neue Features – das Investment in das Tool richtig war.

Aus meiner Sicht steckt CA viel Arbeit in die Programmierung und arbeitet nun viele Anforderungen ab, um das Tool universeller und moderner zu machen. Laut Roadmap kommen nun auch neue Ansätze zum WLAN-Monitoring in 10.1 rein.

Nach den letzten 2 Usergroups mit weniger Beteiligung waren nun alle Plätze restlos belegt und auch unter den Usern waren viele neue Gesichter auszumachen.

Fast zum Schluss, nach vielen Roadmap-Präsentationen durfte ich eine kleine Päsentation zum Thema Spectrum Restful API halten. Neben den Grundlagen hatte ich auch unseren Web-Client (HTML5/Bootstrap) kurz gezeigt, der nur die Restful-API nutzt. Dabei hat es besonders viel Spaß gemacht, zu sehen, dass doch viele Kunden einen WebClient für Spectrum mit Topolgy-View wünschen. Wir liegen hier mit dem breiteren Ansatz incl. Topology-View, Alarm-View, Device-Details, Performance-View mit HTML5 genau richtig.

Ab Dezember 2015 werden wir unseren eigenen Web-Client als Telonic WebView in Projekten breiter einsetzen.

Die Folien zur DACHSUG 2015 findet man hier:

https://communities.ca.com/people/e.heinemann/blog/2015/10/20/dachsug-2015-ca-spectrum-rest-api-unlimited-praktischer-einsatz-der-rest-api

Mit freundlichen Grüßen

Erich Heinemann

Jquery-Mapael zur Visualisierung von Netzwerken

Um verschiendene Datenquellen in einer Network-Map zusammen zu fassen, bedarf es mehrerer Schritte.

  1. Datenquellen identifizieren
  2. Schnittstellen / APIs identifizieren
  3. Daten zusammen fassen in einem GUI

Als Datenquellen möchte ich SevOne und CA Spectrum verwenden.
Deren APIs kenne ich und kann ich auch einfach nutzen
Zur Visualisierung werde ich zu eigenen Libraries greifen. Eine dieser wird Mapael sein, welche ich umfassend erweitert habe. Hier ein Video des Dummys – ohne reale Daten:

Video: Jquery-Mapael for Network-Visualization

Hier zu der Online-Demo: Demo

Zum Schluss kann man diese Web-basierte Map dann mittels AppBoard / enPortal von edge Technologies wieder Mandantenfähig anderen Usern zur Verfügung stellen, so dass auch Enterprise-Kunden diese Lösung verwenden können.

Die original Mapael-Library findet man unter: http://www.neveldo.fr/mapael/

Viel Spaß beim Video oder der Demo

Update: 18.August 2014:
Um die MAPs in PDF-Dokumente direkt Serverseitig transferieren zu können, gibt es nun auch einen Weg, -> einfach per PhantomJS konvertieren.
PhantomJS ist ein headless Browser, -> also ohne grafische Ausgabe. Diese intern berechnete Bildschirmdarstellung kann aber bei Bedarf in eine  PNG- oder PDF-Datei umgeleitet werden.
Somit können auch auf Javascript / JQUERY etc. basierende Webseiten als Grafik oder PDF gespeichert und somit in ein klassisches Reporting, -> Verschicken von PDF-Reports integriert werden.
Phantom-JS steht für MacOSX, Windows und Linux als auch als Sourcecode zur Verfügung

Somit sieht es für Mapael wie folgt aus:

  • Responsive: yes
  • dynamic resizing: yes
  • html5: yes, workaround for IE via VML
  • Flash needed: no
  • Integration in Reporting: via PhantomJS

Gibt es alternative Map-Libraries wie Leaflet.js, welches sich Openstreetmap oder anderen Kartendiensten bedient und somit wesentlich mehr transfervolumen hervorruft oder jVectorMap, welches ähnlich wie Mapael gebaut ist, aber noch mehr Karten beinhaltet.

http://jvectormap.com/ -> Wird auch eingesetzt für Unwetterwarnungen bei der Tagesschau-Online. Die Karten lassen sich in 1-2 Stunden jeweils auch in eine Mapael-Karte konvertieren. Die Funktionen ähneln den von Mapael, bieten aber nicht ganz die Flexibilität wie Mapael.
jVectorMaps werden auch zur Generierung der Maps in Kibana verwendet. Dort liegen die Maps dann im Ordner /app/panels/map/lib/
Falls jemandem in Kibana noch eine MAP fehlt, man kann sehr einfach die jVectorMaps zu Kibana hinzufügen. By Default kennt Kibana aktuell nur World, USA, Europe, – das ist mal wieder nur die westliche Sicht der Erde :-(

http://leafletjs.com/ -> Etwas “fetter” und präzizer bei der Darstellung, aber nicht für meinen Anwendungsfall

Falls jemandem noch eine Idee fehlt und denkt, dass die Hersteller so etwas schon in ihre Tools lange eingebaut hätten, der Atlas von Arbor Networks wäre auch prädestiniert um diese Libraries zu nutzen *-) … hier gibt es online nur die frei einsehbare HTML2-Version mit Tabellen und Text. … werde mir mal überlegen, ob ich diese nicht dynamisch für meine Demo anzapfen kann. *-)

SevOne kombiniert mit Faultmanagement CA Spectrum

Sowohl SevOne als Performance/Flow-Management als auch CA Spectrum als Faultmanagement arbeiten für sich sehr schön, der Wechsel zwischen den Tools störte aber irgendwann den Arbeitsfluss.

SevOne wird in der Analyses von Performance-Problemen und im Daily-Business immer wichtiger, daher hatte ich schon damit früh begonnen beide Tools zu “verheiraten”.

SevOne bietet fast alle Methoden und Funktionen des HTML5-Web-GUIs auch via einer SOAP-API an. Über diese können z.B. die überwachten Devices und Elemente einfach administriert werden. Die Scripte, die diese SOAP-API ansprechen dürfen sogar auf der SevOne lokal abgelegt werden, – perfekt.

Nun benötige ich noch Zugriff auf die Datenbasis von CA Spectrum, – hier vewende ich die Spectrum-REST-API, – per VNMShell geht es auch, – ist aber nicht so cool. *-)
(Nachtrag: Die Beschreibung der Spectrum REST-API erfolgte ausführlich auf der DACHSUG 2015)

Stand 2013:

  • Devices werden zwischen den Tools synchronisiert
  • Nur in Spectrum ausgewählte Interfaces werden in SevOne gepollt, das Polling bei anderen Interfaces und Objekten deaktiviert
  • Performance-Alarme werden von SevOne an CA Spectrum geleitet
  • Key-Performance-Daten bzw. die resultierenden Graphen stellt SevOne zur Verfügung und werden im Spectrum-Oneclick-GUI dargestellt
  • Kleine Performance-Graphen werden in den Tooltips von CA Spectrum just-in-time eingeblendet. Glaubt mir keiner, – ist aber so.
  • Über ein Kontext-Menü kann der User aus Spectrum zu SevOne navigieren

Nachtrag 2015:

  • Auch die Spectrum-Alarme und Spectrum-Topology-Ansichten können in SevOne integriert werden. Die Topology kann dynamisch wie in Spectrum-Edit-Mode sein, oder einfach eine statische Grafik sein. Die Basis der Integration sind die Zugriff auf die REST-API von CA Spectrum.

Nachtrag 2016:

  • Topology-View aus Spectrum und Performance-Daten lassen sich bei Bedarf im neuen Web-Client von CA Spectrum einblenden
  • Über die API von SevOne könnte man nun auch Flow-Daten in Spectrum als Graphen einblenden
  • … ein befreundeter Programmierer hat mit der gleichen Methode nun auch aktuelle Flow-Daten aus NetQos in den Oneclick-Client integriert, – noch nicht als Tooltip, sondern nur als statische Grafik.
  • Steve Weinert will auf der DACHSUG 2016 auch PM-Graphen in Spectrum integrieren und auf diesen Artikel verweisen, – ich bin mal gespannt :)

Gerne integriere ich unterschiedliche Datenquellen und Information in CA Spectrum. Fragen Sie ein dazu einfach bei Telonic an:

Tel.: +49 2203 / 9648 – 0

SNMP-Simulator

SevOne garantiert eine Zertifizierung von neuen SNMP-Variablen innerhalb von 14 Tagen bzw. 10 Manntagen, – gehört bei denen zum Wartungsvertrag und erfolgt ohne Zusatzkosten.

Nun will natürlich ab und an auch mal selsbt noch schneller etwas selbst zertifizieren. Das geht bei SevOne relativ einfach über das GUI, – die vorhandenen Device-Certifications stehen als Beispiele zur Verfügung.

Wenn man nun ein Device zertifizieren möchte, auf das man gerade selbst keine Zugriff hat, nutzt man einen SMMP-Simulator und zieht von dem originalen Device einen SNMPWalk.
SNMP-Simulatoren kosten meist Geld. Zuerst dachte ich, dass ich mir etwas mittels Net-SNMP selbst bauen müsste.
Im Web habe ich dann aber
http://snmpsim.sourceforge.net/sharing-snapshots.html
gefunden.

Danke an die Programmierer!!!

Lync und OC mit APEX

persönlich finde ich ja XML-Telefone von SNOM und Aastra klasse. Man kan als Entwickler die Interaktion des Telefons mit seinen Business-Applikationen selbst bestimmen und auf Anforderungen der Anwender perfekt abstimmen.
VoIP-XML ist relativ einfach zu erlernen.

Lync ist aus meiner Sicht nur eine standartisierte Kopplung der PBX mit Exchange um Firmenintern Vorteile zu erhalten.

Für die Aastra-Telefone hatte ich mal eine eigene Applikations-Integration (Oracle-DB) als Modell entwickelt. .. Link ..

Eine Integration kann aber auch direkt auf dem Desktop erfolgen: Scupa koppelt den Lync-Client mit Snom-Telefonen.
http://www.sinc.de/de/loesungen/scupa/features.html

Zur Integration des LYNC-Clients mit APEX reicht eine passende Formatierung der Rufnummer als E.164-konforme Rufnummer.

Mit einer einfachen PL/SQL-Funktion kann man in APEX  einfach Telefonnummern in Hyperlinks konvertieren.

By Default formatiert die Funktion einfach nur die telefonnummer, so dass sie “lesbarer” wird und unterschiedliche Trennzeichen entfallen. Erst durch setzen des Parameters p_format auf 2 wird eine E.164-konforme Rufnummer gebildet und mit Hyperlink ausgegeben.

Für Reporting-Zwecke wird der “Reporting”-User ausgeschlossen:

CREATE OR REPLACE FUNCTION dbfun$format_tel ( p_number in Varchar2
 , p_format in Number   default 1)
return varchar2
as

 v_ret2 Varchar2(4000):= substr(trim(p_number),1,4000);

 begin

 v_ret2 := replace(v_ret2,chr(9),'');
 v_ret2 := replace(v_ret2,'-',' ');
 v_ret2 := replace(v_ret2,'_',' ');
 v_ret2 := replace(v_ret2,'.',' ');
 v_ret2 := replace(v_ret2,'\',' ');
 v_ret2 := replace(v_ret2,':',' ');
 v_ret2 := replace(v_ret2,';',' ');
 v_ret2 := replace(v_ret2,',',' ');
 v_ret2 := replace(v_ret2,'#',' ');
 v_ret2 := replace(v_ret2,'(',' ');
 v_ret2 := replace(v_ret2,')',' ');
 v_ret2 := replace(v_ret2,'{',' ');
 v_ret2 := replace(v_ret2,'}',' ');
 v_ret2 := replace(v_ret2,'  ',' ');

 if length(v_ret2) > 20 then
  v_ret2 := replace(v_ret2,' ','');
 end if;

 if p_format = 2 then
  v_ret2 := replace(v_ret2,' ','');
  v_ret2 := replace(v_ret2,'/','');

 -- nationale Nummern
  if substr(  v_ret2,1,1)='0' and   substr(  v_ret2,1,2)!='00' then
     v_ret2 :='+49'|| substr(v_ret2,2);
  end if;
   --internationale Nummern
  if substr(  v_ret2,1,2)='00'  then
     v_ret2 :='+'|| substr(v_ret2,3);
  end if;
end if;

if p_format = 2
   anduser  != 'REPORTING' then  -- Generate Link to E.164-Numer
   v_ret2 := '<a href="tel:'||v_ret2||'" title="click to dial with Lync">'||p_number||'</a>';
end if;

return v_ret2;

end;
/

PHP ocilogoff oder oci_close() ??

ocilogoff ist ein Alias von oci_close()

.. kann man also direkt oci_close verwenden…

oci_free_statement($stmt);
oci_close($conn);

Talend Open Studio Tips – Eigene Spalten definieren, eigenes Schema erzeugen

  • Mittels tIterateToFlow kann man ein eigenes Schema (row, Spalten) generieren
  • In der Spalte Wert kann man seinen Java Code einfügen, die Ergebnisse müssen aber einem gültigen Datentyp entsprechen!
  • Über tForeach kann man die benötigte Anzahl von Zeilen definieren

Talend Open Studio (TOS) – Variablen und etwas Java

TOS Jobs kennen unterschiedliche Arten von Variablen

Um eine hohe Flexibilität in entwickelten Jobs zu erhalten versucht man den Job möglichst mittels Parameterübergaben zu steuern. bei TOS werden die Variablen in einem Context zusammengefaßt und in einem File gespeichert. ..  wie in alten “INI”-Files.
Beim Start des Jobs übergibt man nun nur den Namen des Context-File, … by Default lautet der Name “Default”
Somit lassen sich Variablen statisch hinterlegen.
Das Context-File Default.context liegt später im Scriptverzeichnis.

Context-Definition: hier die Variable “emails”

Context-Variablen nutzen:    .. in irgendein Feld reingehen und mal STRG+SPACE (more…)

1 2