Sommario

Introduzione

Tabelle di database

Tabelle di riepilogo e di aggregazione

Differenze tra i database di report CVP 8.x e 9.0

Sovraccarico server di report

Risoluzione dei problemi

Errore e ripristino - Server di report parziale

Errore del server di report

Errore di connessione al database

Chiamate non completate

Modalità di ripristino

Livello di traccia e file di log

Debug e log di Aggregator

Problemi di spazio nel database

Introduzione

Questo documento offre una panoramica del server di report Cisco Unified Customer Voice Portal (CVP) e alcune procedure per la risoluzione dei problemi.

- Il servizio di report riceve i dati di report dal servizio IVR (Interactive Voice Response) Cisco Unified IP, dal servizio SIP (Session Initiation Protocol) (se utilizzato) e dal server VXML (Cisco Unified CVP Voice XML). Il servizio trasforma e scrive i dati nel database di reporting Informix, che funge da report cronologico in un ambiente di call center.

- Il servizio di reporting analizza quindi i messaggi, li converte in batch di istruzioni SQL (Structured Query Language) applicabili ed li esegue in un database SQL tramite l'API JDBC (Java Database Connectivity).

Tabelle di database

Le tabelle CVP sono classificate come:

- Tabelle chiamate

- Tabelle VXML

- Riepilogo/tabelle aggregate

- Tabelle di ricerca e riferimento

- Tabelle CallBack per cortesia

Le chiamate iniziano dalla tabella Call e sono collegate alla tabella VXMLSession dalla colonna CallGUID.

Nota: I DateTime CVP unificati vengono registrati come ora UTC; l'eccezione è dbdatetime, registrato come ora locale. Localtimezoneoffset è una colonna della tabella Call che contiene il numero di minuti di offset da UTC per derivare l'ora locale. Può essere utilizzato come intervallo.

Tabelle di riepilogo e di aggregazione

Il server di reporting CVP unificato include un processo di riepilogo che aggrega i dati delle tabelle Call e VXMLElement in nuove tabelle di riepilogo.

Le tabelle di riepilogo dei report sono:

- Riepilogo applicazione_15

- RiepilogoApplicazioni_Giornaliero

- Riepilogo applicazioni settimanale

- Riepilogo applicazione_Mensile

- Chiama_15

- Chiama_Ogni giorno

- Chiama_settimanale

Le tabelle vengono create in base alla pianificazione seguente:

- Le tabelle giornaliere vengono popolate un giorno dietro le tabelle di 15 minuti.

- Le tabelle settimanali vengono popolate da tabelle giornaliere una volta che queste sono state completamente popolate per la settimana in questione.

- Le tabelle mensili vengono popolate da tabelle settimanali una volta che queste sono state completamente popolate per il mese in questione.

Vedere l'ID bug Cisco CSCue65248, "Le tabelle di riepilogo dei report CVP non sono popolate". Nel server di report CVP, le tabelle di riepilogo non vengono popolate. Il problema è causato dallo script per il riepilogo mensile, introdotto in CVP 9.0.

Differenze tra i database di report CVP 8.x e 9.0

Il database di report CVP 9.0(1) unificato è supportato solo sul server Windows 2008 R2. Poiché il database di report CVP 8.x unificato è supportato da Windows 2003, non è disponibile alcun aggiornamento diretto al database di report CVP 9.0(1) unificato.

Per istruzioni sulla migrazione, vedere la guida all'installazione. Si noti che:

- Impossibile installare il componente Reporting Server se il computer fa già parte del dominio.

- Impossibile installare il componente Reporting Server in un server che fa parte di un dominio. Per l'installazione del componente è necessario che i criteri di protezione locali abbiano la precedenza rispetto agli stessi criteri di protezione nella console di Criteri di gruppo. Ciò non è possibile se il server fa parte di un dominio. Dopo l'installazione, tuttavia, è possibile aggiungere nuovamente il server al dominio, in quanto non è necessario che nel server vengano eseguiti criteri locali.

Le differenze nelle attività successive all'installazione includono:

- 4.x, 7.x database di report - Accedere come utente Informix ed eseguire i seguenti file batch:

- ReportingRunAsInformix.bat.

- ReportingRunAsCVP_DbAdmin.bat.

- Database di report 8.x - Accedere come utente Informix ed eseguire questo file batch:

- CVP_Database_Config.bat

- 9.x database di report - Non sono richiesti file batch come parte del processo di post-installazione.

