Visualização
Ainda estamos trabalhando nesse recurso, mas adoraríamos que você experimentasse!
Atualmente, esse recurso é fornecido como parte de uma prévia, de acordo com nossas políticas de pré-lançamento.
A New Relic agora capacita sua equipe a monitorar o desempenho do banco de dados Oracle usando a New Relic Distribution of OpenTelemetry (NRDOT) com os recursos de monitoramento de banco de dados da New Relic. Esta integração fornece insights abrangentes sobre métricas de banco de dados, desempenho de consultas e saúde do sistema usando o coletor NRDOT.
Essa abordagem baseada em NRDOT complementa nossa Integração On-Host (OHI) existente, utilizando padrões OpenTelemetry para monitoramento de banco de dados, facilitando a integração com sua stack de observabilidade existente.
Pré-requisitos
Antes de começar, certifique-se de ter o seguinte:
- Chave de licençada New Relic válida
- Arquitetura suportada: Linux com AMD64 e ARM64
- Conectividade de rede para o endpoint OTLP da New Relic
- Oracle Database 19c ou posterior
- Para o banco de dados Oracle, você tem o Oracle Instant Client na máquina executando o coletor NRDOT
Configure o NRDOT Collector para o monitoramento do Oracle Database
Você pode configurar o monitoramento do Oracle Database usando o NRDOT Collector em ambientes on-host (multitenant) ou RDS. Selecione a configuração adequada com base no seu ambiente de banco de dados e siga as etapas.
Dica
O NRDOT Collector coleta dados de telemetria relacionados tanto à infraestrutura quanto ao banco de dados, para que você tenha uma solução de observabilidade unificada para o seu ambiente Oracle Database no New Relic.
Você pode configurar o monitoramento do Oracle Database usando o NRDOT Collector em ambientes on-host ou multitenant. Para instalar o NRDOT Collector em ambientes on-host (multitenant), siga estas etapas:
Método de instalação
Selecione o método de distribuição de instalação adequado para o seu ambiente Linux:
Importante
Recomenda-se instalar o NRDOT Collector no mesmo host da sua instância do Oracle Database para visualizar métricas de nível de infraestrutura para o monitoramento de desempenho de consultas.
Configurar usuário do banco de dados
Crie um usuário de monitoramento com os privilégios necessários para seu Oracle Database multitenant. Isso requer a criação de um usuário comum com o prefixo C##.
Faça login no banco de dados raiz como administrador:
CREATE USER c##<YOUR_DB_USERNAME> IDENTIFIED BY "<USER_PASSWORD>";Dica
Certifique-se de que sua
USER_PASSWORDatenda aos requisitos de senha de novo usuário da Oracle.
Conceder privilégios de monitoramento para banco de dados multitenant
Execute as seguintes instruções SQL para conceder privilégios de monitoramento. Use o formato correto de nome de usuário com o prefixo C## para banco de dados multilocatário:
ALTER USER c##<YOUR_DB_USERNAME> SET CONTAINER_DATA=ALL CONTAINER=CURRENT;GRANT CREATE SESSION TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SET CONTAINER TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT CONNECT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$SESSION TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$SYSSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$SESSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$STATNAME TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$SYSTEM_EVENT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$SHARED_SERVER TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$DISPATCHER TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$CIRCUIT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$RESOURCE_LIMIT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$LOCK TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$DATABASE TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$PARAMETER TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$SQLAREA TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$SQL TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$SQL_PLAN TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.V_$PDBS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$INSTANCE TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$SGA TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$SESSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$STATNAME TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$SYSSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$SQLAREA TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$LIBRARYCACHE TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$ROWCACHE TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$PGASTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$CONTAINERS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$PDBS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$CON_SYSMETRIC TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$SYSMETRIC TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$FILESTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$SYSTEM_EVENT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$ACTIVE_SERVICES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$SESSION TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$SESSION_WAIT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON SYS.GV_$ROLLSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON DBA_OBJECTS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON DBA_TABLESPACES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON DBA_DATA_FILES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON DBA_USERS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON CDB_SERVICES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON CDB_DATA_FILES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON CDB_TABLESPACE_USAGE_METRICS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON CDB_USERS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON CDB_PDBS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON ALL_USERS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON ALL_VIEWS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;GRANT SELECT ON GLOBAL_NAME TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;Configurar o NRDOT Collector
Edite seu arquivo
config.yamldisponível em/etc/nrdot-collector-host/e adicione o seguinte trecho de código:Importante
Se você já é um usuário do NRDOT Collector, certifique-se de mesclar a configuração acima com o seu arquivo
config.yamlexistente. Isso inclui adicionar os novos receptores, processadores e exportadores para o monitoramento do Oracle Database, mantendo suas configurações atuais.extensions:health_check:receivers:otlp:protocols:grpc:http:hostmetrics:collection_interval: 60sscrapers:cpu:metrics:system.cpu.time:enabled: falsesystem.cpu.utilization:enabled: trueload:memory:metrics:system.memory.utilization:enabled: truepaging:metrics:system.paging.utilization:enabled: falsesystem.paging.faults:enabled: falsefilesystem:metrics:system.filesystem.utilization:enabled: truedisk:metrics:system.disk.merged:enabled: falsesystem.disk.pending_operations:enabled: falsesystem.disk.weighted_io_time:enabled: falsenetwork:metrics:system.network.connections:enabled: false# Uncomment to enable process metrics, which can be noisy but valuable.# processes:# process:# metrics:# process.cpu.utilization:# enabled: true# process.cpu.time:# enabled: falsefilelog:include:- /var/log/alternatives.log- /var/log/cloud-init.log- /var/log/auth.log- /var/log/dpkg.log- /var/log/syslog- /var/log/messages- /var/log/secure- /var/log/yum.lognewrelicoracledb/cdb:endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"username: "<USERNAME>"password: "<PASSWORD>"service: "<YOUR_CDB_SERVICE_NAME>"collection_interval: 30stimeout: 30s# enable_tablespace_scraper: true# enable_core_scraper: true# enable_system_scraper: true# enable_connection_scraper: true# enable_container_scraper: true# enable_database_info_scraper: truenewrelicoracledb/pdb:endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"username: "<USERNAME>"password: "<PASSWORD>"service: "<YOUR_CDB_SERVICE_NAME>"collection_interval: 30stimeout: 30spdb_services: ["ALL"]# query_monitoring_response_time_threshold: 500# query_monitoring_count_threshold: 30# enable_query_monitoring: true# enable_pdb_scraper: trueprocessors:metricstransform:transforms:- include: system.cpu.utilizationaction: updateoperations:- action: aggregate_labelslabel_set: [ state ]aggregation_type: mean- include: system.paging.operationsaction: updateoperations:- action: aggregate_labelslabel_set: [ direction ]aggregation_type: sumfilter/exclude_cpu_utilization:metrics:datapoint:- 'metric.name == "system.cpu.utilization" and attributes["state"] == "interrupt"'- 'metric.name == "system.cpu.utilization" and attributes["state"] == "nice"'- 'metric.name == "system.cpu.utilization" and attributes["state"] == "softirq"'filter/exclude_memory_utilization:metrics:datapoint:- 'metric.name == "system.memory.utilization" and attributes["state"] == "slab_unreclaimable"'- 'metric.name == "system.memory.utilization" and attributes["state"] == "inactive"'- 'metric.name == "system.memory.utilization" and attributes["state"] == "cached"'- 'metric.name == "system.memory.utilization" and attributes["state"] == "buffered"'- 'metric.name == "system.memory.utilization" and attributes["state"] == "slab_reclaimable"'filter/exclude_memory_usage:metrics:datapoint:- 'metric.name == "system.memory.usage" and attributes["state"] == "slab_unreclaimable"'- 'metric.name == "system.memory.usage" and attributes["state"] == "inactive"'filter/exclude_filesystem_utilization:metrics:datapoint:- 'metric.name == "system.filesystem.utilization" and attributes["type"] == "squashfs"'filter/exclude_filesystem_usage:metrics:datapoint:- 'metric.name == "system.filesystem.usage" and attributes["type"] == "squashfs"'- 'metric.name == "system.filesystem.usage" and attributes["state"] == "reserved"'filter/exclude_filesystem_inodes_usage:metrics:datapoint:- 'metric.name == "system.filesystem.inodes.usage" and attributes["type"] == "squashfs"'- 'metric.name == "system.filesystem.inodes.usage" and attributes["state"] == "reserved"'filter/exclude_system_disk:metrics:datapoint:- 'metric.name == "system.disk.operations" and IsMatch(attributes["device"], "^loop.*") == true'- 'metric.name == "system.disk.merged" and IsMatch(attributes["device"], "^loop.*") == true'- 'metric.name == "system.disk.io" and IsMatch(attributes["device"], "^loop.*") == true'- 'metric.name == "system.disk.io_time" and IsMatch(attributes["device"], "^loop.*") == true'- 'metric.name == "system.disk.operation_time" and IsMatch(attributes["device"], "^loop.*") == true'filter/exclude_system_paging:metrics:datapoint:- 'metric.name == "system.paging.usage" and attributes["state"] == "cached"'- 'metric.name == "system.paging.operations" and attributes["type"] == "cached"'filter/exclude_network:metrics:datapoint:- 'IsMatch(metric.name, "^system.network.*") == true and attributes["device"] == "lo"'attributes/exclude_system_paging:include:match_type: strictmetric_names:- system.paging.operationsactions:- key: typeaction: deletetransform/clear_metadata:metric_statements:- context: metricstatements:- set(metric.description, "")- set(metric.unit, "")filter/exec_plan_and_query_details_include:metrics:include:match_type: strictmetric_names:- newrelicoracledb.execution_plan- newrelicoracledb.slow_queries.query_detailsfilter/exec_plan_and_query_details_exclude:metrics:exclude:match_type: strictmetric_names:- newrelicoracledb.execution_plan- newrelicoracledb.slow_queries.query_detailscumulativetodelta/oracle:include:match_type: strictmetrics:- newrelicoracledb.connection.bytes_received- newrelicoracledb.connection.bytes_sent- newrelicoracledb.connection.execute_count- newrelicoracledb.connection.logons_cumulative- newrelicoracledb.connection.parse_count_hard- newrelicoracledb.connection.parse_count_total- newrelicoracledb.connection.sqlnet_roundtrips- newrelicoracledb.connection.user_commits- newrelicoracledb.connection.user_rollbackstransform/host:metric_statements:- context: metricstatements:- set(metric.description, "")- set(metric.unit, "")transform:trace_statements:- context: spanstatements:- truncate_all(span.attributes, 4095)- truncate_all(resource.attributes, 4095)log_statements:- context: logstatements:- truncate_all(log.attributes, 4095)- truncate_all(resource.attributes, 4095)memory_limiter:check_interval: 1slimit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}batch:resourcedetection:detectors: ["system"]system:hostname_sources: ["os"]resource_attributes:host.id:enabled: trueresourcedetection/db_safe:detectors: ["system"]override: falsesystem:hostname_sources: ["os"]resource_attributes:host.id:enabled: trueresourcedetection/cloud:detectors: ["gcp", "ec2", "azure"]timeout: 2soverride: trueresourcedetection/env:detectors: ["env"]timeout: 2soverride: trueconnectors:metricsaslogs:include_resource_attributes: trueinclude_scope_info: trueexporters:otlp:endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"headers:api-key: "<YOUR_NEWRELIC_API_KEY>"compression: gzipservice:pipelines:metrics/host:receivers: [hostmetrics]processors:- memory_limiter- metricstransform- filter/exclude_cpu_utilization- filter/exclude_memory_utilization- filter/exclude_memory_usage- filter/exclude_filesystem_utilization- filter/exclude_filesystem_usage- filter/exclude_filesystem_inodes_usage- filter/exclude_system_disk- filter/exclude_network- attributes/exclude_system_paging- transform/host- resourcedetection- resourcedetection/cloud- resourcedetection/env- cumulativetodelta/oracle- batchexporters: [otlp]traces:receivers: [otlp]processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, batch]exporters: [otlp]metrics:receivers: [otlp]processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, batch]exporters: [otlp]logs:receivers: [otlp]processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, batch]exporters: [otlp]metrics/oracledb:receivers: [newrelicoracledb/cdb, newrelicoracledb/pdb]processors: [memory_limiter, resourcedetection/db_safe, batch, transform/clear_metadata, filter/exec_plan_and_query_details_exclude]exporters: [otlp]metrics/exec_plan_and_query_details_to_logs:receivers: [newrelicoracledb/cdb, newrelicoracledb/pdb]processors: [filter/exec_plan_and_query_details_include]exporters: [metricsaslogs]logs/oracledb:receivers: [metricsaslogs]processors: [memory_limiter, resourcedetection/db_safe, batch]exporters: [otlp]extensions: [health_check]Defina os seguintes parâmetros obrigatórios no arquivo de configuração:
Parâmetro
Descrição
<YOUR_DB_HOST>Insira o nome do host do banco de dados Oracle.
<YOUR_DB_PORT>Insira a porta do seu banco de dados Oracle.
<USERNAME>Insira seu nome de usuário do banco de dados.
<PASSWORD>Insira a senha do seu banco de dados.
<YOUR_CDB_SERVICE_NAME>Insira o nome do serviço Oracle.
<YOUR_NEWRELIC_OTLP_ENDPOINT>Insira o endpoint OTLP da New Relic. Para mais informações, consulte a documentação dos endpoints OTLP da New Relic.
<YOUR_NEWRELIC_API_KEY>Insira sua chave de API da New Relic.
pdb_servicesSelecione os serviços PDB para monitorar nas opções a seguir:
- Vazio ou nulo: Coletar apenas dados de serviço especificados
["ALL"]: Coletar todos os serviços de PDB (excluindo CDB)["pdb1", "pdb2"]: Coletar apenas serviços de PDB especificados
enable_query_monitoringObtenha métricas de monitoramento de consultas, como sessões lentas, ativas, em espera, de bloqueio e plano de execução. O valor padrão é definido como
falsequery_monitoring_response_time_thresholdDefina o limite para o tempo de resposta da consulta (em ms). Captura as consultas que ultrapassam este limiar. O valor padrão é definido como 500ms.
query_monitoring_count_thresholdO número de registros para cada métrica de desempenho de consulta. O valor padrão é definido como 30
Dica
Para informações mais detalhadas sobre a configuração do endpoint OTLP da New Relic e as melhores práticas do OpenTelemetry, consulte a documentação do OpenTelemetry OTLP.
Reiniciar o coletor NRDOT
Após atualizar a configuração, reinicie o coletor NRDOT:
$sudo systemctl restart nrdot-collector-host$sudo systemctl status nrdot-collector-hostDica
Sempre reinicie o coletor NRDOT após fazer alterações de configuração para garantir que as novas configurações entrem em vigor.
(Opcional) Configuração de multirreceptor
O binário nrdot-collector-host suporta uma configuração de múltiplos receptores em um único config.yaml para monitorar várias instâncias de banco de dados Oracle usando credenciais exclusivas. O exemplo config.yaml abaixo demonstra como configurar vários receptores para diferentes instâncias no host (multilocatárias), compartilhando processadores e exportadores comuns.
receivers: newrelicoracledb/cdb1: endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" username: "<USERNAME>" password: "<PASSWORD>" service: "<YOUR_CDB1_SERVICE_NAME>" collection_interval: 30s timeout: 30s # enable_tablespace_scraper: true # enable_core_scraper: true # enable_system_scraper: true # enable_connection_scraper: true # enable_container_scraper: true # enable_database_info_scraper: true
# First CDB's PDB configuration newrelicoracledb/pdb1: endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" username: "<USERNAME>" password: "<PASSWORD>" service: "<YOUR_CDB2_SERVICE_NAME>" collection_interval: 30s timeout: 30s pdb_services: ["ALL"] # query_monitoring_response_time_threshold: 500 # query_monitoring_count_threshold: 30 # enable_query_monitoring: true # enable_pdb_scraper: true
# Second CDB configuration newrelicoracledb/cdb2: endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" username: "<USERNAME>" password: "<PASSWORD>" service: "<YOUR_CDB2_SERVICE_NAME>" collection_interval: 30s timeout: 30s # enable_tablespace_scraper: true # enable_core_scraper: true # enable_system_scraper: true # enable_connection_scraper: true # enable_container_scraper: true # enable_database_info_scraper: true
# Second CDB's PDB configuration newrelicoracledb/pdb2: endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" username: "<USERNAME>" password: "<PASSWORD>" service: "<YOUR_CDB2_SERVICE_NAME>" collection_interval: 30s timeout: 30s pdb_services: ["ALL"] # query_monitoring_response_time_threshold: 500 # query_monitoring_count_threshold: 30 # enable_query_monitoring: true # enable_pdb_scraper: true
processors: memory_limiter/oracle: check_interval: 1s limit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}
cumulativetodelta/oracle: include: match_type: strict metrics: - newrelicoracledb.connection.bytes_received - newrelicoracledb.connection.bytes_sent - newrelicoracledb.connection.execute_count - newrelicoracledb.connection.logons_cumulative - newrelicoracledb.connection.parse_count_hard - newrelicoracledb.connection.parse_count_total - newrelicoracledb.connection.sqlnet_roundtrips - newrelicoracledb.connection.user_commits - newrelicoracledb.connection.user_rollbacks
transform/oracle_clear_metadata: metric_statements: - context: metric statements: - set(metric.description, "") - set(metric.unit, "") log_statements: - context: log statements: - set(body, "")
filter/exec_plan_and_query_details_include: metrics: include: match_type: strict metric_names: - newrelicoracledb.execution_plan - newrelicoracledb.slow_queries.query_details
filter/exec_plan_and_query_details_exclude: metrics: exclude: match_type: strict metric_names: - newrelicoracledb.execution_plan - newrelicoracledb.slow_queries.query_details
resourcedetection/oracle_db_safe: detectors: ["system"] override: false system: hostname_sources: ["os"] resource_attributes: host.id: enabled: true
connectors: metricsaslogs/oracle: include_resource_attributes: true include_scope_info: true
service: pipelines: metrics/oracledb: receivers: [newrelicoracledb/cdb1, newrelicoracledb/pdb1, newrelicoracledb/cdb2, newrelicoracledb/pdb2] processors: [memory_limiter/oracle, cumulativetodelta/oracle, transform/oracle_clear_metadata, filter/exec_plan_and_query_details_exclude, resourcedetection/oracle_db_safe] exporters: [otlp]
metrics/oracle_query_to_logs: receivers: [newrelicoracledb/cdb1, newrelicoracledb/pdb1, newrelicoracledb/cdb2, newrelicoracledb/pdb2] processors: [memory_limiter/oracle, filter/exec_plan_and_query_details_include] exporters: [metricsaslogs/oracle]
logs/oracledb: receivers: [metricsaslogs/oracle] processors: [memory_limiter/oracle, transform/oracle_clear_metadata, resourcedetection/oracle_db_safe] exporters: [otlp]Dica
Esta configuração permite monitorar múltiplas instâncias do Oracle RDS simultaneamente. Cada instância recebe sua própria configuração de receptor com credenciais exclusivas, enquanto compartilha processadores e exportadores comuns. Ajuste o
collection_intervale outros parâmetros com base em seus requisitos de monitoramento.Reinicie o coletor NRDOT após atualizar a configuração para aplicar as alterações.
(Opcional) Configurar a correlação entre APM e banco de dados
Para correlacionar o desempenho da sua aplicação com as operações de banco de dados, você pode configurar a identificação de serviço de banco de dados. Este recurso permite visualizar exatamente quais aplicativos estão gerando workloads específicas de banco de dados. Para mais informações, consulte configurar a identificação de serviço de banco de dados para obter a correlação APM-banco de dados no New Relic.
Importante
Para visualizar dados de desempenho do banco de dados no APM, ambas as entidades devem estar na mesma conta New Relic. Se as entidades estiverem em contas diferentes da New Relic, você deve ter acesso a ambas as contas para visualizar os dados.
(Opcional) Configurar o gerenciamento de segredos
O recurso de gerenciamento de segredos permite gerenciar com segurança informações confidenciais, como credenciais de banco de dados. Isso ajuda a aprimorar a segurança do seu ambiente de monitoramento ao evitar a inserção direta de dados sensíveis nos arquivos de configuração. Para mais informações, consulte gerenciamento de segredos.
Encontre e use seus dados
Assim que seus dados estiverem sendo coletados, você poderá acessar o monitoramento abrangente do banco de dados Oracle por meio da interface do usuário do New Relic.
Para encontrar sua entidade de banco de dados Oracle no New Relic:
- Vá para https://one.newrelic.com > All Capabilities > Databases.
- Defina os critérios de pesquisa como
instrumentation.provider = opentelemetry. - Selecione seu banco de dados Oracle na lista de entidades.
Para instalar o NRDOT Collector em ambientes RDS, siga estas etapas:
Método de instalação
Selecione o método de distribuição de instalação adequado para o seu ambiente Linux:
Configurar usuário do banco de dados
Crie um usuário de monitoramento com os privilégios necessários para o seu banco de dados RDS Oracle.
Faça login no banco de dados raiz como administrador:
CREATE USER <USERNAME> IDENTIFIED BY "<USER_PASSWORD>";Conceda privilégios
CONNECTao usuário recém-criado:GRANT CONNECT TO <USERNAME>;
Conceder privilégios de monitoramento para o banco de dados RDS
Execute as seguintes instruções SQL para conceder privilégios de monitoramento. Substitua <USERNAME_IN_UPPERCASE> pelo seu nome de usuário em letras maiúsculas:
SET SERVEROUTPUT ON;BEGIN FOR r IN (SELECT column_value as view_name FROM table(sys.odcivarchar2list( 'V_$SESSION', 'V_$SYSSTAT', 'V_$SESSTAT', 'V_$STATNAME', 'V_$SYSTEM_EVENT', 'V_$SHARED_SERVER', 'V_$DISPATCHER', 'V_$RESOURCE_LIMIT', 'V_$LOCK', 'V_$DATABASE', 'V_$PARAMETER', 'V_$SQLAREA', 'V_$SQL', 'V_$SQL_PLAN', 'V_$PDBS', 'GV_$INSTANCE', 'GV_$SGA', 'GV_$SESSTAT', 'GV_$STATNAME', 'GV_$SYSSTAT', 'GV_$SQLAREA', 'GV_$LIBRARYCACHE', 'GV_$ROWCACHE', 'GV_$PGASTAT', 'GV_$CONTAINERS', 'GV_$PDBS', 'GV_$CON_SYSMETRIC', 'GV_$SYSMETRIC', 'GV_$FILESTAT', 'GV_$SYSTEM_EVENT', 'GV_$ACTIVE_SERVICES', 'GV_$SESSION', 'GV_$SESSION_WAIT', 'GV_$ROLLSTAT', 'DBA_OBJECTS', 'DBA_TABLESPACES', 'DBA_TABLESPACE_USAGE_METRICS', 'DBA_DATA_FILES', 'DBA_USERS', 'CDB_SERVICES', 'CDB_DATA_FILES', 'CDB_TABLESPACE_USAGE_METRICS', 'CDB_USERS', 'CDB_PDBS', 'ALL_USERS', 'ALL_VIEWS', 'GLOBAL_NAME' ))) LOOP BEGIN rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => r.view_name, p_grantee => '<USERNAME_IN_UPPERCASE>', p_privilege => 'SELECT' ); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('FAILED: ' || r.view_name || ' | Error: ' || SQLERRM); END; END LOOP;END;/Configurar o NRDOT Collector
Edite seu arquivo
config.yamldisponível em/etc/nrdot-collector-host/e adicione o seguinte trecho de código:Importante
Se você já é um usuário do NRDOT Collector, certifique-se de mesclar a configuração acima com o seu arquivo
config.yamlexistente. Isso inclui adicionar os novos receptores, processadores e exportadores para o monitoramento do Oracle Database, mantendo suas configurações atuais.receivers:newrelicoracledb/pdb:endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"username: "<USERNAME>"password: "<PASSWORD>"service: "<PDB_NAME>"collection_interval: 30stimeout: 30s# pdb_services: ['PDB1','PDB2'] #for multiple pdbs# query_monitoring_response_time_threshold: 500# query_monitoring_count_threshold: 30# enable_query_monitoring: true# enable_pdb_scraper: true# enable_tablespace_scraper: true# enable_core_scraper: true# enable_system_scraper: true# enable_connection_scraper: true# enable_container_scraper: true# enable_database_info_scraper: trueprocessors:transform/clear_metadata:metric_statements:- context: metricstatements:- set(metric.description, "")- set(metric.unit, "")log_statements:- context: logstatements:- set(log.body, "")filter/exec_plan_and_query_details_include:metrics:include:match_type: strictmetric_names:- newrelicoracledb.execution_plan- newrelicoracledb.slow_queries.query_detailsfilter/exec_plan_and_query_details_exclude:metrics:exclude:match_type: strictmetric_names:- newrelicoracledb.execution_plan- newrelicoracledb.slow_queries.query_detailscumulativetodelta:include:match_type: strictmetrics:- newrelicoracledb.connection.bytes_received- newrelicoracledb.connection.bytes_sent- newrelicoracledb.connection.execute_count- newrelicoracledb.connection.logons_cumulative- newrelicoracledb.connection.parse_count_hard- newrelicoracledb.connection.parse_count_total- newrelicoracledb.connection.sqlnet_roundtrips- newrelicoracledb.connection.user_commits- newrelicoracledb.connection.user_rollbacksconnectors:metricsaslogs:include_resource_attributes: trueinclude_scope_info: trueexporters:otlp:endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"headers:api-key: "<YOUR_NEWRELIC_API_KEY>"compression: gzipservice:pipelines:metrics:receivers: [newrelicoracledb/pdb]processors: [transform/clear_metadata, filter/exec_plan_and_query_details_exclude, cumulativetodelta]exporters: [otlp]metrics/exec_plan_and_query_details_to_logs:receivers: [newrelicoracledb/pdb]processors: [filter/exec_plan_and_query_details_include]exporters: [metricsaslogs]logs/newrelicoracledb:receivers: [metricsaslogs]processors: [transform/clear_metadata]exporters: [otlp]Defina os seguintes parâmetros obrigatórios no arquivo de configuração:
Parâmetro
Descrição
<YOUR_DB_HOST>Insira o nome do host do banco de dados Oracle.
<YOUR_DB_PORT>Insira a porta do seu banco de dados Oracle.
<USERNAME>Insira seu nome de usuário do banco de dados.
<PASSWORD>Insira a senha do seu banco de dados.
<PDB_NAME>Insira o nome do serviço PDB.
<YOUR_NEWRELIC_OTLP_ENDPOINT>Insira o endpoint OTLP da New Relic. Para mais informações, consulte a documentação dos endpoints OTLP da New Relic.
<YOUR_NEWRELIC_API_KEY>Insira sua chave de API da New Relic.
pdb_servicesSelecione os serviços PDB para monitorar nas opções a seguir:
- Vazio ou nulo: Coletar apenas dados de serviço especificados
["pdb1", "pdb2"]: Coletar apenas serviços de PDB especificados
enable_query_monitoringObtenha métricas de monitoramento de consultas, como sessões lentas, ativas, em espera, de bloqueio e plano de execução. O valor padrão é definido como
falsequery_monitoring_response_time_thresholdDefina o limite para o tempo de resposta da consulta (em ms). Captura as consultas que ultrapassam este limiar. O valor padrão é definido como 500ms.
query_monitoring_count_thresholdO número de registros para cada métrica de desempenho de consulta. O valor padrão é definido como 30
Reiniciar o coletor NRDOT
Após atualizar a configuração, reinicie o coletor NRDOT:
$sudo systemctl restart nrdot-collector-host$sudo systemctl status nrdot-collector-hostDica
Sempre reinicie o coletor NRDOT após fazer alterações de configuração para garantir que as novas configurações entrem em vigor.
(Opcional) Configuração de multirreceptor
O binário nrdot-collector-host suporta uma configuração de múltiplos receptores em um único config.yaml para monitorar várias instâncias de banco de dados Oracle usando credenciais exclusivas. O exemplo config.yaml abaixo demonstra como configurar vários receptores para diferentes instâncias RDS, compartilhando processadores e exportadores comuns.
receivers: # First RDS Instance newrelicoracledb/pdb/rds1: endpoint: "<YOUR_DB_HOST_1>:<YOUR_DB_PORT_1>" username: "<USERNAME_1>" password: "<PASSWORD_1>" service: "<PDB_NAME_1>" collection_interval: 30s timeout: 30s # query_monitoring_response_time_threshold: 500 # query_monitoring_count_threshold: 30 # enable_query_monitoring: true
# Second RDS Instance newrelicoracledb/pdb/rds2: endpoint: "<YOUR_DB_HOST_2>:<YOUR_DB_PORT_2>" username: "<USERNAME_2>" password: "<PASSWORD_2>" service: "<PDB_NAME_2>" collection_interval: 30s timeout: 30s # query_monitoring_response_time_threshold: 500 # query_monitoring_count_threshold: 30 # enable_query_monitoring: true
processors: transform/clear_metadata: metric_statements: - context: metric statements: - set(metric.description, "") - set(metric.unit, "") log_statements: - context: log statements: - set(log.body, "")
filter/exec_plan_and_query_details_include: metrics: include: match_type: strict metric_names: - newrelicoracledb.execution_plan - newrelicoracledb.slow_queries.query_details
filter/exec_plan_and_query_details_exclude: metrics: exclude: match_type: strict metric_names: - newrelicoracledb.execution_plan - newrelicoracledb.slow_queries.query_details
connectors: metricsaslogs: include_resource_attributes: true include_scope_info: true
exporters: otlp: endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>" headers: api-key: "<YOUR_NEWRELIC_API_KEY>" compression: gzip
service: pipelines: # Separate metrics pipelines to apply unique resource names metrics/rds1: receivers: [newrelicoracledb/pdb/rds1] processors: [transform/clear_metadata, filter/exec_plan_and_query_details_exclude] exporters: [otlp] metrics/rds2: receivers: [newrelicoracledb/pdb/rds2] processors: [transform/clear_metadata, filter/exec_plan_and_query_details_exclude] exporters: [otlp]
# Combined logs pipeline for execution plans and query details metrics/exec_plan_and_query_details_to_logs: receivers: [newrelicoracledb/pdb/rds1, newrelicoracledb/pdb/rds2] processors: [filter/exec_plan_and_query_details_include] exporters: [metricsaslogs]
logs/newrelicoracledb: receivers: [metricsaslogs] processors: [transform/clear_metadata] exporters: [otlp]Dica
Esta configuração permite monitorar múltiplas instâncias do Oracle RDS simultaneamente. Cada instância recebe sua própria configuração de receptor com credenciais exclusivas, enquanto compartilha processadores e exportadores comuns. Ajuste o
collection_intervale outros parâmetros com base em seus requisitos de monitoramento.Reinicie o coletor NRDOT após atualizar a configuração para aplicar as alterações.
(Opcional) Configurar a correlação entre APM e banco de dados
Para correlacionar o desempenho da sua aplicação com as operações de banco de dados, você pode configurar a identificação de serviço de banco de dados. Este recurso permite visualizar exatamente quais aplicativos estão gerando workloads específicas de banco de dados. Para mais informações, consulte configurar a identificação de serviço de banco de dados para obter a correlação APM-banco de dados no New Relic.
Importante
Para visualizar dados de desempenho do banco de dados no APM, ambas as entidades devem estar na mesma conta da New Relic. Se as entidades estiverem em contas diferentes, você deve ter acesso a ambas as contas para visualizar os dados.
(Opcional) Configurar o gerenciamento de segredos
O recurso de gerenciamento de segredos permite gerenciar com segurança informações confidenciais, como credenciais de banco de dados. Isso ajuda a aprimorar a segurança do seu ambiente de monitoramento ao evitar a inserção direta de dados sensíveis nos arquivos de configuração. Para mais informações, consulte gerenciamento de segredos.
Encontre e use seus dados
Assim que seus dados estiverem sendo coletados, você poderá acessar o monitoramento abrangente do banco de dados Oracle por meio da interface do usuário do New Relic.
Para encontrar sua entidade de banco de dados Oracle no New Relic:
- Vá para https://one.newrelic.com > All Capabilities > Databases.
- Defina os critérios de pesquisa como
instrumentation.provider = opentelemetry. - Selecione seu banco de dados Oracle na lista de entidades.
Comandos suportados pelo coletor NRDOT
Esta seção fornece uma lista de comandos comuns para gerenciar o serviço NRDOT Collector no seu sistema.
Métricas disponíveis
Monitore o desempenho do banco de dados Oracle com métricas organizadas por flags de configuração. Métricas padrão são coletadas automaticamente para a funcionalidade da interface do New Relic. Você também pode usar as métricas adicionais fornecidas para obter insights avançados e mais profundos ao ativar scrapers específicos.
Métrica padrão
Essas métricas são essenciais para os recursos de monitoramento de banco de dados Oracle da New Relic e são coletadas automaticamente, independentemente da sua configuração.
Métricas adicionais
Ative essas métricas adicionais conforme necessário para obter insights mais profundos sobre o desempenho e a saúde do seu banco de dados Oracle.
Qual é o próximo
Após configurar o monitoramento de banco de dados Oracle com o NRDOT:
- Crie dashboards personalizados para visualizar suas métricas de banco de dados
- Configure alertas para limites críticos de desempenho do banco de dados
- Explore seus dados usando os recursos de consulta do New Relic