iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0

昨天成功初步把 Fluentd 給跑了起來,

今天來更深入地閱讀 Fluentd 的文件,以更全面地瞭解它的用法,Let's go!


Configuration

在昨天的範例中,我們用了官方提供的簡易範例給 Fluentd container 讀取,

<source>
  @type http
  port 9880
  bind 0.0.0.0
</source>

<match **>
  @type stdout
</match>

而官方文件在 Life of a Fluentd event 中介紹了設定檔的主要概念,在 Config File Syntax 則有對每個關鍵字做詳細說明,

我目前先簡單分成了三類,或說三個階段:

  1. 輸入方式
  2. 過濾
  3. 輸出

首先定義 Fluentd 開放的輸入方式,

source 關鍵字定義了寫入 Log 給 Fluentd 的方式,像是在昨天的範例是建立一個 http 的 API,另一種我認為會很常見的是 tail 一個檔案,持續追蹤該檔案新增的內容,

接著定義是否要過濾內容,例如需要包含 xxx 字串、或是去除包含 ooo 字串的內容,

最後定義這些 log 內容要輸出到哪裡,可能是檔案、資料庫、或上傳到雲端平台的 Log 服務。


Docker Logging Driver

Docker 預設會把 Log 寫入到指定的路徑,並以 JSON 的方式把時間、內容儲存下來,

根據 Docker 的文件 Configure logging drivers,我們也可以設定為其他的 Logging Driver,更改一個 Container 對於 stdout、stderr 輸出時的行為,可以發現 fluentd 也在支援的清單上,

Fluentd 的文件也有專門的一頁在介紹他們的 Logging driver: Docker Logging Driver


Docker Compose

接著來到 Fluentd 的下一份文件 Docker Compose

範例闡述了如何透過 Docker compose 來加入 Fluentd 來做 Log,

其中 web container 可以當作是我們要提供出去的服務,例如前端網頁或 API:

version: "3"
services:
  # 提供 Web 服務的 apache container
  web:
    image: httpd
    ports:
      - "80:80"
    # 舊版的 network 設定,用來連接到 fluentd container
    links:
      - fluentd
    # 修改 Logging driver 為 fluentd
    logging:
      driver: "fluentd"
      options:
        fluentd-address: localhost:24224
        tag: httpd.access

  # Fluentd container
  fluentd:
    build: ./fluentd
    volumes:
      - ./fluentd/conf:/fluentd/etc
    links:
      - "elasticsearch"
    ports:
      - "24224:24224"
      - "24224:24224/udp"

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.13.1
    container_name: elasticsearch
    environment:
      - "discovery.type=single-node"
    expose:
      - "9200"
    ports:
      - "9200:9200"

  kibana:
    image: docker.elastic.co/kibana/kibana:7.13.1
    links:
      - "elasticsearch"
    ports:
      - "5601:5601"

不過,雖然官方提供了範例,但並沒有馬上就成功跑起來,

那就下回待續吧,明天見。


上一篇
D27 - Fluentd
下一篇
D29 - Fluentd Logging Driver
系列文
其實沒有那麼難 — Docker30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言