Temos cerca de mil clientes com nosso aplicativo instalado, dos quais 500 possuem banco de dados oracle.
Monitorar o banco de dados é apenas um dos requisitos.
A instalação do Oracle Enterprise Manager fornecerá todas as informações de que preciso para meus bancos de dados, mas nenhuma informação para outras métricas importantes (temos alguma sincronização acontecendo por meio do link do banco de dados) e vários processos que devem estar funcionando fora do banco de dados.
Portanto, minha pergunta se resume a: existe uma API oracle rdbms que eu possa usar para integrar as métricas oracle de que precisamos em nossa ferramenta de monitoramento?
Todas as informações do banco de dados interno são obtidas do dicionário de dados do sistema. Os metadados estáticos podem ser encontrados nas exibições do dicionário de dados (por exemplo, DBA_DB_LINKS para links de banco de dados) ou em suas tabelas subjacentes (obj$ etc.). As estatísticas de tempo de execução podem ser obtidas através das exibições do sistema dinâmico ('v$') (por exemplo, V$DBLINK). Pode ser necessário consultar a documentação das exibições para descobrir como obter as métricas desejadas. Um pouco de google-fu também pode revelar trechos de código mostrando como usar as visualizações.
Qualquer coisa externa ao banco de dados terá que ser monitorada por meio de seu próprio registro ou recursos de diagnóstico. Novamente, não posso responder especificamente sem saber quais processos você realmente precisa monitorar.
O Enterprise Manager possui uma API de plug-in que você pode usar para adicionar feeds de dados externos. Esta página tem links para a documentação que descreve como fazer isso.