Una differenza chiave tra gli utenti è che, con 9.x, non c'è più utente Informix. L'utente cvp_dbadmin è invece il proprietario del database.

Sovraccarico server di report

I server di reporting Cisco MCS-7845 possono gestire 420 messaggi al secondo.

Utilizzare questa equazione per determinare il numero di messaggi di report generati al secondo per ogni applicazione VoiceXML:

A# = %CPS * CPS * MSG

dove:

- %CPS = percentuale di chiamate che utilizzano questa applicazione VoiceXML

- CPS = il numero di chiamate al secondo

- MSG = numero di messaggi di report generati dall'applicazione

Utilizzare questa equazione per aggiungere i messaggi generati da ciascuna applicazione:

A(totale) = A1+ A2+?..+An

dove A(totale) è il numero totale di messaggi di reporting generati al secondo dalle applicazioni VoiceXML.

Il numero di messaggi di reporting per elemento o attività è indicato nella tabella 17 in del Cisco Unified Customer Voice Portal (CVP) Solution Reference Network Design (SRND) release 9.0(1).

Per semplicità, è possibile utilizzare questa query per calcolare il numero medio di messaggi scritti nella tabella vxmlsession per un secondo:

select count(*)/86400 from vxmlsession where dbdatetime between

'2012-12-12 00:00:00' and '2012-12-13 00:00:00'"

Eseguire questa query sulle 14 tabelle seguenti:

1. Chiamate

2. EventoChiamata

3. ChiamaICMInfo

4. OutgoingECCVariable (correlato a CCB)

5. ContenutoPersonalizzatoVXMLC

6. VXMLElement

7. DettaglioVXMLElement

8. ContrassegnoVoceVXMLE

9. VXMLError

10. VXMLHotEvent

11. VXMLHotLink

12. Sessione VXMLS

13. VariabileSessioneVXMLS

14. DettaglioInterazioneVoceVXMLV

Aggiungere i risultati per ottenere il numero medio di messaggi al secondo ricevuti dal server di report.

Risoluzione dei problemi

Se il server di report è sovraccarico, i registri di report contengono i seguenti avvisi:

CVP_8_0_RPT-1-REPORTING_DB_ALERT_RAISE ALERT!!!!! The total JDBC messages queue

size has exceeded the critical limit 300000 .... All the JDBC messages will

be dropped. [id:4014]

CVP_8_0_RPT-1-REPORTING_DB_ALERT_RAISE ALERT!!!!! The total JDBC messages queue

size has exceeded the max limit 250000 .... Some of the JDBC messages may be

dropped. [id:4014]

Errore e ripristino - Server di report parziale

Esistono diversi scenari in cui il server di report passa al servizio parziale. Tuttavia, il servizio parziale non significa necessariamente che vi sia un problema.

Errore del server di report

Se si verifica un errore nel server di report, i messaggi destinati al server di report vengono memorizzati nel buffer dal server di chiamata, in memoria, fino a 200.000 messaggi. Una volta raggiunto tale limite, tutte le nuove informazioni dettagliate sui messaggi vengono eliminate.

Nota: Per le piattaforme UCS, è necessario modificare l'impostazione Numero di buffer di ricezione nel server di report per massimizzare il report completo e il carico di chiamate sulla piattaforma virtuale. Se questa impostazione non viene modificata dopo l'installazione del sistema operativo, i messaggi di backup sul server di chiamata e le code dei messaggi verranno completati. Si verifica quindi un netto calo della frequenza delle chiamate al secondo (CPS).

Eseguire la procedura seguente per impostare il numero di buffer di ricezione nelle impostazioni TCP del server di report su 4096 (max):

1. Nel server di report fare clic su Pannello di controllo > Connessione di rete.

2. Fare clic con il pulsante destro del mouse su Connessione di rete.

3. Fare clic sulla scheda Avanzate.

4. Nella scheda Proprietà, selezionare Numero di buffer di ricezione.

5. Nella casella di testo Valore immettere 4096.

6. Riavviare il server di report.

Per ulteriori informazioni, fare riferimento al documento sulla virtualizzazione per Unified CVP: UCS Network Configuration per ulteriori informazioni.

Errore di connessione al database

Se la connessione al database ha esito negativo, il server di report invia un avviso SNMP (Simple Network Management Protocol) e inizia a memorizzare i messaggi in un file permanente (%CVP_HOME%\tmp\CVPReporting.tmp) fino a un limite specificato dall'utente. Durante questo periodo, il server di report rimane in funzione.Quando viene raggiunto il 75% del limite, viene scritto un avviso nel file di log. Quando viene raggiunto il 100% del limite, viene inviato un avviso SNMP e il server di report entra in servizio parziale. È possibile che i nuovi messaggi vengano eliminati.

