Skip to main content

Pacote que integra containers do docker ao sistema de healthcheck da lins-ferrão

Project description

HealthCheck

Healthchecks é um serviço usado para monitorar tarefas agendadas, como cronjobs.

O serviço a ser monitorado envia uma solicitação HTTP ou e-mail (pings) para o Healthchecks sempre que for executada. Normalmente, você envia um "ping" no início da execução, outro quando ela termina com sucesso, e se for o caso, um em caso de falha.

Se o Healthchecks não receber o ping dentro do tempo esperado, ele entende que algo deu errado e envia um alerta.

É uma forma prática de saber se os scripts e automações estão rodando como deveriam — e de ser avisado quando não estiverem.

Lins Health Checks

pyver codecov

Esse pacote tem como propósito, linkar os serviços da lins-ferrão ao sistema de checagem (healthchecks).

Requirements:

  • Python 3.6+

Implementação

1 - Adicione o pacote lins-healthchecks aos requirements do projeto

lins-healthchecks==1.0.1

2 - Adicione as variáveis de ambiente

Variáveis do Health Check:

Variáveis Descrição
HEALTH_CHECKS_DESC Define a descrição do serviço a ser acompanhado
HEALTH_CHECKS_GRACE Define período em segundos entre o ping inicial e o envio do alerta
HEALTH_CHECKS_NAME Nome do serviço a ser acompanhado
HEALTH_CHECKS_RETRYS Numero de tentativas de enviar os pings
HEALTH_CHECKS_SCHEDULE Define o cronograma de execução do serviço
HEALTH_CHECKS_TAG Tags que vão servir para ajudar a encontrar os logs no healthcheck
HEALTH_CHECKS_TZ Define a timezone exibida nos logs
HEALTH_CHECKS_API_KEY Chave necessária para autorizar o acesso aos endpoints
LINS_HEALTH_CHECK_BASE_URL Define a url base para consumo do pacote
SHOW_HEALTH_CHECKS_LOGS Ativa ou desativa a exibição de logs do pacote

3 - Adicione as variáveis de ambiente ao arquivo de settings conforme abaixo

ENV = os.environ

HEALTH_CHECKS_DESC = ENV.get('HEALTH_CHECKS_DESC')
HEALTH_CHECKS_GRACE = int(ENV.get('HEALTH_CHECKS_GRACE'))
HEALTH_CHECK_NAME = ENV.get('HEALTH_CHECK_NAME')
HEALTH_CHECKS_RETRYS = ENV.get('HEALTH_CHECKS_RETRYS')
HEALTH_CHECKS_SCHEDULE = ENV.get('HEALTH_CHECKS_SCHEDULE')
HEALTH_CHECK_TAG = ENV.get('HEALTH_CHECK_TAG')
HEALTH_CHECKS_TZ = ENV.get('HEALTH_CHECKS_TZ')
HEALTH_CHECKS_API_KEY = ENV.get('HEALTH_CHECKS_API_KEY')
LINS_HEALTH_CHECK_BASE_URL = ENV.get('LINS_HEALTH_CHECK_BASE_URL')
SHOW_HEALTH_CHECKS_LOGS = ENV.get('SHOW_HEALTH_CHECKS_LOGS')

HEALTH_CHECK_DADOS = {
    'desc': HEALTH_CHECKS_DESC,
    'grace': HEALTH_CHECKS_GRACE,
    'name': HEALTH_CHECK_NAME,
    'schedule': HEALTH_CHECKS_SCHEDULE,
    'tags': HEALTH_CHECK_TAG,
    'tz': HEALTH_CHECKS_TZ,
    'unique': ['name',]
}

4 - Crie o arquivo health_check.py na raiz do projeto com o seguinte codigo:

from datetime import datetime
from {{arquivo de settings}} import HEALTH_CHECK_DADOS
from lins_healthchecks.utils import cria_ou_busca_health_check


class FalhaHealthCheck():
    def reportar_inicio(self):
        print('### inicio - {} ###'.format(datetime.now()))

    def reportar_falha(self, erro):
        print('### Falha - {} >>> {} ###'.format(datetime.now(), erro))

    def reportar_sucesso(self):
        print('### sucesso - {} ###'.format(datetime.now()))

    def reportar_falha_por_exception(self, erro: Exception):
        print('### Exception - {} >>> {} ###'.format(datetime.now(), str(erro)))


def configura_health_check():
    try:
        health_check = cria_ou_busca_health_check(HEALTH_CHECK_DADOS)
    except Exception:
        health_check = FalhaHealthCheck()
    return health_check

5 - Ajuste na implementação do serviço:

from health_check import configura_health_check

[...]

if __name__ == "__main__":
    health_check = configura_health_check()
    health_check.reportar_inicio()
    try:
        run() #Chame aqui a função que executa o serviço (por exemplo: run(), execute(), handler(), etc...)
    except Exception as erro:
        health_check.reportar_falha(str(erro))
    else:
        health_check.reportar_sucesso()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lins_healthchecks-1.0.2.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lins_healthchecks-1.0.2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file lins_healthchecks-1.0.2.tar.gz.

File metadata

  • Download URL: lins_healthchecks-1.0.2.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for lins_healthchecks-1.0.2.tar.gz
Algorithm Hash digest
SHA256 cb1f7d6f97b5e5db80f4ccdf4bec2547a7f09cede52afb00a1587385c67b0ed2
MD5 d6705b0e3a6a741b6fa044d169f772a3
BLAKE2b-256 bbba40a6e9fea3cfcce6f12b2bd2f76ac277180067290c0ca4b89bc612f5d1dc

See more details on using hashes here.

File details

Details for the file lins_healthchecks-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: lins_healthchecks-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for lins_healthchecks-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6e2efd71c7935ea7952be6b9ac4fd1a75128d53cbb5fb3c44d7e6ec47dcf0e6f
MD5 e7e8d1cce549a54df68986aae8ee843a
BLAKE2b-256 07db4ef28fa7655c53f210579272fafbb48b80aa53689b7677de2cd94f515383

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page