この記事のポイント
- Thanos は Prometheus に
Sidecarを追加するだけで長期保存と高可用性を実現できます prometheus.ymlにexternal_labels(cluster / replica)を必ず設定してから起動します- Thanos Query UI(ポート 10912)でマルチ Prometheus への横断 PromQL クエリが打てます
- Ubuntu 24.04 の apt では Prometheus 2.45.3 が取得できます。Thanos は Docker イメージ(v0.41.0)を使います
- Object Storage(S3 / MinIO)を追加すれば、メトリクスを無制限に長期保存できます
Prometheus を単体で使っているとき、最初に気になるのは「2週間分のメトリクスしか見られない」「Prometheus が1台落ちたらデータが消える」という問題です。Thanos はこれを解決するために作られた CNCF プロジェクトで、既存の Prometheus 構成に Sidecar プロセスを1つ追加するだけで統合できます。
この記事では Ubuntu 24.04 LTS で Prometheus をインストールし、Thanos Sidecar + Thanos Query を起動するまでの手順を、実際に Docker コンテナで動かした結果とともに紹介します。
動作確認済み環境
| 項目 | バージョン / 内容 |
|---|---|
| OS | Ubuntu 24.04 LTS(Noble Numbat) |
| Prometheus | 2.45.3(apt / ubuntu 公式リポジトリ) |
| Thanos | v0.41.0(quay.io/thanos/thanos Docker イメージ) |
| 検証環境 | Docker コンテナ(ローカル / VPS どちらでも同様の手順) |
| 確認日 | 2026-06-22 |

Thanos とは
Thanos は Prometheus の拡張レイヤーです。Prometheus 自体は変更せず、サイドカープロセスを追加することで長期保存・高可用性・グローバルビューを実現します。
主要コンポーネントは 3 つです。
- Sidecar:Prometheus と同じホストで動き、TSDB データを Object Storage にアップロードする。Thanos Query からの gRPC クエリも受け付ける
- Query:複数の Sidecar(または Store Gateway)をまとめてクエリする。重複排除も行う
- Store Gateway:Object Storage に保存済みのブロックをクエリするコンポーネント(長期保存を使う場合)

Thanos の apt パッケージはない
Ubuntu の apt リポジトリには Thanos 自体は含まれていません。GitHub Releases(quay.io/thanos/thanos Docker イメージ、またはバイナリ)から取得します。Prometheus は apt で入れて問題ありません。
手順1:Prometheus をインストールする
Ubuntu 24.04 の公式リポジトリ(universe)から Prometheus を入れます。
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Reading package lists… Done
$ sudo apt install -y prometheus
Get:1 …/prometheus_2.45.3+ds-2ubuntu0.3_amd64.deb [23.3 MB]
Setting up prometheus (2.45.3+ds-2ubuntu0.3) …
Created symlink …/prometheus.service → /lib/systemd/system/prometheus.service
$ prometheus –version
prometheus, version 2.45.3+ds (branch: debian/sid)
go version: go1.22.2 / platform: linux/amd64

インストールが終わると prometheus ユーザーが作られ、systemd サービスとして自動起動が設定されます。prometheus-node-exporter も同時に入るので、ノードのメトリクスもすぐに収集できます。
手順2:external_labels を設定する
Thanos を使う上で外せないのが、prometheus.yml への external_labels 追加です。これがないと Sidecar は起動しますが、複数 Prometheus を並べたときに重複排除が正しく動きません。
global:
scrape_interval: 15s
external_labels:
cluster: ‘prod-tokyo’ # クラスター名(自由に決めてよい)
replica: ‘0’ # 同じクラスターに複数台ある場合は 1, 2 と増やす
scrape_configs:
– job_name: ‘prometheus’
static_configs:
– targets: [‘localhost:9090’]
$ sudo systemctl restart prometheus
$ systemctl is-active prometheus
active

cluster と replica の値は自由に決めて構いません。重要なのは「同じクラスター内の異なる Prometheus レプリカは cluster が同じで replica が異なる」という命名規則を守ることです。
手順3:Thanos Sidecar を起動する
Sidecar は Prometheus と同じホストで動かします。Prometheus の TSDB ディレクトリ(デフォルト /var/lib/prometheus)を共有し、Thanos Query からの gRPC リクエストを受け付けます。
–network host \
-v /var/lib/prometheus:/prometheus:ro \
quay.io/thanos/thanos:v0.41.0 \
sidecar \
–tsdb.path=/prometheus \
–prometheus.url=http://localhost:9090 \
–http-address=0.0.0.0:10902 \
–grpc-address=0.0.0.0:10901
$ curl -s http://localhost:10902/-/healthy
OK

