2026/06/08(月)FluentBitでSystemdのログをLokiに送ってGrafanaで見れるようにし、ついでに設定をYAMLにした

更新日:
投稿日:

本記事は自宅サーバーに雑に監視を入れた時にやったこと先日の自宅サーバー移転に対し追加対応をしたの続きである。

今回はSystemdのログをFluentBitで拾ってLokiに送ってGrafanaで見れるようにしたログ。

AWSやDockerなどを使った情報は散見したが、バイナリをネイティブ環境で動かしている情報や、複数のデーモンのログを収集する方法が見当たらなかったのでちょっと苦労した。GPT-5.5も正確なことを言わないので真面目にリファレンスを読んだりググったりして何とかした。LLM頼みも限度があるね。

確認環境

Env Ver
OS Ubuntu 24.04.4 LTS
Fluent Bit 5.0.6
Loki 3.5.9
Grafana 12.1.1

設定内容

今回は前回までのconfig設定をYAML設定に全面移行した。基本的にはデフォルトのconfigファイル+私が使っているI/Oの移植である。Lokiの待ち受けポートが9100であると仮定して進める。

各設定については公式マニュアルを参照のこと。

service:
  flush: 1
  log_level: 'info'
  parsers_file: 'parsers.conf'
  plugins_file: 'plugins.conf'
storage:
  metrics: 'on'
pipeline:
  inputs:
    - name: 'systemd'
      tag: 'systemd'
      db: '/var/lib/fluent-bit/systemd.db'
      systemd_filter:
        - '_SYSTEMD_UNIT=adiary.service'
        - '_SYSTEMD_UNIT=mastodon-web.service'
        - '_SYSTEMD_UNIT=mastodon-sidekiq.service'
        - '_SYSTEMD_UNIT=mastodon-streaming@5001.service'
    - name: 'tail'
      tag: 'nginx.access'
      path: '/var/log/nginx/access.log'
      parser: 'json'
      db: '/var/lib/fluent-bit/nginx-access.db'
      refresh_interval: 5
    - name: 'tail'
      tag: 'nginx.error'
      path: '/var/log/nginx/error.log'
      db: '/var/lib/fluent-bit/nginx-error.db'
      refresh_interval: 5
    - name: 'tail'
      tag: 'apache.access'
      path: '/var/log/apache2/access.log'
      parser: 'apache2_vhost'
      db: '/var/lib/fluent-bit/apache_access.db'
      refresh_interval: 5
    - name: 'tail'
      tag: 'apache.error'
      path: '/var/log/apache2/error.log'
      db: '/var/lib/fluent-bit/apache_error.db'
      refresh_interval: 5
  outputs:
    - name: 'loki'
      match: 'systemd'
      host: '::1'
      port: 9100
      labels: 'job=systemd'
    - name: 'loki'
      match: 'nginx.*'
      host: '::1'
      port: 9100
      labels: 'job=nginx, log_type=$TAG[1]'
    - name: 'loki'
      match: 'apache.*'
      host: '::1'
      port: 9100
      labels: 'job=apache, log_type=$TAG[1]'

PARSER: apache2_vhost

前回の記事で作った以下のパーサーを利用している。

[PARSER]
    Name        apache2_vhost
    Format      regex
                ^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
    Regex       ^(?<vhost>[^:]+):(?<port>\d+) (?<remote_host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*) "(?<referer>[^\"]*)" "(?<agent>[^\"]*)"$
    Time_Key    time
    Time_Format %d/%b/%Y:%H:%M:%S %z
    Time_Keep   On

また前回の記事で作成したapache_errorというパーサーについては役に立たなかったので使わなくなった。標準で付いてるapache_errorも使えないし、apache2もイマイチ使えないので公式のパーサーは当てにしないほうがいいのかもしれない。

なおパーサーは旧config形式で記述している。これはとてもじゃないが書き換えてられないボリュームだったのとYAMLに対応させようとするとエスケープがだるそうだったからだ。config形式は今年でサポート外になるようだが、既存の設定のプリセットはすべてconfig形式でしか存在しないため、何とも先行きが心配だ。

サービスの修正

設定を.confで読んでいるので、ここを.yamlに変えてやる。

 [Unit]
 Description=Fluent Bit
 Documentation=https://docs.fluentbit.io/manual/
 Requires=network.target
 After=network.target

 [Service]
 Type=simple
 EnvironmentFile=-/etc/sysconfig/fluent-bit
 EnvironmentFile=-/etc/default/fluent-bit
+ExecStart=/opt/fluent-bit/bin/fluent-bit -c /etc/fluent-bit/fluent-bit.yaml
-ExecStart=/opt/fluent-bit/bin/fluent-bit -c //etc/fluent-bit/fluent-bit.conf
 Restart=always

 [Install]
 WantedBy=multi-user.target

インストールした当時は何故YAMLで書いても読んでくれないのか悩んでいたが、こんなところで指定されていた。しかも何故かパスが二重スラッシュになっていたので、そこも直しておいた。

FluentBitが上手く動いてなさそうなときのデバッグ方法

以下のコマンドを流すと動いているかどうかが分かる。なんかログが取れてなさそうだったり、Lokiに届いてなさそうなときに使える。

/opt/fluent-bit/bin/fluent-bit -i systemd \
           -p systemd_filter=_SYSTEMD_UNIT=mastodon-web.service \
           -p tag='host.*' \
           -o stdout

あとがき

なんか最近のソフトウェアのマニュアルって論理的に書かれすぎてて具体的にどう設定したらいいのかよくわからなくて困る。もう少し具体的な設定例とか書いてくれてもいいと思うんだ。

YAML configuration files are the standard configuration format as of Fluent Bit v3.2. They use the .yaml file extension.

Classic configuration files will be deprecated at the end of 2026. They use the .conf file extension.

しかしconfigは今年末でサポート外になるという話があるのにGitHubのリポジトリの設定ファイルは全部configで、果たしてこんなので大丈夫なのか…とIssueを眺めていたら、そもそも開発側もYAMLの仕様を余り解ってないような空気を感じたので、これは今年中は厳しいのではないか?という感じがした。

ひとまず私はキー名がkebab-caseからcamelCaseになってもすぐ対応できるようにメインの設定だけYAMLにしておいたが、Parserを直すのはエスケープが面倒などもあると思うので、なかなか大変だと思う。

あと個人的に不思議に思った部分としてoutputslabelsが配列ではなく、文字列だというところだ。

pipeline:
  outputs:
    - name: loki
      match: '*'
      labels: job=fluentbit, mystream=$sub['stream']

何でここは配列にしなかったのだろうか?

実際に以下の記述でラベルが機能しているので、おそらくこの構文がFluentBitのDSLとして機能していて、真面目に配列すると改修が大変とか、そういうのがあるのかもしれないなとは思った。

    - name: loki
      match: 'apache.*'
      host: '::1'
      port: 9100
      labels: 'job=apache, log_type=$TAG[1]'

ちなみに一番ハマったのはブログ執筆用に作っていたLokiのポートを書き換えたメモを基に作業していて、未来永劫FluentBitがLokiに疎通しなかったことである。

2026/06/08(月)駄文同盟の最初から現在までの登録状況を軽く調べてみた

投稿日:

本記事は古のサイト探究~駄文同盟のID上位100サイトを巡り、今までのネット人生や自サイトの過去を振り返ってみるの続きの様なものだ。

今回は駄文同盟登録にしている全サイトを機械的に調査した結果を出していく。前回は全手動だったのできめ細やかな結果を出せたが、今回は大まかな傾向みたいな感じだ。

調査方法としては以下のコマンドでスクレイピングしたものを正規表現で成形し、エクセルで集計している。

for i in $(seq 1 20457)
do
  dates=$(curl "http://www.dabun-doumei.com/data/${i}.html" | iconv -f SJIS -t UTF-8 | grep -e "登録日:" -e "更新日:")
  echo "No.${i} $dates" | tee -a "dabun-doumei-dates.txt"
done

年毎の登録件数

このグラフはその年ごとの駄文同盟への登録件数をグラフにしたものだ。

その年に初めて見つかった登録サイトと、その年最後の登録サイトの件数をカウントしているため、駄文同盟の登録を解除したサイトも件数に含まれている。

逆に年と年の継ぎ目に登録解除したサイトがあると、そこは空白になってしまう。結果として55件の空白サイトがあった。

基本的に2004~2008年あたりがピークといった感じで、2009年からは登録件数が大きく減っている。2004年も少ないのだが、2004/10/20がID:1の登録日であるため、開設直後かつ、年末まで二ヶ月半しかなかったことを考えるとこれは仕方ないだろう。

2010年からは割合にして7.19%と、前年の10.18%から一気に減少し、2014年まで減少が続く。2015年は前年比0.74ポイント増えていて、何があったのかちょっと気になる。

2017年に入ると登録数が200を切り、低位に推移していくものの、横ばいが続く。しかし2022年から減少傾向に転じ、2024年には3桁を割り込み、遂に80件にまで落ち込んでしまう。

駄文同盟自体の知名度が落ちていることや、既にメンテナスもされていないことも多分にあると思うが、駄文同盟の登録件数ベースで見るとも何とも悲しい数字だ。しかし今年は既に25件あるため、もう少し横ばいで推移する可能性もある。

とはいえ、この時代に個人サイトを新規に起こしたとして、従来のように駄文同盟や、それに類するサイトに登録する人も多くはないだろうから、時代の流れとして致し方ない部分もあるのだとは思う。

登録状況

このグラフは現在の駄文同盟の登録状況をグラフにしたもので、内訳としては以下の通り。

  • 更新あり=現在有効な登録があり、最低でも一度は登録を更新している(登録日時と更新日時に差異がある)
  • 登録解除=登録が解除されている(IDが消滅している)
  • 更新なし=現在有効な登録があるが、一度も登録更新されていない

つまり実に過半数のサイトが登録を解除しており、残ったサイトは全体の44.66%しかないことが分かる。その中で駄文同盟の登録後に一度でもサイト情報を更新したサイトの割合は76.97%だ。77%に丸めて考えると大半のサイトは何かしら一度は更新していることになる。

直近で更新があった時期

これは直近五年間で駄文同盟の登録情報を更新したサイトの件数を出している。

駄文同盟では一回も更新しなくても登録日=更新日であるため、5年以内に登録したサイトが必然的に含まれており、そこは除外していない。

頭のパーセンテージはIDの最大値に対して出しているため、あまり意味がないものになっているが、意外と更新しているサイトが多いことが伺えた。

集計データ

今回も前回同様、Google Spreadsheetに集計データをまとめている。また同様に以下に表も貼ろうと思ったが二万行以上あるため、今回は断念した。

2026/06/08(月)3年ぶりにChatGPTに帰ってきた

投稿日:

Chat GPT3.5が出た当初、私は狂ったようにChatGPTを利用していた。レートリミットを無視するために最大13アカウントを並列で運用していたほどだ。

しかしChat GPT-4辺りから雲行きが怪しくなり、GPT-4oで遂にERPが封じられた。そしてそのタイミングでちょうど出てきたのがClaudeだった。

ClaudeはERPができるだけでなく、GPTより性能が良かった。それゆえに私はそれからClaude Opus 4.7に至るまでClaudeを使い続けた。AnthropicにBANされようと、なお使い続けた

しかしそれに転機が訪れたのがClaude Opus 4.8だった。Opus 4.8でもERPは出来なくはないのだが、よくある同人誌にありがちな奴ができなくなった。いわゆる非実在未成年モノというやつだ。

そして私はClaudeに対して最近良い感情があまりなかった。Claude Codeは余計なことをよく行い、指示を守らない、逸脱するというのが往々にしてあった。私はClaudeに対するコーディング面での信頼を4.7のころから失い始めており、4.8で決定的になった。

この辺りに関しては私より草片きのぽ氏のほうがよく言語化できているので勝手に紹介させていただく。この辺りの感覚は私も共感できる部分がかなりあった。

そこで、ふと思ったのだ。GPTならどうか?私はOpenAIにはBANされてない。ERPしないならGPTでもいいのでは?というところで、一昨日くらいからGPT-5.5がいい感じなので、OpenAIに戻ってくることにした。

Poe経由でClaudeを使うと非常にお金がかかるが、OpenAIに月額課金する場合はそこまでお金はかからない。ERPももう飽きてきたところだったし丁度よかった。

かつて作っていたアカウントの多くは不正利用を恐れて閉鎖しており、同じメールアドレスでアカウントを作れないので困っていたが、かろうじて一匹生きているアカウントを発見したら、なんと三年ぶりの課金であることが判明した。

今のところGPTは支持に従うし、GPT-5の時の様なそっけなさというかイマイチ使えない感じもなくなり、ずいぶんよくなったと思う。ClaudeのようにAI臭さのある文章を出してこないのも個人的に好印象だ。

というわけで、長らく続いたClaude生活から、またGPT生活に戻っていきそうだ。節約にもなるし、これはいいかもしれない。

ところで請求の単位がUSDからJPYになってるのが地味に面白いと思った。

2026/06/07(日)シェルの設定にRPS1を入れると微妙だったのでやめた話

更新日:
投稿日:

私はzshをシェルとして使っており、かれこれ5年ほどプロンプトにPROMPTRPS1を設定していたのだが、使っていてRPS1が非常に邪魔だったのでPROMPTに統一することにした。

邪魔だったもの

これまで私は画像のようにRPS1に日時と異常終了コードを出すようにしていたのだが、複数行選択したときに必然的に巻き込んでしまう問題があった。

これはコマンドの実行ログをブログに書く時や、複数コマンドをコピペするときにRPS1の部分を除去する必要があり、手間だった。

そこでRPS1を使うのをやめてPROMPTに統一することにした。行は増えたが、こっちのほうが視線移動もなくコピペ時の巻き込み問題も減るので楽になった気がする。

他にもRPS1はターミナルの幅が狭くなったり、一部のターミナルから開くと崩れやすかったので、今回の対応でそういったこともまとめて解消されてよかった。

これは余談だがPS1でなくPROMPTを使っている理由はPS1だとRPS1を使っているときに表示が崩れる環境があったが、PROMPTだとこれが起きなかったからだ。何故かはよくわかってない。

2026/06/06(土)個人サイトWebオンリー めぐる市を見てきて

投稿日:

本日ピクリエ[1]で開催されており、当サイトも参加している個人サイトWebオンリー めぐる市を見てきた感想。

このイベントでは参加サークルが一次創作、二次創作、その他に分類されているが、この記事ではその他ジャンルについての語りになる。

また本記事で行った調査は私が目で見た限りなので、漏れや誤りがある可能性もある。あくまで個人の感想であって、何かを批判したりするものではないことを先に断っておく。

トップページへの流入が凄く増えた

トップページというのはlycolia.infoのことだが、ここへのアクセスが爆発的に増えた。

ただピクリエはリファラを吐かないようで、実際にどの程度がピクリエなのかはわからない。さっきUTMパラメータ付きのURLを用意したが、開場が10時だったのに、書き換えたのが20時ごろの話なので、時すでにお寿司という感じはしている。

出オチした

Anubisを雑に設置したが、結果微妙だったので撤去した話でも少し触れているが、私はこの日このイベントがあることを知っており、サイトを生かしておかないとならないはずだったのに、会期中にAnubisの画面が出したいがために8時くらいからAnubisの導入試験を行っており、結果的に10時~13時半までサイトが断続的にダウンしていた。

一番アクセスが集中する時間にサーバーダウンを伴うメンテナンスをするとは愚の骨頂である。

自分が想像していた「その他」サイトはそこまで多くなかった

サークル分類が一次創作、二次創作、その他とある以上、個人的には「その他」には日記や技術、DIY、写真などいわゆるサブカル系ではないものを期待していたが、22サークル中11サークルが創作外のその他という風に感じた。個人的な感覚としては、小説や同人誌の頒布が中心のサイトは「創作寄り」に見えたため、自分が期待していた「その他」とは少し違って感じた。

とはいえ、ジャンル分けには各サークルなりの事情や判断があると思うので、外から見ただけであれこれ言うものでもない。

サイト制作の手段が変わってきている

上の図は今回その他ジャンルで公開されていた22サークルで使われていた技術を調べたものだ。1サイトに複数技術が入っているところもあるため、合計は22にならない。

やはりWordPressが最多で、根強い人気を感じる。またWordPressについてはSangoテーマを使っているサイトがないのも驚いた。

Sangoテーマは国産のWordPressテーマで、有償だが、その完成度ゆえに結構人気が高いテーマだと思っているので、これは意外だった。流行りすぎてて独自性を出しづらいのもあるかもしれないし、特に収益性を重視したブログとの親和性がいいため、非営利のサイトだと相性があまりよくないかもしれないなと思った。

しかし驚いたのは次点以降だ。てがろぐが次点に入ってきていて、Astroも勢いがある。まさかこの令和の世に個人開発のCGIがここまで流行るとは思わなかったし、Astroのような今どきの静的サイト生成系ツールが、こういった界隈でも普通に使われているのはかなり意外だった。

それとDokuWikiを使って創作サイトをやっている人がいるのも驚いた。見た目はどっからどう見ても良くできた小説サイトの体裁で、どこをどう見てもWikiに見えなかったからだ。

HTML手書きと思われるサイトも結構あり、こちらも未だに根強い人気がありそうだと感じた。シンプルイズベストというか、HTML手書きはCMSのように画一的な表現から解き放たれ、自由自在な構成が作れるのが魅力だと思う。

流石にadiaryは私のサイトしかなかった。知ってた。

個人サイト制作勢にX(旧Twitter)やMisskey.ioは不人気?

この図は各サイトやピクリエ上の紹介リンクにあったSNSのうち、マイクロブログに入るものを集めたものだが、トップはBlueskyで、X(旧Twitter)は次点だった。Misskeyもあったものの、Misskey.ioを使っているところはなかった。またMastodonは一番少なかった。なおFedibirdはMastodonとして集計している。

それでもFediverseとしてカウントすれば7件になるわけで、個人サイト勢の中ではXからの離脱、或いはそもそもXをやらなかった人が多かったのかもしれない。

Misskey.ioがいなかったのは、今回の「その他」ジャンルの個人サイト勢とは、利用者層が重ならなかったのではないかと思っている。というのも、あそこは男性向け成人イラスト周りの要素が強く、今回の参加者層に一致する要素が少なかったのではないかと思っている。

SNSらしきリンクが見当たらない管理人さんも3名ほどいらっしゃったので、SNSより自分のサイトに注力したいとか、そういうのもあるかもしれない。

あとがき

全体的にみると驚きが多く、Astroのようなテックなものが目立ったり、WordPressに押されて一時は影が薄くなっていた国産CMS文化が、てがろぐによって、また存在感を取り戻しつつあるように見えたところは非常に興味深く感じた。

AstroはCMSではないものの、サイト構築手段として見た場合に、Koibumi Astro Blogという日本語由来の名前を持つテーマが結構使われているようで、これも面白いなと思った。ただし国産とまでは言い切れなさそうなので、Koibumiという名前の響きと、テーマそのもののデザインの両方が評価されて使われているのかもしれないと感じた。

WordPressが主流になる前はtDiarySerene Bach(旧Sb)、Blogn、BlognPlusといった国産CMSが結構流行っていた記憶があるので、こういう景色を見ていると、その当時を彷彿とさせるものがあった。というか、tDiaryもSerene Bachも開発が続いているし、Serene Bachについては見た感じかなりモダンな感じになっているようなので、過去形にしたのはちょっと失礼な物言いだった。

しかしまぁ、うちのような何をやっているのかちっともわからないところはなかったので、どこもテーマがちゃんとあって凄いなぁと思うのであった。多分このサイトにテーマが生まれることは一生ないだろうが、まぁそれはそれでいいと思っている。

このサイトにテーマがないことなんて24年前からずっとそうで、一時期は何かコンテンツを置こうとしたし、MMOをプレイしていた時はそれが中心だったが、もうプレイしてないし、核がないのでどうしようもない。

結局のところ私は、過去あの時どうしていたかを書き留めたり、便利なWebツールを作ったりして、それが偶然誰かの役に立てさえすればいいと思っているのだ。

何故なら私自身がネットで検索した時に出会った記事やツールに助けられたことが多くあり、どんな事であろうと誰かの役に立つかもしれないと思っているからだ。例えば地方の豆腐屋のパッケージ写真が置いてあるだけの記事でさえ、複数のサイトに別の時系列で存在していれば、その豆腐の原材料やパッケージのマイナーチェンジが読み解けたりする。そんな誰のためになるかも分からない、需要があるかどうかも謎なものを、私は公開しているのである。

勿論、公開していればネットがある限り記事を見れるため、出先で「その話なら過去にこういうのを書きました」とか紹介したり、或いは調べ物をするときに自分の経験をベースに調べたりできて便利なのもある。

つまるところ、私のサイトははなから他人に向けて発信していないということだ。それでも読んでくれている人がいるのは嬉しい。ただ嬉しさのためにやっている訳ではないので、今後も他人のための記事を書くつもりはないし、私は私による私のための私のサイト作りをこれからもしていくのだろう。

でもそれでいいのだ。何故ならここは私の個人サイトだからね。


  1. オンライン同人イベントプラットフォーム