環境說明:
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,但是會降的。。。哈哈