Quando viene ripristinata la connessione al database, il server di report entra in modalità di ripristino e cambia il proprio stato in Servizio parziale (se non si trova già in tale stato). Inizia quindi a leggere i messaggi dal file %CVP_HOME%\tmp\CVPReporting.tmp e a eseguirne il commit nel database. A seconda delle dimensioni del file, il commit di tutti i dati nel database potrebbe richiedere ore. I nuovi messaggi ricevuti durante il ripristino vengono memorizzati nel buffer.

Esiste tuttavia un limite al numero di messaggi che il server di report può inserire nel buffer, indipendentemente dalla modalità o dallo stato del server:

- Quando il numero di messaggi nel buffer raggiunge i 100.000, viene inviato un avviso SNMP come avviso all'utente.

- Con 200.000 messaggi, viene inviato un altro avviso SNMP, le informazioni dettagliate per tutti i nuovi messaggi vengono eliminate e vengono mantenuti solo i dati di base, come chiamate, eventi di chiamata e informazioni sulla sessione. Con 200.000 messaggi, anche il server di report cambia il proprio stato in Servizio parziale (se non è già in quello stato).

- Quando il numero totale di messaggi nel buffer raggiunge i 300.000, viene inviato un altro avviso SNMP e tutti i nuovi messaggi vengono scartati da quel punto in avanti.

- Quando il numero di messaggi in memoria scende al di sotto di 50.000, viene inviato un avviso SNMP che indica che le dimensioni della coda sono tornate normali e lo stato del server di report torna a In servizio.

Se all'avvio è presente un file permanente, il server di report rimane in modalità di servizio parziale e passa alla modalità di ripristino.

Chiamate non completate

Il server di report può inoltre passare a Servizio parziale durante il recupero di chiamate non completate.

Questo messaggio viene visualizzato nei log del server di report:

%CVP_8_0_RPT-1-REPORTING_STATE_CHANGE:  REPORTING Subsystem state changed to

RPT SS RPT1 changes its state to Partial Service cause Unfinished calls

recovery started [id:4001]

I registri includono inoltre informazioni sul recupero di queste chiamate. Il processo di ripristino può richiedere molto tempo.

%CVP_8_0_RPT-6-REPORTING_INFO:  Recover Uncompleted call: 73

CallGUID:90DAAAC91000013C01075FC253EF37A4 Event Id: 11 CauseId: 0 [id:4000]

...

%CVP_8_0_RPT-6-REPORTING_INFO:  Recover Uncompleted call:

129 CallGUID:673A58361000013C087A209E53EF37A5 Event Id: 0 CauseId: 0 [id:4000]

Una volta completate le chiamate non completate, vengono visualizzati questi messaggi e il server di report torna allo stato In servizio:

%CVP_8_0_RPT-6-REPORTING_INFO:  Recover CallRegistry finished [id:4000]

%CVP_8_0_RPT-6-REPORTING_INFO:  initKeepAliver() -- processed unfinished calls

[id:4000]

%CVP_8_0_RPT-1-REPORTING_STATE_CHANGE:  REPORTING Subsystem state changed to RPT

SS RPT1 changes its state to In Service cause Normal Operation [id:4001]

Modalità di ripristino

È possibile rimuovere il file %CVP_HOME%\tmp\CVPReporting.tmp per evitare il processo di ripristino e riattivare il server di report. In questa procedura viene descritto come ignorare il processo di ripristino:

1. Arrestare il servizio CVP Call Server.

2. Passare a %CVP_HOME%\tmp.

3. Rinominare il file CVPReporting.tmp.

4. Avviare il servizio CVP Call Server.

Vedere l'ID bug Cisco CSCtu43570, "CVPReporting.tmp cresce oltre i limiti delle dimensioni e non viene recuperato tempestivamente." I dati dei rapporti sulle nuove chiamate sono andati persi perché non è stato possibile leggere completamente il file. L'unità disco rigido si stava riempiendo e ciò ha causato la condizione di "spazio su disco insufficiente".

Questo problema è stato risolto nel database di report Unified CVP 8.5(1)SR18 e 8.5(1)SR6.

Livello di traccia e file di log

Modificare il file <dir_installazione>\Cisco\CVP\conf\reporting.properties per impostare il livello di traccia nei log del server di report. Questo è un esempio:

