django应用程序度量是一个可重用的django应用程序,用于跟踪和发送应用程序度量。

django-app-metrics的Python项目详细描述


django应用程序指标

Build Status

django应用程序度量允许您捕获和报告 应用。您只需定义各种命名的度量并记录 发生了。这些可能是某些事件,可能会立即有用,因为 例如“新用户注册”、“下载”等。

或者直到将来某个时候它们才被证明有用。但是如果你 现在就开始记录,如果你需要的话,你会有很好的数据。

例如,当你只是 当你只关心收入,但能参加比赛时 对于未来第100万件售出的商品,你会很高兴你在追踪 它。

然后将这些单独的度量组合成一个度量集,在其中定义 您希望电子邮件报告多久发送一次,以及应发送给哪些用户 被派去。

文档

文档可以在ReadTheDocs找到。

要求

Celerydjango-celery必须安装,但是如果您不希望 实际上使用芹菜,您只需在 设置和它将表现为芹菜没有配置。

django 1.2及以上

用法

from app_metrics.utils import create_metric, metric, timing, Timer, gauge

# Create a new metric to track
my_metric = create_metric(name='New User Metric', slug='new_user_signup')

# Create a MetricSet which ties a metric to an email schedule and sets
# who should receive it
my_metric_set = create_metric_set(name='My Set',
                                  metrics=[my_metric],
                                  email_recipients=[user1, user2])

# Increment the metric by one
metric('new_user_signup')

# Increment the metric by some other number
metric('new_user_signup', 4)

# Aggregate metric items into daily, weekly, monthly, and yearly totals
# It's fairly smart about it, so you're safe to run this as often as you
# like
manage.py metrics_aggregate

# Send email reports to users
manage.py metrics_send_mail

# Create a timer (only supported in statsd backend currently)
with timing('mytimer'):
  for x in some_long_list:
     call_time_consuming_function(x)

# Or if a context manager doesn't work for you you can use a Timer class
t = Timer()
t.start()
something_that_takes_forever()
t.stop()
t.store('mytimer')

# Gauges are current status type dials (think fuel gauge in a car)
# These simply store and retrieve a value
gauge('current_fuel', '30')
guage('load_load', '3.14')

后端

app_metrics.backends.db(默认值)-此后端存储所有度量和 数据库中的聚合。注意:每次调用metric()都会生成 数据库写入,可能会降低总体性能 或者有交通拥挤的地方。

app_metrics.backends.mixpanel-此后端允许您对所有 您调用metric()到mixpanel。见Mixpanel documentation 关于他们的api的更多信息。

app_metrics.backends.statsd-此后端允许您对所有 调用statsd服务器的metric()。有关详细信息,请参见statsd 在他们的API上。

app_metrics.backends.redis-此后端允许您使用metric()和 gauge()方面,但不是应用程序度量的计时器方面。

app_metrics.backends.librato_backend-此后端允许您将度量发送到 天秤座。请参阅Librato documentation以获取有关其api的更多信息。 这需要Librato library。默认情况下,它使用天平来测量, 尽管可以通过将metric_type="counter"作为 关键字arg到metric()

app_metrics.backends.composite-此后端允许您组合多个 传递度量调用的后端。呼叫的后端 可以使用APP_METRICS_COMPOSITE_BACKENDS设置配置sent。这个 可以通过提供backends关键字参数在每个调用中重写:

metric('signups', 42, backends=['app_metrics.backends.librato',
                                'app_metrics.backends.db'])

设置

APP_METRICS_BACKEND-如果未定义,则默认为“app_metrics.backends.db”。

APP_METRICS_SEND_ZERO_ACTIVITY-防止在 今天没有活动(即测试期间)。默认为true

APP_METRICS_DISABLED-如果true,则不要跟踪度量,这对于 调试。默认为false

混合面板设置

设置APP_METRICS_BACKEND='app_metrics.backends.mixpanel'。

APP_METRICS_MIXPANEL_TOKEN-您的mixpanel.com api令牌

APP_METRICS_MIXPANEL_URL-允许重写api url端点

statsd设置

设置APP_METRICS_BACKEND='app_metrics.backends.statsd'。

APP_METRICS_STATSD_HOST-statsd服务器的主机名,默认为“localhost”

APP_METRICS_STATSD_PORT-statsd端口,默认为“8125”

APP_METRICS_STATSD_SAMPLE_RATE-statsd采样率,默认为1

redis设置

设置APP_METRICS_BACKEND='app_metrics.backends.redis'。

APP_METRICS_REDIS_HOST-redis服务器的主机名,默认为“localhost”

APP_METRICS_REDIS_PORT-redis端口,默认为“6379”

APP_METRICS_REDIS_DB-要使用的redis数据库号,默认为0

Librato设置

设置APP_METRICS_BACKEND='app_metrics.backends.librato'。

APP_METRICS_LIBRATO_USER-librato用户名

APP_METRICS_LIBRATO_TOKEN-librato api令牌

APP_METRICS_LIBRATO_SOURCE-librato数据源(例如,“staging”、“dev”…)

复合后端设置

设置APP_METRICS_BACKEND='应用程序MetriCS。后端。复合。

APP_METRICS_COMPOSITE_BACKENDS-默认使用的后端列表, 例如:

APP_METRICS_COMPOSITE_BACKENDS = ('librato', 'db', 'my_custom_backend',)

运行测试

要运行测试,需要安装一些要求,因此运行:

pip install -r requirements/test.txt

然后只需运行:

django-admin.py test --settings=app_metrics.tests.settings

待办事项

  • 改进文本和HTML模板以更好地显示趋势数据

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Map<String,String>传递给需要Map<String,Object>   java在循环中使用字符串而不是StringBuilder是否会造成内存损失?   jnlp如何更新java控制台JRE?   java更改、修改和重新打包CXFAPI源文件   JavaFXJava应用程序在Fedora上运行一段时间后关闭   使用来自不同类的方法的java   java如何通过ant脚本在linux中使用subst?   java在使用camunda modeler进行base64编码/解码时出错   获取java。netbeans、weblogic和fastswap设置为true时的lang.NoSuchMethodError   java如何提高FinalizerThread在GC中收集对象的优先级   java检测具有相同根的单词   netbeans crud应用程序中的java错误