用于在ElasticSearch中存储时间序列度量的Django应用程序。

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


django elasticsearch指标

pypiBuild StatusCode style: black

用于在Elasticsearch中存储时间序列度量的Django应用程序

先决条件

  • Python 2.7或>;=3.6
  • django 1.11或2.0
  • 弹性搜索6

安装

pip install django-elasticsearch-metrics

快速启动

"elasticseach_metrics"添加到INSTALLED_APPS

INSTALLED_APPS+=["elasticsearch_metrics"]

定义ELASTICSEARCH_DSL设置

ELASTICSEARCH_DSL={"default":{"hosts":"localhost:9200"}}

此设置传递给^{}所以 它采用相同的参数

在您的一个应用程序中,在metrics.py中定义一个新的度量。

Metric^{}的一个子类。

# myapp/metrics.pyfromelasticsearch_metricsimportmetricsclassPageView(metrics.Metric):user_id=metrics.Integer(index=True,doc_values=True)

使用sync_metrics管理命令确保index template 因为你的度量是在elasticsearch中创建的。

# This will create an index template called myapp_pageview
python manage.py sync_metrics

现在添加一些数据:

frommyapp.metricsimportPageViewuser=User.objects.latest()# By default we create an index for each day.# Therefore, this will persist the document# to an index called, e.g. "myapp_pageview_2020.02.04"PageView.record(user_id=user.id)

出去找找!

# perform a search across all page viewsPageView.search()

每月或每年指数

默认情况下,为保存度量值的每一天创建索引。 您可以更改此项以创建每月或每年的索引,方法是更改 ELASTICSEARCH_METRICS_DATE_FORMAT设置。

# settings.py# Monthly:ELASTICSEARCH_METRICS_DATE_FORMAT="%Y.%m"# Yearly:ELASTICSEARCH_METRICS_DATE_FORMAT="%Y"

索引设置

可以通过设置来配置索引模板设置 Metric.Index.settings

classPageView(metrics.Metric):user_id=metrics.Integer()classIndex:settings={"number_of_shards":2,"refresh_interval":"5s"}

索引模板

每个Metric都有自己的index template。 索引模板名称和glob模式是从app标签计算出来的 包含应用程序和类的名称例如,aPageViewmyapp/metrics.py中定义的类将具有具有 命名为myapp_pageview,模板全局模式为myapp_pageview_*

如果在应用程序外部声明Metric,则需要设置 app_label

classPageView(metrics.Metric):classMeta:app_label="myapp"

或者,可以显式设置template_name和/或template

classPageView(metrics.Metric):user_id=metrics.Integer()classMeta:template_name="myapp_pviews"template="myapp_pviews_*"

抽象度量

fromelasticsearch_metricsimportmetricsclassMyBaseMetric(metrics.Metric):user_id=metrics.Integer()classMeta:abstract=TrueclassPageView(MyBaseMetric):classMeta:app_label="myapp"

可选的工厂集成

importfactoryfromelasticsearch_metrics.factoryimportMetricFactoryfrom..myapp.metricsimportMyMetricclassMyMetricFactory(MetricFactory):my_int=factory.Faker("pyint")classMeta:model=MyMetricdeftest_something():metric=MyMetricFactory()# index metric in ESassertisinstance(metric.my_int,int)

配置

  • ELASTICSEARCH_DSL:必需。连接设置传递到 ^{}
  • ELASTICSEARCH_METRICS_DATE_FORMAT:创建时使用的日期格式 索引。默认值:%Y.%m.%d(ElasticSearch使用的相同日期格式 date math

管理命令

  • sync_metrics:确保已为创建了索引模板 你的标准。
  • show_metrics:pretty打印所有注册度量的列表。
  • check_metrics:检查索引模板是否同步出口 如果任何指标不同步,则返回错误代码。

信号

信号位于elasticsearch_metrics.signals模块中。

  • pre_index_template_create(Metric, index_template, using):在生成新索引之前发送 模板进入ElasticSearch。
  • post_index_template_create(Metric, index_template, using):在创建新索引后发送 模板进入ElasticSearch。
  • pre_save(Metric, instance, using, index):在 Metric的save()方法
  • post_save(Metric, instance, using, index):在 metric的save()方法。

注意事项

classMyMetric(metrics.Metric):classMeta:source=metrics.MetaField(enabled=True)

资源

许可证

麻省理工学院许可。

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

推荐PyPI第三方库


热门话题
java实现双锁并发队列   java如何更改SpringWS 2.4.4版或更高版本中maxOccurs的默认限制?   java Selenium RC如何处理动态行?   java何时引入Javac StringBuilder/StringBuffer优化?   java mediaplayer在R.raw Android上失败   java JPA2:不区分大小写,就像在任何地方匹配一样   如何从JDK15中提取java预览类文件?   java与mySQL删除查询不一致   从Shutdownow()返回的java列表<Runnable>无法转换为提交的Runnable   java如何从回调接口获取对象值?   java如何获得视图的高度,在xml中可见性和高度定义为wrap_内容?   postgresql Mybatis在启动时遇到“由以下原因引起:java.net.UnknownHostException:localhost”,为什么?   带有实例调用的方法调用的java intellij格式化程序换行   由于特定的第三方库,java Proguard产生运行时错误   动画JAVA JPanel同时滑出和滑入