カテゴリー: Linux

備忘:zabbixのdockerコンテナの更新

いや今回はまだ6.0同士なのでぬるかった

前回までのあらすじ

とりあえずKVMイメージからDockerに引っ越した
https://gplains.wordpress.com/2023/04/14/4574/

困ったこと

  • timescaledbのほう
    dockerfileにちゃんと書いたのでこっちは全然問題なかった
  • zabbixのほう
    dockerfileに書いてなかった
    systemdのサービスはなんか適当に作ってた

応急処置…

# zabbix/zabbix-server-pgsql:alpine-6.0-latest
docker pull zabbix-server-pgsql
# zabbix/zabbix-web-nginx-pgsql:alpine-6.0-latest
docker pull zabbix-web-nginx-pgsql

# で、サービス再起動
systemctl stop container-zabbix-server-pgsql.service
systemctl stop container-zabbix-web-nginx-pgsql.service
systemctl start container-zabbix-server-pgsql.service
systemctl start container-zabbix-web-nginx-pgsql.service

とりあえず 6.0.17 > 6.0.27 、少しだけ上がった

さあ問題は次回ですよ

1年半ごとにリリース改訂ってーと、今冬(2024.12)に新しいバージョンが来たり来なかったりして
https://www.zabbix.com/jp/life_cycle_and_release_policy

その頃には今後はtimescaledbもアプデ必要だなー

例えば、RHEL8でQUADSTOR VTLを立てる

なんかうごいたので

参考にしたURL

RHEL8 のインストール

めんどくさいのでboot.iso使って「GUIなしサーバ」でインストールした
rootの代わりにそれっぽい管理者ユーザを「管理者として登録」みたいな
あ、セキュアブート対策で…仮想マシンでは「BIOS」を選択した。UEFIだとセキュアブート周りで吐くらしい

VTLのインストール

公式サイトからrpmをダウンロード

# https://quadstor.com/vtl-extended-edition-downloads.html
wget https://quadstor.com/vtldownloads/quadstor-vtl-ext-3.0.78.10-rhel.x86_64.rpm

依存関係を解決しながらrpmをインストール…ほむ
(素のrpm -ivh だと依存関係を解決しながらインストールしてくれないので)

sudo dnf localinstall quadstor-vtl-ext-3.0.78.10-rhel.x86_64.rpm

説明に従ってサービスを有効化、あとfirewalldを最低限開放する

sudo grep "Secure boot enabled" /var/log/messages # おまじない
sudo /sbin/modprobe qla2xxx
sudo systemctl enable httpd
firewall-cmd --add-service=http --permanent #後述の WebUI
firewall-cmd --add-service=http
firewall-cmd --add-service=iscsi-target --permanent # iSCSI target
firewall-cmd --add-service=iscsi-target

必要であれば、iSCSIに対するアクセス制限を行う

vi /quadstorvtl/etc/iet/initiators.allow

いったんシャットダウンして、後述の「物理ストレージ」用の仮想ディスクを追加、試験用なので60GBくらいでいっか

sudo shutdown -h now

うまくインストールできればなんですが

http://(ホストIP) にアクセスすると、なんか簡素なウェブサイトが表示されるんですが
ここでぽちぽちすると、以下のエントリが生成されるみたいです

  • Physical Storage(VTLの原資)
  • Storage Pools
  • Virtual Libraries(VTL、いっこの物理スペースでも複数個VTLが作れる)
    フレーバーは ADIC HP IBM Overland StrorageTek SpectoraLogic QUANTUM

久々にRHEL8触ってはまったのは…

うん、firewalldのことすっかり忘れてた

ProxmoxでVTLの検証をだな

おらの部屋にはマクセルのオーディオテープしかねえ

事の発端

おしごと(客先)でテープ(LTO)使うお仕事まわってきたんですよテープ(LTO)使うお仕事

でもおれテープ(LTO)使うお仕事ってば途中の維持保守やっても構築とかアプデとかやったことなくて、というか上位者が「ンなもん再構成しなくてもいーだろHAHAHA」みたいな

ということでこんな感じでまじめにやってみることにしたよ

具体的な構成

ふりかえり

  • 家に4C8TくらいのProxmoxがあれば、VTL+Arcserveの検証環境構築はなんとかなりそう
  • Proxmox自身、KVMに+αしたやつってんである程度KVMの知識は要りそう
  • Windowsインスタンスのクローンがうまくいかないとき、一からWindowsインスタンスのインストールし直しが発生するのでこれはこれでめんどい

