#git #github #filebeat #elastic-beats
#git #github #filebeat #elastic-beats
Вопрос:
Я создаю новый модуль filebeat для пользовательского журнала приложений и хочу поработать над ним вместе со своим коллегой. Я понял, что клон — это локальная копия только для меня, без возможности сделать мои изменения видимыми для моего коллеги без их предварительного объединения сhttps://github.com/elastic/beats / repo, поэтому я решил разветвить репозиторий beats вместо его клонирования, а затем клонировал этот разветвитель.
Я настроил свою среду разработки, следуя инструкциям. Запуск make
под filebeat не дает выходных данных, поэтому я предполагаю, что все в порядке.
Я создаю модуль, набор файлов и настраиваю свой конвейер приема для набора файлов. Мой pipeline.json
выглядит следующим образом:
{
"description": "Pipeline for parsing CA Service Desk Manager stdlogs",
"processors": [
{
"grok": {
"field": "message",
"patterns": [
"%{TIMESTAMP:casdm.stdlog.timestamp} %{HOSTNAME:casdm.stdlog.hostname} %{PROCESS:casdm.stdlog.process.name} %{PID:casdm.stdlog.process.id} %{LOGLEVEL:casdm.stdlog.level} %{FILENAME:casdm.stdlog.file.name} %{POSINT:casd.stdlog.file.line} %{DATA:casdm.stdlog.message}"
],
"pattern_definitions": {
"TIMESTAMP": "%{MONTHNUM2}/%{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND}",
"PROCESS": "%{USERNAME}",
"PID": "%{POSINT}",
"LOGLEVEL": "(FATAL|EXIT|SIGNIFICANT|SEVERE_ERROR|ERROR|WARNING|INFORMATION|MILESTONE|TRACE|VERBOSE)",
"FILENAME": "(?:[A-Za-z0-9_. -] )"
}
}
}
],
"on_failure" : [{
"set" : {
"field" : "error.message",
"value" : "{{ _ingest.on_failure_message }}"
}
}]
}
Это еще не все, но, будучи новичком в создании модуля filebeat, я пока исключаю все особые случаи формата журнала.
Затем мне поручено сгенерировать поля на основе конфигурации конвейера. Все выглядит хорошо:
~/go/src/github.com/jvalkonen/beats/filebeat $ make create-fields MODULE=casdm FILESET=stdlog
Fields.yml generated for casdm/stdlog
Однако в разделе fields.yml
не найдено ни одного module/casdm/stdlog/_meta/
(независимо от регистра), module/casdm/_meta/fields.yml
а уровень модуля module/casdm/stdlog/ingest/pipeline.json
не содержит ни одного из моих полей, установленных в ,,. Это уже указывает на то, что что-то не так, но я не знаю, что, поскольку вывод указывает, что все хорошо. Если я затем запущу make update
для создания документации и конфигурации, я получу сообщение об ошибке, которое, похоже, указывает не на проблемы с pipeline.json
, а на саму настройку разработки и, возможно, на тот факт, что я разветвил проект вместо простого его клонирования:
~/go/src/github.com/jvalkonen/beats/filebeat $ make update
mage update
Error: failed to find github.com/elastic/beats/dev-tools/mage in the project's vendor
failed to find github.com/elastic/beats/dev-tools/mage in the project's vendor
make: *** [update] Error 1
Что-то в конвейере сборки ссылается на эластичный путь github вместо моего разветвленного репозитория. Я мог бы выполнить поиск и заменить все эти ссылки, но пытаюсь ли я сделать это полностью наоборот и есть ли более простой способ добиться того, что я пытаюсь сделать?
Мои вопросы:
- На общем уровне можно ли совместно работать над клонированным репозиторием или его нужно сначала разветвить?
- Поскольку я довольно новичок в git и GitHub, есть ли более простой способ совместной работы над репозиторием GitHub, не становясь участником или не портя исходный репозиторий?
- Близки ли вообще мои предположения об источнике моих ошибок make? Если да, то каково правильное решение для этого?
Ответ №1:
Оказывается, моя проблема заключалась в том, что я был новичком в git и go и либо не смог прочитать некоторые инструкции о том, как правильно настроить среду разработки, либо этих инструкций там не было.
В любом случае, это то, что мне нужно было сделать (как указано в этом потоке эластичного сообщества:
- Установите правильную версию Go (она уже была)
- Клонируйте официальное репозиторий beats (вот где я ошибся, я разветвил его и клонировал свой форк)
- Разветвите официальное репозиторий beats на github
- Установите мой fork в качестве источника для клонированного репозитория и добавьте официальное репозиторий beats в качестве восходящего
- Установите переменные path и установите mage (у меня была настроена среда, но я не помню, чтобы видел команду установки для mage, поэтому я предполагаю, что это была одна ошибка в моем процессе)
После этого я больше не получаю ошибок, и до сих пор все команды, которые мне были нужны для работы, работали, включая создание filebeat с нуля.