Непрерывный запрос по URL json в Elastic

Вопрос или проблема

Мне нужно опрашивать каждый час URL и сохранять (маленькие) данные, которые он возвращает в формате JSON, в Elastic…. Могу ли/должен ли я сделать это из Kibana с помощью плагина? Или есть какая-то легковесная служба, которую можно запустить на Dockerfile для опроса и отправки в Elastic с относительно небольшой конфигурацией?

Я бы просто написал скрипт и запустил его как cron-процесс. Что-то простое, как

curl "https://worldtimeapi.org/api/timezone/Europe/Amsterdam" | curl -X POST "http://localhost:9200/my-index/_doc"

должно сработать, но, возможно, вам придется добавить дополнительные параметры, если, например, вы используете аутентификацию для вашего экземпляра Elastic.

Ответ или решение

Для реализации задачи по регулярному опросу URL и хранению получаемых данных в формате JSON в Elasticsearch, существует несколько подходов. Я предлагаю рассмотреть использование простого скрипта в сочетании с планировщиком заданий cron, а также возможность применения контейнеризации через Docker для легкости развертывания.

Подход 1: Скрипт и cron

Наиболее простой и эффективный метод — создать bash-скрипт, который будет выполнять запрос к API и отправлять данные в Elasticsearch. Вы можете использовать curl для опроса желаемого URL и отправки данных в Elasticsearch через HTTP POST. Пример такого скрипта может выглядеть следующим образом:

#!/bin/bash

# URL для опроса
API_URL="https://worldtimeapi.org/api/timezone/Europe/Amsterdam"

# Запрос к API и отправка данных в Elasticsearch
curl -s "$API_URL" | curl -X POST "http://localhost:9200/my-index/_doc" -H 'Content-Type: application/json'

Настройка cron

Чтобы скрипт выполнялся каждый час, необходимо добавить его в cron. Откройте редактор crontab, выполнив команду:

crontab -e

И добавьте строку:

0 * * * * /path/to/your/script.sh

Эта команда будет запускать ваш скрипт в начале каждого часа.

Подход 2: Использование Docker

Если вы предпочитаете решение с контейнерами, можно использовать Docker для создания легковесного сервиса. Вот пример Dockerfile, который позволяет вам запустить тот же скрипт:

FROM alpine:latest

RUN apk add --no-cache curl

COPY script.sh /usr/local/bin/script.sh
RUN chmod +x /usr/local/bin/script.sh

CMD ["sh", "-c", "while true; do /usr/local/bin/script.sh; sleep 3600; done"]

Создание Docker образа и его запуск

  1. Поместите свой скрипт в файл script.sh рядом с вашим Dockerfile.
  2. Постройте образ:
docker build -t my-elastic-poller .
  1. Запустите контейнер:
docker run -d my-elastic-poller

Альтернативные решения

Хотя использование Kibana непосредственно для выполнения этой задачи нецелесообразно, существуют внешние инструменты, такие как Logstash или верификация API с помощью Fluentd. Эти решения могут предоставлять гибкость в обработке данных, но могут быть излишними для вашего случая, где требуется только простое решение.

Заключение

Для задачи регулярного опроса JSON-данных и их отправки в Elasticsearch, наилучшим решением будет использование простого скрипта и планировщика cron. Если вы ищете способ ускорить развертывание и упростить управление, использование Docker может стать отличным выбором. Оба подхода обеспечивают необходимую функциональность с минимальными затратами времени и ресурсов.

Убедитесь, что используете правильные параметры аутентификации, если ваш экземпляр Elasticsearch требует их, и протестируйте весь процесс перед развертыванием в продуктивной среде.

С уважением,
[Ваше имя]
IT Эксперт

Оцените материал
Добавить комментарий

Капча загружается...