国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(實(shí)戰(zhàn))docker-compose部署分布式日志方案EFK(Elasticsearch+Fluentd+Kibana)

這篇具有很好參考價(jià)值的文章主要介紹了(實(shí)戰(zhàn))docker-compose部署分布式日志方案EFK(Elasticsearch+Fluentd+Kibana)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

背景

技術(shù)架構(gòu)

部署安裝

環(huán)境準(zhǔn)備

配置Logback并模擬產(chǎn)生日志

制作fluentd鏡像

運(yùn)行docker-compose

效果展示


背景

????????在現(xiàn)代的軟件開發(fā)和運(yùn)維領(lǐng)域,監(jiān)控和日志管理是至關(guān)重要的任務(wù)。隨著應(yīng)用程序規(guī)模的擴(kuò)大和分布式系統(tǒng)的普及,有效地跟蹤和分析日志數(shù)據(jù)成為了挑戰(zhàn)。Elasticsearch、Fluentd和Kibana(EFK)框架是一組流行的工具,可幫助您實(shí)現(xiàn)高效的日志收集、存儲(chǔ)和分析。

? ? ? ? 本文將介紹采集SpringCloud Logback日志為例,使用Docker容器化技術(shù)快速部署EFK架構(gòu)來滿足您的監(jiān)控和日志管理需求。
項(xiàng)目代碼:GitHub - huangyang1230/springboot_efk: EFK采集Springboot日志并展示

技術(shù)架構(gòu)

docker-compose安裝efk,docker,分布式,elasticsearch

如圖所示:

  1. 應(yīng)用程序?qū)崟r(shí)產(chǎn)生日志文件;
  2. Fluentd的tail組件采集并使用multiline解析;
  3. 采集到的日志數(shù)據(jù)經(jīng)過Fluentd的處理后,會(huì)被發(fā)送到Elasticsearch。Elasticsearch是一個(gè)高性能的搜索和分析引擎,用于存儲(chǔ)和索引日志數(shù)據(jù)。Fluentd與Elasticsearch之間通常使用名為fluent-plugin-elasticsearch的插件來建立連接和傳輸數(shù)據(jù)。一旦數(shù)據(jù)到達(dá)Elasticsearch,它將自動(dòng)建立索引,以便稍后的查詢和分析;
  4. 使用Kibana查看、搜索、分析日志。

部署安裝

環(huán)境準(zhǔn)備

  • docker和docker-compose 可以參考官方文檔

配置Logback并模擬產(chǎn)生日志

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" scanPeriod="60 seconds" debug="false">

    <springProperty scope="context" name="APP_NAME" source="spring.application.name" defaultValue="springBoot"/>
    <property name="LOG_HOME" value="/usr/local/logs"/>

    <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%line) - %highlight(%msg) %n"/>
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}:%line] - %msg%n"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符-->
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- Log file debug output -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/${APP_NAME}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/%d{yyyy-MM}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <logger name="java.sql.Connection" level="debug"/>
    <logger name="java.sql.Statement" level="debug"/>
    <logger name="java.sql.PreparedStatement" level="debug"/>

    <!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
    <root level="DEBUG">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

Java代碼模擬產(chǎn)生日志

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

import java.util.UUID;

/**
 * @author Yang Huang
 * @create 2023-10-21-11:21
 * @description TODO
 */
@Component
@Slf4j
public class LogFactory  implements InitializingBean{

