Skip to content

django 1.11

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
  • armazenamento AWS S3
  • Migrações

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==3.16.3



Adicione o verificador de saúde a uma URL que você deseja usar:

```python
    from health_check.views import MainView as HealthCheckView
    urlpatterns = [
        # ...
        url(r'^health_check', HealthCheckView.as_view(), name='health_check'),
    ]

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',
        'health_check.contrib.migrations'
    ]

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 desejar relatórios de status compatíveis com máquina, você pode solicitar o endpoint /health_check/ com o cabeçalho HTTP Accept definido como application/json ou passar format=json como um parâmetro de consulta.

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"
    }

    $ curl -v -X GET http://www.example.com/health_check/?format=json

    > GET /ht/?format=json HTTP/1.1
    > Host: www.example.com
    >
    < HTTP/1.1 200 OK
    < Content-Type: application/json

    {
        "CacheBackend": "working",
        "DatabaseBackend": "working",
        "S3BotoStorageHealthCheck": "working"
    }

Comando Django

Você pode executar o comando Django health_check para realizar suas verificações de saúde via linha de comando, ou periodicamente com um cron, da seguinte forma:

    python manage.py health_check

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.