跳转到主要内容

一个简单的Django应用程序/框架,用于发布健康检查

项目描述

一个简单的Django应用程序/框架,用于发布用于监控目的的健康检查

功能

  • 通过Python函数进行自定义检查

  • 远程健康检查

  • 心跳监控

状态

https://github.com/mvantellingen/django-healthchecks/workflows/Python%20Tests/badge.svg http://codecov.io/github/mvantellingen/django-healthchecks/coverage.svg?branch=master https://img.shields.io/pypi/v/django-healthchecks.svg

安装

pip install django_healthchecks

使用

将以下内容添加到您的urls.py中

url(r'^healthchecks/', include('django_healthchecks.urls')),

添加一个包含可用健康检查的设置

HEALTH_CHECKS = {
    'postgresql': 'django_healthchecks.contrib.check_database',
    'cache_default': 'django_healthchecks.contrib.check_cache_default',
    'solr': 'your_project.lib.healthchecks.check_solr',
}

您还可以通过HTTP包含健康检查。当您想监控依赖的服务是否启动时,这很有用

HEALTH_CHECKS = {
    ...
    'my_microservice': 'https://my-service.services.internal/healthchecks/',
    ...
}

默认情况下,HTTP健康检查将在500ms后超时。您可以如下重写此设置

HEALTH_CHECKS_HTTP_TIMEOUT = 0.5

默认情况下,状态码始终为200,您可以使用HEALTH_CHECKS_ERROR_CODE设置将其更改为其他值

HEALTH_CHECKS_ERROR_CODE = 503

您还可以通过基本认证添加一些简单的保护措施到您的健康检查中。这可以按检查指定,或者可以使用通配符*

HEALTH_CHECKS_BASIC_AUTH = {
    '*': [('admin', 'pass')],
    'solr': [],
}

使用心跳

心跳提供周期性更新,用于检查服务是否最近处于活动状态。如果服务在超时时间内没有反馈,可以触发健康检查。要使用心跳,请将应用程序添加到 INSTALLED_APPS

INSTALLED_APPS = [
    ...
    "django_healthchecks",
]

包含以下检查之一

HEALTH_CHECKS = {
    ...
    'heartbeats': 'django_healthchecks.contrib.check_heartbeats'
    ...
    'expired_heartbeats': 'django_healthchecks.contrib.check_expired_heartbeats',
    ...
}

可选地,定义一个初始超时

HEALTHCHECKS_DEFAULT_HEARTBEAT_TIMEOUT = timedelta(days=1)

让您的代码跟踪心跳

from datetime import timedelta
from django_healthchecks.heartbeats import update_heartbeat

update_heartbeat("myservice.name", default_timeout=timedelta(days=2))

或使用装饰器

from django_healthchecks.heartbeats import update_heartbeat_on_success

@update_heartbeat_on_success("myservice.name", default_timeout=...)
def long_running_task():
    ....

每次调用 update_heartbeat() 时,心跳将重置。如果心跳在 timeout 之前没有收到更新,服务名称将在 check_expired_heartbeats 检查中提及。

更新超时

default_timeout 参数仅在创建时分配。任何更新都通过 Django 管理员进行。为了在代码部署时自动更新超时,请使用 timeout 参数。这将每次调用 update_heartbeat() 函数时替换存储的超时值,擦除在 Django 管理员中进行的任何更改。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

django-healthchecks-1.5.0.tar.gz (10.7 kB 查看哈希值)

上传时间

构建分布

django_healthchecks-1.5.0-py2.py3-none-any.whl (12.1 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面