Instalando e Configurando o pgAgent no Linux (pgAdmin e PostgreSQL)

O pgAgent é um agente de agendamento de tarefas para o banco de dados Postgresql. O pgAgent executa scripts em lote (batch), shell scripts e várias tarefas SQL em agendamentos até complexos. Será mostrado como configurar corretamente o pgAgent para seu bom funcionamento.

[ Hits: 6.478 ]

Por: Buckminster em 22/02/2023


Informações sobre os arquivos



O arquivo pgagent.sh em /etc/init.d serve para iniciar o pgAgent junto ao Systemd, pois os dois servidores Debian 11 e Ubuntu 22.04.2 LTS os quais tiveram essa instalação ficou uma dificuldade em fazer o pgAgent funcionar, pois o Systemd não o reconhecia.

O arquivo rc-local.service em /usr/lib/systemd/system geralmente é criado junto com o sistema. É este arquivo que permite nas novas versões que criemos o arquivo rc.local para colocar arquivos de inicialização com o sistema quando necessário.

O arquivo rc.local, que, segundo dizem, está obsoleto, porém, às vezes é necessário criá-lo, pois no Systemd é muito mais complicado configurar para iniciar programas instalados pelo usuário junto com o sistema quando estes não são configurados automaticamente na instalação.

Estas linhas no rc.local:

pgagent hostaddr=127.0.0.1 port=5433 dbname=banco1 user=postgres
pgagent hostaddr=127.0.0.1 port=5432 dbname=banco2 user=postgres

são as strings de conexão do pgAgent compostas pelo hostaddr (hostname ou IP), a porta do banco de dados, o nome do banco e o usuário do banco.

Essa string de conexão é absolutamente necessária para o funcionamento do pgAgent.

Caso tenha mais de um banco em portas diferentes, por exemplo, um na porta 5432 e um na porta 5433, deve sempre criar uma string para cada banco.

NÃO inclua qualquer tipo de senha na string do pgAgent, pois ela pode ser armazenada como texto plano (arquivo .txt) e ficar visível.

Tanto no rc.local quanto no pgagent.sh tem a linha "systemctl start pgagent" e pode parecer redundância, porém, o rc.local em /etc/rc.local faz a inicialização com o sistema chamando /usr/bin/pgagent e o pgagent.sh em /etc/init.d atua sobre o init.d em conjunto com o Systemd agindo no /usr/bin/pgagent, que é instalado com apt-get install pgagent.

Somente com o pgagent.sh o pgAgent não inicializava com o sistema, mas inicializava manualmente com systemctl start pgagent; foi necessário o rc.local para inicialização com o sistema.

O arquivo pgagent.service em /usr/lib/systemd/system foi criado para informar ao Systemd as condições de start, stop e restart; o systemctl status pgagent não é necessário colocar em pgagent.service, pois vem na instalação.

Description=Arquivo do PgAgent feito por eu mesmo  # descrição do arquivo
ConditionFileIsExecutable=/usr/bin/pgagent # caminho do executável
After=network.target # indica que deve iniciar depois da rede

Type=simple # como "simple" o serviço é iniciado como processo principal
ExecStart=/usr/bin/pgagent start
ExecStop=/usr/bin/pgagent stop
ExecReload=/usr/bin/pgagent restart
Restart=always # sempre reiniciar após alguma falha
RestartSec=10 # reiniciar após 10 segundos parado
RemainAfterExit=yes # usado para serviços que de alguma forma mudam o estado do sistema, assim você pode interrompê-lo e iniciá-lo com mais facilidade; especifica se o serviço deve ser considerado ativo mesmo quando todos os seus processos forem encerrados.

WantedBy=multi-user.target # permite multi-usuários para o serviço junto ao sistema

Não foi abordado aqui como criar um job no pgAgent através do pgAdmin4, pois o processo é bastante fácil e auto-explicativo na interface gráfica do pgAdmin4.

Qualquer coisa olhem o primeiro link das referências abaixo, na seção "Creating a pgAgent Job" tem imagens e explicações.

Referências


Página anterior    

Páginas do artigo
   1. Introdução
   2. Instalação e Configuração
   3. Informações sobre os arquivos
Outros artigos deste autor

Enviar mensagem ao usuário trabalhando com as opções do php.ini

Antivírus ClamAV com proteção em tempo real

Manual traduzido do Squid - Parte 3

Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET

kernel Linux otimizado - Compilação e teste

Leitura recomendada

Vacuum - otimizando sua base de dados PostgreSQL

Programando PostgreSQL + PHP

PostgreSQL básico - Testado e pronto para ser usado

Diagrama Entidade-Relacionamento com Dia e tedia2sql para o PostgreSQL

HowTo: Como criar Cluster Linux - Ativo/Passivo para Postgres com DRBD, Pacemaker e Corosync

  
Comentários
[1] Comentário enviado por removido em 22/02/2023 - 15:07h

Estranho configurar dessa forma. Com base na documentação oficial => https://uploadme.me/view/N18



[2] Comentário enviado por Buckminster em 23/02/2023 - 14:01h


[1] Comentário enviado por amarildosertorio em 22/02/2023 - 15:07h

Estranho configurar dessa forma. Com base na documentação oficial => https://uploadme.me/view/N18





O arquivo /etc/pgagent/pgagent_12.conf não tem no Debian nem no Ubuntu.
Na instalação (apt-get install pgagent) é criado somente o /usr/bin/pgagent que é o executável.

[3] Comentário enviado por removido em 24/02/2023 - 18:08h


O arquivo /etc/pgagent/pgagent_12.conf não tem no Debian nem no Ubuntu.
Na instalação (apt-get install pgagent) é criado somente o /usr/bin/pgagent que é o executável.


https://gist.github.com/peterneave/83cefce2a081add244ad7dc1c53bc0c3

[4] Comentário enviado por Buckminster em 24/02/2023 - 22:10h


[3] Comentário enviado por amarildosertorio em 24/02/2023 - 18:08h


O arquivo /etc/pgagent/pgagent_12.conf não tem no Debian nem no Ubuntu.
Na instalação (apt-get install pgagent) é criado somente o /usr/bin/pgagent que é o executável.


https://gist.github.com/peterneave/83cefce2a081add244ad7dc1c53bc0c3



Sim, é outra forma de instalar e configurar o PgAgent.
Aqui o comando update-rc.d pgagent.sh defaults não surtiu efeito (talvez coisas do systemd), por isso tive que criar o rc.local.

E no arquivo /usr/lib/systemd/system/pgagent.service tice que mudar a linha
ExecStart=/usr/bin/pgagent -s ${LOGFILE} -l ${LOGLEVEL} host=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT}
para
ExecStart=/etc/rc.local start e criar o rc.local assim mesmo, pois com a linha original estava dando o erro
pgagent.service: start request repeated too quickly.
e não iniciava o serviço nem na reinicialização e nem com o comando systemctl start pgagent.service

Somente deu certo quando fiz a alteração.
Como eu disse, são várias formas de configurar no Linux.


[5] Comentário enviado por maurixnovatrento em 12/03/2023 - 14:59h


bom artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts