django 1.10
O projeto django-health-check
verifica várias condições e fornece relatórios quando comportamentos anômalos são detectados.
As verificações de saúde incluídas neste projeto são:
- cache
- banco de dados
- armazenamento
Escrever suas próprias verificações personalizadas também é rápido e fácil.
Casos de Uso
O caso de uso principal é monitorar condições via HTTP(S), com respostas disponíveis em formatos HTML e JSON. Quando você recebe uma resposta que inclui um ou mais problemas, pode decidir a ação apropriada, que pode incluir gerar notificações e/ou automatizar a substituição de um nó com falha por um novo. Se estiver monitorando a saúde em um ambiente de alta disponibilidade com um balanceador de carga que retorna respostas de vários nós, observe que algumas verificações (por exemplo, uso de disco e memória) retornarão respostas específicas para o nó selecionado pelo balanceador de carga.
Instalação
Primeiro, instale o pacote django-health-check
:
```Dockerfile requirements.txt django-health-check==2.4.0
Adicione o verificador de saúde a uma URL que você deseja usar:
```python
urlpatterns = [
# ...
url(r'^health_check/$', include('health_check.urls')),
]
Adicione o aplicativo health_check
às suas INSTALLED_APPS
:
INSTALLED_APPS = [
# ...
'health_check', # obrigatório
'health_check.db', # verificadores de saúde padrão do Django
'health_check.cache',
'health_check.storage'
]
Se estiver usando a verificação do banco de dados, execute as migrações:
$ python manage.py migrate
Configurando monitoramento
Você pode usar ferramentas como Pingdom, StatusCake ou outros robôs de tempo de atividade para monitorar o status do serviço. O endpoint /health_check/
responderá com um HTTP 200 se todas as verificações passarem e com um HTTP 500 se algum dos testes falhar.
Obtendo relatórios JSON compatíveis com máquina
Se você deseja relatórios de status legíveis por máquina, pode solicitar a endpoint /health_check/
com o cabeçalho HTTP Accept
definido como application/json
.
O backend retornará uma resposta JSON:
$ curl -v -X GET -H "Accept: application/json" http://www.example.com/health_check/
> GET /ht/ HTTP/1.1
> Host: www.example.com
> Accept: application/json
>
< HTTP/1.1 200 OK
< Content-Type: application/json
{
"CacheBackend": "working",
"DatabaseBackend": "working",
"S3BotoStorageHealthCheck": "working"
}
Isso deve produzir a seguinte saída:
DatabaseHealthCheck ... working
CustomHealthCheck ... unavailable: Something went wrong!
Semelhante à versão http, um erro crítico fará com que o comando saia com o código de saída 1
.