Skip to main content

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

Project description

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+
$ pip install lins_healthchecks

Variáveis de ambiente

Variável Definição Valor padrão Requerida
LINS_HEALTH_CHECK_URL Define a url base para consumo do pacote https://healthchecks.grupolinsferrao.com.br Não
HEALTH_CHECKS_REQUEST_TIMEOUT Define o tempo máximo de espera por uma resposta 10 (segundos) Não
TIMEZONE Define a timezone exibida nos logs America/Sao_Paulo Não
SHOW_HEALTH_CHECKS_LOGS Ativa ou desativa a exibição de logs do pacote True Não
HEALTH_CHECKS_API_KEY Chave necessária para autorizar o acesso aos endpoints Nenhum (None) Sim

Como gerar a API KEY

1 - Clique na caixa com o nome do projeto em My projects

2 - No menu superior no cabeçalho clique em SETTINGS

3 - Na caixa de opções API Access clique em create

4 - Atribua a chave gerada para a variável de ambiente HEALTH_CHECKS_API_KEY

Utilizando o pacote

Existem duas abordagens de uso.

decorator

Nesta abordagem, a função decorada deve possuir o atributo health_check ou **kwargs para receber uma instância da classe HealthCheck, possibilitando a comunicação com o sistema.

from lins_healthchecks import api

DADOS_DO_SERVICO = {
    'name': 'meu servico',
    'tags': 'foo bar',
    'timeout': 3600,
    'grace': 60,
}


@api.link(DADOS_DO_SERVICO)
def minha_funcao_decorada(health_check):
    health_check.reportar_inicio()
    try:
        foo()
    except Exception as e:
        health_check.reportar_falha_por_exception(e)
    health_check.reportar_sucesso()

Atribuição

from lins_healthchecks.utils import cria_ou_busca_health_check

DADOS_DO_SERVICO = {
    'name': 'meu servico',
    'tags': 'foo bar',
    'timeout': 3600,
    'grace': 60,
}


def minha_funcao():
    health_check = healthcheck.cria_ou_busca_health_check(DADOS_DO_SERVICO)
    try:
        health_check.reportar_inicio()
        foo()
    except Exception e :
        health_check.reportar_falha_por_exception(e)
    health_check.reportar_sucesso()

Caso um erro ocorra por outro comportamento que não uma exception então:

from lins_healthchecks.utils import cria_ou_busca_health_check

DADOS_DO_SERVICO = {
    'name': 'meu servico',
    'tags': 'foo bar',
    'timeout': 3600,
    'grace': 60,
}


def minha_funcao():
    health_check = healthcheck.cria_ou_busca_health_check(DADOS_DO_SERVICO)
    health_check.reportar_inicio()
    if not foo()
        health_check.reportar_falha('foo retornou False')
    else:
        health_check.reportar_sucesso()

Para mais informações dos possíveis parâmetros para criação do HC consulte a documentação aqui

Alertas

Tratamento interno para evitar replicações de registros no HC.

Se no json informado para criação do HC no método cria_ou_busca_healthcheck não existir a chave unique, o método de criação irá adiciona-lo, sendo assim:

{
    'name': 'meu servico',
    'tags': 'foo bar',
    'timeout': 3600,
    'grace': 60,
}

será tratado como:

{
    'name': 'meu servico',
    'tags': 'foo bar',
    'timeout': 3600,
    'grace': 60,
    'unique': ['name'],
}

Caso exista o unique no json mas sem a string name então:

{
    'name': 'meu servico',
    'tags': 'foo bar',
    'timeout': 3600,
    'grace': 60,
    'unique': ['tags'],
}

será tratado como:

{
    'name': 'meu servico',
    'tags': 'foo bar',
    'timeout': 3600,
    'grace': 60,
    'unique': ['tags', 'name'],
}

A adição do {'unique': 'name'} ao json evita que um novo registro seja criado toda vez que um serviço for reiniciado.

A quantidade e a ordem das tags importam

Na criação do health check, caso informem as tags na chave unique do json a ordem e a quantidade das tags importam, caso sejam reordenadas, adicionadas ou removidas, isso resultará em um novo registro de check se isso for realmente necessário, lembre-se de remover o registro antigo.

ex:

from lins_healthchecks import utils

DADOS_DO_SERVICO = {
    'name': 'meu servico',
    'tags': 'foo bar',
    'timeout': 3600,
    'grace': 60,
}

response = utils.cria_ou_busca_healthcheck(DADOS_DO_SERVICO)  # criou um registro de HC
DADOS_DO_SERVICO['tags'] = 'bar foo'
response = utils.cria_ou_busca_healthcheck(DADOS_DO_SERVICO)  # criou outro registro de HC

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.1.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

lins_healthchecks-1.0.1-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lins_healthchecks-1.0.1.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for lins_healthchecks-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a979f81d0aaa35100f0fdf2e06a4d46ccf72aeacdfed1a0687b056a9dac059e8
MD5 f88e0b450e9b0c7da0df86f7fe125b73
BLAKE2b-256 ccfd91e201d8d7c7f28b2360516ed3f8eb831150fc96024e054c344a1c67f35b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lins_healthchecks-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6453fbd8f4b007f79a7759abdbeda8c6a895156212f9aefa112c7ee97878f951
MD5 a9305ee2fe57213ee5d3787690b3404d
BLAKE2b-256 35435931f5a5251074725e75f26080e2a71d8ecbd958240bed55e71f6ff518ab

See more details on using hashes here.

Supported by

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