【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

fluentd 3分クッキング swiftオブジェクトストレージにログを転送する方法

こんにちは、最近fluentdと戯れる機会の多い佐藤です

とある案件でGMOアプリクラウドさんを使わせていただいているのですが、稼働しているサーバのログをfluentdで1時間単位に区切ってオブジェクトストレージに保存してほしいというご要望をいただきました。

「オブジェクトストレージですね!多分S3互換だから楽勝です!」

と大見得を切ったのですが。。。。。

GMOアプリクラウド オブジェクトストレージ

オブジェクトストレージは、お客様管理のサーバーからOpenStackのSwiftベースのAPIで操作いただきます。

何?Swiftとな??

スタートからいきなりつまづきました、、、GMOアプリクラウドさんのオブジェクトストレージに関するリファレンスではcurlやPython-swiftclient、Cyberduckを使った操作例はあるものの、どれもfluentdと連携させるには不向きですし自前でログ転送のプログラムを組むのもなぁ、と思っていたら。。。

便利なものがありました!
fluent-plugin-swift
こういう痒いところに手が届くプラグインを作ってくれた作者の方に感謝です

というわけで

fluentd3分クッキング (GMOアプリクラウド)swiftオブジェクトストレージ編

材料です

1.fluentdと必要なプラグイン

  • fluentd(td-agent) 新鮮(最新版)なもの
  • fluent-plugin-swift
  • fluent-plugin-forest

*お好みですが本レシピはforestを使う前提です

2.swiftオブジェクトストレージにアクセスするために必要な情報

GMOアプリクラウドのコントロールパネル>サービス>API情報 から以下を確認してください

サービス情報:テナント名 appで始まる20桁の番号
*テナントIDという情報もありますが今回は使いません

エンドポイント:identity v2.0(認証)
*いろいろなエンドポイント情報がありますが今回はこちらを使います

GMOアプリクラウドのコントロールパネルのログインiD/パスワードも必要です
材料がそろったら調理に入りましょう

3.fluentdのインストール

インストール前の推奨設定は終わっている前提で公式ページに書かれているとおりにインストールしましょう

# curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

4.プラグインのインストール

fluent-plugin-swiftとfluent-plugin-forestをインストールしましょう。

# /opt/td-agent/embedded/bin/gem install fluent-plugin-swift fluent-plugin-forest

5.設定ファイルの準備

/etc/td-agent/td-agentd.confを編集します

source(転送元のログ)タグの定義

今回は/var/log/messagesをsyslog.messagesというタグで定義します

<source>
  type tail
  format none
  tag syslog.messages
  path /var/log/messages
  pos_file /var/tmp/messages.pos
</source>

match(転送先のswiftオブジェクトストレージ)タグの定義

今回はオブジェクトストレージのコンテナ(S3でいうバケット)の中に
/ホスト名/YYYYMM/ホスト名_ログファイル名_YYYYMMDD-HH_NN.gz
という形式でログを保存します

<match syslog.*>
  type forest
  subtype swift
  <template>
    auth_url https://ident-r2nd1001.app-sys.jp/v2.0/tokens
    auth_user "GMOアプリクラウドのコントロールパネルのログインiD"
    auth_api_key "GMOアプリクラウドのコントロールパネルのログインパスワード"
    auth_tenant "テナント名"
    swift_container "swiftのコンテナ名"
    swift_object_key_format %{path}${hostname}_${tag_parts[0]}.${tag_parts[1]}_%{time_slice}_%{index}.%{file_extension}
    path %{hostname}/%Y%m/
    ssl_verify false
    buffer_path /var/log/fluent/swift/${tag_parts[0]}.${tag_parts[1]}
    time_slice_format %Y%m%d-%H
    time_slice_wait 10m
  </template>
</match>

swift_containterで指定するコンテナ名はあらかじめ作成しておいてもOKですが、なければ自動的に作られます

6.動作テスト

# td-agent -vv &

いきなり動かしても良いですが、まずはデバッグモードで1時間ほど様子を見て以下を確認しましょう。

  • 設定ファイルの書式にエラーが出てないこと
  • ログがオブジェクトストレージに転送されていること

*すでにtd-agentが動いていて今回追加する予定の設定だけを試したい場合は、設定ファイルを別名で用意(例:td-agent.conf.test)して

# td-agent -vv -c /etc/td-agent/td-agent.conf.test &

とすれば既存のtd-agentの動作に影響を与えることなくテストができます。

ログがオブジェクトストレージに転送されればこんなログが出ます

YYYY-mm-dd HH:MM:SS +0900 [info]: Put Log to Swift. container="コンテナ名" object=ホスト名/YYYYMM/ホスト名_ログファイル名_YYYYMMDD-HH_NN.gz

7.td-agentの起動と自動起動設定

# chkconfig td-agent on && service td-agent start

swiftベースのオブジェクトストレージは最近ではなかなか見かけませんが、プラグインの設定はS3プラグインとよく似ているのでそれほど設定は難しくないかと思います。

それでは良きfluentdライフを。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
965
X facebook はてなブックマーク pocket
【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

佐藤聖賢

ピンチになると第6感が冴えるが基本はオールドタイプのエンジニア
今はカナダオフィスで仕事してます。