![]() |
This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Introduzione
Checkmk offre opzioni complete per il monitoraggio dei database Oracle. Con il plug-in dell'agente Checkmk puoi recuperare non solo i tablespace di un database o le sessioni attive, ma anche molti altri tipi di metriche. Un elenco completo delle opzioni di monitoraggio con i nostri plug-in di controllo è disponibile nel catalogo dei plug-in di controllo. Aggiungiamo regolarmente nuovi plug-in e aggiorniamo quelli esistenti, quindi vale sempre la pena consultare il catalogo. Tra gli altri, Checkmk può monitorare i seguenti valori:
Per poter monitorare i database è necessario solo il plug-in dell'agente, oltre all'agente sul server database. Attualmente sono supportati i sistemi operativi Linux, Solaris, AIX e Windows. Il plug-in dell'agente per Linux, Solaris e AIX si chiama mk_oracle
e per Windows mk_oracle.ps1
. Non sono necessari altri software aggiuntivi per il monitoraggio, né sul server Checkmk né sul server database.
Molti dei passaggi per impostare il monitoraggio sono gli stessi sia per Linux che per Windows. Per questo motivo, descriveremo prima i passaggi generali, poi quelli specifici per il rispettivo gruppo di sistemi operativi e infine l'agent bakery nelle edizioni commerciali.
2. Configurazione iniziale
I file di configurazione con i contenuti di esempio presentati in questo e nei successivi capitoli si trovano sul server Checkmk - sia tramite la linea di comando che tramite l'interfaccia web di Checkmk. In Checkmk Raw seleziona Setup > Agents e nelle edizioni commerciali Setup > Agents > Windows, Linux, Solaris, AIX > Related. In tutte le edizioni troverai le voci di menu per i diversi file system. I file di configurazione si trovano nel box Example Configurations.
2.1. Creare un utente del database
In linea di massima, la prima configurazione è rapida e richiede solo tre passaggi. Il primo passo, ovviamente, è quello di avere un utente che sia anche autorizzato a interrogare i database. Se non stai usando Real Application Cluster (RAC), crea un utente in ogni database da monitorare. Il modo in cui si accede a un'istanza varia a seconda del sistema operativo installato. Per Linux, ad esempio, puoi farlo impostando sempre prima l'istanza in questione come variabile d'ambiente in cui deve essere creato un utente. Normalmente si passa prima all'utente oracle
, ma questo può variare a seconda della configurazione:
root@linux# su - oracle
oracle@linux$ export ORACLE_SID=MYINST1
Quindi logga all'istanza e crea un utente per il monitoraggio. Per ottenere tutti i dati, sono necessari i seguenti permessi. Nell'esempio seguente, l'utente appena creato si chiama checkmk
. Puoi anche specificare qualsiasi altro nome desiderato:
sqlplus> create user checkmk identified by myPassword;
sqlplus> grant select_catalog_role to checkmk;
sqlplus> grant create session to checkmk;
sqlplus> connect checkmk/myPassword
sqlplus> exit
Puoi scoprire come funziona esattamente il login a un'istanza specifica nella documentazione di Oracle.
Database a supporto multiutente
Puoi anche configurare il login per i database multiutente. Di solito questo viene eseguito nella configurazione utilizzando un utente speciale e con il prefisso C##
. L'assegnazione dei permessi è un po' diversa rispetto agli utenti normali, poiché è necessario specificarli per tutti i container attuali e per tutti i container futuri:
sqlplus> create user c##checkmk identified by myPassword;
sqlplus> alter user c##checkmk set container_data=all container=current;
sqlplus> grant select_catalog_role to c##checkmk container=all;
sqlplus> grant create session to c##checkmk container=all;
sqlplus> exit
2.2. Creare la configurazione
Dopo aver creato un utente, il passo successivo è quello di abilitare il plug-in dell'agente a ricevere queste informazioni. Il modo più semplice è quello di definire gli stessi dati di login per tutte le istanze e impostare una configurazione predefinita nella configurazione. Ora sull'host Oracle crea un nuovo file di configurazione mk_oracle.cfg
per Linux, AIX, Solaris o mk_oracle_cfg.ps1
per Windows. Nell'esempio seguente si può vedere il file per i sistemi Unix-like:
# Syntax:
# DBUSER='USERNAME:PASSWORD'
DBUSER='checkmk:myPassword'
Per Windows la procedura è molto simile: in questo caso la variabile viene impostata in uno script di PowerShell:
# Syntax:
# $DBUSER = @("USERNAME","PASSWORD")
$DBUSER = @("checkmk","myPassword")
L'utente standard è tutto ciò che il plug-in dell'agente richiede. Tutte le altre opzioni che puoi impostare nei sistemi Unix o in Windows sono opzionali.
2.3. Usare il portafoglio Oracle
In alternativa all'indicazione dell'utente direttamente e con una password in un file di configurazione, puoi anche utilizzare l'Oracle Wallet. Questo ha il vantaggio di non dover più archiviare i dati di accesso in forma non criptata sul server Checkmk e sull'host Oracle. Quindi, anche se hai definito i diritti di accesso del file di configurazione sull'host Oracle, i dati di accesso hanno comunque lasciato il server e si trovano sul server Checkmk finché utilizzi l'Agent bakery.
L'Oracle Wallet a sua volta archivia i dati di accesso crittografati sull'host da monitorare in modo che possano essere utilizzati, ma non devono essere resi noti esplicitamente i dati di login. Checkmk può quindi utilizzare questo wallet in modo che i dati di accesso siano noti solo all'amministratore del database (DBA). Crea - o il DBA può creare - un wallet sul server appropriato:
root@linux# mkstore -wrl /etc/check_mk/oracle_wallet -create
Il plug-in dell'agente accederà a questo file in seguito, ogni volta che verrà stabilita una connessione a un'istanza. Per poter trovare anche i dati dell'utente necessari, dovrai inserirli una volta nel wallet. Nell'esempio seguente aggiungi l'utente checkmk
per l'istanza MYINST1
:
root@linux# mkstore -wrl /etc/check_mk/oracle_wallet -createCredential MYINST1 checkmk myPassword
Affinché il plug-in dell'agente sappia dove cercare il portafoglio, deve trovare due file. Il primo file è sqlnet.ora
in cui si trovano le informazioni sulla posizione del portafoglio. Il secondo file -tnsnames.ora
- definisce l'indirizzo dell'istanza in modo che possa essere indirizzata anche tramite il suo alias. Affinché il plug-in dell'agente possa accedere a questi file, è possibile specificare il percorso in Linux, Solaris e AIX utilizzando la variabile d'ambiente TNS_ADMIN
Questo è particolarmente utile se i file esistono già. In alternativa, puoi crearli esplicitamente. Windows richiede addirittura di specificarli manualmente.
Per prima cosa crea il file sqlnet.ora
. Il plug-in dell'agente cerca i dati di login in questo file, quindi è necessario inserire il percorso corretto del file wallet appena creato. Assicurati di impostare il parametro SQLNET.WALLET_OVERRIDE
su TRUE
:
LOG_DIRECTORY_CLIENT = /var/log/check_mk/oracle_client
DIAG_ADR_ENABLED = OFF
SQLNET.WALLET_OVERRIDE = TRUE
WALLET_LOCATION =
(SOURCE=
(METHOD = FILE)
(METHOD_DATA = (DIRECTORY=/etc/check_mk/oracle_wallet))
)
Ora il plug-in sa quali credenziali devono essere utilizzate. Per poter accedere anche all'indirizzo corretto, crea tnsnames.ora
come secondo file. La sintassi esatta si trova nella documentazione Oracle, ma a titolo di esempio il file potrebbe avere questo aspetto:
MYINST1
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYINST1_ALIAS)
)
)
Con questo passaggio hai creato i prerequisiti per rimuovere i dati di accesso dal file di configurazione del plug-in dell'agente. Al posto dei dati di accesso, inserisci semplicemente un /
(slash):
DBUSER='/:'
Naturalmente potrai aggiungere altri dati di accesso al portafoglio in un secondo momento. Il file tnsnames.ora
dovrà quindi essere modificato come necessario.
Infine, modifica i permessi dei file e delle directory creati manualmente in questa sezione in modo che i diritti di accesso all'esecuzione siano impostati correttamente. Il plug-in dell'agente eseguito come root
passerà al proprietario dei binari Oracle (ad esempio $ORACLE_HOME/bin/sqlplus
) prima di eseguirli. Come minimo, il gruppo del proprietario dei binari Oracle deve quindi avere accesso in lettura ai file creati manualmente in /etc/check_mk/
. Nell'esempio seguente, assumiamo che il gruppo sia oinstall
.
I comandi seguenti cambiano il gruppo in oinstall
:
root@linux# chgrp oinstall /etc/check_mk/sqlnet.ora /etc/check_mk/tnsnames.ora
root@linux# chgrp -R oinstall /etc/check_mk/oracle_wallet
Questi comandi assicurano che il gruppo possa leggere la directory oracle_wallet
e il suo contenuto:
root@linux# chmod g+x /etc/check_mk/oracle_wallet
root@linux# chmod -R g+r /etc/check_mk/oracle_wallet
I permessi dovrebbero avere un aspetto simile a questo:
root@linux# tree -ugpR /etc/check_mk
[drwxr-xr-x root root ] /etc/check_mk
├── [drwxr-x--- root oinstall ] oracle_wallet
│ └── [-rw-r----- root oinstall ] cwallet.sso
│ └── [-rw-r----- root oinstall ] cwallet.sso.lck
│ └── [-rw-r----- root oinstall ] ewallet.p12
│ └── [-rw-r----- root oinstall ] ewallet.p12.lck
├── [-rw-r--r-- root oinstall ] sqlnet.ora
├── [-rw-r--r-- root oinstall ] tnsnames.ora
L'output del comando mostra solo i file e le directory in questione.
3. Impostazione per Linux, Solaris e AIX
3.1. Percorsi del plug-in e della configurazione
Nei sistemi Unix Checkmk utilizza un plug-in dell'agente uniforme. Da un lato, questo riduce il lavoro di manutenzione, poiché le query SQL non vengono duplicate, dall'altro devi prestare attenzione a un solo plug-in dell'agente. Su tutti i sistemi supportati, i percorsi dei file per gli agenti sono gli stessi o molto simili. In particolare, hai bisogno delle seguenti directory:
Sistema operativo | Percorso del plug-in | Percorso della configurazione |
---|---|---|
Linux, Solaris, AIX |
|
|
Linux con |
|
|
AIX |
|
|
3.2. Installazione del plug-in dell'agente
Dopo aver creato un utente nella configurazione iniziale e averlo memorizzato nel file di configurazione, installa il plug-in dell'agente. Copia il file mk_oracle
dalla directory del server Checkmk ~/share/check_mk/agents/plugins/
alla directory plug-in dell'host Oracle descritta sopra.
![]() |
Il plug-in dell'agente per i sistemi Unix-like |
Assicurati che il plug-in dell'agente sia eseguibile e correggilo se necessario:
root@linux# cd /usr/lib/check_mk_agent/plugins/
root@linux# ls -lA
-rw-r--r-- 1 root root 120808 Jan 25 11:29 mk_oracle
root@linux# chmod +x mk_oracle
root@linux# ls -lA
-rwxr-xr-x 1 root root 120808 Jan 25 11:29 mk_oracle
3.3. Opzioni avanzate
Nella configurazione iniziale hai già appreso le prime variabili per ottenere i dati di monitoraggio dalle istanze Oracle. Tuttavia, a seconda dello scenario applicativo, avrai bisogno di ulteriori possibilità per un migliore controllo individuale del monitoraggio di ciascuna istanza. Troverai queste opzioni nelle sezioni seguenti.
Configurazione avanzata degli utenti
Con il login standard puoi utilizzare tutte o quasi tutte le istanze di un database. Tuttavia, ci sono casi speciali in cui hai bisogno di dati di accesso individuali per istanze specifiche. Nel file di configurazione hai quindi a disposizione le seguenti tre opzioni per specificare gli utenti:
Parametro | Descrizione |
---|---|
|
Il valore predefinito se non sono stati definiti dati di accesso individuali per l'istanza del database. |
|
Dati di accesso per un'istanza di database specifica, in questo caso per l'istanza |
|
Dati di accesso speciali per l'Automatic Storage Management (ASM). |
Queste variabili consentono anche altre opzioni oltre al nome utente e alla password. Puoi anche stabilire se l'utente è un SYSDBA
o un SYSASM
, su quale combinazione di indirizzo e porta l'istanza ascolta e persino quale alias TNS (TNSALIAS
) deve essere utilizzato. Tuttavia, queste specifiche sono sempre - a differenza di utente e password - facoltative. Oltre all'esempio precedente, una configurazione può avere il seguente aspetto:
# Syntax
# DBUSER='USERNAME:PASSWORD:ROLE:HOST:PORT:TNSALIAS'
DBUSER='checkmk:myPassword'
DBUSER_MYINST1='cmk_specific1:myPassword1:SYSDBA:localhost:1521'
DBUSER_MYINST2='cmk_specific2:myPassword2::localhost::INST2'
ASMUSER='cmk_asm:myASMPassword:SYSASM'
Alcune spiegazioni per l'esempio precedente:
Puoi definire un numero qualsiasi di dati di accesso individuali, che sono sempre preferiti a quelli standard.
Ogni opzione è separata dalle altre da un
:
(due punti).Se un campo opzionale viene omesso nel mezzo della stringa, è necessario codificare un punto e virgola, come nel caso della voce
DBUSER_MYINST2
, in cui non sono stati specificati né il ruolo né la porta.Se dopo un certo punto non sono più necessari campi opzionali, puoi omettere i due punti, come nel caso della voce
ASMUSER
, in cui non sono stati specificati né host né porta né alias TNS.
Includere o escludere le istanze
In alcuni casi potresti non voler includere determinate istanze nel monitoraggio, ad esempio perché si tratta di un parco giochi per sviluppatori o per altri motivi. Per semplificare al massimo la configurazione in queste situazioni, hai a disposizione diverse opzioni per escludere completamente o parzialmente una o più istanze:
Parametro | Descrizione |
---|---|
|
Qui puoi stabilire quali istanze devono essere monitorate. Un'istanza è denominata dal suo identificatore di sistema (SID). Si tratta di un elenco positivo che ignora tutte le istanze che non sono esplicitamente elencate. Questo parametro è molto utile se il numero di istanze da monitorare è inferiore al numero di istanze da ignorare. |
|
A differenza di |
|
Con questo parametro puoi escludere parzialmente un'istanza escludendo alcune sezioni dell'istanza dal monitoraggio. In questo modo, definisci un elenco negativo delle sezioni di un'istanza. Puoi anche escludere tutte le sezioni con il valore |
Avrai già intuito che l'ordine in cui vengono processati questi parametri determina il risultato. Le voci vengono infatti processate per istanza esattamente in sequenza, come mostrato nella tabella precedente. Pertanto, se la variabile ONLY_SIDS
è impostata, SKIP_SIDS
non viene più valutata né viene controllato se la variabile EXCLUDE_<SID>
è impostata su ALL
per questa istanza. Se ONLY_SIDS
non è impostata, il sistema procede in base alla sequenza. In caso di dubbio, cioè come comportamento predefinito, l'istanza verrà monitorata di conseguenza.
Di seguito è riportato un esempio in cui tutte le variabili sono impostate e il comportamento è quello che si ottiene:
ONLY_SIDS='INST1 INST2 INST5'
SKIP_SIDS='INST7 INST3 INST2'
EXCLUDE_INST1='ALL'
EXCLUDE_INST2='tablespaces rman'
Poiché l'elenco positivo della prima riga ha sempre la priorità, la seconda e la terza riga non vengono più valutate. Solo la quarta (ultima) riga verrà considerata in un secondo momento, poiché l'istanza deve essere valutata solo parzialmente.
In pratica, ha senso utilizzare solo una delle variabili per determinare il numero di istanze da monitorare.
Determinare i dati da recuperare
Come hai appreso nella sezione precedente, non solo è possibile disabilitare completamente le istanze, ma anche monitorarle solo parzialmente. Le esigenze operative sono diverse ed è particolarmente pratico quando non è auspicabile che alcune sezioni di lunga durata siano incluse in ogni aspetto o quando, ad esempio, sono richieste solo informazioni di base dalle istanze di test. Per limitare le sezioni a livello globale, imposta direttamente le variabili corrispondenti - per limitare solo alcune istanze puoi inserire la variabile EXCLUDE_<SID>
che hai già imparato a conoscere nella sezione precedente. Le variabili globali sono:
Parametro | Descrizione |
---|---|
|
Sezioni che devono essere interrogate in modo sincrono, cioè ogni volta che l'agente viene eseguito. Poiché l'intervallo di tempo per le interrogazioni è di 60 secondi per impostazione predefinita, le query SQL utilizzate devono essere eseguite in modo altrettanto veloce. Se la variabile non viene specificata, vengono interrogate tutte le sezioni. |
|
Le sezioni che devono essere interrogate in modo asincrono, cioè solo ogni x minuti. Il tempo di validità dei dati è determinato dalla variabile |
|
Per le sezioni ASM si applica lo stesso meccanismo descritto nella descrizione generale della variabile |
|
Qui per le sezioni ASM si applica lo stesso meccanismo descritto nella descrizione generale della variabile |
|
Questa variabile viene utilizzata per determinare per quanto tempo i dati recuperati in modo asincrono rimangono validi. Se il valore della variabile non viene specificato, viene utilizzato un valore predefinito di 600 secondi (10 minuti). Assicurati che il periodo di tempo non sia inferiore all'intervallo in cui l'agente Checkmk consegna i dati (60 secondi per impostazione predefinita), altrimenti i dati potrebbero essere considerati obsoleti e non consegnati dall'agente. |
|
Numero di SID che vengono processati in parallelo. Il valore predefinito è 1. |
Il meccanismo consente quindi di impostare una configurazione predefinita nel file di configurazione e di sovrascriverla per le singole istanze, a seconda delle necessità. Una configurazione potrebbe quindi avere il seguente aspetto, ad esempio:
# DEFAULTS:
# SYNC_SECTIONS="instance sessions logswitches undostat recovery_area processes recovery_status longactivesessions dataguard_stats performance locks"
# ASYNC_SECTIONS="tablespaces rman jobs ts_quotas resumable"
# SYNC_ASM_SECTIONS="instance processes"
# ASYNC_ASM_SECTIONS="asm_diskgroup"
# CACHE_MAXAGE=600
SYNC_ASM_SECTIONS='instance'
ASYNC_SECTIONS='tablespaces jobs rman resumable'
CACHE_MAXAGE=300
EXCLUDE_INST1='undostat locks'
EXCLUDE_INST2='jobs'
Come puoi vedere nell'esempio, solo la sezione instance
viene interrogata per le istanze ASM e su tutte le istanze regolari viene specificato un set minimo di sezioni asincrone. Inoltre, sull'istanza INST1
le sezioni sincrone undostat
e locks
verranno omesse.
Poiché le sezioni sincrone non sono specificate esplicitamente, tutte le sezioni sincrone vengono recuperate da tutte le altre istanze. Nell'istanza INST2
, a sua volta, vengono interrogate solo tre delle quattro sezioni asincrone, dato che jobs
è stata esclusa. Infine, la cache di 10 minuti viene ridotta a 5 minuti (300 secondi), un tempo sufficiente per ottenere tutti i dati.
![]() |
Se nel file di configurazione definisci quali sezioni vuoi recuperare e con quale metodo (puoi anche modificare una sezione asincrona in una sezione sincrona), devi specificaretutte le sezioni che devono essere eseguite nella rispettiva area. |
Ad esempio, se vuoi solo locks
dalla query sincrona, specifica l'intero elenco sincrono e ometti semplicemente locks
:
# Just exclude 'locks' from sync sections:
SYNC_SECTIONS='instance sessions logswitches undostat recovery_area processes recovery_status longactivesessions dataguard_stats performance'
Lo stesso vale per le altre tre variabili in cui è possibile determinare le sezioni.
Configurare l'alias TNS e TNS_ADMIN
L'alias TNS è un nome di facile utilizzo per una connessione al database. TNS è l'acronimo della tecnologia di rete Oracle Transparent Network Substrate. Un alias TNS permette di stabilire una connessione a un'istanza del database senza dover inserire ogni volta tutti i dettagli della connessione (come il nome host, il numero di porta o il nome del servizio). Gli alias TNS sono definiti nel file tnsnames.ora
. La sezione relativa a Oracle Wallet contiene un esempio di come definire un alias TNS.
TNS_ADMIN
è una variabile d'ambiente che indica la directory in cui si trovano i file di configurazione di Oracle come sqlnet.ora
e tnsnames.ora
. Per impostazione predefinita, TNS_ADMIN
è impostato da Oracle su $ORACLE_HOME/network/admin
. Nel file di configurazione, puoi assegnare un percorso diverso a TNS_ADMIN
, come nell'esempio seguente per un'installazione Oracle specifica:
export TNS_ADMIN=/opt/oracle/product/19c/dbhome_1/network/admin/
Solo se la variabile non è impostata, viene impostata dal plug-in dell'agente su /etc/check_mk/
.
Diritti di accesso all'esecuzione
Per motivi di sicurezza, il plug-in dell'agente mk_oracle
non esegue più i binari Oracle sotto l'utente root
. Questo riguarda i programmi sqlplus
, tnsping
e - se disponibile -crsctl
. Invece, mk_oracle
, ad esempio, passa al proprietario del file $ORACLE_HOME/bin/sqlplus
prima di eseguire sqlplus
. Questo assicura che i programmi Oracle vengano eseguiti solo da un utente non privilegiato e quindi impedisce a un utente Oracle malintenzionato di sostituire un binario come sqlplus
e di eseguirlo come utente root
.
![]() |
L'esecuzione di programmi Oracle da parte di un utente non privilegiato può causare problemi quando si utilizza un portafoglio Oracle, in quanto questo utente potrebbe non essere in grado di accedere ai file specifici del portafoglio. L'utente non privilegiato ha bisogno dei permessi per leggere i file $TNS_ADMIN/sqlnet.ora
e $TNS_ADMIN/tnsnames.ora
, per eseguire la cartella del portafoglio e per leggere i file nella cartella del portafoglio. Non dovresti avere problemi con i diritti di accesso se hai cambiato il gruppo dei file e delle directory come descritto alla fine della sezione sul portafoglio Oracle.
Il plug-in dell'agente ti aiuta nella diagnosi e verifica se ci sono problemi di accesso ai file indicati e li visualizza nel test di connessione. La procedura esatta per la diagnosi e la correzione dei diritti di accesso è disponibile nella Knowledge Base di Checkmk.
3.4. Monitorare i database remoti
Nei sistemi Unix, non solo puoi recuperare le istanze in esecuzione a livello locale, ma puoi anche accedere a quelle remote e recuperare i database in esecuzione. Questo, ad esempio, è vantaggioso se non hai accesso al sistema sottostante, ma vuoi comunque monitorare il database. È anche possibile monitorare i database remoti da un host su cui è in esecuzione il plug-in dell'agente, ma non un database Oracle.
Per monitorare i database remoti, è necessario che sull'host su cui è installato il plug-in dell'agente siano soddisfatti i seguenti requisiti:
La libreria di accesso AIO di Linux è installata. In Red Hat Enterprise Linux e nelle distribuzioni binary compatibili, il pacchetto si chiama
libaio
.È installato l'Oracle Instant Client.
Il programma
sqlplus
è già presente nell'installazione o potrebbe essere stato installato come pacchetto di estensione del client.
Di regola, le condizioni sono già soddisfatte se esiste un'installazione di Oracle sull'host, altrimenti installa i pacchetti appropriati per farlo.
Affinché il plug-in dell'agente possa connettersi al database remoto, devi innanzitutto memorizzare i dati di accesso nel file di configurazione. Questi sono simili ai dettagli di DBUSER
, già visti nella configurazione avanzata dell'utente, ma ci sono alcune specifiche aggiuntive obbligatorie:
# Syntax:
# REMOTE_INSTANCE_[ID]='USER:PASSWORD:ROLE:HOST:PORT:PIGGYBACKHOST:SID:VERSION:TNSALIAS'
REMOTE_INSTANCE_1='check_mk:mypassword::myRemoteHost:1521:myOracleHost:MYINST3:11.2'
REMOTE_INSTANCE_myinst1='/:::myRemoteHost:1521::MYINST1:11.2:INST1'
REMOTE_ORACLE_HOME='/usr/lib/oracle/11.2/client64'
Nell'esempio, due istanze remote vengono configurate con due righe. Affinché ogni riga di testo sia unica, alla fine di ogni variabile viene definito un ID, che può essere scelto liberamente, basta che sia unico per ogni file di configurazione. Come avrai già notato, la specifica della porta è seguita da altri valori, in parte opzionali e in parte necessari per stabilire una connessione.
Il primo nuovo valore PIGGYBACKHOST
è impostato su myOracleHost
per l'istanza MYINST3
. Questa specifica assegna i risultati della query tramite il meccanismo piggyback all'host specificato. Se questo è presente come host in Checkmk, i nuovi servizi appariranno di conseguenza su di esso invece che sull'host in cui è in esecuzione il plug-in dell'agente o da cui sono stati prelevati i dati. Non vedi questa specifica sulla seconda istanza MYINST1
: l'assegnazione a un altro host è opzionale.
Il secondo nuovo valore SID
è il nome dell'istanza. Poiché il plug-in dell'agente non può vedere quali istanze sono in esecuzione sull'host remoto, è necessario specificare una riga di configurazione per ogni istanza remota: questo valore è quindi obbligatorio e non opzionale.
Il terzo valore VERSION
è obbligatorio ed è dovuto al fatto che molti metadati sono disponibili solo se ci si trova direttamente sull'host. Pertanto non si può omettere la specifica della versione, che determina quali query SQL possono essere passate all'istanza. Nell'esempio, entrambe le istanze remote utilizzano la versione 11.2
.
Il quarto e ultimo valore TNSALIAS
è di nuovo facoltativo e può essere utilizzato se si accede all'istanza remota tramite Oracle Wallet o LDAP/Active Directory. Se l'istanza risponde solo a un alias TNS specifico, puoi specificarlo qui. Per la seconda istanza remota, TNSALIAS
ha il valore INST1
.
Per assicurarti che anche il programma sqlplus
venga trovato, usa la variabile REMOTE_ORACLE_HOME
per specificare dove si trova il client Oracle sull'host che esegue il plug-in dell'agente. Solo così saranno disponibili tutte le risorse necessarie per le query.
Quando si interrogano le istanze remote, ci sono alcune restrizioni e caratteristiche speciali:
Dal momento che hai inserito esplicitamente le istanze remote nel file di configurazione, non puoi escludere queste istanze utilizzando
SKIP_SIDS
, e in cambio non devi includerle utilizzandoONLY_SIDS
.Le istanze con lo stesso nome (
SID
) non possono essere assegnate allo stesso host. Questo è particolarmente importante se stai recuperando istanze da più host remoti e/o locali in cui vengono utilizzati nomi identici.
4. Impostazione per Windows
4.1. Percorsi del plug-in e della configurazione
Su Windows, PowerShell viene utilizzato come linguaggio di script per monitorare i database Oracle. La funzionalità è simile al plug-in dell'agente nei sistemi Unix, ma ne contiene solo una parte. Per utilizzare il plug-in dell'agente in Windows, è necessaria la versione 5.x o superiore di PowerShell e le seguenti directory:
Sistema operativo | Percorso del plug-in | Percorso della configurazione |
---|---|---|
Windows |
|
|
4.2. Installazione del plug-in dell'agente
Dopo aver creato un user agent nella configurazione iniziale e averlo memorizzato nel file di configurazione, installa il plug-in dell'agente. I plug-in dell'agente per Windows sono memorizzati sull'host durante l'installazione dell'agente Checkmk per Windows. Sull'host Oracle, copia il file mk_oracle.ps1
dalla directory C:\Program Files (x86)\checkmk\service\plugins\
nella directory dei plug-in descritta sopra. In alternativa, puoi fare riferimento al file nel percorso di installazione aggiornando il file di configurazione dell'agente Checkmk.
4.3. Caratteristiche speciali in Windows
Windows normalmente impedisce l'esecuzione degli script PowerShell se non sono stati firmati. Ora puoi aggirare questo problema molto facilmente modificando le policy per l'esecuzione degli script PowerShell per l'utente che esegue l'agente Checkmk:
PS C:\ProgramData\checkmk\agent\> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope LocalMachine
PS C:\ProgramData\checkmk\agent\> Get-ExecutionPolicy -Scope LocalMachine
Bypass
Questa opzione è utile se vuoi testare per un breve periodo uno script o il funzionamento generale dell'agente Checkmk. Per evitare di compromettere la sicurezza del tuo sistema, ripristina questa impostazione sui server di produzione al termine dei test:
PS C:\Program\checkmk\agent\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
PS C:\Program\checkmk\agent\> Get-ExecutionPolicy -Scope LocalMachine
RemoteSigned
È comprensibile che tu non voglia cambiare le linee guida ogni 60 secondi, quindi imposta un'eccezione permanente solo per gli script interessati. Anche il file di configurazione del plug-in dell'agente deve essere aggiunto alle eccezioni. Per facilitare la lettura, in questo esempio l'output è stato completamente omesso:
PS C:\ProgramData\checkmk\agent\> Unblock-File -Path .\plugins\mk_oracle.ps1
PS C:\ProgramData\checkmk\agent\> Unblock-File -Path .\config\mk_oracle_cfg.ps1
4.4. Opzioni avanzate
Nella configurazione iniziale hai già appreso le prime variabili per ottenere i dati di monitoraggio dalle tue istanze Oracle. A seconda dello scenario applicativo, tuttavia, avrai rapidamente bisogno di altre opzioni per poter controllare il monitoraggio meglio e individualmente per ogni istanza. Le opzioni disponibili anche in Windows sono descritte nelle sezioni seguenti.
Configurazione avanzata degli utenti
Come in Linux, puoi definire non solo un login standard per il plug-in dell'agente di Windows, ma anche dati di accesso individuali per le singole istanze. Hai quindi a disposizione le stesse tre opzioni per specificare gli utenti:
Parametro | Descrizione |
---|---|
|
Il valore predefinito se non sono stati definiti dati di accesso individuali per l'istanza del database. |
|
Dati di accesso per un'istanza di database specifica, in questo caso per l'istanza |
|
Dati di accesso speciali per l'Automatic Storage Management (ASM). |
Inoltre, è possibile specificare altre opzioni oltre al nome dell'utente o alla password: anche queste voci aggiuntive sono facoltative, ma ogni voce deve essere compilata se viene utilizzata. Una configurazione può quindi avere il seguente aspetto, ad esempio:
# Syntax
# DBUSER = @("USERNAME", "PASSWORD", "ROLE", "HOST", "PORT")
# Default
# DBUSER = @("", "", "", "localhost", "1521")
$DBUSER = @("checkmk", "myPassword", "SYSDBA", "localhost", "1521")
@DBUSER_MYINST1 = @("cmk_specific1", "myPassword1", "", "10.0.0.73")
@DBUSER_MYINST2 = @("cmk_specific2", "myPassword2", "SYSDBA", "localhost", "1531")
@ASMUSER = @("cmk_asm", "myASMPassword", "SYSASM")
Alcune spiegazioni relative all'esempio precedente:
Puoi definire un numero qualsiasi di dati di accesso individuali, che sono sempre preferiti a quelli standard.
Ogni opzione è definita in un elenco. L'ordine delle voci non è arbitrario, quindi l'ordine non può essere riorganizzato.
Quando un campo opzionale rimane invariato ma un campo successivo deve essere modificato, entrambi i campi devono essere specificati correttamente, come nel caso dell'edizione
DBUSER_MYINST2
, doveHOST
è ancora impostato sulocalhost
anche se soloPORT
deve essere modificato.Se i campi opzionali non sono più necessari dopo un certo punto, possono essere omessi, come nel caso della voce
ASMUSER
, in cui è stato specificato solo il ruolo dell'utente.Se all'utente non deve essere assegnato alcun ruolo speciale, ma
HOST
oPORT
devono essere personalizzati, è sufficiente inserire una coppia di virgolette/doppi apici (""
) in questa posizione.
Abilitare e disabilitare le istanze
Anche in Windows, non sempre si desidera includere alcune istanze. I motivi sono già stati descritti nella sezione dedicata a Linux. Due dei tre parametri che conosci in Linux possono essere utilizzati anche in Windows:
Parametro | Descrizione |
---|---|
|
Qui puoi stabilire quali istanze devono essere monitorate. Un'istanza è denominata dal suo identificatore di sistema (SID). Si tratta di un elenco positivo, che ignora tutte le istanze che non sono esplicitamente elencate. Questo parametro è molto utile se il numero di istanze da monitorare è inferiore al numero di istanze da ignorare. |
|
Poiché il parametro |
Il processo viene eseguito per ogni istanza nell'ordine mostrato nella tabella precedente. Quindi prima viene controllato se l'istanza si trova in ONLY_SIDS
e solo dopo se alcune sezioni devono essere escluse. Se la variabile EXCLUDE_<SID>
è impostata su ALL
, nessuna sezione verrà eseguita.
Di seguito è riportato un esempio in cui ogni variabile è mostrata una sola volta:
$ONLY_SIDS = @("MYINST1", "MYINST3")
$EXCLUDE_INST1 = "tablespaces rman"
$EXCLUDE_INST3 = "ALL"
Nota che ONLY_SIDS
è un elenco, mentre EXCLUDE_INST1
è una stringa contenente sezioni separate da spazi.
Determinare i dati da prelevare
La specificazione di quali sezioni devono essere effettivamente recuperate avviene nello stesso modo di Linux e il seguente è solo un esempio per una configurazione Windows:
# DEFAULTS:
# $SYNC_SECTIONS = @("instance", "sessions", "logswitches", "undostat", "recovery_area", "processes", "recovery_status", "longactivesessions", "dataguard_stats", "performance", "locks")
# $ASYNC_SECTIONS = @("tablespaces", "rman", "jobs", "ts_quotas", "resumable")
# $SYNC_ASM_SECTIONS = @("instance", "processes")
# $ASYNC_ASM_SECTIONS = @("asm_diskgroup")
# $CACHE_MAXAGE = 600
$SYNC_ASM_SECTIONS = @("instance")
$ASYNC_SECTIONS = @("tablespaces", "jobs", "rman", "resumable")
$CACHE_MAXAGE = 300
$EXCLUDE_INST1 = "undostat locks"
$EXCLUDE_INST2 = "jobs'
![]() |
Se nel file di configurazione definisci quali sezioni vuoi recuperare e con quale metodo (puoi anche modificare una sezione asincrona in una sezione sincrona), devi specificaretutte le sezioni che devono essere eseguite nella rispettiva area. |
Ad esempio, se vuoi solo locks
dalla query sincrona, specifica l'intero elenco sincrono e ometti semplicemente locks
:
# Just exclude 'locks' from sync sections:
$SYNC_SECTIONS = @("instance", "sessions", "logswitches", "undostat", "recovery_area", "processes", "recovery_status", "longactivesessions", "dataguard_stats", "performance")
Lo stesso vale per le altre tre variabili in cui vengono determinate le sezioni.
Diritti di accesso all'esecuzione
Per motivi di sicurezza, il plug-in dell'agente mk_oracle.ps1
esegue i binari Oracle come amministratore solo se questi programmi possono essere modificati solo dagli amministratori. Gli amministratori in Windows sono l'account LocalSystem e i membri del gruppo integrato Administrators
. Questo vale per i programmi sqlplus.exe
, tnsping.exe
e - se disponibile -crsctl.exe
. Il plug-in dell'agente mk_oracle.ps1
non esegue nessuno di questi programmi se gli utenti non amministrativi dispongono di uno dei permessi Write
, Modify
o Full control
per il file. In questo modo si evita il rischio per la sicurezza che gli utenti non privilegiati eseguano i programmi come amministratore.
![]() |
Puoi scoprire in quale versione patch di Checkmk è stata apportata questa modifica in Werk #15843. |
Se necessario, modifica i diritti di accesso rimuovendo i suddetti permessi degli utenti non amministrativi per i programmi. Il plug-in dell'agente ti aiuta nella diagnosi e controlla se gli utenti non amministrativi hanno accesso ai file menzionati e li visualizza nel test di connessione. La procedura esatta per la diagnosi e la correzione dei diritti di accesso è disponibile nella Knowledge Base di Checkmk.
Se non ti è possibile regolare i permessi per i programmi Oracle in modo sicuro, puoi consentire a singoli utenti e gruppi di eseguire i programmi:
# Oracle plugin will allow users and groups in the list to have write access to the Oracle binaries
$WINDOWS_SAFE_ENTRIES=@("NT AUTHORITY\Authenticated Users", "<Domain>\<User>")
Solo se non c'è altro modo per garantire il monitoraggio di Oracle, puoi disattivare il controllo dei diritti di accesso come ultima opzione.
![]() |
Se disattivi il controllo dei diritti di accesso, il plug-in dell'agente non funzionerà più in modo sicuro. |
# Oracle plugin will not check if the used binaries are write-protected for non-admin users
$SKIP_ORACLE_SECURITY_CHECK=1
Tuttavia, esiste anche un altro modo per eseguire il plug-in dell'agente, senza diritti di amministratore. Puoi personalizzare l'esecuzione del plug-in dell'agente ed eseguirlo, ad esempio, sotto il gruppo locale di Windows Users
. Per farlo, modifica il file di configurazione check_mk.user.yml
dell'agente di Windows, ad esempio in questo modo:
plugins:
enabled: yes
execution:
- pattern: $CUSTOM_PLUGINS_PATH$\mk_oracle.ps1
async: yes
group: Users
run: true
Nelle edizioni commerciali, queste voci possono essere create dall'Agent bakery con la regola dell'agente Run plug-ins and local checks using non-system account.
4.5. Monitoraggio dei database remoti
Il monitoraggio di database remoti non è attualmente possibile utilizzando il plug-in dell'agente per Windows. Pertanto, se vuoi monitorare database remoti, devi disporre di un host con un sistema operativo Unix compatibile.
5. Configurazione con l'Agent bakery
La configurazione può essere notevolmente semplificata nelle edizioni commerciali con l'Agent Bakery, in quanto si evitano errori di sintassi nei file di configurazione e si possono implementare più facilmente gli adattamenti agli ambienti in evoluzione. La differenza principale rispetto a una configurazione manuale è che devi lavorare sull'host Oracle solo alla linea di comando se vuoi effettuare configurazioni speciali specifiche per Oracle. Puoi eseguire la configurazione con l'Agent Bakery per Linux, Solaris, AIX e Windows.
Tuttavia, non puoi configurare tutte le funzioni del plug-in dell'agente con l'Agent Bakery, ad esempio se si tratta di funzioni che richiedono un intervento importante e conoscenze specialistiche approfondite. Di conseguenza, le query SQL personalizzate non possono essere configurate con l'Agent Bakery.
Tramite Setup > Agents > Windows, Linux, Solaris, AIX e il menu Agents > Agent rules, troverai la pagina con il set di regole Oracle databases (Linux, Solaris, AIX, Windows). Crea una nuova regola con Add rule. Qui troverai tutte le opzioni disponibili per la configurazione del plug-in dell'agente:

