Совместная работа над новым модулем filebeat

#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 вместо моего разветвленного репозитория. Я мог бы выполнить поиск и заменить все эти ссылки, но пытаюсь ли я сделать это полностью наоборот и есть ли более простой способ добиться того, что я пытаюсь сделать?

Мои вопросы:

  1. На общем уровне можно ли совместно работать над клонированным репозиторием или его нужно сначала разветвить?
  2. Поскольку я довольно новичок в git и GitHub, есть ли более простой способ совместной работы над репозиторием GitHub, не становясь участником или не портя исходный репозиторий?
  3. Близки ли вообще мои предположения об источнике моих ошибок make? Если да, то каково правильное решение для этого?

Ответ №1:

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

В любом случае, это то, что мне нужно было сделать (как указано в этом потоке эластичного сообщества:

  1. Установите правильную версию Go (она уже была)
  2. Клонируйте официальное репозиторий beats (вот где я ошибся, я разветвил его и клонировал свой форк)
  3. Разветвите официальное репозиторий beats на github
  4. Установите мой fork в качестве источника для клонированного репозитория и добавьте официальное репозиторий beats в качестве восходящего
  5. Установите переменные path и установите mage (у меня была настроена среда, но я не помню, чтобы видел команду установки для mage, поэтому я предполагаю, что это была одна ошибка в моем процессе)

После этого я больше не получаю ошибок, и до сих пор все команды, которые мне были нужны для работы, работали, включая создание filebeat с нуля.