基于Docker部署ELK (Elasticsearch, Logstash, Kibana)集中日志處理平臺,及在Spring Boot應(yīng)用

當我們還是單體部署我們的Spring Boot項目的時候,日志通常都是放在我們的Linux服務(wù)器目錄,使用簡單的Spring Boot已經(jīng)包含的Logback框架即可實現(xiàn)。當我們基于Docker部署我們的分布式或者集群項目之后,這種方式已經(jīng)是走不通了,我們有必要搭建一套日志系統(tǒng),方便各個節(jié)點輸出日志到統(tǒng)一的日志系統(tǒng),統(tǒng)一處理日志。

ELK (Elasticsearch, Logstash, Kibana)是一個比較成熟的方案。基于Docker部署ELK變得更加簡單。

安裝Docker

這里就不介紹如何安裝Docker,請自行Google。

創(chuàng)建elk實例

我們基于github的docker-elk 項目來實現(xiàn)elk,拉取代碼:

$ git clone https://github.com/deviantony/docker-elk.git

啟動docker容器

$ cd docker-elk
$ docker-compose up -d

上面的命令會等待比較久,因為需要下載鏡像,會創(chuàng)建三個實例。

說明

docker-elk是基于官Docker官方的鏡像構(gòu)建:

Kibana的web入口:
http://localhost:5601

該elk棧的默認端口為:

  • 5000: Logstash TCP input.
  • 9200: Elasticsearch HTTP
  • 9300: Elasticsearch TCP transport
  • 5601: Kibana

配置SpringBoot應(yīng)用

  1. 在我們的Spring Boot項目build.gradle中增加依賴:
compile 'net.logstash.logback:logstash-logback-encoder:5.1'
  1. 添加配置文件為resources/logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <property name="LOGSTASH_HOST" value="${LOGSTASH_HOST:-${DOCKER_HOST:-localhost}}"/>
    <property name="LOGSTASH_PORT" value="${LOGSTASH_PORT:-5000}"/>

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>${LOGSTASH_HOST}:${LOGSTASH_PORT}</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>
    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

配置文件中通過LOGSTASH_HOST和LOGSTASH_PORT兩個環(huán)境變量來指定logstash的地址和端口。如果環(huán)境變量中沒有這兩項配置,會默認使用localhost5000

  1. 修改resources/application.properties
logging.config=classpath:logback-spring.xml
測試
@RunWith(SpringRunner::class)
@SpringBootTest
class LoggerTest {
    var logger = LoggerFactory.getLogger(LoggerTest::class.java)
    @Test
    fun test() {
        logger.info("ImWiki")
        logger.warn("ImWiki")
        logger.error("ImWiki")
        logger.debug("ImWiki")
    }
}

運行單元測試代碼,應(yīng)用就會產(chǎn)生日志,并通過Logstash輸出到Elastic search。

Kibana查看日志

在瀏覽器中打開http://localhost:5601可以看到Kibana dashboard的頁面,通過Kibana查看Elastic search的日志。

創(chuàng)建索引

當我們通過上面的測試產(chǎn)生了日志之后,我們必須先創(chuàng)建索引才能查看日志

image.png

在輸入框輸入logstash-*,然后下一步
image.png

檢索內(nèi)容
image.png

總結(jié)

通過Docker,只用非常簡單的幾步即可完成ELK集中日志處理平臺,非常方便管理部署在Docker或者其它地方的Spring Boot應(yīng)用的日志。

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

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

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