3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FluentdとOpenObserveを使ってログを集めてみる

Last updated at Posted at 2023-08-19

今回はOpenObserveを構築してFluentdでsyslogの転送してみます。
OpenObserveはdocker composeを使って構築します。

環境

OS:Ubuntu22.04 LTS

OpenObserveとは

ログ、メトリクス、トレースの監視ができるOSSプラットフォームである。S3,GCS,minio,Azure Blobなどのストレージサービスとの互換性がある。ストレージコストをElasticsearchの約140分の1に削減できるらしい:expressionless:

詳しくは公式サイト

OpenObserveの構築

こちらのquicstartを参考に構築していきます

$ mkdir openobserve
$ vim compose.yaml
compose.yaml
services:
  app:
    image: public.ecr.aws/zinclabs/openobserve:latest
    ports:
      - 5080:5080
    volumes:
      - ./data:/data
    environment:
      - ZO_DATA_DIR=/data
      - ZO_ROOT_USER_EMAIL=root@example.com
      - ZO_ROOT_USER_PASSWORD=Complexpass#123

EMAILとPASSWORDはログイン時に必要なので各自置き換えて下さ。

$ docker compose up -d

Fluentdとは

OSSのデータコレクターやデータログ収集ツールです。
ログファイルを収集、転送、保存など行うことが可能です。
データをElasticsearchやS3に出力可能ですが今回はOpenOvserveに出力します。またtd-agentと呼ばれるFluentdの安定版を利用していきます。

詳しくは公式サイト

Fluentdのインストール

step1 AptリポジトリからFluentdのインストール

Ubuntu22.04を使っているので Ubuntu Jammyを選択する

# td-agent 4 (experimental)
curl -fsSL https://toolbelt.treasuredata.com/sh/install-ubuntu-jammy-td-agent4.sh | sh

step2 デーモン起動

$ sudo systemctl start td-agent.service
$ sudo systemctl status td-agent.service
● td-agent.service - td-agent: Fluentd based data collector for Treasure Data
     Loaded: loaded (/lib/systemd/system/td-agent.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2023-08-18 17:25:12 UTC; 18s ago
       Docs: https://docs.treasuredata.com/display/public/PD/About+Treasure+Data%27s+Server-Side+Agent
    Process: 1541975 ExecStart=/opt/td-agent/bin/fluentd --log $TD_AGENT_LOG_FILE --daemon /var/run/td-agent/td-agent.p>
   Main PID: 1541981 (fluentd)
      Tasks: 9 (limit: 2142)
     Memory: 96.1M
        CPU: 638ms
     CGroup: /system.slice/td-agent.service
             ├─1541981 /opt/td-agent/bin/ruby /opt/td-agent/bin/fluentd --log /var/log/td-agent/td-agent.log --daemon />
             └─1541984 /opt/td-agent/bin/ruby -Eascii-8bit:ascii-8bit /opt/td-agent/bin/fluentd --log /var/log/td-agent>

Fluentdの設定

インストールは完了したのでOpenObserveにsyslog転送する設定を行っていきます。

OpenObserveからFluentdの設定情報を取得

http://localhost:5080 にアクセスしてFluentdの設定ファイルのサンプルをコピーしておきます。
image.png

td-agent.confの書き換え

Fluentdの設定ファイルのサンプルをコピーしたらtd-agent.confに追記していきます。

sudo vi /etc/td-agent/td-agent.conf
/etc/td-agent/td-agent.conf
<source>
  @type tail
  format none
  path /var/log/syslog
  pos_file /var/log/syslog/syslog.pos
  tag syslog
</source>

<match syslog>
  @type http
  endpoint http://10.0.0.5:5080/api/default/default/_json
  content_type json
  json_array true
  <auth>
    method basic
    username root@example.com
    password 9dqQAW4ghtKK76kR
  </auth>
</match>

<match>内のendpointやpasswordなどは適宜変えてください。

td-agentの再起動

td-agentのコンフィグを変えたときは再起動させて反映させます。

$ sudo systemctl restart td-agent.service
$ sudo systemctl status td-agent.service
● td-agent.service - td-agent: Fluentd based data collector for Treasure Data
     Loaded: loaded (/lib/systemd/system/td-agent.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2023-08-18 17:44:57 UTC; 6s ago
       Docs: https://docs.treasuredata.com/display/public/PD/About+Treasure+Data%27s+Server-Side+Agent
    Process: 1545959 ExecStart=/opt/td-agent/bin/fluentd --log $TD_AGENT_LOG_FILE --daemon /var/run/td-agent/td-agent.p>
   Main PID: 1545965 (fluentd)
      Tasks: 5 (limit: 2142)
     Memory: 47.0M
        CPU: 2.980s
     CGroup: /system.slice/td-agent.service
             └─1545965 /opt/td-agent/bin/ruby /opt/td-agent/bin/fluentd --log /var/log/td-agent/td-agent.log --daemon />

Aug 18 17:44:57 ubuntu systemd[1]: td-agent.service: Deactivated successfully.
Aug 18 17:44:57 ubuntu systemd[1]: Stopped td-agent: Fluentd based data collector for Treasure Data.
Aug 18 17:44:57 ubuntu systemd[1]: td-agent.service: Consumed 1.948s CPU time.
Aug 18 17:44:57 ubuntu systemd[1]: Starting td-agent: Fluentd based data collector for Treasure Data...
Aug 18 17:44:57 ubuntu systemd[1]: Started td-agent: Fluentd based data collector for Treasure Data.

OpenObserveでログ確認

Fluentdの設定ができたのでWebで確認していきます。
2023-08-19 (2).png
ログが受け取れてないだと...

td-agentのログを確認

sudo tail -f /var/log/td-agent
~~一部抜粋~~
[error]: #0 unexpected error error_class=Errno::EACCES error="Permission denied @ rb_sysopen - /var/log/syslog.pos"

Permission deniedになってる。
色々調べるとtd-agentはsudoをつけてもrootで実行されてないみたい(参考サイト)。
なので以下のようにする。

sudo vi /usr/lib/systemd/system/td-agent.service
td-agent.service
#User=td-agent
User=root
#Group=td-agent
Group=root
sudo systemctl daemon-reload
sudo systemctl restart td-agent.service

もう一度OpenObserveで確認

image.png
データが送れてる!

最後に

ログのformatを変えたり、OpenObserveのダッシュボードを作成したりできていないので、今後やっていきたい思ってます。

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?