Você pode instalar e configurar o monitoramento do PostgreSQL no Kubernetes usando o chart do Helm postgresql-otel. Opcionalmente, o chart também pode executar um job de configuração que cria a role de monitoramento, suas concessões e a extensão pg_stat_statements para você.
Instalação guiada
Para instalar pela interface da New Relic, acesse one.newrelic.com > Integrations & Agents > PostgreSQL (Database 360). Esta página aborda apenas a instalação manual.
Importante
O chart implanta o coletor como uma implantação do Kubernetes que acessa o PostgreSQL remotamente pela rede, portanto, ele relata apenas métricas do PostgreSQL: nenhuma métrica de host ou de infraestrutura para a máquina em que o PostgreSQL é executado. Ele monitora uma instância do PostgreSQL por release (vários bancos de dados nessa instância são suportados) e não configura o TLS ou provedores de credenciais db_auth, como a autenticação do AWS IAM.
Pré-requisitos em nível de servidor
O PostgreSQL 14 ou mais recente é necessário. Antes de instalar este chart (ou habilitar o job de configuração), os seguintes parâmetros do servidor devem estar configurados. pg_stat_statements não pode ser criado sem shared_preload_libraries, e esse parâmetro requer uma reinicialização, portanto, nada em execução dentro do seu cluster do Kubernetes pode fazer isso por você.
Parâmetro | Valor |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
- Auto-hospedado: defina-os em
postgresql.confe, em seguida, reinicie o PostgreSQL. Algumas distribuições precisam do pacotepostgresql-contribinstalado para quepg_stat_statementsesteja disponível. - AWS RDS ou Aurora: defina-os no grupo de parâmetros do banco de dados, não em um arquivo de configuração.
track_activity_query_sizeepg_stat_statements.maxsão parâmetros estáticos; aplique-os comapply_method: pending-reboote, em seguida, reinicie a instância. Aplicá-los imediatamente falha comInvalidParameterCombination. Para o Aurora, o nome da família do grupo de parâmetros deve corresponder exatamente à versão principal do seu mecanismo, por exemplo,aurora-postgresql16.
Pré-requisitos
Chave de licença da New Relic válida.
Helm 3.0 ou posterior, e
kubectlconfigurado para acessar seu cluster do Kubernetes.Conectividade de rede do seu cluster do Kubernetes para o host do PostgreSQL (ou endpoint do RDS) e porta:
- Auto-hospedado: um caminho roteado para o host do PostgreSQL (VPN, peering ou rede compartilhada), resolução de DNS se for um nome do host, e o
pg_hba.confe o firewall do lado do PostgreSQL devem permitir o IP de origem real da conexão (que pode ser um gateway NAT, não o IP do próprio pod). - AWS RDS: emparelhamento de VPC, um transit gateway ou posicionamento em VPC compartilhada com a instância do RDS, e o grupo de segurança do RDS deve permitir a porta do PostgreSQL (
5432por padrão) a partir da origem de saída do cluster.
- Auto-hospedado: um caminho roteado para o host do PostgreSQL (VPN, peering ou rede compartilhada), resolução de DNS se for um nome do host, e o
Uma role de monitoramento que você já criou com suas concessões por banco de dados ou credenciais de administrador do PostgreSQL para que o job de configuração do chart possa criá-las para você. Veja Configurar credenciais de monitoramento abaixo.
Crie o namespace
Crie o namespace onde a instalação será realizada. Ele deve existir antes da criação de qualquer secret na próxima etapa, já que helm install --create-namespace cria o namespace apenas durante a etapa final de instalação:
$kubectl create namespace newrelicDica
Defina-o como o namespace padrão para o seu contexto kubectl atual para que não seja necessário passar -n em todos os comandos abaixo:
$kubectl config set-context --current --namespace=newrelicConfigure as credenciais de monitoramento
Decida se você deseja que o job de configuração do chart crie a role de monitoramento do PostgreSQL para você e, se não, como você fornecerá suas credenciais:
Configure os valores do Helm
Defina postgresql.topology para corresponder ao seu ambiente:
Valor | Descrição |
|---|---|
| PostgreSQL auto-hospedado, acessado pela rede. |
| PostgreSQL ou Aurora no AWS RDS. |
postgresql.databases é uma lista obrigatória e não vazia. Ao contrário do MySQL ou do SQL Server, o PostgreSQL não possui um modo de monitoramento de todos os bancos de dados: uma conexão tem como destino um banco de dados por vez, portanto, o receiver deve ser informado sobre quais coletar.
Use o values.yaml que corresponde ao método de credencial escolhido na etapa anterior:
Parâmetro | Descrição |
|---|---|
| Sua chave de licença New Relic. |
| O endpoint OTLP/gRPC da sua região, como um
simples sem esquema :
(EUA) ou
(UE). Para mais informações, consulte a documentação dos endpoints OTLP da New Relic . |
/
| Seu host do PostgreSQL (ou endpoint do RDS) e porta, acessíveis a partir do cluster. |
| Lista obrigatória e não vazia de bancos de dados para monitorar. |
| Bancos de dados excluídos das varreduras de consultas principais e amostras de consultas em todo o cluster. O padrão é
e só é renderizado quando
é
; no RDS, o usuário de monitoramento nunca pode acessar
, portanto, excluí-lo evita erros de permissão. |
/
| Uma imagem compatível com
usada pelo job de configuração. O chart não inclui nenhum padrão , portanto, é necessário fornecer um quando o job de configuração estiver habilitado. A imagem oficial do
inclui o
e é uma escolha razoável. |
| Opcional. Também cria a função
e concede
sobre ela, permitindo que o receptor execute
em consultas de bloqueio e gravação sem possuir permissões de gravação. Deixá-lo
é seguro: o receptor recorre ao
inline, portanto, essas instruções simplesmente não obtêm planos de consulta. |
| Opcional. Também cria a extensão
em cada banco de dados monitorado, para métricas de vetor. As funções de distância
,
e
requerem o pgvector 0.7.0 ou posterior. |
Dica
Geralmente, não é necessário definir postgresql.topQueryCollection.explainFunctionName. O próprio padrão do receiver já é otel.explain_statement (a função exata que setupJob.enableExplainPermissions cria), e o chart omite a chave quando ela está vazia, de modo que os dois se alinham sem configuração extra. Defina-o apenas para apontar o receiver para uma função com nome diferente.
Dica
Consulte o values.yaml do chart para ver todas as opções de configuração disponíveis, incluindo postgresql.collectionInterval, os toggles metrics, os blocos topQueryCollection/querySampleCollection e a válvula de escape additionalReceiverConfig.
(Opcional) Monitorar várias instâncias a partir de um release
Em vez de postgresql.*, defina postgresqlMulti.enabled: true para monitorar várias instâncias do PostgreSQL (auto-hospedadas ou RDS) a partir de um único pod de coletor em uma versão. Os dois modos são mutuamente exclusivos: não defina postgresql.server e postgresqlMulti.enabled: true na mesma versão.
As entradas são chamadas de instances, não de databases: cada instância é um servidor PostgreSQL separado e cada uma carrega sua própria lista databases aninhada (os bancos de dados individuais a serem monitorados nessa instância), da mesma forma que postgresql.databases funciona no modo de instância única.
O modo multi-instância não possui um caminho de nome de usuário/senha simples: cada instância precisa de seu próprio secret do Kubernetes com credenciais de monitoramento. Decida se você também deseja que o job de configuração crie cada função de monitoramento para você:
Parâmetro | Descrição |
|---|---|
| Defina como
para monitorar várias instâncias de uma versão em vez de
. O padrão é
. |
|
ou
, mesmo significado que
, compartilhado por todas as instâncias nesta versão. |
| Lista de instâncias a serem monitoradas. Cada entrada requer um
exclusivo,
(
tem como padrão
),
e uma lista
obrigatória e não vazia de nomes de bancos de dados nessa instância; adicione
por entrada apenas quando
for
. |
Dica
setupJob.enableExplainPermissions e setupJob.enablePgvector são chaves únicas compartilhadas em cada banco de dados em cada instância; elas não podem ser definidas por instância. As configurações de extração (intervalo de coleta, métricas, topQueryCollection/querySampleCollection) também se aplicam de forma idêntica a cada instância em postgresqlMulti.instances; não há substituição por instância. Utilize additionalReceiverConfig para qualquer elemento que precise ser diferente. O job de configuração é executado uma vez por instância (<release>-setup-<name>) em vez de uma vez por versão.
Instale o Helm chart
Adicione o repositório Helm da New Relic:
bash$helm repo add newrelic https://helm-charts.newrelic.com$helm repo updateInstale o chart usando seu arquivo
values.yaml:bash$helm upgrade --install postgresql-otel newrelic/postgresql-otel \>-n newrelic \>--create-namespace \>-f values.yaml
Verifique a instalação
Verifique se o job de configuração foi concluído (se ativado) e se o pod do coletor está em execução:
bash$kubectl get jobs,pods -n newrelic --watchExecute esta consulta no criador de consulta para confirmar se os dados estão chegando:
SELECT count(*) FROM MetricWHERE metricName LIKE 'postgresql.%'AND instrumentation.provider = 'opentelemetry'SINCE 10 minutes ago
Encontre e use seus dados
Assim que seus dados estiverem sendo coletados, você poderá acessar o monitoramento abrangente do banco de dados PostgreSQL por meio da interface do New Relic.
Para encontrar a entidade de banco de dados PostgreSQL no New Relic:
- Vá para one.newrelic.com > All capabilities > Databases.
- Na dropdown Entity type, selecione PostgreSQL instance e clique em Apply.
- Selecione seu banco de dados PostgreSQL na lista de entidades.
Documentação relacionada
Introdução ao monitoramento do PostgreSQL com NRDOT
Saiba mais sobre todos os métodos de instalação disponíveis para o monitoramento do PostgreSQL com o New Relic.
Instalação da CLI
Saiba como instalar e configurar o monitoramento do PostgreSQL com um único comando da CLI do New Relic.
Instalação via Ansible
Saiba como instalar e configurar o monitoramento do PostgreSQL em escala com a newrelic.newrelic_install função Ansible.
Instalação via Chef
Aprenda a instalar e configurar o monitoramento do PostgreSQL em escala com o cookbook do Chef newrelic-install.