MQQ度量

mbq.metrics的Python项目详细描述


https://img.shields.io/pypi/v/mbq.metrics.svghttps://img.shields.io/pypi/l/mbq.metrics.svghttps://img.shields.io/pypi/pyversions/mbq.metrics.svghttps://img.shields.io/travis/managedbyq/mbq.metrics/master.svg

安装

$ pip install mbq.metrics
?✨

保证新鲜。

开始

settings.py中初始化mbq.metrics,如下所示:

frommbqimportenv,metricsENV=env.get_environment("ENV_NAME")SERVICE_NAME='service-name'metrics.init(SERVICE_NAME,ENV,constant_tags={'env':ENV_NAME})

使用django中间件的http度量

这个库还包含一个django中间件,您可以使用它为您的服务创建一个很棒的HTTP Datadog dashboard!中间件向datadog报告以下指标:

  • 请求持续时间(毫秒)
  • 状态代码(200、404、503等)
  • 状态范围(2xx、4xx、5xx等)
  • 响应内容长度
  • 请求路径

将中间件添加到django项目并配置datadog仪表板是快速而简单的:只要在settings.py文件中的MIDDLEWARE常量中包含mbq.metrics.contrib.django.middleware.timing.TimingMiddleware

塔达!

使用wsgi中间件(flask)的http度量

还包括中间件,它可以很容易地插入flask应用程序中,以生成与上面django部分中引用的相同类型的度量。需要mbq.metrics>;=0.3.0。

请参见the implementation in Isengard以获取示例。

测试

测试会自动放在Travis CI中,但您也可以使用docker compose在本地运行测试。 我们现在使用tox在多个python环境中进行本地测试。在此之前,请使用pyenv安装以下python解释器:cpython{2.7、3.5、3.6}和pypy3

安装并运行tox:

$ docker-compose build py36
Building py36
Step 1/5 : ARG IMAGE
Step 2/5 : FROM $IMAGE
 ---> 60cd00be8967
Step 3/5 : WORKDIR /tox
 ---> Running in f55aee265e33
Removing intermediate container f55aee265e33
 ---> 2b31757df863
Step 4/5 : WORKDIR /app
 ---> Running in a1bc5e661ca3
Removing intermediate container a1bc5e661ca3
 ---> 6f1f17a29a8e
Step 5/5 : COPY . .
 ---> 55eef13da5e6
