elk + filebeat 具体配置内容

2022-01-04 00:00:00 节点 配置 安装 配置文件 希望

环境说明:

OS: centos 7

内存:12G (三个节点,每个节点配置相同)

追加: 软件版本: 5.4.1

节点名称(代替):elk-log-s1 elk-log-s2 elk-log-s3

kibana安装在 elk-log-s1节点

logstash安装在 elk-log-s2节点

elasticsearch三个节点都安装!!

filebeat在客户端安装,也就是你要收集日志文件的服务器上。

所有的服务启停都是systemd脚本,因为是直接用rpm包安装。


kibana部分: /etc/kibana/kibana.yml

elasticsearch.username: "elastic"

elasticsearch.password: "elkpasswd"

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://elk-log-s1:9200"

logging.dest: /data/kibana/log/kibana.log

PS: kibana的systemd脚本没有改动用的默认配置。其他配置默认。


logstash部分: /etc/logstash/conf.d/f2l.yml 自定义配置文件,/etc/logstash/logstash.yml 默认配置文件,定义一些log、端口、ip之类的信息。

/etc/logstash/logstash.yml 除了定义这些,其他的也没有修改。

path.data: /data/logstash

path.config: /etc/logstash/conf.d

path.logs: /data/logstash/log

/etc/logstash/conf.d/f2l.yml 这是自定义的收集日志相关的配置,截取一部分作为说明。

input {

    beats {

    codec => multiline {

        pattern => "^%{TIMESTAMP_ISO8601}"

        negate => true

        what => "previous"

    }

    port => 5044

    }

}

filter {

  if [type] == "elkelk" {

    grok {

        match => { "message" => "(?m)%{TIMESTAMP_ISO8601:timestamp}\s+\[%{DATA:thread}\]\s+%{LOGLEVEL:loglevel}\s+\[%{DATA:TraceId},%{DATA:SpanId},%{DATA:ParentSpanId},%{DATA:Export}\]\s+%{DATA:class}:\s+%{GREEDYDATA:message}" }

        overwrite => ["message"]

        remove_field => [ "YEAR" ,"MONTHNUM","MONTHDAY","HOUR","MINUTE","SECOND","ISO8601_TIMEZONE"]

      }

    date {

       match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss.SSS" ]

       target => "@timestamp"

       remove_field => ["timestamp"]

    }

  }

}

output {

 if [type] == "elkelk" {

   elasticsearch {

   hosts => ["http://elk-log-s2:9200"]

   index => "elkelk"

   document_type => "elkelk"

   user => "elk"

   password => "elk"

   }

  }

}

上面的格式复制过来后完成变了,不知道怎么弄。。。如果你懂得yaml的话,应该是要注意格式问题的,行缩进之类的。

elasticsearch部分:

我是直接将内存参数值调整到一个固定值,没有使用中文指导里面说的那个变量,因为按照说的export并没有启动,其实它是要写到一个配置文件里面去的,这是后来才发现的。那个配置文件就是 /etc/sysconfig/elasticsearch。我是直接改了jvm.options 配置文件,将默认值就行修改,从2g改到6g,因为内存总共就12g,这个文件也就改了这个其他没有修改。

/etc/elasticsearch/elasticsearch.yml

cluster.name: elk-elk-log

path.data: /data/elasticsearch

path.logs: /data/elasticsearch/log

network.host: elk-log-s2

node.name: "node-2"

http.port: 9200

node.master: true

node.data: true

discovery.zen.ping.unicast.hosts: [elk-log-s2,elk-log-s3,elk-log-s1]

discovery.zen.minimum_master_nodes: 2

gateway.recover_after_nodes: 2

gateway.expected_nodes: 2


filebeat部分:

因为所有的hostname部分都是主机名来代替ip设置,所以先要将logstash的ip和hostname写到 /etc/hosts 里面去。再进行下面的配置。

/etc/filebeat/filebeat.yml

filebeat.prospectors:

- input_type: log

   document_type: elkelk

   paths:

#log文件路径

      - /data/logs/elkelk.log

output.logstash:

# The Logstash hosts

    hosts: ["elk-log-s2:5044"]

PSPS:如果你是用脚本去安装配置,其实 network.host 和 node.name 可以直接写成 “ $HOSTNAME ” ,会自动填写主机名省得每台去上修改。

相关文章