BigData LogManager для 1С

Grafana вроде кто-то из наших да пробовал и по моему забросил

Я пробую influxdb - но пока академически и вообще для других целей.

Если коротко - всё что в этом списке https://github.com/avelino/awesome-go - пробую всё

1 Симпатия

Вопрос по импорту Logstash. Плагин существует только для SQLite логов? А то у нас с переходом на 8.3.7 пришлось вернуть старые логи, иначе rmngr отъедал все ядра.

Оффтоп к awesome-go.

Знакомый пилит - https://github.com/vburenin/firempq

Учитывая бэкграунд - а он 10 лет высоконагруженными системами в Google/Cisco/Juniper занимается, может быть интересная очередь.

1 Симпатия

Да вроде все - и sqlite и txt
Посмотрю завтра

офтопик - Валентин, нам тебя не хватало :wink:

1 Симпатия

Вообщем запустил единый лог для всех своих филиалов.
Что очень нравится, так это сам elastic. На скриншотах льются данные сплошным потоком(журналы с самого начала) с 3х филиалов и остальные 6 филиалов уже загрузились полностью и работают в штатном режиме, подтягивая только актуальные данные.
Машина под elastic это i5 с 4гб озу и полудохлым сата диском на 1тб. И она вполне справляется, что в целом неожиданно. Как эта вся магия эластика работает низом, мне непонятно, но поиск происходит крайне быстро. В данный момент логов залилось уже на 40гб.


Но есть в этом всем и ложка дегтя.Logstash штука ловкая, но как агент он что то ведет себя не очень. Без видимых причин бывает, что теряет подключение к elastic, хотя связь есть и стабильна. Причем процесс не падает полностью, а остается висеть, пока вручную не перезапустишь. На двух серверах такую проблему получил, пока причины неясны.
Ну и конечно как агент, logstash весьма прожорлив, может отъедать до 500мб озу, так же необходимо ставить яву для него и ruby для плагина.

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

Пока разбирался во всей этой теме, решил поискать агентов для logstash и наткнулся на неожиданное.
У elastic есть такая штука, как Beats. https://www.elastic.co/products/beats
Сам пока не попробовал, но по описанию, выглядит крайне интересно: есть beat для сбора счетчиков производительности серверов, windows even log, для текстовых логов.
И насколько я понял, эти агенты весьма легковесны и написаны на GO.
Заманчиво переключить лог 1с назад в текстовый режим и пользоваться этими агентами.
Может кто то пользовался уже? Что скажете?

Я же на Инфостарте именно про Beats рассказывал. И именно из за GoLang. Получается интересней

@Bronislav ты меня навел на интересную мысль.

Включить в стэк образ с логером - наверное надо на GitHub выложить такой адаптер.
Причем сделать его докер ориентированным.

типа

docker run -d --name log-forwarder -v /var/serv1c/log:/log1C --link logstash-elastic vanessa/server-beats

попробую на выходных.

@Bronislav - ты надеюсь свой Elastic развернул через docker ?

elastic через докер, потом еще плагин newRelic к нему привязал через doker-compose.
Меня в момент рассказа про Beats видимо не было. Работает стабильнее? Удобнее?

Стабильней - да.
Удобней - да.

Beats я озвучивал в момент мониторинга и Elastic Search.

Есть там интересная веселуха с forecasting - прогнозный мониторинг который.

Единственная проблема - что необходимо писать плагин на GoLang. То есть свой “Битс”

Попробовал winLogBeat. Это просто праздник какойто: занимает 20кб озу, требует только powerShell для установки, в комплекте визуализация для kibana.

Посмотрев на платформу Beats, заметил такую штуку: они дробят индексы в ES по дням. В этом имеется какой-то смысл с точки зрения производительности\удобства использования?

Считается что так удобней потом строить прогнозирование - то есть подсчитать forecasting.

@Bronislav приветствую. Пытаюсь поднять ELK, но плагин logstash-input-sqlite валится с ошибкой:

➜  bin git:(master) logstash -e "input { sqlite { path => '/Users/ak/Documents/vanessa/БД/1Cv8Log/1Cv8.lgd' } } output { elasticsearch { hosts => '10.211.55.11:9200' } }"

Settings: Default pipeline workers: 4
The error reported is:
  Java::JavaSql::SQLException: [SQLITE_NOTADB]  File opened that is not a database file (file is encrypted or is not a database)

Не подскажете куда копать?

Оказалось, ошибка была именно в файле. Пересоздал файл, получил другую ошибку.

