Solução de Problemas do OmniCHF
400 Bad Request em qualquer solicitação de cobrança
Sintomas: O consumidor recebe 400 com a causa MANDATORY_IE_MISSING.
Possíveis causas:
- O corpo da solicitação está faltando
nfConsumerIdentification,invocationTimeStampouinvocationSequenceNumber.
Resolução:
- Confirme que o consumidor inclui todos os três IEs obrigatórios em cada operação (Criar, Atualizar, Liberar).
- Verifique o campo
detailda resposta ProblemDetails; ele lista os nomes dos IEs ausentes.
404 ao Atualizar ou Liberar
Sintomas: O consumidor recebe 404 com a causa CHARGING_DATA_NOT_FOUND.
Possíveis causas:
- OmniCHF reiniciado entre Criar e a operação posterior; o estado da sessão é mantido na memória, então a sessão deve ser recriada após um reinício.
- O
chargingDataRefno caminho está errado. - A sessão já foi liberada (seu trabalhador parou).
Resolução:
- Grep logs para
CHF Update: unknown ref=/CHF Release: unknown ref=. - Confirme que o OmniCHF não reiniciou desde que a sessão foi criada.
- Confirme que o consumidor está retornando o
chargingDataRefdo cabeçalhoLocationda criação.
500 ao Criar com CGRateS habilitado
Sintomas: O consumidor recebe 500 com a causa CHARGING_FAILED.
Possíveis causas:
- CGRateS
InitiateSessionfalhou: motor inacessível, inquilino errado ou um erro do lado do CGRateS.
Resolução:
- Verifique se
cgrates_urlaponta para um endpoint/jsonrpcdo CGRateS acessível. - Verifique se
cgrates_tenantcorresponde ao inquilino do CGRateS. - Verifique o medidor
omni_chf_cgrates_health(1= ativo). - Revise os logs para
CGRateS InitiateSession failed ...; a razão é uma das{:cgrates_error, msg},{:http_error, status}, ou{:http_error, reason}. - Confirme que o serviço
SessionSv1está habilitado no CGRateS.
Liberação retorna 500
Sintomas: O consumidor recebe 500 com a causa SYSTEM_FAILURE e título "Falha na Terminação de Cobrança" em POST /chargingdata/{ref}/release.
Possíveis causas:
- O CGRateS
TerminateSessionfalhou durante a Liberação (motor inacessível, inquilino errado ou um erro do lado do CGRateS).
Impacto:
- O CDR ainda é construído e gravado, então o registro offline não é perdido.
- A sessão do lado do CGRateS pode ficar aberta, então o backend de cobrança pode ser inconsistente e precisa de reconciliação.
Resolução:
- Grep logs para
CGRateS TerminateSession failednorefafetado. - Confirme a acessibilidade do CGRateS com o medidor
omni_chf_cgrates_health(1= ativo). - Reconcile qualquer sessão do CGRateS deixada aberta para esse
refcontra o CDR gravado. - Correlacione com
omni_chf_charging_releases_total{result="failure"}para ver a taxa de falhas de terminação.
Verificação de saúde do CGRateS falha enquanto o daemon está ativo
Sintomas: omni_chf_cgrates_health lê 0, mas o CGRateS está em execução.
Possíveis causas:
- O CGRateS está lento: a verificação de saúde limita seu tempo limite a
min(cgrates_timeout, 3000)ms. - Incompatibilidade de esquema (HTTP vs HTTPS) em
cgrates_url.
Resolução:
- Confirme se o esquema e a porta de
cgrates_urlestão corretos. - Se o CGRateS estiver legitimamente lento, investigue a carga do CGRateS em vez de aumentar o limite.
- Procure avisos
CGRateS unreachable at <url> ....
Alta latência do CGRateS
Sintomas: Operações de cobrança lentas; omni_chf_cgrates_request_duration_ms elevado.
Resolução:
- Inspecione o histograma p95/p99 por
operação. - Escale o CGRateS ou o caminho de rede entre OmniCHF e CGRateS.
- Considere reduzir
cgrates_timeoutpara que chamadas lentas falhem rapidamente em vez de bloquear a sessão.
CDRs ausentes dos arquivos offline
Sintomas: Linhas CHF CDR: aparecem no log, mas nenhum arquivo cdr_YYYYMMDD.json é gravado.
Possíveis causas:
offline_charging_enabledéfalse(padrão): CDRs são apenas registrados.cdr_output_dirnão é gravável.
Resolução:
- Defina
offline_charging_enabled: true. - Certifique-se de que
cdr_output_direxista e seja gravável; fique atento a erros[CDR] Failed to write CDR to file. - Para capturar CDRs sem saída de arquivo, envie as linhas de log
CHF CDR:com seu pipeline de log.
Contagem de sessões ativas não diminui
Sintomas: omni_chf_sessions_active_count permanece elevado.
Possíveis causas:
- O consumidor nunca envia Liberação (as sessões só são limpas na liberação ou falha do trabalhador).
- As liberações estão retornando
404(veja acima), então o consumidor as considera concluídas enquanto o OmniCHF pode não.
Resolução:
- Correlacione a contagem ativa com as taxas de Criar vs Liberar.
- Investigue o
404na Liberação, que geralmente indica um reinício anterior.
Registro NRF não mantido
Sintomas: omni_chf_nrf_registration_status lê 0.
Resolução:
- Verifique se
nrf_urié acessível a partir dosbi_addrdo OmniCHF. - Confirme se
mcc/mnccorrespondem à configuração PLMN do NRF. - Confirme se
sbi_addr/sbi_portno perfil anunciado são acessíveis pelo NRF. - Revise os logs de inicialização em busca de erros de registro do NRF.