起動ログに successfully loaded prometheus external labels external_labels="{cluster=\"prod-tokyo\", replica=\"0\"}" と出れば正常です。Sidecar が Prometheus から external_labels を読み取れなかった場合は、手順2 の設定を見直してください。
手順4:Thanos Query を起動して複数 Prometheus を束ねる
Thanos Query は Sidecar(や Store Gateway)を束ねてクエリを投げる窓口です。WebUI(ポート 10912)が付いており、Grafana の代わりにここで PromQL を試せます。
-p 10912:10912 \
quay.io/thanos/thanos:v0.41.0 \
query \
–http-address=0.0.0.0:10912 \
–endpoint=<sidecar_host>:10901
$ curl -s http://localhost:10912/-/healthy
OK
起動したらブラウザで http://<サーバーIP>:10912 を開きます。

クエリボックスに up と入力して Execute を押すと、Sidecar 経由で Prometheus のメトリクスが返ってきます。実際に試したときのクエリ結果です。

cluster と replica ラベルが付いた状態で結果が返ってきたことが確認できます。複数の Prometheus を追加したい場合は、--endpoint を増やすだけです。
Endpoints(Stores)ページで接続を確認する
Thanos Query の上部メニューから Endpoints を開くと、現在接続している Sidecar の一覧が確認できます。

実際に確認すると thanos-sidecar:10901 が Status: UP で表示され、LabelSets に cluster="linuxlab-demo" / replica="0" が付いていました。Last Successful Health Check も数秒前で、Sidecar との通信が正常に維持されています。
Object Storage への接続(長期保存)
ここまでの設定では Prometheus の通常の保存期間(デフォルト 15 日)と変わりません。Thanos の本領は Object Storage と組み合わせた長期保存です。
MinIO(自前)や AWS S3 に接続する場合は、Sidecar に --objstore.config-file オプションを追加します。
type: S3
config:
bucket: my-thanos-bucket
endpoint: s3.amazonaws.com
region: ap-northeast-1
access_key: YOUR_ACCESS_KEY
secret_key: YOUR_SECRET_KEY
$ docker run -d –name thanos-sidecar \
… \
–objstore.config-file=/etc/thanos/objstore.yml \
…
注意:--storage.tsdb.min-block-duration の設定
Thanos Sidecar が S3 にアップロードするのは Prometheus が 2 時間ごとに固めるブロックです。そのため Prometheus 側で --storage.tsdb.min-block-duration=2h と --storage.tsdb.max-block-duration=2h を設定する必要があります。デフォルトのまま(max-block-duration=36h)だと、大きなブロックが作られるまでアップロードが始まりません。
Object Storage を設定した後は、古いブロックをクエリするために Store Gateway を別プロセスで起動し、そのエンドポイントも Thanos Query に追加します。長期間のダッシュボードを Grafana で見たい場合は、Grafana のデータソースに Thanos Query のアドレス(http://<host>:10912)を設定するだけで既存のダッシュボードがそのまま使えます。
よくあるエラーと解決策
①Sidecar が「no external labels configured」と出て起動しない
Thanos v0.41.0 では external_labels が空の場合、Sidecar は起動しますが警告を出します。手順2 を参照して prometheus.yml に external_labels を追加し、Prometheus を再起動してください。
②Thanos Query の Endpoints に Sidecar が表示されない
よくある原因はファイアウォールです。Sidecar の gRPC ポート(デフォルト 10901)を --endpoint で指定したホスト:ポートから到達できるか確認します。
OK
# HTTP は OK でも gRPC ポート (10901) が塞がれている場合がある
$ nc -zv <sidecar_host> 10901
Connection to <sidecar_host> 10901 port [tcp/*] succeeded!
③Thanos Query を起動したら unknown long flag '--store' というエラーが出た
Thanos v0.41.0 では --store フラグが廃止されました(正確には Deprecated)。代わりに --endpoint を使います。私が最初にセットアップしたときもここで詰まりました。
✅ –endpoint=<sidecar>:10901 # v0.41.0 以降の正しい書き方
まとめ
Thanos を使った Prometheus の長期保存・高可用性化の手順をまとめます。
- Ubuntu 24.04 の apt で Prometheus 2.45.3 をインストール(
prometheus-node-exporterも同時に入る) prometheus.ymlにexternal_labels(cluster / replica)を追加する——これが Thanos 連携の必須条件- Thanos Sidecar を
quay.io/thanos/thanos:v0.41.0で起動し、Prometheus と同じ TSDB ディレクトリを共有する - Thanos Query(ポート 10912)で複数 Prometheus に横断クエリ、Grafana からは同じアドレスを向ければよい
- Object Storage(S3 / MinIO)を追加するとメトリクスを無期限に保存できる
Prometheus を本格的に長期運用するなら、最初から Thanos を一緒に組んでおくのが得策です。後から追加するより、external_labels を最初から入れておく方がラベル設計の手戻りが少なくて済みます。
VPS でサーバーを動かしたい方へ
Prometheus + Thanos のような常時稼働サービスは、VPS があると自宅PCを占有せずに済みます。 で VPS 各社の料金・性能比較をまとめています。


コメント