# Нужна помощь с http body в heartbeat/metricbeat

**URL:** <https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684>\
**Category:** Вопросы на русском языке\
**Created:** [October 30, 2018, 3:39pm UTC](https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684 "2018-10-30T15:39:37Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Luq](https://avatars.discourse-cdn.com/v4/letter/l/82dd89/32.png) [@Luq](https://discuss.elastic.co/u/Luq)\
**Post date:** [October 30, 2018, 3:39pm UTC](https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684/1 "2018-10-30T15:39:37Z")

</div>

У меня есть несколько сайтов, которые я хочу мониторить. Просто код 200 мне не подходит. Я бы хотел получить слово/линию из сайта.  
Извиняюсь за наивность вопроса и спасибо за помощь!

---

<div class="post-metadata">

**Author:** ![Luq](https://avatars.discourse-cdn.com/v4/letter/l/82dd89/32.png) [@Luq](https://discuss.elastic.co/u/Luq)\
**Post date:** [October 30, 2018, 3:47pm UTC](https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684/2 "2018-10-30T15:47:51Z")

</div>

Для примера. сайт [https://www.elastic.co](https://www.elastic.co) если я использую heartbeat http или metricbeat http module, то я хочу вместо код 200 получит, например, вот этот линию из body (подразумевая эта линия никогда не меняется) `<h1 class="banner-title">Get Started with Elasticsearch</h1>`  
Либо любая другая часть html body

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [October 30, 2018, 9:14pm UTC](https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684/3 "2018-10-30T21:14:43Z")

</div>

Посмотрите последний пример секции [http check](https://www.elastic.co/guide/en/beats/heartbeat/current/configuration-heartbeat-options.html#monitor-http-check) в документации. Такое решение Вам подойдет?

---

<div class="post-metadata">

**Author:** ![Luq](https://avatars.discourse-cdn.com/v4/letter/l/82dd89/32.png) [@Luq](https://discuss.elastic.co/u/Luq)\
**Post date:** [October 31, 2018, 12:49am UTC](https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684/4 "2018-10-31T00:49:34Z")

</div>

Спасибо за ответ. Я видел тот пример перед тем, как написать здесь.

> ```
> - type: http
> schedule: '@every 5s'
> urls: ["https://myhost:80"]
> check.request:
> method: GET
> headers:
> 'X-API-Key': '12345-mykey-67890'
> check.response:
> status: 200
> body: '(?s)first.*second.*third'
> 
> ```

Могли бы вы объяснить мне использовать данный пример с моим примером выше ([https://elastic.co](https://elastic.co))?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [October 31, 2018, 2:01pm UTC](https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684/5 "2018-10-31T14:01:34Z")

</div>

> [@Luq](#):
>
> Могли бы вы объяснить мне использовать данный пример с моим примером выше ([https://elastic.co](https://elastic.co))?

Нет, не могу. Из-за вот [этого бага](https://github.com/elastic/beats/issues/8588) с [elastic.co](http://elastic.co) работать данный пример не будет до следующей версии. Могу показать с elasticsearch:

```auto
- type: http

  # List or urls to query
  urls: ["http://localhost:9200"]

  # Configure task schedule
  schedule: '@every 10s'
  check.response:
    status: 200
    body: 'You Know, for Search'

```

---

<div class="post-metadata">

**Author:** ![Luq](https://avatars.discourse-cdn.com/v4/letter/l/82dd89/32.png) [@Luq](https://discuss.elastic.co/u/Luq)\
**Post date:** [November 1, 2018, 1:41am UTC](https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684/6 "2018-11-01T01:41:39Z")

</div>

Спасибо!  
Тогда это скорее всего не будет работать и на моём сайте так как он тоже довольно большой.  
Из вашего примера, вы взяли часть body. Значит ли это, что я взять любую часть из моего сайта и использовать в heartbeat body для поиска.  
Просто я где-то читал на английском форуме, что на данный момент эта функция довольно ограничена и только работает если "body matches byte to byte". Так ли это? Просто пытаюсь разобраться, что именно добавлять в body section of heartbeat.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [November 1, 2018, 2:03pm UTC](https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684/7 "2018-11-01T14:03:23Z")

</div>

> [@Luq](#):
>
> Значит ли это, что я взять любую часть из моего сайта и использовать в heartbeat body для поиска.

В данном случае под `body` подразумевается [HTTP Message Body](https://ru.wikipedia.org/wiki/HTTP#%D0%A2%D0%B5%D0%BB%D0%BE_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F) и не элемент HTML `body`, то есть, другими словами это вся страница , а не только та часть, которая находиться между `<body>` и `</body>`.

То есть, вы можете выбрать:

> **`status`** - The expected status code. If this setting is not configured or it’s set to 0, any status code other than 404 is accepted.
> 
> **`headers`** - The required response headers.
> 
> **`body`** - A list of regular expressions to match the the body output. Only a single expression needs to match.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [November 29, 2018, 2:03pm UTC](https://discuss.elastic.co/t/http-body-heartbeat-metricbeat/154684/8 "2018-11-29T14:03:41Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
