如何从elastalert调用elasticsearch - ELK - API?

时间:2017-04-19 21:11:43

标签: elasticsearch elastic-stack elastalert

这可能不是提出这个问题的正确位置。但我找不到这样做的文章。 我在CentOS上安装了以下软件包。

Elasticsearch (I don't need it as I am trying to talk to ELK stack cluster using an API. I don't want ealsticsearch run locally on the box where I have elastalert.)
ISO8601 or Unix timestamped data
Python 2.6 or 2.7
pip, see requirements.txt

但是,如何使用API​​调用弹性搜索集群。我有API和服务帐户这样做。 这是我想要的。 我应该修改elastalert-master / example_rules下的哪个文件?

我也尝试过更改config.yaml.example,但是一直在调用auth py文件和错误。 我知道我不需要授权任何东西,因为我有API和服务帐户。 我只需要使用elastakert作为cron就可以了。

请建议。

1 个答案:

答案 0 :(得分:0)

我熟悉Python,所以让我尝试用Python回答。我正在使用模块请求。

In [1]: import requests
In [2]: from requests.auth import HTTPBasicAuth

In [3]: url = 'http://es-server:9200/my_log*/_count'
In [4]: data = '''{
   ....:   "query": {
   ....:     "bool": {
   ....:       "must": [
   ....:         {
   ....:           "term": {
   ....:             "deployment": "testapp"
   ....:           }
   ....:         }
   ....:       ]
   ....:     }
   ....:   }
   ....: }'''

In [5]: resp = requests.get(url, auth = HTTPBasicAuth('esuser', 'espwd'), data = data)

In [6]: j = resp.json()

In [7]: j
Out[7]: 
{u'_shards': {u'failed': 0, u'successful': 185, u'total': 185},
 u'count': 2393083}