Я создаю новый модуль filebeat для журнала пользовательских приложений и хочу сотрудничать с ним вместе с моим коллегой. Я понял, что клон является локальной копией только для меня, и у меня нет шансов сделать мои изменения видимыми для моего коллеги без их предварительного слияния с репо https://github.com/elastic/beats/, поэтому я решил разложить репозиторий 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, не став участником или не испортив исходный репо?
- Мои предположения об источнике моих ошибок создания даже близки? Если да, каково это правильное решение?