Sui sistemi SAP sono mappati tutti i processi di business-critical che necessitano di requisiti speciali di monitoraggio. Sorge la necessità di monitorare non solo l’infrastruttura ma anche il livello applicativo, l’andamento dei lavori e gli errori. È necessario capire da dove nascono i problemi che con il tempo possono causare problemi seri.
Quando i fattori problematici non vengono riconosciuti nel loro stadio inziale, si ottiene un monitoraggio reattivo, ovvero il cliente (o end user) riporta attivamente il problema. Insieme al Sig. Andreas Förster abbiamo organizzato una giornata di workshop durante la quale si è esaminato la struttura di SAP, si è individuato quali approcci di monitoraggio esistono sul server e a quale livello di applicazione e quindi le soluzioni sono state implementate sul sistema.
In questo articolo vorrei porre attenzione sui vari approcci di monitoraggio per SAP e mostrate alcuni esempi di applicazione con NetEye:
Il focus di questo approccio è il livello applicativo. È possibile iniziare e fermare le istanze, esaminare i runtime environment, e leggere i system log. Le richieste sono basate su SOAP WebServices e possono essere fatti sia con http che con HTTPS certificato. Dal lato SAP, la configurazione di ACLs (Access List) permette il controllo del sistema di monitoraggio a cui si vuole accedere, senza dover effettuare login sul sistema SAP stesso.
Un caso tipico di SAP-monitoraggio esterno è la richiesta della versione kernel delle istanze SAP. Dal momento in cui si implementa il sistema di monitoraggio si garantisce che, dopo il rollout di un aggiornamento, tutti i sistemi opereranno sulla stessa versione. Un altro caso è rappresentato dalla scadenza dei certificati che possono essere monitorati nel seguente modo:
I SAPControl webservices attivabili per il monitoraggio, devono avere determinate restrizioni con il SAP profile parameter “service/protectedwebmethods”. Esempio:
service/protectedwebmethods = SDEFAULT -GetVersionInfo -GetAlertTree -GetAlerts -EnqGetStatistic -GetQueueStatistic -GetInstanceProperties -GetSystemInstanceList -ReadLogFile -ListLogFiles -AnalyseLogFiles -ABAPReadSyslog -ABAPGetComponentList
I dettagli li trovate nella nota SAP “1439348 – Extended security settings for sapstartsrv”. Per preparare il monitoraggio dell’infrastruttura bisogna procurarsi il SAPEXE , che può essere scaricato dal suo portale clienti. Il file contiene SAPControl e le librerie annesse.
# ./SAPCAR -xvf SAPEXE_400-20012215.SAR sapcontrol libicuuc.so.50 libicudata.so.50 libicui18n.so
Consiglio: le versioni e le dipendenze possono variare da versione a versione. Quando SAPControl e le librerie sono pronte, viene comunicato il “LD_LIBRARY_PATH” e richiamato via export LD_LIBRARY_PATH=/opt/sap/lib
Sono inoltre necessary gli host SAP, numeri seriali e funzioni da utilizzare. Quindi il primo step è, ad esempio, richiedere la versione di sistema.
./sapcontrol -nr 01 -host sap.mydomain.lan -prot NI_HTTP -function GetVersionInfo 15.11.2016 10:10:06 GetVersionInfo OK Filename, VersionInfo, Time /usr/sap/SID/DVEBMGS15/exe/sapstartsrv, 742, patch 223, changelist 1614561, RKS compatibility level 0, optU (Oct 2 2015, 19:45:59), rs6000_64, 2015 10 02 20:56:11 /usr/sap/SID/DVEBMGS15/exe/disp+work, 742, patch 223, changelist 1614561, RKS compatibility level 0, optU (Oct 2 2015, 19:45:59), rs6000_64, 2015 10 03 00:25:54 /usr/sap/SID/DVEBMGS15/exe/gwrd, 742, patch 223, changelist 1614561, RKS compatibility level 0, optU (Oct 2 2015, 19:45:59), rs6000_64, 2015 10 02 19:56:49 ...
Ulteriori richieste includono processi attivi, consumo della CPU o entrate nella tabella di lock.
./sapcontrol -nr 01 -host sap.mydomain.lan -prot NI_HTTP -function GetProcessList 15.11.2016 10:12:06 GetProcessList OK name, description, dispstatus, textstatus, starttime, elapsedtime, pid disp+work, Dispatcher, GREEN, Running, 2016 10 16 17:56:50, 67:52:08, 9242666 igswd_mt, IGS Watchdog, GREEN, Running, 2016 10 16 17:56:50, 67:52:08, 4522234 gwrd, Gateway, GREEN, Running, 2016 10 16 17:56:52, 67:52:06, 20251724 icman, ICM, GREEN, Running, 2016 10 16 17:56:52, 67:52:06, 17107024
Il monitoraggio SAP interno analizza i tempi di esecuzione dei job o le connessioni disponibili RFC. Per l’analisi serve estratte le metriche di monitoraggio SAP, che vengono automaticamente raccolte di default da SAP stesso. Le metriche sono quindi depositate nel Computing Center Management System (CCMS) e possono essere utilizzare tramite richieste via RFC.
In questo caso le richieste partono dal servizio CCMS. Non è necessario avere una configurazione dettagliata dell’architettura CCSM, come ad esempio Landscape Virtualization Management (LVM). Un vantaggio della decentralizzazione dell’architettura delle richieste è la gestione diretta dei monitor SAP con le sue istanze. Contemporaneamente la distanza delle richieste è ridotta perché l’informazione può essere recuperata direttamente dal sistema su cui si verifica ed evitare il“single point of failure”.
Consiglio: per la configurazione dei permessi di accesso è consigliato creare l’utenza con “000” client. Il client “000” fornisce una visione completa di tutte le informazioni contenute nel sistema SPA. È però da notare che qui non sono salvati dati sensibili di utenti o clienti.
Check_sap_health permette la lettura delle metriche via CCMS, è sviluppato da un progetto community (https://labs.consol.de/nagios/check_sap_health/) e offre una vasta gamma di metodi per le richieste.
Richimare check_sap_health
Questa chiamata connette l’utente con il sistema SAP, laddove sia stata creata un’utenza valida con i dati di accesso per il sistema e il client. Per semplificare la configurazione abbiamo aggiunto uno wrapper script che recupera i dati dal file di configurazione, a questo punto l’indicazione del SID diventa necessaria. I dati riguardanti il client, numero di sistema, nome utente e password sono presi anch’essi dal file di configurazione.
cat /etc/nagios/neteye/sap/nag_sap.cfg SID SYSNR MANDANT SAP-USER PASSWORD
Una volta che i dati di accesso e il wrapper-script “check_sap_health_run.sh” sono inseriti, si può inziare col test della prima connessione con “–mode connection-time”. Se l’esito del test è positivo è possibile utilizzare il metodo “list-ccms-monitors” per estrarre la struttura ad albero dei monitor disponibili.
./check_sap_health_run.sh --mode list-ccms-monitors --r3name SID SAP CCMS Monitor Templates Availability and Performance Overview Background Processing Buffers Change Transport System Communications Data Archiving Database Dialog Overview Dialog per Application Server Enqueue Entire System Filesystems J2EE Applications J2EE Engine Operating System Performance Overview Process Integration Remote Databases
Di seguito un esempio della panoramica dei monitor CCMS nel modulo RZ20:
Adesso è possibile estrarre ulteriori informazioni, come ad esempio i monitor nell’area “Performance Overview” usando la funzione “name2”: “list-ccms-mtes”:
./check_sap_health_run.sh --r3name SID --mode=list-ccms-mtes --name "SAP CCMS Monitor Templates" --name2 "Performance Overview" SID_appsap01_SID_10_CPU_CPU_Utilization 100 SID_appsap01_SID_10_CPU_Utilization 100 SID_appsap01_SID_10_Dialog_DBRequestTime 100 SID_appsap01_SID_10_Dialog_Load+GenTime 100 SID_appsap01_SID_10_Dialog_QueueTime 100 SID_appsap01_SID_10_Dialog_ResponseTime 100 SID_appsap01_SID_10_Dialog_UsersLoggedIn 100 SID_appsap01_SID_10_Paging_Page_In 100 SID_appsap01_SID_10_Paging_Page_Out 100 SID_appsap01_SID_10_Program_Swap 100 SID_appsap01_SID_10_R3MemMgmtResources_EsAct 100 SID_appsap01_SID_10_R3MemMgmtResources_HeapAct 100 SID_appsap01_SID_10_R3RollPaging_R3RollUsed 100 _Dialog 199 _Memory Management 199 _Operating System 199 _Performance Overview 199 _SID\app01_SID_10 199 OK
„name3“ permette di estratte uno specifico monitor e definire la sua soglia, la modalità usata è “ccms-mte-check”:
./check_sap_health_run.sh --ashost sap.mydomain.lan --r3name SID --mode=ccms-mte-check --name "SAP CCMS Monitor Templates" --name2 "Performance Overview" --name3 "SID_appsap01_SID_10_CPU_Utilization" OK - CPU Utilization = 0% | 'CPU_Utilization'=0%;90;98;0;100
Nell’esempio sottostante, la soglia in dotazione del CCMS viene sovrascritta:
./check_sap_health_run.sh --ashost sap.mydomain.lan --r3name SID --mode=ccms-mte-check --name "SAP CCMS Monitor Templates" --name2 "Performance Overview" --name3 "SID_appsap01_SID_10_CPU_Utilization" --warning 80 --critical 90 OK - CPU Utilization = 0% | 'CPU_Utilization'=0%;80;90;0;100
Grazie alla massiccia condivisione di informazioni durante il workshop tutti i partecipanti sono stati in grado di estendere autonomamente il monitoraggio dell’ambiente SAP. In definitiva, è stata una giornata molto produttiva ed interessante.
Nel caso vogliate approfondire l’argomento di monitoraggio SAP, non esitate a contattarci all’indirizzo e-mail: neteye@wuerth-phoenix.com