Attempted to send a bulk request to Elasticsearch configured at '["http://10.211.55.11:9200/"]', but an error occurred and it failed! Are you sure you can reach elasticsearch from this machine using the configuration provided? {:client_config=>{:hosts=>["http://10.211.55.11:9200/"], :ssl=>nil, :transport_options=>{:socket_timeout=>0, :request_timeout=>0, :proxy=>nil, :ssl=>{}}, :transport_class=>Elasticsearch::Transport::Transport::HTTP::Manticore, :logger=>nil, :tracer=>nil, :reload_connections=>false, :retry_on_failure=>false, :reload_on_failure=>false, :randomize_hosts=>false}, :error_message=>"Cannot serialize instance of: Sequel::JDBC::Database", :error_class=>"JrJackson::ParseError", :backtrace=>["com/jrjackson/JrJacksonBase.java:78:in `generate'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/jrjackson-0.3.8/lib/jrjackson/jrjackson.rb:59:in `dump'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/multi_json-1.11.2/lib/multi_json/adapters/jr_jackson.rb:20:in `dump'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/multi_json-1.11.2/lib/multi_json/adapter.rb:25:in `dump'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/multi_json-1.11.2/lib/multi_json.rb:136:in `dump'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/elasticsearch-api-1.0.15/lib/elasticsearch/api/utils.rb:102:in `__bulkify'", "org/jruby/RubyArray.java:2414:in `map'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/elasticsearch-api-1.0.15/lib/elasticsearch/api/utils.rb:102:in `__bulkify'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/elasticsearch-api-1.0.15/lib/elasticsearch/api/actions/bulk.rb:82:in `bulk'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/http_client.rb:53:in `non_threadsafe_bulk'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/http_client.rb:38:in `bulk'", "org/jruby/ext/thread/Mutex.java:149:in `synchronize'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/http_client.rb:38:in `bulk'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:162:in `safe_bulk'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:101:in `submit'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:86:in `retrying_submit'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:29:in `multi_receive'", "org/jruby/RubyArray.java:1653:in `each_slice'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:28:in `multi_receive'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/output_delegator.rb:119:in `worker_multi_receive'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/output_delegator.rb:65:in `multi_receive'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/pipeline.rb:290:in `output_batch'", "org/jruby/RubyHash.java:1342:in `each'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/pipeline.rb:290:in `output_batch'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/pipeline.rb:221:in `worker_loop'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/pipeline.rb:190:in `start_workers'"], :level=>:error}
Cannot serialize instance of: Sequel::JDBC::Database {:class=>"JrJackson::ParseError", :backtrace=>["com/jrjackson/JrJacksonBase.java:78:in `generate'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/jrjackson-0.3.8/lib/jrjackson/jrjackson.rb:59:in `dump'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/multi_json-1.11.2/lib/multi_json/adapters/jr_jackson.rb:20:in `dump'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/multi_json-1.11.2/lib/multi_json/adapter.rb:25:in `dump'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/multi_json-1.11.2/lib/multi_json.rb:136:in `dump'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/elasticsearch-api-1.0.15/lib/elasticsearch/api/utils.rb:102:in `__bulkify'", "org/jruby/RubyArray.java:2414:in `map'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/elasticsearch-api-1.0.15/lib/elasticsearch/api/utils.rb:102:in `__bulkify'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/elasticsearch-api-1.0.15/lib/elasticsearch/api/actions/bulk.rb:82:in `bulk'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/http_client.rb:53:in `non_threadsafe_bulk'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/http_client.rb:38:in `bulk'", "org/jruby/ext/thread/Mutex.java:149:in `synchronize'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/http_client.rb:38:in `bulk'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:162:in `safe_bulk'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:101:in `submit'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:86:in `retrying_submit'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:29:in `multi_receive'", "org/jruby/RubyArray.java:1653:in `each_slice'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.1-java/lib/logstash/outputs/elasticsearch/common.rb:28:in `multi_receive'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/output_delegator.rb:119:in `worker_multi_receive'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/output_delegator.rb:65:in `multi_receive'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/pipeline.rb:290:in `output_batch'", "org/jruby/RubyHash.java:1342:in `each'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/pipeline.rb:290:in `output_batch'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/pipeline.rb:221:in `worker_loop'", "/usr/local/Cellar/logstash/2.2.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-core-2.2.2-java/lib/logstash/pipeline.rb:190:in `start_workers'"], :level=>:warn}

При этом вывод в stdout работает вроде

inputs git:(master) ✗ logstash -e "input { sqliteonec { path => '/Users/ak/Documents/vanessa/БД/1Cv8Log/1Cv8.lgd' } } output { stdout { } }" --pluginpath /Users/ak/Documents/vanessa/logstash-input-sqlite/lib/
sqliteonec plugin is using the 'milestone' method to declare the version of the plugin this method is deprecated in favor of declaring the version inside the gemspec. {:level=>:warn}
sqliteonec plugin doesn't have a version. This plugin isn't well
 supported by the community and likely has no maintainer. {:level=>:warn}
Settings: Default pipeline workers: 4
Logstash startup completed
2016-03-20T12:31:43.117Z ak.local %{message}
2016-03-20T12:31:43.121Z ak.local %{message}
2016-03-20T12:32:08.347Z ak.local %{message}
2016-03-20T12:32:08.349Z ak.local %{message}

Сложно тут что то подсказать, можно только сванговать, что либо достучаться до эластика не может по этому пути, либо с сериализацией в json какая то беда в типах данных.

Я увидел в указанном файле JRUBY @akunin - я знаю что multi_json штука собираемая из исходников. Поэтому очень похоже на ошибку именно в jruby пакете

Не получилось у меня подружиться с LogStash, написал свой “logstash” с покером и куртизанками. Скоро будет на githab.

Что реализовал:

  1. Проверка существования шаблона и создание шаблона под ЖР
  2. Хранение индексов по дням/месяцам/годам
  3. Автоочистку ЖР после успешной выгрузки.

Картинка для привлечения внимания:

Круто, не на .net хоть? под linux можно будет запустить?