ELK教程3:logstash的部署、SpringBoot整合ELK+Filebeat

本篇文章主要講解如下安裝Logstash,logstash依賴于Java環(huán)境,首先安裝Java,安裝腳本如下:

yum install java

logstash安裝

Logstash的安裝腳本如下:

# 下載logstash的壓縮包
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.zip
# 解壓壓縮包 
upzip logstash-7.2.0.zip
# 將解壓的包移到/usr/share目錄下
mv logstash-7.2.0 /usr/share/
cd /usr/share/logstash-7.2.0/

stash第一個(gè)事件

Logstash管道有兩個(gè)必需元素,輸入和輸出,以及一個(gè)可選元素filter。 輸入插件使用來自源的數(shù)據(jù),過濾器插件在您指定時(shí)修改數(shù)據(jù),輸出插件將數(shù)據(jù)寫入目標(biāo)。
如下如

image

要測試Logstash安裝成功,運(yùn)行最基本的Logstash管道。 執(zhí)行以下的命令

 bin/logstash -e 'input { stdin { } } output { stdout {} }'

-e標(biāo)志使您可以直接從命令行指定配置。 通過在命令行指定配置,可以快速測試配置,而無需在迭代之間編輯文件。 示例中的管道從標(biāo)準(zhǔn)輸入stdin獲取輸入,并以結(jié)構(gòu)化格式將輸入移動(dòng)到標(biāo)準(zhǔn)輸出stdout。
啟動(dòng)Logstash后,等到看到“Pipeline main started”,然后在命令提示符下輸入hello world,顯示的如下:

hello world
{
          "host" => "VM_0_13_centos",
       "message" => "hello world",
      "@version" => "1",
    "@timestamp" => 2019-07-02T06:26:28.684Z
}

配置logstash輸出到elasticsearch

修改logstash的安裝目錄的config目錄下的logstash-sample.conf文件,配置如下:

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://10.0.0.5:9200", "http://10.0.0.13:9200", "http://10.0.0.17:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

在上面的配置中,輸入數(shù)據(jù)源為filebeat,關(guān)于filebeat見下一小節(jié),輸出源為elasticsearch。更多的輸入和輸出源的配置見官網(wǎng)https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html

用下面的命令從后臺(tái)啟動(dòng)logstash:

./bin/logstash -f config/logstash-sample.conf >logstash.log  2>&1 &

logstash結(jié)合filebeat

在分布式系統(tǒng)中,一臺(tái)主機(jī)可能有多個(gè)應(yīng)用,應(yīng)用將日志輸出到主機(jī)的指定目錄,這時(shí)由logstash來搬運(yùn)日志并解析日志,然后輸出到elasticsearch上。由于于
logstash是java應(yīng)用,解析日志是非的消耗cpu和內(nèi)存,logstash安裝在應(yīng)用部署的機(jī)器上顯得非常的笨重。最常見的做法是用filebeat部署在應(yīng)用的機(jī)器上,logstash單獨(dú)部署,然后由
filebeat將日志輸出給logstash解析,解析完由logstash再傳給elasticsearch。

下載filebeat,下載命令如下:

 wget  https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-linux-x86_64.tar.gz
tar -zxvf filebeat-7.2.0-linux-x86_64.tar.gz
mv filebeat-7.2.0-linux-x86_64 /usr/share/
cd /usr/share/filebeat-7.2.0-linux-x86_64/

vim filebeat.yml修改配置:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/service-hi.log
output.logstash:
  hosts: ["192.168.1.4:5044"]

主要配置的是日志的搜集目錄為/var/log/service-hi.log,這個(gè)目錄是應(yīng)用service-hi輸出日志的文件。輸出到logstsh的地址為192.168.1.4

啟動(dòng)filebeat,執(zhí)行一下命令:

sudo chown root filebeat.yml
sudo ./filebeat -e >filebeat.log 2>&1 &

Spring Boot整合ELK+Filebear構(gòu)建日志系統(tǒng)

在SpringBoot應(yīng)用service-hi,定時(shí)輸出日志如下:

@SpringBootApplication
public class ElkTestApplication {
    Logger logger= LoggerFactory.getLogger(ElkTestApplication.class);
    Random random=new Random(10000);

    public static void main(String[] args) {
        SpringApplication.run(ElkTestApplication.class, args);
        new ElkTestApplication().initTask();
    }

    private void initTask(){
        Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                logger.info("seed:"+random.nextInt(999999));
            }
        },100,100, TimeUnit.MILLISECONDS);
    }
}

然后在部署了filebeat的機(jī)器上部署該應(yīng)用,應(yīng)用的輸出文件為/var/log/service-hi.log,應(yīng)用啟動(dòng)命令如下:

nohup java -jar  elk-test-0.0.1-SNAPSHOT.jar > /var/log/service-hi.log 2>&1  &

應(yīng)用啟動(dòng)成功后日志輸出如下:

2019-07-02 17:13:13.530  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:562779
2019-07-02 17:13:13.630  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:963836
2019-07-02 17:13:13.730  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:825694
2019-07-02 17:13:13.830  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:33228
2019-07-02 17:13:13.930  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:685589

這時(shí)的日志數(shù)據(jù)的傳輸路徑如下圖:


1.png

在kibana組件上查看,可以看到創(chuàng)建了一個(gè)filebeat開頭的數(shù)據(jù)索引,如下圖:

微信截圖_20190702170554.png

在日志搜索界面,可以看到service-hi應(yīng)用輸出的日志,如圖所示:

微信截圖_20190702171411.png

參考資料

https://www.elastic.co/guide/en/logstash/7.2/installing-logstash.html#_yum
https://www.elastic.co/guide/en/logstash/7.2/first-event.html
https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容