Прямая запись в Elasticsearch

Для анализа своих данных в ELK не обязательно использовать Logstash для доставки логов, возможно писать в ES напрямую. Это удобно в таких случаях:

  • статистика обращения к API по пользователям, в различных разрезах, можно передать больше информации, чем содержится в логах веб-сервера
  • «Какие данные отправились/пришли в 1С» - для отладки
  • «Через какое время с момента размещения заказа партнер может подтвердить резерв пути в ЛК»

Вначале нужно создать шаблон Elasticsearch для приема своих данных.

Так можно отправить два документа:

POST _bulk
{ "index" : { "_index" : "1c-exchange-ws", "_type" : "_doc" } }
{ "guid": "cbd40940-a92e-4374-91e6-295d46eb2cd1", "method": "POST", "request": "... some request data ..." }
{ "index" : { "_index" : "1c-exchange-ws", "_type" : "_doc" } }
{ "guid": "ad2f7319-12fa-4902-8e34-93934172389f", "method": "GET", "response": "... some response data ..." }

Так можно получить документы:

GET /1c-exchange-ws/_search
{
  "query": { "match_all": {} }
}

Через curl

curl -sH 'Content-Type: application/json' -XGET 'localhost:9200/1c-exchange-ws/_search' -d '{ "query": { "match_all": {} } }' | jq "."

Через nc

echo -n '{ "version": "1.1", "host": "example.org", "short_message": "A short message", "level": 5, "_some_info": "foo" }' | nc -w0 -u graylog.example.com 12201

ключ -u - UDP

PHP-библиотеки

Печать/экспорт