Molte opzioni ti saranno familiari grazie al manuale di configurazione. Come descritto, ci sono opzioni che non sono disponibili per tutti i sistemi operativi. Il titolo di queste opzioni indica per quali sistemi operativi possono essere utilizzate.
5.1. Configurazione degli utenti
Nella configurazione più semplice per un sistema operativo Unix, la regola sarà simile a questa:

Nell'agent bakery hai anche la possibilità di creare utenti standard e di creare eccezioni per istanze specifiche. Le opzioni, separate nel file di configurazione con i due punti (per Linux & Co.) o come voci dell'elenco (per Windows), si trovano sotto Login Defaults come opzioni individuali che puoi compilare secondo le tue necessità. Naturalmente, puoi anche utilizzare il portafoglio Oracle in questo caso, cambiando semplicemente Authentication method in Use manually created Oracle password wallet.
La configurazione dell'Automatic Storage Management (ASM) avviene in modo analogo tramite l'opzione Login for ASM, mentre le eccezioni per istanze specifiche sono inserite in Login for selected databases, come descritto nella configurazione avanzata dell'utente per Linux, Solaris, AIX e Windows.
5.2. Opzioni avanzate
La seguente tabella elenca le altre opzioni del set di regole Oracle databases (Linux, Solaris, AIX, Windows), insieme a un riferimento a dove trovare una descrizione dell'opzione:
Opzione | Descrizione |
---|---|
Host uses xinetd or systemd (Linux/AIX/Solaris only) |
Questa opzione deve essere attivata per i sistemi Unix-like con |
Instances to monitor |
Questa opzione riassume diverse opzioni del file di configurazione con cui puoi includere o escludere istanze per Linux, Solaris, AIX o Windows. |
Add pre or postfix to TNSALIASes (Linux/AIX/Solaris only) |
Questa opzione ti permette di estendere l'alias TNS a livello globale o per un'istanza specifica. |
Sections - data to collect |
In questa opzione sono elencate tutte le sezioni disponibili, che possono essere configurate individualmente a livello globale e che corrispondono alle variabili |
Exclude some sections on certain instances |
Se non vuoi utilizzare |
Cache age for background checks |
Specifica per quanto tempo le sezioni asincrone devono rimanere valide: il valore predefinito è 600 secondi (10 minuti). |
Sqlnet Send timeout |
Questa opzione viene aggiunta al file |
Remote instances (Linux/AIX/Solaris only) |
Configura le istanze remote con questa opzione. Contiene tutti gli elementi della configurazione che già conosci. Per specificare l'ID della variabile, tramite Unique ID puoi scegliere tra varie opzioni. Devi solo assicurarti che l'ID sia unico all'interno della configurazione. |
ORACLE_HOME to use for remote access (Linux/AIX/Solaris only) |
Qui puoi determinare dove il plug-in dell'agente trova il programma |
TNS_ADMIN to use for sqlnet.ora and tnsnames.ora (Linux/AIX/Solaris only) |
Se i due file si trovano in una directory diversa da |
sqlnet.ora permission group (Linux/AIX/Solaris only) |
Inserisci qui il gruppo Linux dell'utente non privilegiato che possiede i binary Oracle in modo che questo utente possa leggere il file |
Oracle binaries permissions check (Windows only) |
Qui puoi configurare il controllo dei diritti di accesso per i binary Oracle, consentendo a singoli utenti e gruppi non amministrativi di eseguire i programmi. Dovresti disattivare il controllo solo se sai cosa stai facendo. Puoi trovare maggiori informazioni su questo tema nella sezione Diritti di accesso all'esecuzione per Windows. |
6. Istanze in cluster
6.1. Database standby
Oracle supporta i cosiddetti database standby che possono svolgere compiti specifici e che di solito sono semplicemente delle copie dei database di produzione o primari. Questi concetti di database richiedono anche meccanismi di monitoraggio speciali. Puoi trovare maggiori informazioni su questi meccanismi nelle sezioni seguenti.
Con Active Data Guard (ADG)
Una volta ottenuta la licenza e l'attivazione dell'ADG, non dovrai apportare alcuna modifica alla configurazione del plug-in dell'agente, poiché potrai leggere da un'istanza standby in qualsiasi momento senza dover interrompere la sincronizzazione con l'istanza primaria.
Senza Data Guard (DG) attivo
Se le istanze non hanno ADG, l'utente che deve recuperare i dati di monitoraggio dalle istanze in standby deve avere il ruolo SYSDBA
. Questo permesso consente all'utente di recuperare almeno una parte dei dati, anche se l'istanza primaria si guasta e l'istanza sul server in standby non è ancora stata cambiata da MOUNTED
a OPEN
.
Assegna il permesso all'utente autorizzato a recuperare i dati dalle istanze.Importante: il funzionamento potrebbe essere diverso dall'esempio seguente. Qui il ruolo è assegnato all'utente creato nell'esempio di configurazione iniziale:
sqlplus> grant sysdba to checkmk;
Per consentire ai dati di essere interrogati dal plug-in dell'agente sul server standby in caso di errore, crea l'utente sull'istanza primaria e poi copia il file password sul server standby. Infine, nel file di configurazione del plug-in, imposta il ruolo dell'utente su SYSDBA
:
# Syntax:
# DBUSER='USER:PASSWORD:ROLE:HOST:PORT:TNSALIAS'
DBUSER='checkmk:myPassword:sysdba'
Si noti che l'indicazione di un host, di una porta o di un alias TNS è facoltativa e può essere omessa. Inoltre, il plug-in dell'agente deve essere installato sull'host dell'istanza primaria e sugli host delle istanze standby.
Impostazione dei servizi del cluster
Per quanto riguarda Checkmk, è necessario - indipendentemente dal fatto che si utilizzi ADG o DG - personalizzare i servizi e assegnarli a un host del cluster. I plug-in di controllo corrispondenti sono già stati preparati in modo tale da poter essere configurati anche come servizi del cluster. Crea un host del cluster in Checkmk e aggiungi ad esso i singoli host Oracle su cui sono in esecuzione le istanze primarie e standby come nodi. Quindi assegna i seguenti servizi a questo host del cluster:
ORA .* RMAN Backup
ORA .* Job
ORA .* Tablespaces
In questo modo non dovrai più preoccuparti da quale istanza provengono i dati e avrai garantito un monitoraggio continuo dei servizi sopra citati, anche in caso di cambio di istanza primaria.
6.2. Cluster di applicazioni reali (RAC)
Poiché in un RAC i dati vengono archiviati a livello centrale, è sufficiente creare l'utente per il plug-in dell'agente una sola volta. Solo il plug-in dell'agente deve essere installato e configurato su ogni nodo del cluster Oracle.
Importante: configura sempre tu stesso i nodi del cluster e non interrogare l'ascoltatore Oracle SCAN: solo così potrai assicurarti che l'accesso tramite il plug-in dell'agente funzioni correttamente.
Impostazione dei servizi del cluster
Oltre ai servizi assegnati all'host del cluster nell'ambito di un Data Guard (attivo), devi assegnare anche i seguenti servizi all'host del cluster per garantire un monitoraggio continuo in caso di switch over:
ASM.* Diskgroup
ORA .* Recovery Area
7. Query SQL personalizzate (Custom SQLs)
7.1. Perché le query SQL personalizzate?
Con il plug-in dell'agente Checkmk fornisce già un gran numero di query SQL con cui puoi monitorare le istanze del tuo database. Per renderle adatte alla più ampia gamma possibile di requisiti tecnici e di contenuto, sono ovviamente mantenute in un modulo molto generalizzato.
Per poter soddisfare i requisiti individuali di ogni azienda per il monitoraggio di un database specifico, Checkmk offre la possibilità di creare query SQL personalizzate( in breveSQL personalizzate ) e di recuperarle con il plug-in dell'agente. Queste query SQL personalizzate vengono poi riconosciute automaticamente e monitorate come servizi propri nell'interfaccia web.
![]() |
È possibile utilizzare query SQL personalizzate solo in Linux, Solaris e AIX. Questa opzione non è disponibile in Windows. |
7.2. Semplici query SQL personalizzate
Scrivere query SQL
Il modo più semplice per connettere un SQL di questo tipo è utilizzare Oracle Database: Per farlo, crea prima il file MyCustomSQL.sql
nella directory di configurazione dell'agente sull'host su cui deve essere eseguito l'SQL.
Il seguente è un file fittizio che illustra la sintassi:
/*Syntax help in comments. The first word is alwyas the key word and ends with a ":"*/
/*details:Text to display in the service detail output*/
prompt details: Some details for the service output;
/*perfdata:METRIKNAME=CURRENTVALUE;WARN;CRIT;MAX METRIKNAME=CURRENTVALUE2;WARN;CRIT;MAX*/
prompt perfdata:MyMetricName1=10;15;20;30 MyMetricName2=16;15;20;30;
prompt perfdata:MyMetricName3=21;15;20;30 MyMetricName4=15;15;20;30;
/*long:Text to display in the long output of the service*/
prompt long: Here comes some long output for the service;
prompt long: Here comes some more long output for the service;
/*exit:Status of the service as a number*/
prompt exit:2;
L'esempio mostra da un lato che è possibile definire un numero qualsiasi di istruzioni in un file di questo tipo, dall'altro che la sintassi è molto simile a quella di un check locale, soprattutto per quanto riguarda le metriche. In dettaglio, questa sintassi è molto più potente in questo caso, perché è possibile generare un output a più righe, che viene poi processato dal server Checkmk come servizio. In linea di principio, tutte le righe sono opzionali e non devono essere riempite.
Le keyword possibili sono in dettaglio:
details
: Qui puoi stabilire cosa deve essere visualizzato nel servizio generato Summary. Questa riga è introdotta dalla keyword e dai due punti. Il resto della riga è l'output.perfdata
All'interno di una riga, puoi creare un numero qualsiasi di metriche, ognuna separata da uno spazio. Puoi anche distribuire l'output delle metriche su più righe, ma inizia sempre con la keywordperfdata:
.long
Se il servizio deve avere un output lungo per il campo Details, puoi specificarlo qui. Puoi anche usare questa keyword più volte per creare più righe nel campo Details.exit
Le assegnazioni note0
,1
,2
,3
sono disponibili per gli stati OK, WARN, CRIT, SCONOSCIUTO.
![]() |
Non è necessario definire manualmente la keyword |
Configurare il plug-in dell'agente
Ora che hai definito il tuo primo, semplicissimo SQL, rendilo noto al plug-in dell'agente mk_oracle
. Questo avviene tramite il noto file di configurazione, che puoi espandere di conseguenza:
SQLS_SECTIONS="mycustomsection1"
mycustomsection1 () {
SQLS_SIDS="INST1"
SQLS_DIR="/etc/check_mk"
SQLS_SQL="MyCustomSQL.sql"
}
Con la prima opzione (SQLS_SECTIONS
) stabilisci quali singole sezioni vuoi che vengano eseguite. Nota che per sezione si intende una parte dell'output del plug-in dell'agente e non una parte di un'istanza del database. Nell'esempio, abbiamo specificato solo una sezione (mycustomsection1
) e l'abbiamo descritta in modo più dettagliato direttamente dopo. Ogni sezione è in realtà una piccola funzione chiamata dal plug-in dell'agente.
In questa funzione puoi determinare ulteriori dettagli e specificare per quali istanze (SQLS_SIDS
) si applica questa sezione. Inoltre, definisci anche dove si trova il file con le istruzioni SQL (SQLS_DIR
) e il nome di questo file (SQLS_SQL
).
Questa semplice configurazione è sufficiente per poter vedere il risultato in Checkmk. Per farlo, esegui una scoperta del servizio e attiva il nuovo servizio. In seguito vedrai il nuovo servizio insieme agli altri nella panoramica dell'host:

