LoginSignup
0
1

FluentdをDocker Composeで試す

Last updated at Posted at 2023-06-11

はじめに

前回記事では、ラズパイのsyslogをTftpd64で閲覧した

Tftpd64は手軽で動作確認程度には使えるけれども、監視対象が多くなると手に負えなくなる(ことは火を見るよりも明らか)
いずれは、ラズパイのsyslogをもっとグラフィカルに見たい

今回は、その足掛かりとしてEFKログ基盤を構築し
まずはHTTPアクセスのログが採れるか試す

EFKログ基盤とは?

複数ソースから集めたデータを見やすくしてくれるOSS軍団である
OSSなのでもちろん無料で試せます

EdgeのサイドバーにいるAIチャットに聞いてみた

efkログ基盤とは、Elasticsearch、Fluentd、Kibanaの3つのオープンソースソフトウェアを組み合わせたログ収集・分析基盤です。Elasticsearchはログデータの検索・分析を行うための検索エンジン、Fluentdはログデータを収集するためのデータ収集エージェント、Kibanaは収集したログデータを可視化するためのダッシュボードツールです。¹²¹: Elasticsearch + Fluentd + Kibanaで作るログ基盤 - Qiita
²: EFK ログ基盤とは? | さくらのナレッジ

ソース: Bing との会話 2023/6/11(1) Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法. https://atmarkit.itmedia.co.jp/ait/articles/1704/06/news013.html アクセス日時 2023/6/11.
(2) OpenShiftのEFKログ基盤 - 赤帽エンジニアブログ. https://rheb.hatenablog.com/entry/openshift-20181211 アクセス日時 2023/6/11.
(3) EFK(Elasticsearch,Fluentd,Kibana)で簡単ログ基盤をdocker .... https://qiita.com/foursue/items/9add0ec18efacb2fc2d2 アクセス日時 2023/6/11.

Docker Composeで環境をつくる

Fluentd 1.0 の公式サイトに、Docker Composeのサンプルが載っている

手順に沿って、docker-compose.ymlファイルやコンフィグファイルを作成し、いざdocker compose upをするとエラーが出る(※2023年6月10日時点)

<エラー内容>

/usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in 'require': cannot load such file -- elasticsearch/transport/transport/connections/selector (LoadError)

同エラーを報告しているGithubのIssueを参考に直す

依然として、webコンテナが立ち上がらない・・・

時間が解決するらしい

webコンテナを立ち上げようとしたときのエラー内容

<web-1エラー内容>

Error response from daemon: failed to initialize logging driver: dial tcp [::1]:24224: connect: connection refused

まだローカルホストの24224ポートにアクセスできない

いろいろ調べてみたが、結局1分ほど時間をおけば、立ち上がる

image.png

fluentdのエラー

立ち上がらない間のfluentdのエラー内容は以下の通り

<fluentd-1エラー>

unexpected error error_class=Elastic::Transport::Transport::Error error="Connection refused - connect(2) for 172.25.0.2:9200 (Errno::ECONNREFUSED)"

docker-compose.ymldepends onをつけても解消しなかった

Kibanaをセットアップする

http://localhost:5601/app/management/kibana/indexPatterns
にアクセスして、fluentd-*という名のdata viewをつくる

image.png

localhost:80にHTTPでアクセスしたときのログ

公式の手順書ではcurlを使うと書いてあるが
httpdイメージにはデフォルトでcurlコマンドが入っていないので
ブラウザからlocalhost:80に10回ほどアクセスする

image.png

ある時間にログが集中しており、HTTP-GETが連続しているログが残っている

おわりに

Fluentd公式サイトにあるDocker Composeのサンプルを使って
HTTPアクセスのログをグラフィカルに見ることができた

これを応用して、syslogなど他のログも同様に可視化したい

参考

付録

Dockerfile

バージョンは5.2.4を使った

# fluentd/Dockerfile

FROM fluent/fluentd:v1.12.0-debian-1.0
USER root
RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-document", "--version", "5.2.4"]
USER fluent

docker-compose.yml

kibanaとelasticsearchのバージョンは8.1.2を使った
また、elasticsearchのenvironmentにセキュリティを甘くする1行を追加した

version: "3"
services:
  web:
    image: httpd
    ports:
      - "80:80"
    links:
      - fluentd
    logging:
      driver: "fluentd"
      options:
        fluentd-address: localhost:24224
        tag: httpd.access

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

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.1.2
    container_name: elasticsearch
    environment:
      - "discovery.type=single-node"
      - xpack.security.enabled=false
    expose:
      - "9200"
    ports:
      - "9200:9200"

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

糸冬了!!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1