RPT.traceMask = 0x810000

RPT.logLevel = DEBUG

Debug e log di Aggregator

Le summary table utilizzano due tabelle nel database ciscoadmin: agg_schedule e agg_statements.

Il file <CVP_HOME>\logs\reporting.txt mostra se l'aggregazione è stata eseguita.

In questa procedura viene descritto come abilitare la traccia aggiuntiva per il processo aggregator.bat:

1. Attendere almeno 15 minuti.

2. Modificare il file <CVP_HOME>\bin\aggregator.bat. Modificare il valore del file .bat da questo valore predefinito:

echo call sp_sched_agg(); | dbaccess ciscoadmin

a:

echo call sp_sched_agg('D'); | dbaccess ciscoadmin

I log di debug vengono scritti nel file CVP_HOME>\logs\Agg_Debug.out.

Problemi di spazio nel database

Nota: Questo problema di spazio è stato rilevato in diverse implementazioni. Poiché la soluzione a questo problema richiede una conoscenza tecnica approfondita di Informix, in caso di problema contattare il Cisco Technical Assistance Center (TAC).

In questa procedura viene descritto il processo di risoluzione dei problemi:

1. Eseguire l'aggiornamento al database di report Unified CVP 8.0(1).

2. Eseguire il file CVP_Database_Config.bat e verificare il problema:

3. Esaminare il file c:\temp\cvpupg.sql. Il contenuto è:

call upg_est(); UNLOAD to "c:/temp/upgvars.out" SELECT estimate1,estimate2,

retention,log_space_needed,minlog,maxlog FROM cvp_data:upg_estimate;

4. Connettersi al database. La tabella upg_ESTIMATE non esiste.

5. Controllare il file c:\Temp\CiscoUnifiedCVPDB.log e vedere i seguenti errori:

23:41:54 Wed Dec 19 2012 : dbaccess cvp_data

C:\Cisco\CVP\informix_frag\upg_est.sql

Database selected.

312: Cannot update system catalog (sysprocbody).

131: ISAM error: no free disk space

Error in line 26

Near character position 11

23:41:54 Wed Dec 19 2012 : dbaccess cvp_data c:/temp/cvpupg.sql 2>NUL

Database selected.

206: The specified table (upg_estimate) is not in the database.

6. Controllare upg_est.sql. Il contenuto della tabella upg_ESTIMATE è:

SELECT COUNT(*)

INTO tmp_int

FROM systables

WHERE tabname='upg_estimate';

IF tmp_int=0 THEN

CREATE TABLE upg_estimate (

estimate1 INTERVAL HOUR TO MINUTE,

estimate2 INTERVAL HOUR TO MINUTE,

retention SMALLINT,

log_space_needed INTEGER,

minlog INTEGER,

maxlog INTEGER

);
Ma questa tabella non viene creata.

7. Connettersi a DBAccess ed eseguire la query seguente:

SELECT COUNT(*) FROM systables     WHERE tabname='upg_estimate';
La query restituisce 0, quindi la tabella dovrebbe essere stata creata.

8. Provare a creare la tabella manualmente in DBAccess:

CREATE TABLE upg_estimate (

estimate1 INTERVAL HOUR TO MINUTE,

estimate2 INTERVAL HOUR TO MINUTE,

retention SMALLINT,

log_space_needed INTEGER,

minlog INTEGER,

maxlog INTEGER

);
Viene visualizzato il messaggio di errore:

261: Cannot Create file for table (informix.upg_estimate).

131: ISAM error: no free disk space

9. Eseguire il comando onstat - d e verificare che nell'ultimo blocco non sia disponibile spazio sufficiente:

10. Accedere alla casella CVP Informix come utente 'Informix'.

11. Creare un nuovo file vuoto denominato new_space in E:\ifmxdata\cvp_db_wp17cvprpt1a\. Aprire un prompt dei comandi e immettere i comandi. Non copiare e incollare:

onspaces -a cvp_data_dbspace -

E:\ifmxdata\cvp_db_wp17cvprpt1a\cvp_data_dbspace\new_space -o 0 -s 10240

Nota: -s indica le dimensioni del nuovo blocco ed è espresso in KB. Per 100 MB, è 100 * 1024 = 102400.

Questo comando aggiunge 100 MB di spazio DB al server CVP Informix.

12. Eseguire nuovamente il file CVP_Database_Config.bat. Ora funzionerà correttamente.

In questo esempio viene illustrato come connettersi al database con DBAccess: