2026/05/11(月)自宅サーバーに雑に監視を入れた時にやったこと
更新日:
投稿日:
投稿日:
Ubuntuのネイティブ環境にPrometheusとGrafanaをIPv6スタックで導入したの続き。
ちまちまやってて記憶が飛びまくってるので抜け漏れがあるかもしれないが、吐き出しておかないと記憶が散逸するので、一度書き留めておく。
やったこと
LokiとFluentBitを入れてnginxのログをGrafanaで見れるようにする。
環境セットアップ
ここでは例示のためにLokiのlistenポートは9100とする。
Loki
確認環境
| Env | Ver |
|---|---|
| Ubuntu | 24.04.3 LTS |
| Loki | 3.5.9 |
インストール
- リリース一覧からLokiのバイナリを探す。CLIとかではなく、Loki単品を探す
- インストールコマンドを流す
wget https://github.com/grafana/loki/releases/download/v3.5.9/loki_3.5.9_amd64.deb sudo dpkg -i loki_3.5.9_amd64.deb rm loki_3.5.9_amd64.deb - 後述する設定を行う
- サービスの起動と確認をする
sudo systemctl start loki systemctl status loki
設定
/etc/loki/config.ymlを開き、IPv6でListenし、ポート番号が9100となるようにする。中身はデフォルトの設定の改編。
auth_enabled: false
server:
http_listen_port: 9100
common:
ring:
instance_addr: "::"
kvstore:
store: inmemory
replication_factor: 1
path_prefix: /tmp/loki
schema_config:
configs:
- from: 2020-05-15
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
storage_config:
filesystem:
directory: /tmp/loki/chunks
参考
FluentBit
確認環境
| Env | Ver |
|---|---|
| Ubuntu | 24.04.3 LTS |
| FluentBit | 4.2.2 |
インストール
- インストールコマンドを流す
# FluentBitのGPGキーをキーリングに追加 sudo sh -c 'curl https://packages.fluentbit.io/fluentbit.key | gpg --dearmor > /usr/share/keyrings/fluentbit-keyring.gpg' # OSコードの取得 codename=$(grep -oP '(?<=VERSION_CODENAME=).*' /etc/os-release 2>/dev/null || lsb_release -cs 2>/dev/null) # OSコードをもとにAPTリストへ追加 echo "deb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] https://packages.fluentbit.io/ubuntu/$codename $codename main" | sudo tee /etc/apt/sources.list.d/fluent-bit.list # パッケージリストの更新 sudo apt update # Fluent Bitのインストール sudo apt install fluent-bit - 後述する設定を行う
- DB配置場所を作成し、サービスの起動と確認をする
# DB配置場所の作成 /var/lib/fluent-bit/ # デーモンの開始 sudo systemctl start fluent-bit # デーモンの起動確認 systemctl status fluent-bit
設定
/etc/fluent-bit/fluent-bit.confを開きファイル末尾に以下を足す。
# nginx access log
[INPUT]
name tail
path /var/log/nginx/access.log
parser json
tag nginx.access
db /var/lib/fluent-bit/nginx-access.db
refresh_interval 5
# nginx error log
[INPUT]
name tail
path /var/log/nginx/error.log
tag nginx.error
db /var/lib/fluent-bit/nginx-error.db
refresh_interval 5
# Loki へ出力
[OUTPUT]
name loki
match nginx.*
host ::1
port 9100
labels job=nginx, log_type=$TAG[1]
設定解説
今回の設定についての説明であって汎用性は考慮していない。
[INPUT],[OUTPUT]- 入力か出力か
name- 利用するプラグインの名前
- 入力はdata-pipeline/inputs、出力はdata-pipeline/outputsに定義されている
- ファイルから拾う場合は
tail - lokiに飛ばす場合は
loki
- 利用するプラグインの名前
path- 入力ファイルのパス
tag- 出力で引っ掛けるときの名前
db- ログファイルをどこまで読んだかを記録する
match- ここにマッチしたtagが出力対象になる
host- Lokiのホスト
port- Lokiのポート
labels- Grafanaで引っ掛けるときのラベル
nginx
確認環境
| Env | Ver |
|---|---|
| Ubuntu | 24.04.3 LTS |
| nginx | 1.26.1 |
設定
nginxの標準ログでは得られるものが少ないので色々見れるようにする。ついでにjson形式にする。
/etc/nginx/nginx.confを開きログ設定を以下のようにするlog_format main_json escape=json '{' '"time":"$time_iso8601",' '"remote_addr":"$remote_addr",' '"remote_port":"$remote_port",' '"request_id":"$request_id",' '"scheme":"$scheme",' '"server_name":"$server_name",' '"server_port":"$server_port",' '"request_method":"$request_method",' '"request_uri":"$request_uri",' '"server_protocol":"$server_protocol",' '"status":$status,' '"body_bytes_sent":$body_bytes_sent,' '"bytes_sent":$bytes_sent,' '"request_length":$request_length,' '"request_time":$request_time,' '"http_referer":"$http_referer",' '"http_user_agent":"$http_user_agent",' '"ssl_protocol":"$ssl_protocol",' '"ssl_cipher":"$ssl_cipher",' '"connection":"$connection",' '"connection_requests":"$connection_requests"' '}'; access_log /var/log/nginx/access.log main_json;- nginxを再起動する
sudo systemctl restart nginx
Grafana
確認環境
| Env | Ver |
|---|---|
| Ubuntu | 24.04.3 LTS |
| Grafana | v12.1.1 |
- Grafanaのダッシュボードを開く
- 左のグローバルナビからConnections→Add new connectionでLokiを追加する
- URLを
http://[::]:9100で指定する - Explorerを開きLokiを選び「Go queryless」を押すとLokiの中身が見れる