ProxmoxでRHEL9のqcow2をだな

思ったより大変だった…

前回までのあらすじ

次はRHEL9…なんだけど…

  • ISOの場合
    まあWindows2022と同様でしょ、パス
  • qcow2の場合
    ダウンロード容量少なそうだしこっちにしようぜー

はい、はまりました

  • qcow2イメージのダウンロード
    https://gplains.wordpress.com/2021/12/29/3144/ を参照してqcow2イメージをダウンロード
    なんか嫌な予感がするので、bootisoもダウンロード
  • qcow2イメージのアップロード
    とりあえずproxmoxにSSHログインして
    SFTP機能かなんかでqcow2イメージを /tmp に配置
  • qcow2領域の作成と移動
    https://ostechnix.com/import-qcow2-into-proxmox/
    > sudo mkdir /var/lib/vz/template/qcow
    > sudo mv /tmp/rhel-9.3-x86_64-kvm.qcow2 /var/lib/vz/template/qcow
    Linuxコンソールは、そのまま
  • 仮想マシンを作成
    – 全般
    名前だけ決めておく
    – OS
    「メディアを使用しない」を選ぶ
    – システム
    「VirtIO SCSI single」を選ぶ、別の選択肢でもいいかも
    – ディスク
    「scsi0」のディスクの横の…ごみ箱マークをクリックして削除する
    – CPU
    よしなに
    – メモリ
    よしなに
    – ネットワーク
    よしなに
    仮想マシンが作成されたら、仮想マシンID(100から始まるやつ)をメモ
  • 仮想ディスクを複製する
    > cd /var/lib/vz/template/qcow
    > qm importdisk VMID rhel-9.3-x86_64-kvm.qcow2 local-lvm
    # VMID は、例えば 100 とか
  • しれっと起動

…でうまく動くと思うじゃん!なんか忘れてるじゃん!

RHEL9のqcow2イメージ、rootパスワード未設定です

( ゚д゚;) …

qcow2のrootパスを設定する

proxmox 、標準だと virt-customize も使えないので、一般的なトラシュー手順に頼ります

  • bootisoで起動
    それな
  • emergency mode を起動
    それな
  • 緊急シェルでrootパスワードを設定
    https://qiita.com/cyberblack28/items/9ba9ff301ec6fba1e5f8
    > chroot /mnt/sysroot
    > passwd root
    #任意の文字列を2回入力
    > touch /.autorelabel
    #SELinux更新
    > exit
    > reboot
  • 再起動後、せっかくなので個人アカウント追加のちホスト名変更
    > useradd someuser
    > usermod -G wheel someuser
    > passwd someuser
    > hostnamectl set-hostname somehost.somedomain.local
  • 再起動後、せっかくなのでRHN登録してごにょごにょ
    > nmtui #IPアドレス設定
    > subscription-manager register #おまじない
    > dnf update # 例のアレ

あれ、でも「サマリー」にIPアドレス表示されないね…

仮想マシンの「オプション」>「QEMU Guest Agent」を選んで、「編集」押して、
「無効」から「有効」に変えてやる必要があるらしい。おのれディケイド。
https://pve.proxmox.com/wiki/Qemu-guest-agent#Host

まあこれでひと段落ではあるのだけど

Windowsサーバの場合は、さらに
– QEMU-guest-agent のインストール
– (ほんとは)VirtIOのネットワークドライバ他のインストール
https://zenn.dev/northeggman/articles/d7b29c4e2cd7c7
などなど、もっとメンドクサイ手続きが必要な模様…

KVM仮想マシンのドライブをアレする

うん今までまじめにやってこなかった

前回までのあらすじ

仮想マシンのHDDがアレしたのでちょっとだけ拡張した
https://gplains.wordpress.com/2023/10/22/4941/

仮想ディスクの位置がおかしかったのよ

あいつら、cockpitからデイヤアアするともれなくこの辺にできる
/var/lib/libvirt/images/

おれとしては、 /datastore/images/ あたりに移したい、いやなんとなく

# まずファイルを移動する
ls -l /var/lib/libvirt/images/ 
mv /var/lib/libvirt/images/Win2022.qcow2 /datastore/images/
ls -l /datastore/images/
# qemuの定義ファイルを修正する
# /var/lib/libvirt/images/ ってあるのを /datastore/images/ に書き換えるだけ
vi /etc/libvirt/qemu/Win2022.xml
# \reload/
virsh define  /etc/libvirt/qemu/Win2022.xml