7.3. Opzioni avanzate
Le possibilità di monitoraggio con query SQL personalizzate vanno ovviamente oltre il semplice esempio mostrato sopra. Di seguito troverai una panoramica delle variabili disponibili che puoi utilizzare nel file di configurazione mk_oracle.cfg
. Per una descrizione dettagliata, puoi anche richiamare il plug-in dell'agente mk_oracle
con l'opzione --help
.
![]() |
Le variabili che possono essere impostate solo al di fuori o solo all'interno di una funzione di sezione sono contrassegnate di conseguenza. Tutte le altre possono essere definite in entrambe le sezioni. Se vengono impostate al di fuori di una sezione, saranno applicate globalmente a tutte le sezioni. |
Variabile | Breve descrizione | Opzionale |
---|---|---|
|
Le funzioni di sezione autodefinite che devono essere eseguite dal plug-in dell'agente. |
No |
|
Le istanze che devono eseguire le sezioni. |
No |
|
Il percorso della directory in cui sono memorizzati i file con le query SQL personalizzate. |
No |
|
Il file che contiene le istruzioni SQL per una sezione. |
No |
|
Il nome della sezione da valutare con un plug-in di controllo per le query SQL personalizzate. |
Sì |
|
Il separatore dei singoli elementi in una riga dell'output, definito come un ID ASCII decimale. Questa variabile può essere utilizzata solo in combinazione con la variabile |
Sì |
|
Specifica una parte del nome del servizio generato. Per valore predefinito, il nome del servizio è composto da SID e dal nome del file con le query SQL personalizzate. Il valore di questa variabile sostituisce il nome del file nel nome del servizio. |
Sì |
|
Esegue lo stesso compito di |
Sì |
|
Definisce un utente individuale per una sezione. |
Sì |
|
Definisce la password dell'utente definito con |
Sì |
|
Solo se l'utente definito con |
Sì |
|
Definisce un alias TNS individuale per una sezione. |
Sì |
7.4. Utilizzo di plug-in di controllo personalizzati
Se le possibilità offerte dalla sintassi descritta sopra non sono sufficienti, puoi anche utilizzare la variabile SQLS_SECTION_NAME
per produrre i nomi del tuo plug-in per una o più query SQL e definire il tuo separatore con SQLS_SECTION_SEP
. Tuttavia, questo richiede che tu abbia scritto un plug-in di controllo appropriato e che lo abbia incluso nella tua istanza Checkmk.
Se hai scritto un tale plug-in di controllo, sei completamente libero di valutare l'output delle sezioni autodefinite del plug-in dell'agente e puoi procedere per la tua strada. Poiché questo metodo è il più completo e anche il più difficile, viene qui menzionato solo per completezza. Presuppone che tu sappia come scrivere un plug-in di controllo basato sull'agente e integrarlo nel sito. Dopodiché assegna le query SQL personalizzate con le variabili a questo plug-in di controllo.
8. Opzioni di diagnostica
In Linux, la diagnostica viene eseguita richiamando il plug-in dell'agente mk_oracle
con varie opzioni. Con mk_oracle --help
puoi visualizzare una panoramica di tutte le opzioni disponibili.
8.1. Test delle connessioni
![]() |
Il test di connessione descritto di seguito controlla anche se i diritti di accesso necessari sono impostati durante l'esecuzione su Linux o Windows. Se mancano i diritti di accesso, questi vengono visualizzati con suggerimenti specifici per la loro correzione. La procedura esatta per la diagnosi e la correzione dei diritti di accesso è disponibile nella Knowledge Base di Checkmk. |
Linux, Solaris, AIX
Se hai problemi di connessione a una o più istanze di un server Oracle, la prima cosa da fare è controllare i parametri di base. Se avvii il plug-in dell'agente con l'opzione -t
, questo visualizza i dettagli di una connessione. Nota che al plug-in dell'agente devono essere forniti in anticipo i percorsi del suo file di configurazione e dei dati cache del plug-in. Nell'output le sezioni fittizie sono state omesse per motivi di leggibilità.
L'esempio seguente riguarda un server Linux con systemd
, sul quale il plug-in dell'agente viene eseguito in modo asincrono ogni 60 secondi:
root@linux# export MK_CONFDIR="/etc/check_mk/"; export MK_VARDIR="/var/lib/check_mk_agent"
root@linux# /usr/lib/check_mk_agent/plugins/60/mk_oracle -t --no-spool
---login----------------------------------------------------------------
Operating System: Linux
ORACLE_HOME (oratab): /u01/app/oracle/product/11.2.0/xe
Logincheck to Instance: XE
Version: 11.2
Login ok User: checkmk on ORA-SRV01 Instance XE
SYNC_SECTIONS: instance dataguard_stats processes longactivesessions sessions recovery_status undostat logswitches recovery_area performance
ASYNC_SECTIONS: tablespaces rman jobs ts_quotas resumable
------------------------------------------------------------------------
Su un server Linux con xinetd
, chiama invece mk_oracle
per il test di connessione come segue:
root@linux# /usr/lib/check_mk_agent/plugins/mk_oracle -t
Poiché è più probabile che questa chiamata venga effettuata in caso di errore, riceverai anche altre informazioni: sia la stringa di connessione utilizzata per la connessione che i primi 100 caratteri del messaggio di errore restituito durante il tentativo di connessione. Con l'aiuto di queste informazioni, potrai identificare rapidamente semplici problemi di configurazione e correggerli di conseguenza.
Windows
Il plug-in dell'agente non accetta alcun parametro in Windows. Per testare la connessione in questo caso, limita temporaneamente le sezioni da recuperare a instance
e attiva l'opzione DEBUG
:
# Syntax:
# $DBUSER = @("USERNAME", "PASSWORD")
$DBUSER = @("checkmk", "myPassword")
SYNC_SECTIONS = @("instance")
ASYNC_SECTIONS = @("")
DEBUG = 1
Esegui quindi il plug-in dell'agente manualmente. Anche in questo caso, otterrai informazioni sul modo in cui il plug-in tenta di accedere alle istanze. L'output potrebbe essere simile a questo, ad esempio:
PS C:\ProgramData\checkmk\agent\plugins\> .\mk_oracle.ps1
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of DBVERSION software = xxx112020xxx
<<<oracle_instances>>>
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of inst_name = xxxXExxx
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of DBVERSION database = xxx112020xxx
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of the_section = sql_instance
2020-08-23T12:48:20.3930944+02:00 DEBUG:now calling multiple SQL
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of sql_connect in dbuser = checkmk/myPassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=XE))) as sysdba
<<<oracle_instance>>>
XE|FAILURE|...
8.2. Log
Linux, Solaris, AIX
Se non è possibile trovare l'errore verificando una semplice connessione, il passo successivo è quello di creare un file di log che registra tutti i passaggi del plug-in dell'agente. Non dimenticare le variabili d'ambiente necessarie. Nell'esempio seguente, l'output delle sezioni è stato omesso per migliorare la leggibilità.
Ecco la chiamata per un server Linux con systemd
, sul quale il plug-in dell'agente viene eseguito in modo asincrono ogni 60 secondi:
root@linux# export MK_CONFDIR="/etc/check_mk/"; export MK_VARDIR="/var/lib/check_mk_agent"
root@linux# /usr/lib/check_mk_agent/plugins/60/mk_oracle -l --no-spool
Start logging to file: /var/lib/check_mk_agent/log/mk_oracle.log
Ecco la chiamata di mk_oracle
per il log su un server Linux con xinetd
:
root@linux# /usr/lib/check_mk_agent/plugins/mk_oracle -l
Puoi utilizzare il file di log generato per identificare con precisione su quale riga dello script si è verificato il problema.
Windows
La registrazione in Windows funziona in modo simile al test di connessione descritto sopra. Se la connessione è stabile, puoi aggiungere le sezioni reali al file di configurazione e ottenere un output di log completo.
8.3. Debug
Linux, Solaris, AIX
Se non riesci ad arrivare al problema nemmeno con l'aiuto del log, come ultima opzione il plug-in dell'agente fornisce l'output completo di tutti i passaggi per l'analisi degli errori. Questo output è quindi il metodo più completo e sicuramente più difficile da leggere per arrivare alla causa di un problema e dovrebbe quindi essere usato solo come ultima risorsa.
Quello che segue è un esempio di debug su un server Linux con systemd
, sul quale il plug-in dell'agente viene eseguito in modo asincrono ogni 60 secondi:
root@linux# export MK_CONFDIR="/etc/check_mk/"; export MK_VARDIR="/var/lib/check_mk_agent"
root@linux# /usr/lib/check_mk_agent/plugins/60/mk_oracle -d --no-spool
Ecco la chiamata di mk_oracle
per il debug su un server Linux con xinetd
:
root@linux# /usr/lib/check_mk_agent/plugins/mk_oracle -d
Importante: in questo output i dati sensibili come le password non sono mascherati, quindi tutto è leggibile in chiaro.
Windows
Una funzionalità simile è disponibile in Windows. Tuttavia, poiché non è possibile passare alcun argomento al plug-in dell'agente, dovrai switchare il tracciamento manualmente:
PS C:\ProgramData\checkmk\agent\plugins\> Set-PSDebug -Trace 1
PS C:\ProgramData\checkmk\agent\plugins\> .\mk_oracle.ps1
8.4. Messaggi di errore nei file di log di Oracle
L'utente del database per il monitoraggio di solito non richiede il ruolo SYSDBA
. Tuttavia, tieni presente che il plug-in dell'agente mk_oracle
può generare messaggi di errore (non rilevanti per il monitoraggio) con i database multiutente che potrebbero non essere scritti nei file di log del database Oracle a causa della mancanza del privilegio SYSDBA
. Questo può portare, ad esempio, a messaggi di errore Oracle del tipo ORA-01031: insufficient privileges
in un file di log di avviso.
9. File e directory
9.1. Sull'host Oracle in Linux, Solaris e AIX
Percorso dei file | Descrizione |
---|---|
|
L'agente Checkmk che raccoglie tutti i dati sull'host. |
|
Il plug-in dell'agente Oracle nella directory abituale per i plug-in dell'agente. Nota che il nome del plug-in in AIX è leggermente diverso: |
|
Il file di configurazione del plug-in dell'agente. Anche in questo caso, AIX è diverso: |
|
Il file di configurazione necessario per Oracle Wallet. |
|
Il file di configurazione che contiene gli alias TNS. I file di esempio si trovano anche nell'installazione di Oracle, ma poiché il percorso varia da installazione a installazione, non è possibile specificarlo in modo standardizzato. |
9.2. Sull'host Oracle in ambiente Windows
Percorso del file | Descrizione |
---|---|
|
L'agente Checkmk che raccoglie tutti i dati sull'host. |
|
Il plug-in dell'agente Oracle nella directory abituale per i plug-in dell'agente. |
|
Il file di configurazione del plug-in dell'agente. |
|
Il file di configurazione necessario per il portafoglio Oracle. |
|
Il file di configurazione che contiene gli alias TNS. I file di esempio si trovano anche nell'installazione di Oracle, ma poiché il percorso varia da installazione a installazione, non è possibile specificarlo in modo standardizzato. |
9.3. Sul server Checkmk
Percorso del file | Descrizione |
---|---|
|
Il plug-in dell'agente per i sistemi Unix-like, che recupera i dati sull'host Oracle. |
|
Questo plug-in dell'agente per i sistemi Unix-like fornisce i dati a un Oracle Cluster Manager. |
|
Il plug-in dell'agente per Windows, che recupera i dati sull'host Oracle. |
|
Ecco dei file di configurazione di esempio per i sistemi Unix-like nei file |
|
Un esempio di file di configurazione per Windows. |