Совместная работа над новым модулем filebeat - PullRequest
0 голосов
/ 13 марта 2019

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

Мои вопросы:

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

1 Ответ

0 голосов
/ 23 марта 2019

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

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

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

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

...