MQQ度量
mbq.metrics的Python项目详细描述
安装
$ 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...
发布新版本
- 在setup.py中插入版本
- 转到github中的版本和“起草新版本”
- 创建新版本后,travis ci将获取新版本并将其发送到pypi
常见问题
在哪里放置dogstatsd代理配置?
你不知道!mbq.metrics是预先准备好的,假设q如何运行它的服务。具体来说,我们假设每个服务运行在Docker容器中,并且该容器运行在运行DogstatsD代理的虚拟机上。通过这种方式,我们可以自动配置我们的客户机,以访问容器外部,并轻松地将度量值推送到代理。 阅读datadogpy documentation或in the source中的更多内容。