    public void log() {
        log.debug("開始記錄日志");
        while (true) {
            log.debug("我是debug日志,{}", UUID.randomUUID().toString());
            log.info("我是info日志,{}", UUID.randomUUID().toString());

            try {
                int i = 1 / 0;
            } catch (Exception e) {
                log.error("產(chǎn)生了錯(cuò)誤", e);
            }
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        log();
    }
}

啟動(dòng)Springboot項(xiàng)目,讓日志文件生成到/usr/local/logs目錄下,下一步讓fluentd實(shí)時(shí)采集。

制作fluentd鏡像

由于官方fluentd鏡像不包含fluent-plugin-elasticsearch插件,需要自定義鏡像。Dockerfile文件內(nèi)容:

FROM fluent/fluentd:v1.16-debian-1

# Use root account to use apt
USER root

# below RUN includes plugin as examples elasticsearch is not required
# you may customize including plugins as you wish
RUN buildDeps="sudo make gcc g++ libc-dev" \
 && apt-get update \
 && apt-get install -y --no-install-recommends $buildDeps \
 && sudo gem install fluent-plugin-elasticsearch \
 && sudo gem sources --clear-all \
 && SUDO_FORCE_REMOVE=yes \
    apt-get purge -y --auto-remove \
                  -o APT::AutoRemove::RecommendsImportant=false \
                  $buildDeps \
 && rm -rf /var/lib/apt/lists/* \
 && rm -rf /tmp/* /var/tmp/* /usr/lib/ruby/gems/*/cache/*.gem

#COPY fluent.conf /fluentd/etc/
#COPY entrypoint.sh /bin/

USER fluent

在Dockerfile目錄運(yùn)行以下命令:

docker build -t fluentd_es:v1 . 

運(yùn)行docker-compose

一、文件目錄準(zhǔn)備

? ? ? ? fluentd

????????????????fluent.conf

? ? ? ? docker-compose.yml? ? ? ??

二、?fluent.conf內(nèi)容


<source>
  @type tail                      # 內(nèi)置的輸入方式,從源文件中獲取新的日志。
  path /usr/local/logs/*.log         # 掛載的服務(wù)器 Docker 容器日志地址
  pos_file /usr/local/logs/*.log.pos
  tag test.*                     # 設(shè)置日志標(biāo)簽
  read_from_head true
  <parse>
    @type multiline
    format_firstline /\d{4}-\d{1,2}-\d{1,2}/  #匹配日期開頭
    format1 /^(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) \[(?<thread>[^\]]+)\] (?<level>[^\s]+) (?<message>.*)/
  </parse>
</source>


<match **>
  @id elasticsearch           # 唯一標(biāo)識(shí)符
  @type elasticsearch         # elasticsearch 插件
#   @log_level info
  host "192.168.0.110"         #需要配置你IP
  port "9200"
  user "elastic"
  password "B6P0hW7x"
  logstash_format true
  logstash_prefix test
  logstash_dateformat %Y-%m-%d
  include_tag_key true
  tag_key @log_name
  <buffer>
    @type file                # 使用文件將緩沖區(qū)塊存儲(chǔ)在磁盤上
    path /usr/local/logs/fluentd.buffer
    flush_mode interval
    retry_type exponential_backoff
    flush_thread_count 2
    flush_interval 5s
    retry_forever
    retry_max_interval 30
    overflow_action block
  </buffer>
</match>

三、?docker-compose.yml? 內(nèi)容

version: "3.8"

#網(wǎng)絡(luò)配置
networks:
  network:
    ipam:
      config:
        - subnet: "10.10.10.0/24"

#服務(wù)配置
services:
  #es服務(wù)
  elasticsearch:
    image: elasticsearch:7.14.0
    container_name: es
    privileged: true
    environment:
      ES_JAVA_OPTS: -Xms1g -Xmx1g
      node.name: es-single
      cluster.name: es-cluster
      discovery.type: single-node
      # 開啟es跨域
      http.cors.enabled: "true"
      http.cors.allow-origin: "*"
      http.cors.allow-headers: Authorization
      # 安全控制(根據(jù)個(gè)人需要選擇打開或關(guān)閉)
      xpack.security.enabled: "true"
      xpack.security.transport.ssl.enabled: "true"
      ELASTIC_PASSWORD: "B6P0hW7x"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es/data:/usr/share/elasticsearch/data
      - ./es/plugins:/usr/share/elasticsearch/plugins
      - ./es/logs:/usr/share/elasticsearch/logs
    ports:
      - "9200:9200"
      - "9300:9300"
    ## 指定ip
    networks:
      network:
        ipv4_address: 10.10.10.100
  #kibana
  kibana:
    image: kibana:7.14.0
    restart: always
    container_name: kibana
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    environment:
      ELASTICSEARCH_HOSTS: '["http://192.168.0.110:9200"]'
      ELASTICSEARCH_USERNAME: 'elastic'
      ELASTICSEARCH_PASSWORD: 'B6P0hW7x'
    ## 指定ip
    networks:
      network:
        ipv4_address: 10.10.10.120
  #fluentd
  fluentd:
    image: fluentd_es:v1
    container_name: fluentd
    restart: always
    environment:
      TZ: "Asia/Shanghai"
    volumes:
      - ./fluentd:/fluentd/etc
       #左邊/usr/local/logs是你應(yīng)用生成日志的路徑,根據(jù)實(shí)際情況調(diào)整
      - /usr/local/logs:/usr/local/logs
    depends_on:
      - elasticsearch
    ## 指定ip
    networks:
      network:
        ipv4_address: 10.10.10.130


注意:以上腳本中?"192.168.0.110"需要改成本地IP

最后運(yùn)行命令啟動(dòng)容器:

docker-compose up -d

效果展示

一、打開http://localhost:5601/login?next=%2F登錄,賬號(hào)密碼在腳本中。

二、創(chuàng)建索引

docker-compose安裝efk,docker,分布式,elasticsearch

docker-compose安裝efk,docker,分布式,elasticsearch

docker-compose安裝efk,docker,分布式,elasticsearchdocker-compose安裝efk,docker,分布式,elasticsearch

docker-compose安裝efk,docker,分布式,elasticsearch

三、查看索引數(shù)據(jù)

docker-compose安裝efk,docker,分布式,elasticsearch

docker-compose安裝efk,docker,分布式,elasticsearch

至此,你可以在Kibana中查看應(yīng)用日志。

完結(jié)?。。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-777761.html

到了這里,關(guān)于(實(shí)戰(zhàn))docker-compose部署分布式日志方案EFK(Elasticsearch+Fluentd+Kibana)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 在Ubuntu系統(tǒng)上部署Docker和Docker-Compose服務(wù)(實(shí)戰(zhàn)篇)

    在這篇文章中,我們將從查看防火墻狀態(tài)開始,逐步引導(dǎo)大家完成Docker和Docker-Compose的安裝、配置以及使用過程。通過學(xué)習(xí)這些關(guān)鍵步驟,你將更加熟練地運(yùn)用容器技術(shù),為未來的項(xiàng)目提供更便捷的開發(fā)和部署方案。 無論你是剛剛接觸Docker的新手,還是希望進(jìn)一步優(yōu)化Docker在

    2024年01月17日
    瀏覽(21)
  • minio分布式集群安裝部署實(shí)戰(zhàn)詳細(xì)手冊(cè)

    minio分布式集群安裝部署實(shí)戰(zhàn)詳細(xì)手冊(cè)

    Minio是GlusterFS創(chuàng)始人之一Anand Babu Periasamy發(fā)布新的開源項(xiàng)目?;贏pache License v2.0開源協(xié)議的對(duì)象存儲(chǔ)項(xiàng)目,采用Golang實(shí)現(xiàn),客戶端支Java,Python,Javacript, Golang語言。 其設(shè)計(jì)的主要目標(biāo)是作為私有云對(duì)象存儲(chǔ)的標(biāo)準(zhǔn)方案。主要用于存儲(chǔ)海量的圖片,視頻,文檔等。非常適合于存儲(chǔ)

    2024年02月12日
    瀏覽(25)
  • accelerate 分布式技巧實(shí)戰(zhàn)--部署ChatGLM-6B(三)

    下載相關(guān)文件: 正常情況下,我們使用Chat-GLM需要的顯存大于13G,內(nèi)存沒有評(píng)估過,但上述的肯定是不夠的,16G應(yīng)該可以。 GPU使用4.9G,內(nèi)存使用5.5G。 GPU使用9.7G,內(nèi)存使用5.9G。第一輪輸入你好后GPU使用11.2G。 注意,這里我們?cè)O(shè)置設(shè)備映射為balanced,并只使用前兩塊GPU。顯卡

    2024年02月09日
    瀏覽(17)
  • Docker部署ZooKeeper分布式協(xié)調(diào)服務(wù)

    1、準(zhǔn)備工作 2、創(chuàng)建TEST容器,將conf目錄COPY出來,在映射進(jìn)去,方便后續(xù)維護(hù)管理! 3、運(yùn)行容器 4、測(cè)試鏈接zookeeper 正常輸出內(nèi)容:

    2024年02月07日
    瀏覽(24)
  • 使用 Docker 部署分布式存儲(chǔ)系統(tǒng)——Ceph

    使用 Docker 部署分布式存儲(chǔ)系統(tǒng)——Ceph

    最近工作中接觸了一個(gè) Python + Flask 的新項(xiàng)目,項(xiàng)目中使用了 Ceph 對(duì)象存儲(chǔ)服務(wù)。遂在開發(fā)環(huán)境使用 Docker 搭建了一套 Ceph 集群。 Ceph 官方文檔 Ceph 是一個(gè)開源的分布式存儲(chǔ)系統(tǒng),提供了對(duì)象存儲(chǔ)、塊存儲(chǔ)和文件系統(tǒng)三種存儲(chǔ)接口。Ceph 將數(shù)據(jù)存儲(chǔ)在邏輯存儲(chǔ)池中,使用 CRUSH 分

    2024年04月15日
    瀏覽(24)
  • springBoot分布式 + jdk17 部署到docker

    本地springBoot打包成jar包,上傳到服務(wù)器上,再當(dāng)前目錄新建Dockerfile FROM openjdk:17-jdk-alpine COPY *.jar /app.jar CMD echo \\\"======dockertest======\\\" EXPOSE 8081 ENTRYPOINT [\\\"java\\\",\\\"-jar\\\",\\\"/app.jar\\\"] 進(jìn)入當(dāng)前目錄執(zhí)行: docker build -t set-day-backend-1.0.0.nsapshot . 生成新的鏡像,再執(zhí)行 docker run -d -p 8888:8888 --na

    2024年01月17日
    瀏覽(20)
  • 使用Docker部署開源分布式任務(wù)調(diào)度系統(tǒng)DolphinScheduler

    使用Docker部署開源分布式任務(wù)調(diào)度系統(tǒng)DolphinScheduler

    ?? 博客主頁 : 小羊失眠啦. ?? 系列專欄 : 《C語言》 《數(shù)據(jù)結(jié)構(gòu)》 《Linux》 《Cpolar》 ?? 感謝大家點(diǎn)贊??收藏?評(píng)論?? 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。 本篇教程和大家分享一下DolphinSc

    2024年02月05日
    瀏覽(48)
  • 【Docker】Docker+Zipkin+Elasticsearch+Kibana部署分布式鏈路追蹤

    【Docker】Docker+Zipkin+Elasticsearch+Kibana部署分布式鏈路追蹤

    點(diǎn)擊跳轉(zhuǎn):Docker安裝MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常見服務(wù)全套(質(zhì)量有保證,內(nèi)容詳情) 本文主要討論在Elasticsearch和Kibana安裝好合適版本的前提下,繼續(xù)整合Zipkin。 一般的,它們的工作過程是這樣的:Spring Cloud微服務(wù)把調(diào)用鏈路的日志發(fā)送給Zipkin,Zipkin把數(shù)據(jù)發(fā)

    2024年02月14日
    瀏覽(29)
  • 可視化分布式調(diào)度框架PowerJob部署docker版

    可視化分布式調(diào)度框架PowerJob部署docker版

    PowerJob(原OhMyScheduler)是全新一代分布式任務(wù)調(diào)度與計(jì)算框架,其主要功能特性如下: ● 使用簡(jiǎn)單:提供前端Web界面,允許開發(fā)者可視化地完成調(diào)度任務(wù)的管理(增、刪、改、查)、任務(wù)運(yùn)行狀態(tài)監(jiān)控和運(yùn)行日志查看等功能。 ● 定時(shí)策略完善:支持 CRON 表達(dá)式、固定頻率、

    2024年02月04日
    瀏覽(29)
  • 云原生之深入解析分布式存儲(chǔ)系統(tǒng)Ceph的環(huán)境部署和實(shí)戰(zhàn)操作

    云原生之深入解析分布式存儲(chǔ)系統(tǒng)Ceph的環(huán)境部署和實(shí)戰(zhàn)操作

    ① 什么是 Ceph ? Ceph 是當(dāng)前非常流行的開源分布式存儲(chǔ)系統(tǒng),具有高擴(kuò)展性、高性能、高可靠性等優(yōu)點(diǎn),同時(shí)提供塊存儲(chǔ)服務(wù)(rbd)、對(duì)象存儲(chǔ)服務(wù)(rgw)以及文件系統(tǒng)存儲(chǔ)服務(wù)(cephfs),Ceph 在存儲(chǔ)的時(shí)候充分利用存儲(chǔ)節(jié)點(diǎn)的計(jì)算能力,在存儲(chǔ)每一個(gè)數(shù)據(jù)時(shí)都會(huì)通過計(jì)算得出該數(shù)據(jù)

    2024年02月09日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包