我正在为自定义应用程序日志构建一个新的filebeat模块,我希望与我的同事合作。我知道克隆只是我的本地副本,没有机会让我的同事看到我的变化而没有首先合并到https://github.com/elastic/beats/仓库,所以我选择分叉beats存储库而不是克隆它然后克隆叉子。
我按照instructions建立了我的开发环境。在filebeat下运行make
没有输出所以我认为一切都很好。
我生成模块,文件集,并为文件集设置我的摄取管道。我的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模块创建是新的我现在排除了日志格式的所有特殊情况。
我是instructed to generate the fields based on the pipeline configuration。一切都很好看:
~/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路径而不是我的分叉repo。我可以去搜索并替换所有这些引用但是我试图完全向后执行此操作并且有更简单的方法来实现我想要做的事情吗?
我的问题是:
原来我的问题是作为一个git和go noob的组合,要么没有阅读有关如何正确设置开发环境的指令,要么没有那些指令。
无论如何,这是我需要做的事情(按照this Elastic community thread的指示:
在此之后我不再出错,到目前为止我需要工作的所有命令都有效,包括从头开始构建filebeat。