ELK6.3.2搭建配置文件篇(filebeat版)

https://zhuanlan.zhihu.com/p/161007340

 

应用下载地址

Elasricsearch版本:6.3.2 ,下载地址:

Kibana版本:6.3.2 ,下载地址:

FileBeat版本6.3.2,下载地址:

 

FileBeat比logstash更轻量级,这里以filebeat收集Java应用日志为例;

★★★★★:es6.3.2需要分配用户,不能使用root启动,同时,安装过程中会遇到各种各样的问题,一点点解决吧;

 

启动方式:

1、Elasticsearch
./bin/elasticsearch -d   # 后台启动

2、kibana
nohup ./bin/kibana &   # 后台启动
关闭kibana使用 netstat -tunlp|grep 5601   然后kill pid
如:tcp        0      0 0.0.0.0:5601            0.0.0.0:*               LISTEN      13082/./bin/../node
pid为 13082

3、filebeat
nohup ./filebeat -e -c filebeat-01.yml -d "Publish" & > nohup.out  # 后台启动
关闭  kill pid

 

ElasticSearch配置文件elasticsearch.yml

cluster.name: ard-es # 集群中的名称
node.name: master-node # 该节点名称
node.master: true  # 意思是该节点为主节点
node.data: false  # 表示这是数据节点 
discovery.zen.ping.unicast.hosts: ["192.168.1.1", "192.168.1.2", "192.168.1.3"] # 配置自动发现
http.cors.enabled: true # sticsearch中启用CORS
http.cors.allow-origin: "*"  
xpack.security.enabled: True
xpack.ml.enabled: true
network.host: 0.0.0.0
http.port: 9200

# 在这里我做了三台集群,另外两台的配置文件
node.name: node-data-01/02
node.master: false  # 意思是该节点为主节点
node.data: true  # 表示这是数据节点 

# 一主两从,主节点不作为数据节点

 

Kibana配置文件kibana.yml

server.port: 5601  # 配置kibana的端口
server.host: "0.0.0.0"
elasticsearch.url: "http://127.0.0.1:9200"  # 配置es服务器的ip,如果是集群则配置该集群中主节点的ip
logging.dest: /data/ELK6.3.0/kibana-6.3.2-linux-x86_64/logs/kibana.log  # 配置kibana的日志文件路径,不然默认是messages里记录日志

 

filebeat配置文件filebeat.yml

#最头疼的就是filebeat的配置文件了,也遇到了各种各样的问题,配置文件如下:
# 是否开启自定义字段作为顶级字段存储到文档中,如果自定义字段名称与其他字段名称冲突,则自定义字段将覆盖其他字段
fields_under_root: true
# 自定义字段(我这里是定义的当前应用的ip地址,用于应用多节点部署时,明确日志输入来源,尝试过修改beat.name和hostname,均以失败告终)
fields:
  applyIp: 192.168.1.2

filebeat.inputs:
- type: log  # 日志输入类型,文件日志以log标记
  paths:
    - /htdocs/my-base/logs/my-base.log  # 日志在服务器的绝对位置
  fields:
    type: my-base  # 相当于标签的意思,在这里给打一个标签,在输入到ES的时候可以用来区分输送的ES索引
  tail_files: true   # 配置为true时,filebeat将从新文件的最后位置开始读取
  #指定正则表达式去匹配指定的行,例如multiline.pattern: '^\[',意思是去匹配以[开头的行,下面的正则是 以日期开头的、以空格开头的、以Caused by开头的、以INFO开头的等.....
  #下面这正则有很多问题,关于多行日志这一块,参考了很多的文章,目前项目中的那种打印的json串多行的,filebeat还没解决
  multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}|^[[:space:]]|^Caused by:|^INFO|^at'
  #定义pattern是否被否认,默认值是false,若为true,意思是对上面的匹配进行反转(就是实际去匹配不以pattern的行)
  multiline.negate: false
  # 将上面的匹配条件的(或者是不匹配的,取决上面是true还是false) 结果,是放到行首 还是放到行位  after和before
  multiline.match: after

- type: log
  paths:
    - /htdocs/my-gateway/logs/my-gateway.log
  fields:
    type: my-gateway
  tail_files: true
  multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}|^[[:space:]]|^Caused by:|^INFO|^at'
  multiline.negate: false
  multiline.match: after
  
#-------------------------- Elasticsearchbled output ------------------------------  
output.elasticsearch:
  hosts: ["192.168.1.1:9200"]    # 指定es服务器的ip端口
  indices:
    - index: "my-gateway"   # es索引
      when.equals:
        fields.type: "my-gateway" # filebeat中的标签 区分索引
    - index: "my-base"
      when.equals:
        fields.type: "my-base"
        
#============================= Filebeat modules ===============================
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
#==================== Elasticsearch template setting ==========================
setup.template.settings:
  index.number_of_shards: 5
  index.number_of_replicas: 1
  index.codec: best_compression

 

在filebeat的配置文件中,遇到的问题比较多,并且都还没有解决,不过不影响ELK的使用;

1、多行日志问题

异常日志目前已经解决完毕,不过json串输出的多行日志这种还是没有得到解决

2、记录日志所属服务器

在文档中说的修改beat.name和beat.hostname,尝试了各种写法,目前还是没有得到解决;最后是使用的自定义字段来解决的这个问题;

 

看看最终的成效

 

发布于 07-16

posted on 2020-11-16 08:55  四海骄阳  阅读(207)  评论(0编辑  收藏  举报

导航