…はい次。

CDROMをマウントしたりしなかったりする

このWin2022とかいう(評価版くさい)安直なイメージ、もといドメインに対して、某バックアップソフトの評価版をマウントしたりしなかったりするよ
https://none06.hatenadiary.org/entry/2020/04/30/005920

# あらかじめ AB_19_WIN_DVS.iso を /datastore/ に置いた体で
# --config ってつけると、停止中のVMもメンテナンスできる
virsh attach-disk  Win2022 /datastore/AB_19_WIN_DVS.iso --type cdrom  \
         --target sdb --config --targetbus sata
# 要らなくなったらアンマウント
# --config ってつけると、停止中のVMもメンテナンスできる
virsh  detach-disk Win2022 --target sdb --config

移動したqcow2が思ったよりでかかったので

まあshrinkしたいよねー
ということでもみじあめさんの記事を参考に

# 作業前はちぇっくするわね
cd /datastore/images/  ; ls -l /datastore/images/*.qcow2
# Win2022.qcow2 から Win2022.new.qcow2 を作成
sudo qemu-img convert -c -f qcow2 -O qcow2 Win2022{,.temp}.qcow2
# 改めてサイズチェック、たぶん temp.qcow2が小さい
cd /datastore/images/  ; ls -l /datastore/images/*.qcow2
# とりあえずベースイメージができたってんで上書きしちゃう
# バックアップソフト入れたりウィルス対策ソフト入れたりしてもcp -p 一発で元通りサ
cp -p Win2022.temp.qcow2 Win2022.qcow2

ちょっとだけHinemos7.0.1を触る

ちょっとだけのつもりだったのに

ダウンロード

たぶんこのへん

ついでにいうとマネージャ/エージェントのインストール、「ダウンロード」の頁に一緒に固めてあるLinux用マニュアルPDFを取っておくとしあわせになれる。

組み合わせ

  • マネージャ/WebUI
    RHEL系ディストリ、しいて言えばRHEL8しか選択肢がなさそう
    いや今さらCentOS7とか使いたくないっしょ
    RHEL9は諸事情でパスせざるを得ない
  • エージェント
    LinuxでもWindowsでもおk、何ならSNMPのときはエージェントいらない
    でもイベントログ伝送したかった(諸事情で)のでWindowsにはエージェントいれることにした

で、マネージャのインストール

  • SELinux:無効にする
    え?令和なのにSELinux無効にしないといけないの?マジで?
    ということでRHEL7/8かCentOS7しか選択肢がなさげ…あんまカーネルパラメータでSELinux無効化したくないしなー
    なほEnforcingがダメなだけやろーとPermissiveに変更したらそれでもだめだった、まじか
  • Firewalld:無効を推奨
    え?令和なのにFIrewalld無効にしないといけないの?マジで?
    泣きながらFirewalld無効にした。おのれディケイド

WebUIのインストール

迷わず行けよ、行けばわかるさ

WIndowsにエージェントのインストール

  • JRE8が必要
    ま、まあまだJRE8入手できるけどな…個人的にはすごく嫌だ
    JRE8入れるととりあえずJAVA_HOMEって環境変数が要るとかそいつをメモってエージェントのインストーラに書かないといけないとか…めんどくs
  • インストーラとWebUI(に表示される)のfacilityIdが稀に異なる
    うんなにいうてるかわからん
    とりあえずAgent.properties近傍にfacilityIdが書いてあったのでそっと(SNMPで抜いた方向に)直した
    https://atomitech.jp/hinemos/study/component/register-agent/

とりあえず検証はできたんだけど

まさか令和5年になってSELINUX無効とかFIREWALLD無効とか、あとJRE8とか求められるとか想像してなかったぜ…

一番アレレだったのは、RHEL8インストール後にインスタンスのipアドレスの有効化どうやるかわすれちゃったこと。結局nmtuiからごにょごにょしたんだけどね…うーんうーん。

ほんとはDockerでデイヤアアってデプロイできるといいんだけど、RHEL8/9向け(CentOSは7で終了ぽい)ってなるとコレのDockerコンテナってDockerHubにでなさそうだなぁーなんとなく

Podmanのコンテナを自動起動させるアレ

Podman、自動起動にはちょいと癖がある

事の発端

Ubuntu 22.04のおうちサーバ、zabbixとvulsをPodmanコンテナで建ててるんですが、apt update とかやって再起動すると…zabbix関連(timescaledbとか)が上がってこなくなりまして

timescaledb上げずに2週間放置してたとか言えねえ

で、timescaledbとかdocker-compose もとい podmanなcompose で飼ってる関係上

後付けで restart:always に変更できねえ

うえー困りましたねー

大人しくsystemdで上げればいいじゃない

ソッスネ

たたあんまりやりたくないよねー、Red Hat さんの記事読みながら頭抱えてる

ま、まあやるんですけど

# timescaledb とzabbix 各プロセス(のコンテナ)のsystemd サービスファイルを作る
cd /tmp
podman generate systemd --new  --files --name timescaledb
podman generate systemd --new  --files --name zabbix-server-pgsql
podman generate systemd --new  --files --name zabbix-web-nginx-pgsql

# オレオレサービスなので /etc/systemd/system に配置
cp -p container-timescaledb.service /etc/systemd/system
cp -p container-zabbix-server-pgsql.service /etc/systemd/system
cp -p container-zabbix-web-nginx-pgsql.service /etc/systemd/system

# 例のおまじない
systemctl daemon-reload

# かたっぱしからdockerインスタンス落とす
podman stop zabbix-web-nginx-pgsql ;podman stop  zabbix-server-pgsql ; podman stop timescaledb

# オレオレサービスを有効化
systemctl enable container-timescaledb ; systemctl enable container-zabbix-server-pgsql ;systemctl enable container-zabbix-web-nginx-pgsql

# 潔く再起動
 systemctl reboot

\ぷにょん/

あ、あーZABBIXアラートきたわ…うん再起動したらちゃんとtimescaledbもzabbix webui もあがってきた。よき。
サービス名がすっげーダサいのを除けばな…

家のQEMUをDockerに移して1か月が経過しました

そうだねすごくどうでもいいね

以前の環境

Intel のBroadwell NUC (型番忘れた)にUbuntu 22.04 が載ってて
その上にKVM(QEMU)で仮想マシンがいくつか載ってたんですよ

  • vulsスキャン用Docker
    alpine の仮想マシンにdockerを入れて、そのうえでvulsスキャン用のDockerコンテナが動いてました
  • ZABBIXサーバ
    CentOS7 の仮想マシンに、以前の客先での動作検証(適用前準備)の体でZABBIXサーバが動いてました
  • 稀にVMware ESXi 6.7
    以前の客先での動作検証(なんだっけ複数クラスタ立ててvCemter繋ぎ変え試行とか)の体で
    ESXiサーバがデプロイされたまま放置されてました
    まあ繋ぎ変え試行の検証やったあとはシャットダウンしてたんですけどね

ま、まあ2C4Tの環境で3VM建てるのはさすがにねー。あと、1VMごとに2GBずつくらいメモリ消費してたので…うーんうーん
すまん、当時のトレンドっちうかログはもうない

で、せっかくなのでvulsとZABBIXをDockerでまとめたんです

単純にUbuntu 22.04 にPodman 入れてごにょごにょしただけなんですが

  • vulsスキャン用Docker
    自分がalpineにデプロイしたときの過去記事を参考に
    /opt/vuls を掘ってdocker-compose だっけ?を実行
  • ZABBIXサーバ
    /opt/zabbix を掘って、まず timescaledb のコンテナをデプロイして
    そのあと zabbix-server と zabbix-web のコンテナをちまちまデプロイ
  • ESXi6.7のイメージ
    漢らしく削除

単純にSATA SSD の /opt 領域を切り出して各コンテナに使わせてるので、
– インスタンスごとのオーバーヘッド(ディストリ単位でがばーっとディスク容量とるやつ)は控えめ
– プロセス分離してるだけなので親マシンからの対象フォルダへのアクセスは自由
– むしろNFSとかのネットワーク共有すらいらねえ
と非常に便利になりました。はい

まだやりかけといえばやりかけ…

うん、zabbixもvulsrepoも別ポートで開放させてるだけなんだよね、ホントは 80/tcp の入り口から分岐させないとなんだが

もっとも、自分もあんまdocker周りはよくわかってないので…サービスごとに接続ポートをわけてるやつ、あれをnginxで振分けとかせにゃかんなーなどと…

まあ雑にrewrite してみたりするわね

ええ書いてやったよ雑nginx設定

server{
listen 80;
server_name (ご家庭のホスト名);

location / {
 rewrite  ^/vuls(.*)$   http://(ご家庭のホスト名):8011/ permanent;
 rewrite  ^/zabbix(.*)$ http://(ご家庭のホスト名):8082/ permanent;
}
}

さらにindex.html なんかも書いてみる。何年ぶりだよおまへ

<html>
 <body>
  <a href="http://(ご家庭のホスト名):5111/">vulsrepo</a></br>
  <a href="http://(ご家庭のホスト名):8082/">Zabbix</a></br>
  <a href="http://(ご家庭のホスト名):9090/">Cockpit</a></br>
 </body>
</html>

ほいでもってこいつをDockerfileでエイヤすると

FROM nginx
COPY ./default.conf /etc/nginx/conf.d/default.conf
COPY ./index.html /etc/nginx/html/index.htm

で、 docker-compose up なんかうってやると…まあ

…っていうかわざわざrewrite書かなくてもindex.html だけで良かったちゃうんかと(それな)

5/14追記:nginxコンテナも見直したんですよ

まあ実はvulsのdocker-compose.yaml にも、nginxコンテナを上げる設定がございまして

そいつに上述設定を仕込んだら…後ででっちあげた /opt/nginx/ 配下のnginxコンテナが不要になりましt

おあとがよろしいようで

ま、まあ少しずついじってみよう…

timescaledbのDockerイメージでpg_dumpする

うんそれは厳密にはDockerイメージのバックアップではない

前回までのあらすじ

とりあえずtimescaledb + zabbix でDockerイメージ作ったんですよ、はい
https://gplains.wordpress.com/2023/04/14/4574/
https://gplains.wordpress.com/2023/04/14/4556/

で…timescaledbのDockerイメージ、バックアップするのすっかり忘れてました

相手がDockerなのがアレ

  • 相手はDockerです
    ってことはあれか、docker exec とかか
  • /home/postgres はバインドマウント?してます
    ってことは仮にdocker exec bash して、そこでpg_dumpしたら
    pg_dump の結果はバインドマウント先に吐き出されるってことね、理解した
  • でも毎日バックアップ取りたいんだよね?
    ま、まあご家庭内のzabbixデータベースだからせいぜい1GB以下だしな、日次でダンプしてもたかが知れて…

とりあえず雑にやってみる

コマンドラインならこんな感じだ

docker exec -it timescaledb bash -c "pg_dump -U postgres -Fc zabbix > zbx_`date +%Y%m%d`.dmp"

わらひの場合、コンテナインスタンス timescaledb の postgres ユーザは
/opt/zabbix/zbx_env/postgres/ にバインドマウントしておるので

定期的にこんな感じでスクリプトを流せば、 zbx_20230429.dmp とかが勝手にお掃除される、はず
find /opt/zabbix/zbx_env/postgres/zb* -mtime +4 -prune -exec rm -rf {} \;

timescaledbにpg_dumpすると出てくるアレ

不通にpg_dump 打つとね、なんかすげーのが出てくるわけよ

pg_dump: NOTICE: hypertable data are in the chunks, no data will be copied
DETAIL: Data for hypertables are stored in the chunks of a hypertable so COPY TO of a hypertable will not copy any data.
HINT: Use “COPY (SELECT * FROM ) TO …” to copy all data in hypertable, or copy each chunk individually.

公式にも「気にするな」って書いてある…
https://docs.timescale.com/self-hosted/latest/troubleshooting/

まあスクリプト書いてcronで動かしてみたわけなんですけど

ハイパーテーブルに対するチャンク(MySQLでいうとこのパーティション)は、一週間経つと圧縮されるし
まあ圧縮されちゃうと参照のみになるわけですが(ってhistory区とかレコード削除したいかと云われるとねー)

timescaledbでパーティション化?チャンク化?したデータ400MBをpg_dumpしたら、150MBくらいのバイナリが生成されるのは「あれ、そこまで小さくなるっけ…」って感じで結構ショッキングだったりします、はい

timescaledbのdockerイメージを試しただけなのに

なんかtimescaledbの中の人に突っ込みを貰って頭抱えてる

MySQLのパーティショニングがアレ

Zabbix、知ってる範囲だとバックエンドDBにMySQLを使うことが多いんですが…

  • 明示的にパーティション切る必要がある
  • Zabbix標準のhousekeepingとちょっと相性悪い
    レコード清掃してもシュリンクしないからデブデブのまんま、とかその辺
  • housekeepingする代わりにパーティション追加削除のバッチを動かす必要がある
    まあパーティション作って消すだけなんですけどね…

そこでtimescaledbを試してみた

  • PostgreSQLに拡張機能がついたやつ
  • 日単位とかでパーティショニング(チャンク化)してくれるらしい
  • 対応してるアプリケーションだと連携してチャンクを圧縮してくれるらしい
    historyとかtrendsなんて普通過去日付のレコードはいじらないからな
    あと、いい感じにチャンクを圧縮してくれると…もしかしたらread値も早くなるかも

dockerイメージごとのビミョーな差異

とりあえずQiitaの記事を参考に作ってみたんですよ
https://qiita.com/xotaki/items/2bf03752bc00b84fef47

…うーん?pgdataの位置がなんかおかしいぞ?

  • timescaledb:latest-pg14
    /var/lib/postgres/data
  • timescaledb-ha:pg14-latest
    /home/postgres/pgdata

…timescaledbの中の人曰く、「timescaledb-ha:pg14-latest を使ってちょうだい」とのことなので
とりあえず /home/postgres/pgdata に コンテナ親のフォルダを見せる体で設定…

pgloader の挙動のビミョーな差異

まあわらひがわるいだけなんですが

  • docker run の引数で直接移行元/移行先を呼んだ場合
    docker run 中略 dimitri/pgloader pgloader mysql://中略/zabbix postgresql://中略/zabbix
    あとでpostgresql(timescaledb)側を開いてみたら…おい historyテーブル空なんですが
  • 真面目にloader設定を書いて pgloader の引数に loader設定を引っかけた場合
    docker run 中略 –mount type=bind,source=略,target=/opt/zabbix/dump dimitri/pgloader \
    pgloader /opt/zabbix/dump/loader
    で、loader の中身は…同じ/opt/zabbix/dump にqiitaで読んだ通りのファイルを配置して
    LOAD DATABASE FROM mysql://中略/zabbix INTO postgresql://中略/zabbix
    WITH include no drop, truncate, create no tables, create no indexes, no foreign keys, reset sequences,
    data only SET maintenance_work_mem TO ‘1024MB’, work_mem to ‘256MB’
    ALTER SCHEMA ‘zabbix’ RENAME TO ‘public’
    BEFORE LOAD EXECUTE /opt/zabbix/dump/create.sql
    AFTER LOAD EXECUTE /opt/zabbix/dump/alter.sql;

    うん、こちらは問題なし。ちゃんとhistory テーブルにぎっちり中身が詰まってる

ということで、真面目にloader設定は書いてあげようって感じです、はい

で、timescaledbの本気…とは

pgloaderでインポートが終わった後に、docker exec でtimescaledbのコンテナに入って…例のsqlを実行
(/timescaledb.sql.gzは…あらかじめ、zabbix-serverの入ってる移行元マシンとかで「zabbix-server-pgsql 」パッケージをインストールして引っこ抜いてください…)

docker exec -it timescaledb bash
 zcat /opt/dump/timescaledb.sql.gz | psql zabbix
  • テーブルごとに制約(ハイパーテーブル?)を設定
  • 制約に従ってhistory /history_uint / trends / trends_uint テーブルを分割
  • zabbix webui にメニューを追加
    Zabbix6.0のWebuiで「管理」>「一般設定」>「データの保存期間」に遷移すると
    「ヒストリとトレンドの圧縮」という項目がアクティブになる…はず
    ※少なくとも、timescaledbのpg14ベース + zabbix6.0 の場合は有効
    ※timescaledbのpg14ベース + zabbix5.0の組合せだとダメだった

history/trends テーブルのチャンク化、これだけでも変換後のディスクアクセスがぐっと小さくなる(テーブルを全部舐めなくてすむので)のだけど…一個だけ注意点が。

元データの倍くらいのキャパが必要。

ですよねーこれMySQLでパーティション化したとき同じ経験ありますもーん。ということでディスクのキャパシティだけは注意…まあいいや…

実際に「ヒストリとトレンドの圧縮」にチェックを入れると…ま、まあ家庭内のzabbixサーバなんであれなんですが

  • 想定される環境
    history3ホストx90日分
    trends3ホストx180日分
  • 移行前のMySQL
    2GBくらい
  • 移行後に圧縮(compress?shrink?)掛ける直前のtimescaledb
    2GBくらい (+WALが1GB)
  • 圧縮(compress)が掛かったあとのtimescaledb
    400MBくらい(historyの9割とtrendsの半分以上が圧縮された感じ)

と、まあなかなかに強烈な縮みっぷりでした…すごいわコレ

で、問題なんですけど

やべ、自分ポスグレ触るの初めて(というか7-8年ぶり?)だわ…
バックアップどうやるんだっけ…pg_dump?!