the best things in life are free – wie sie ihre ibm conneceons umgebung kostenlos mit jmeter und...
Post on 20-Mar-2017
910 Views
Preview:
TRANSCRIPT
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung kostenlos mit JMeter und Nagios überwachen können
Klaus Bild – WebGate ConsulEng AG
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Über mich
Klaus Bild Senior System Architect WebGate ConsulEng AG TwiUer: @kbild Mail: klaus.bild@webgate.biz Blog: www.kbild.ch slideshare.net/kbild xing.com/profile/Klaus_Bild
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Agenda
• Was ist Nagios • Wie kann man Nagios mit IBM ConnecEons nutzen • Was ist JMeter • Wie kann man JMeter mit IBM ConnecEons nutzen • Wie kann man das alles kombinieren • Erstellen eines Python Scripts für die Abfrage von IBM
ConnecEons Daten
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Was ist Nagios
• Open Source Monitoring Lösung, welche Systeme, Netzwerk oder allgemein eine IT Infrastruktur überwachen kann
• Erster Release 1999 • Aktuelle Version ist 4.1.1 – hUp://www.nagios.org • GNU General Public License Version 2 • Kommerzielle Version Nagios XI • Icinga 1 (Nagios fork) und Icinga 2 (Core Framework wurde
ausgetauscht)
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Was ist Nagios -‐ DefiniEonen
Host
use linux-‐server host_name wghub01.webgate.biz alias Domino Server address 192.168.45.123
Services
use high-‐prio-‐services service_descripEon Check Domino service Win hostgroup_name domino-‐servers check_command ncpa_check!service/rc_domino/running
Commands abgelegt in …/nagios/etc/objects/commands.cfg define command { command_name ncpa_check
command_line $USER1$/check_ncpa.py -H $HOSTADDRESS$ -P 5693 -t $USER2$ -M $ARG1$
} Plugin
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Wie kann man Nagios mit IBM ConnecEons nutzen
Neben den Basisdaten (HDD, CPU, RAM), welche man für jeden Server erheben sollte kann man auch folgendes Überwachen: • Ports und Services (WAS, DB2, HTTP) • URLs (HTTP, ConnecEons -‐> liefert immer ein Status Code 200,
darum überprüfen von Inhalt auf den Seiten) • Fehlermeldungen in den Logs (WAS, HTTP, TDI, DB2) • Testen der JDBC Verbindungen zu den Datenbanken
Der Grossteil dieser Überwachungen liefern nur Boolesche Variablen
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Nagios mit IBM ConnecEons – WAS Agent Plugin
• WAS Agent Plugin: hUps://github.com/yannlambret/websphere-‐nagios
• FunkEonen: • JVM heap Überwachung • Server thread pools Überwachung • TransacEons Überwachung • JDBC datasources Überwachung • JMS connecEon factories Überwachung • SIB queues depth Überwachung • HTTP sessions Überwachung • Servlets service Eme Überwachung
• Wir nutzen pnp4nagios für Performance Tabellen
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Nagios mit IBM ConnecEons – WAS Agent Plugin
• Alle StaEsEken werden durch die Performance Monitoring Infrastructure (PMI) erstellt
• Die Standard PMI KonfiguraEon bietet bereits alle für das Plugin notwendige StaEsEken
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
WAS Agent Plugin -‐ InstallaEon
• Agent Plugin auf den DMgr kopieren
Kopieren aus dem ${WAS_INSTALL_ROOT}/runEmes Verzeichnis zB. /opt/IBM/WebSphere/AppServer/runEmes/
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
WAS Agent Plugin -‐ InstallaEon
• Anpassen von wasagent.properEes:
username=wasadmin
password=YOURPASSWORD
javax.net.ssl.trustStore=/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/cells/connectionsCell01/trust.p12 javax.net.ssl.trustStorePassword=WebAS
javax.net.ssl.trustStoreType=PKCS12
javax.net.ssl.keyStore=/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/cells/connectionsCell01/key.p12
javax.net.ssl.keyStorePassword=WebAS javax.net.ssl.keyStoreType=PKCS12
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
WAS Agent Plugin -‐ InstallaEon
• Ausführen von run.sh resp. als Service definieren: • /etc/init.d/wasagent:
#!/bin/sh
#
# Start/Stop the wasagent for Nagios # chkconfig: 2345 93 57
### BEGIN INIT INFO
# Default-Start: 2345
# Default-Stop: 93
### END INIT INFO
/opt/nagios/wasagent-r220/run.sh
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Nagios mit WAS Agent Plugin
• wasagent.sh (Abfrage Skript) kopieren nach /usr/local/nagios/libexec #!/bin/bash
HOST="chwgcicapp.webgate.biz"
CONNECTOR="9090"
DATA=$(wget -q -O - http://${HOST}:${CONNECTOR}/wasagent/WasAgent --post-data=$@ 2> /dev/null)
[ $? != 0 ] && exit 2
echo ${DATA} | awk -F\| '{ print $2"|"$3 ; exit $1 }'
exit $?
Dmgr, auf welchem das Plugin installiert wurde
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Nagios mit WAS Agent Plugin
• Abfrage Befehl und Service DefiniEon
define command { command_name wasagent_check command_line $USER1$/wasagent.sh 'hostname=$HOSTADDRESS$&
$ARG1$' }
define service{ use was-services
service_description WAS - JVM Heap InfraCluster
check_command wasagent_check!port=8880&jvm=heapUsed,90,95
}
Warning und CriEcal Werte
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Nagios mit WAS Agent Plugin
• Die Abfrage für einen Host lauten also: /usr/local/nagios/libexec/wasagent.sh 'hostname=192.168.45.123&port=8880&jvm=heapUsed,90,95
• Und die Antwort lautet zB.: InfraCluster_server1: status OK|jvm-heapSize=3267MB;;;0;3268 jvm-heapUsed=944MB;;;0;3268 jvm-cpu=0%;;;0;100
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Nagios mit WAS Agent Plugin
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Nagios mit WAS Agent Plugin
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Nagios mit WAS Agent Plugin
• Überwachen von Performance Daten von IBM ConnecEons • Erkennen von Problemen, bevor das System nicht mehr
funkEoniert/reagiert • ProakEves Überwachen
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Was ist JMeter
“Apache JMeter ist ein freies, in Java geschriebenes Werkzeug zum Ausführen von Las@ests in Client/Server-‐Anwendungen, das von der Apache Sosware FoundaEon entwickelt wird. JMeter ermöglicht es miUels Zusammenstellen eines Testplanes zu spezifizieren, welche Teile der Anwendung (wie beispielsweise mulE-‐threaded) durchlaufen werden sollen, um konkrete Ergebnisse über das Antwortzeitverhalten zu bekommen. Diese werden in der leicht zu bedienenden Oberfläche von JMeter präsenEert. Durch Logik-‐Komponenten, Listener, Sampler, Timer und KonfiguraEonselemente lassen sich bis ins Detail angepasste Testpläne erstellen. JMeter kann auch als Proxy-‐Komponente zum Aufzeichnen einer Abfolge von TestschriUen eingesetzt werden, die als Basis von Testplänen eingesetzt werden kann…“ hUps://de.wikipedia.org/wiki/Apache_JMeter
hUp://jmeter.apache.org
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Wie kann man JMeter mit IBM ConnecEons nutzen
• Man kann mit JMeter BenutzerakEonen im IBM ConnecEons aufzeichnen und automaEsiert wiederholen
• Standard BenutzerakEonen können durch JMeter ausgeführt werden
• JMeter bietet auch Performance Daten
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Wie kann man JMeter mit IBM ConnecEons nutzen
Beispiele: • Einloggen ins IBM ConnecEons • Erstellen und Löschen eines Wikis • Erstellen einer Community, hinzufügen von Apps, löschen der Community
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Wie kann man JMeter mit IBM ConnecEons nutzen -‐ Login
Einloggen ins IBM ConnecEons: • Aufzeichnen des Logon Vorgangs mit dem Test Script Recorder
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Login
• Achtung, auch bei falschen Passwort kommt ein HTTP Statuscode 200
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Login
• Darum Test nach Wert im Response Header (X-‐LConn-‐Auth: true)
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Wie kann man JMeter mit IBM ConnecEons nutzen
• Beim Ausführen von BenutzerakEonen im System empfiehlt es sich, die AkEonen immer direkt über das IBM ConnecEons API auszuführen hUp://www-‐10.lotus.com/ldd/lcwiki.nsf/xpAPIViewer.xsp?lookupName=IBM+ConnecEons+5.0+API+DocumentaEon
• Leider ist die Doku nicht sehr ausführlich • Für alle BenutzerakEonen gibt es auch ein API • Ein Grossteil der AkEonen wird auch von ConnecEons über das
API ausgeführt
-‐> Erstellen eines Wikis und löschen des Wikis
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Wiki
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Wiki
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Wiki
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Wiki
hUp://www-‐10.lotus.com/ldd/lcwiki.nsf/xpAPIViewer.xsp?lookupName=IBM+ConnecEons+5.0+API+DocumentaEon#acEon=openDocument&res_Etle=CreaEng_a_wiki_ic50&content=apicontent
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Wiki
hUp://www-‐10.lotus.com/ldd/lcwiki.nsf/xpAPIViewer.xsp?lookupName=IBM+ConnecEons+5.0+API+DocumentaEon#acEon=openDocument&res_Etle=DeleEng_wikis_ic50&content=apicontent
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Wiki
• Hinzufügen eines HTTP Cookie Managers für den Login und testen des Skriptes
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Wiki
• Damit das Testskript generisch verwendet werden kann, werden Servernamen etc. mit Variablen ersetzt
• Diese Variablen können per CMD line beim Starten mitgegeben werden: jmeter –t /JMeter/CreateWiki.jmx -Jserver=connections.demo.ch -Jport=443 -Juser=kbi -Jpassword=IBMConnect14 -Jwiki_title=AdminCamp
• Im Skript können diese Variablen mit ${__P(Variable)} genutzt werden , also zB. ${__P(server)}
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Wiki
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Wiki
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Community
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Community
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
JMeter mit IBM ConnecEons -‐ Community
• Für das Löschen der Community wird dir Uuid benöEgt • Diese kann beim Erstellen der Community abgefangen werden
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Wie kann man das alles kombinieren
Dinge, die man beachten sollte: • Der Benutzer, unter welchem die AkEonen ausgeführt werden,
sollte ein reiner Systembenutzer sein • JMeter erstellt und löscht Daten auf dem produkEven System • ConnecEons Updates können zu Fehlern in den JMeter Tests
führen
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Wie kann man das alles kombinieren
• JMeter kann direkt auf dem Nagios Server installiert werden • Alle Testpläne erst manuell auf der CLI ausführen und testen
D:\apache-jmeter-2.13\bin\jmeter -t C:\Users\Administrator\Documents\JMeter\CreateWiki.jmx -Jserver=connections.demo.ch -Jport=443 -Juser=kbi -Jpassword=IBMConnect14 -Jwiki_title=AdminCamp -n
• Es gibt verschiedene JMeter Plugins für Nagios
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Wie kann man das alles kombinieren
• nagios_jmeter_check hUps://github.com/gmykhailiuta/nagios_jmeter_check
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
nagios_jmeter_check
• Leider keine Möglichkeit weitere Variablen mitzugeben, welche unsere Skripte benöEgen (Server, User…)
• Anpassung des Skripts jmeter.pl
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
nagios_jmeter_check
• Abfrage Befehl und Service DefiniEon
define command{ command_name check_jmeter
command_line $USER1$/jmeter.pl -j /opt/apache-jmeter-2.13/ -p $ARG1$ $ARG2$ -a '$ARG3$'
}
define service{ use low-prio-services,graph-enabled
host_name chwgcicapp.webgate.biz
service_description JMeter - Test Create Wiki
check_command check_jmeter!/opt/JMeter_Plans/conn_create_wiki.jmx!-w 2 –c 4!-Jserver=intern.webgate.biz -Jport=443 -Jwiki_title=Nagios -Juser=aconnections -Jpassword=$USER4$
}
• resource.cfg $USER4$=Password
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
nagios_jmeter_check
• Die Abfrage für einen Host lauten also: /usr/local/nagios/libexec/jmeter.pl -j /opt/apache-jmeter-2.13/ -p /opt/JMeter_Plans/conn_create_wiki.jmx -w 2 –c 4 -a '-Jserver=intern.webgate.biz -Jport=443 -Jwiki_title=Nagios -Juser=aconnections -Jpassword=Password’
• Und die Antwort lautet zB.: OK : | sum_time=1.331
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Erstellen eines Python Scripts für die Abfrage von IBM ConnecEons Daten
Beispiel: Anzahl CommuniEes ohne Besitzer
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Python -‐ Anzahl CommuniEes ohne Besitzer
• Nagios erwarten von Plugins immer folgende InformaEonen: • Return codes:
• 0 (OK) • 1 (Warning) • 2 (CriEcal) • 3 Unknown
• Beschreibung • OpEonal:
• Performance Daten: • | Number of CommuniEes=Anzahl,Warning;CriEcal;;
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Python -‐ Anzahl CommuniEes ohne Besitzer
• Es gibt kein API Call oder wsadmin Befehl, welcher dieses Ergebniss liefert
• Direktes Abfragen der ConnecEons Datenbank • ibm_db wird als Python Package für die DB Abfrage verwendet
hUps://pypi.python.org/pypi/ibm_db hUp://code.google.com/p/ibm-‐db/
• Das python-‐dev package wird vor der InstallaEon benöEgt
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Python -‐ Anzahl CommuniEes ohne Besitzer
SNCOMM.COMMUNITY
Iterate -‐> COMMUNITY_UUID
SNCOMM.MEMBER
Iterate Get user with Role=1 -‐> MEMBER_UUID
SNCOMM.MEMBERLOGIN
-‐> LOWER_LOGIN
PEOPLEDB.EMPLOYEE
-‐> PROF_STATE = '0' / '1'
AkEv InakEv
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Python -‐ Anzahl CommuniEes ohne Besitzer
SNCOMM.COMMUNITY
select DISTINCT COMMUNITY_UUID, NAME from
sncomm.community
SNCOMM.MEMBER
SELECT DISTINCT MEMBER_UUID from sncomm.member WHERE COMMUNITY_UUID = '" +
community_id + "' AND ROLE='1'
SNCOMM.MEMBERLOGIN
select DISTINCT LOWER_LOGIN from sncomm.memberlogin where member_uuid in '" +
member_uuid + "' AND LOWER_LOGIN NOT LIKE '%@%'
PEOPLEDB.EMPLOYEE
select PROF_MAIL from EMPINST.employee where prof_uid_lower = '" + prof_uid_lower + "' and
prof_state = '0'
Notes & Domino –> mit Verse und On-‐Premises AdminCamp 2015 – Sept. 21-‐23
Python -‐ Anzahl CommuniEes ohne Besitzer
• Vollständiges Skript bald unter hUp://kbild.ch • Weitere möglich Beispiele:
• Community inakEv seit X Tagen • Used Space User/Community X auf 99% • …
top related