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
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()
Metadata
Release files for lins-healthchecks 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lins_healthchecks-1.0.2.tar.gz | 5.8 kB | Without provenance | Details for lins_healthchecks-1.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lins_healthchecks-1.0.2-py3-none-any.whl | Python 3 | none | any | Details for lins_healthchecks-1.0.2-py3-none-any.whl |
Total release size: 12.7 kB
Release files / lins_healthchecks-1.0.2.tar.gz
| Download URL | lins_healthchecks-1.0.2.tar.gz |
|---|---|
| Size | 5.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cb1f7d6f97b5e5db80f4ccdf4bec2547a7f09cede52afb00a1587385c67b0ed2
|
|
BLAKE2b-256 checksum How to use checksums |
bbba40a6e9fea3cfcce6f12b2bd2f76ac277180067290c0ca4b89bc612f5d1dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / lins_healthchecks-1.0.2-py3-none-any.whl
| Download URL | lins_healthchecks-1.0.2-py3-none-any.whl |
|---|---|
| Size | 7.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6e2efd71c7935ea7952be6b9ac4fd1a75128d53cbb5fb3c44d7e6ec47dcf0e6f
|
|
BLAKE2b-256 checksum How to use checksums |
07db4ef28fa7655c53f210579272fafbb48b80aa53689b7677de2cd94f515383
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for lins-healthchecks 1.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.