环境说明:
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 ” ,会自动填写主机名省得每台去上修改。
差不多就这么多内容。。。以后有想起来的,再进行补充。
再贴一张图,这是我们小集群目前运行14天的状态,内存虽然已经到了10g,但是会降的。。。哈哈