一、安装  
在docker中安装部署ELK+filebeat
 
二、主要配置  
 - type: log
 
   # Change to true to enable this input configuration.
   enabled: true
 
   # Paths that should be crawled and fetched. Glob based paths.
   paths:
     - /home/centos/pip_v2.csv  #源路径
     #- c:\programdata\elasticsearch\logs\*
   #exclude_lines: ["^Restaurant Name,"]  #第一行为字段头以"Restaurant Name"开头,不要第一行
   multiline:
     pattern: ^\d{4}
     #pattern: ',\d+,[^\",]+$'
     negate: true
     match: after
     max_lines: 1000
     timeout: 30s
  
 
 
 
三、关于elastic的pipline  
https://hacpai.com/article/1512990272091
 
我简单介绍主流程,详情见上链接
 
1.开启数据预处理 ,node.ingest: true
 
2.向es提交pipline ,并命名为my-pipeline-id
 
PUT _ingest/pipeline/my-pipeline-id  {  "description" : "describe pipeline",  "processors" : [  {  "set" : {  "field": "foo",  "value": "bar"  }  }  ]  }
 
3.以上pipline的作用 
 
若产生新的数据,会新增一个字段为foo:bar
 
4.curl的pipline即时测试 
 
POST _ingest/pipeline/_simulate
 
是一个测试接口,提供pipline的规则和测试数据,返回结果数据
 
 
四、关于grok  
是pipline中的正则匹配模式,以上规则的复杂版
 
 POST _ingest/pipeline/_simulate
 {
   "pipeline": {
     "description": "grok processor",
   "processors" : [
     {
       "grok": {
         "field": "message",
         "patterns": ["%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}"]
       }
     }
   ]
   },
   "docs": [
     {
       "_index": "index",
       "_type": "type",
       "_id": "id",
       "_source": {
        "message": "55.3.244.1 GET /index.html 15824 0.043"
       }
     }
   ]
 }
  
 
 
五、使用pipline导入csv  
 utput.elasticsearch:
   # Array of hosts to connect to.
   hosts: ["localhost:9200"]
   #index: "csvindex"
   pipline: "my-pipeline-id"
   # Protocol - either `http` (default) or `https`.
   #protocol: "https"
  
 
测试结果pipline配置后,并没生效。
 
 
六、结论  
1.filebeat 导入csv的资料很少,主要为pipline方式,测试几个失败。
 
2.J和数据组并没有filebaeat 导入csv的成功案例。J不太建议使用
 
结论:filebeat导csv并不方便,建议采用logstash。
 
一般日志收集可使用logstash,每行的信息会存到message中