Successfully built 55eef13da5e6
Successfully tagged mbqmetrics_py36:latest
$ docker-compose up py36
Recreating mbqmetrics_py36_1 ... done
Attaching to mbqmetrics_py36_1
py36_1   | Requirement already up-to-date: pip in /usr/local/lib/python3.6/site-packages (18.0)
py36_1   | Collecting tox
py36_1   |   Downloading https://files.pythonhosted.org/packages/df/53/13660f04ef09ece4aefcce6b8f79c1586fc34dee1cbedd7c153e02f93489/tox-3.2.1-py2.py3-none-any.whl (62kB)
py36_1   | Collecting tox-venv
py36_1   |   Downloading https://files.pythonhosted.org/packages/bd/bd/f981a5bcd5b90b65fbfd3e6d6d93d592721e2e946eaa08e9ea5d325a4077/tox_venv-0.3.1-py2.py3-none-any.whl
py36_1   | Collecting tox-travis
py36_1   |   Downloading https://files.pythonhosted.org/packages/a0/f0/55a0d561161ceac9da512d221547cd0405f0cbf5dfba7352cd36d7bfdace/tox_travis-0.10-py2.py3-none-any.whl
py36_1   | Collecting py<2,>=1.4.17 (from tox)
py36_1   |   Downloading https://files.pythonhosted.org/packages/c8/47/d179b80ab1dc1bfd46a0c87e391be47e6c7ef5831a9c138c5c49d1756288/py-1.6.0-py2.py3-none-any.whl (83kB)
py36_1   | Collecting six<2,>=1.0.0 (from tox)
py36_1   |   Downloading https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
py36_1   | Requirement already satisfied, skipping upgrade: setuptools>=30.0.0 in /usr/local/lib/python3.6/site-packages (from tox)(40.0.0)
py36_1   | Collecting pluggy<1,>=0.3.0 (from tox)
py36_1   |   Downloading https://files.pythonhosted.org/packages/f5/f1/5a93c118663896d83f7bcbfb7f657ce1d0c0d617e6b4a443a53abcc658ca/pluggy-0.7.1-py2.py3-none-any.whl
py36_1   | Collecting virtualenv>=1.11.2 (from tox)
py36_1   |   Downloading https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c35d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl (1.9MB)
py36_1   | Installing collected packages: py, six, pluggy, virtualenv, tox, tox-venv, tox-travis
py36_1   | Successfully installed pluggy-0.7.1 py-1.6.0 six-1.11.0 tox-3.2.1 tox-travis-0.10 tox-venv-0.3.1 virtualenv-16.0.0
py36_1   | GLOB sdist-make: /app/setup.py
py36_1   | py36-django111 create: /tox/py36-django111
py36_1   | py36-django111 installdeps: ., Django>=1.11,<2.0
py36_1   | py36-django111 inst: /tox/dist/mbq.metrics-0.4.0.zip
py36_1   | py36-django111 installed: You are using pip version 10.0.1, however version 18.0 is available.,You should consider upgrading via the 'pip install --upgrade pip' command.,certifi==2018.8.24,chardet==3.0.4,datadog==0.22.0,decorator==4.3.0,Django==1.11.15,idna==2.7,mbq.metrics==0.4.0,pytz==2018.5,requests==2.19.1,simplejson==3.16.0,urllib3==1.23
py36_1   | py36-django111 runtests: PYTHONHASHSEED='2612051782'
py36_1   | py36-django111 runtests: commands[0]| python -Wall -m unittest discover tests
py36_1   | /tox/py36-django111/lib/python3.6/site-packages/datadog/dogstatsd/base.py:306: DeprecationWarning: invalid escape sequence \:
py36_1   |return string.replace('\n', '\\n').replace('m:', 'm\:')
py36_1   | ................
py36_1   | ----------------------------------------------------------------------
py36_1   | Ran 16 tests in 0.094s
py36_1   |
py36_1   | OK
# ...snip...

发布新版本

  1. 在setup.py中插入版本
  2. 转到github中的版本和“起草新版本”
  3. 创建新版本后,travis ci将获取新版本并将其发送到pypi

常见问题

在哪里放置dogstatsd代理配置?

你不知道!mbq.metrics是预先准备好的,假设q如何运行它的服务。具体来说,我们假设每个服务运行在Docker容器中,并且该容器运行在运行DogstatsD代理的虚拟机上。通过这种方式,我们可以自动配置我们的客户机,以访问容器外部,并轻松地将度量值推送到代理。 阅读datadogpy documentationin the source中的更多内容。

API参考

贡献

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

推荐PyPI第三方库


热门话题
java如何创建带有图标的按钮?   java我想实现定制的Android应用程序物理键盘键,我需要修改qwerty吗。kl文件或如何添加新的键盘映射?   java Toast并没有显示在Android应用程序中,但它首先被显示,然后在两天后停止   java如何检查URLConnection是否已处于连接状态?   java无法访问其他类中的方法(Android Studio)   java无法获取访问字符串中字符的方法   使用jdax/dex2jar反编译后的java类   java如何使用Junit获取数据块报告   如何在java/j2ee中以编程方式为新闻网站生成RSS?   java如何使用已声明的事实类型动态重新加载规则?   java单例模式使用   javaq:Mockito使用@Mock和@Autowired   java在Raspberry Pi上将RXTX集成到OSGi包时未解决的需求