Zabbix 最新バージョン解説
2020/11/13@Zabbix Conference Japan 2020
SRA OSS, Inc. 日本支社

OSS事業本部 技術部 基盤技術グループ
赤松 俊弘

whoami 赤松 俊弘（Toshihiro Akamatsu）
 SRA OSS, Inc. 日本支社
OSS 事業本部 基盤技術グループ
職務 PostgreSQL 以外の OSS 全般の技術サポート、構築 主に Zabbix を担当© 2020 SRA OSS, Inc. Japan2

Zabbix 5.0/5.2 について© 2020 SRA OSS, Inc. Japan3

Zabbix 5.0/5.2 について
Zabbix 5.0• 2020/05/12 リリース
• LTS (Long Term Support) 版
Zabbix 5.2• 2020/10/27 リリース
• ポイントリリース版© 2020 SRA OSS, Inc. Japan

4

Zabbix 5.0/5.2 のサポート期間

5.2

フルサポート

5.0 LTS
4.0 LTS
3.0 LTS

フルサポートフルサポートリミテッドサポート

リミテッドサポート

リミテッドサポート© 2020 SRA OSS, Inc. Japan5

ソフトウェア要件 －Database－
MySQL
OraclePostgreSQLIBM DB2TimescaleDB
SQLite(Zabbix proxy のみ)

Zabbix 4.0
Zabbix 5.0/5.2
5.0.3 - 8.0.x
5.5.62 - 8.0.x
10g 以降11.2 以降
8.1 以降9.2.24 以降
9.7 以降サポート削除
1.0 以降（OSS 版）
3.3.5 以降
© 2020 SRA OSS, Inc. Japan6

ソフトウェア要件 －Frontend－
Zabbix 4.0
ApachePHP

5.4.0 以降

Zabbix 5.0
1.3.12 以降
7.2.0 以降

Zabbix 5.2
7.2.5 以降

• Zabbix 5.0 より PHP 7.2 以上が必須• RHEL/CentOS 7 の場合は Software Collection レポジトリなどから
RHEL/CentOS 7 frontend installation
https://www.zabbix.com/documentation/current/manual/installation/install_from_packages/frontend_on_rhel7• Zabbix 5.0 より Internet Explorer のサポート削除© 2020 SRA OSS, Inc. Japan7

Zabbix 5.0 の新機能

© 2020 SRA OSS, Inc. Japan8

Zabbix 5.0 の新機能
アイテム/トリガー© 2020 SRA OSS, Inc. Japan

9

キーの許可/拒否リスト設定
Zabbix エージェントで許可/拒否するアイテムキーを設定可能• AllowKey=<pattern>• DenyKey=<pattern>/etc/zabbix/zabbix_agentd.conf----------------------------------------------------AllowKey=vfs.file.*[/var/log/*]
AllowKey=system.localtime[*]DenyKey=*© 2020 SRA OSS, Inc. Japan10

トリガー条件式での文字列比較
条件式で文字列同士の比較が= (equal)、<> (not equal) 演算子で可能に{Zabbix server:zabbix[version].last()}=5.0.0{host:log[/var/log/messages].last()}<>{host:log[/var/log/messages].prev()}© 2020 SRA OSS, Inc. Japan

11

テキスト -置換- の保存前処理の追加
foobarfoobaz置換bar ⇒ bazhoge

foobarhoge

置換o⇒© 2020 SRA OSS, Inc. Japan

fbar
12

LLD のオーバライド
プロトタイプの設定を条件指定で部分的に上書き可能//data/data だけはトリガーの閾値を変える/tmp だけは監視間隔を変える/tmp© 2020 SRA OSS, Inc. Japan13

Zabbix 5.0 アイテム/トリガーの新機能• アイテムのテスト機能• db.odbc.* キーに接続文字列設定パラメータが追加• Zabbix プロキシ接続復旧後の nodata 関数発火抑制機能• zabbix[stats,<ip>,<port>] および zabbix[version]の追加• jmx アイテムでの表形式データのサポート• ipmi.get アイテムキーの追加• IPMI センサのディスカバリ

© 2020 SRA OSS, Inc. Japan14

Zabbix 5.0 の新機能
マクロ

© 2020 SRA OSS, Inc. Japan15マクロ値のマスク
機密情報をマクロで設定する際に値を表示させないことが可能一度マスクを設定すると、フロントエンド上からは値の中身は確認・変更不可（DB 上では平文で保存）© 2020 SRA OSS, Inc. Japan

16

Zabbix 5.0 マクロの新機能• ホストのプロトタイプでユーザマクロを設定可能に• IPMI のユーザ名およびパスワードでユーザマクロを使用可能に• 以下のマクロが新規追加• {EVENT.DURATION}：イベントの継続期間• {EVENT.TAGSJSON}：JSON 形式のイベントタグ• {EVENT.RECOVERY.TAGSJSON}：JSON 形式の復旧イベントのタグ• 通知での {HOST.ID} マクロをサポート© 2020 SRA OSS, Inc. Japan17

Zabbix 5.0 の新機能
メディアタイプ© 2020 SRA OSS, Inc. Japan18

新規の Webhook
デフォルトで設定されている Webhook が追加••••••••

DiscordJira
Jira ServiceDesk
Jira with CustomFields
MattermostMS TeamsOpsgenie
PagerDuty•
••
••••
•

© 2020 SRA OSS, Inc. Japan

PushoverRedmineServiceNow
SIGNL4
SlackTelegram
ZammadZendesk
19

メッセージテンプレート
通知のデフォルトのメッセージがアクションからメディアタイプに移動© 2020 SRA OSS, Inc. Japan20

Zabbix 5.0 メディアタイプのその他の新機能• Webhook のフロントエンドでのテスト機能• Webhook にデフォルトで HTTP Proxy パラメータが追加• Email のスレッドでの送信機能© 2020 SRA OSS, Inc. Japan21

Zabbix 5.0 の新機能
セキュリティ

© 2020 SRA OSS, Inc. Japan

22

Zabbix 5.0 セキュリティの新機能• Zabbix DB への TLS 接続機能
• フロントエンドのユーザ認証に SAML 認証が追加• ユーザのパスワードハッシュを MD5 から Bcrypt に変更• mbedTLS (PolarSSL) のサポート削除• OpenSSL、GnuTSL、LibreTSL は引き続きサポート© 2020 SRA OSS, Inc. Japan23

Zabbix 5.0 の新機能
フロントエンド© 2020 SRA OSS, Inc. Japan24

メニューのレイアウト変更
上部横レイアウトから左サイド縦レイアウトに変更
通常縮小© 2020 SRA OSS, Inc. Japan

非表示

25

監視データ ⇒ ホストページの追加
監視データ ⇒ ホストページが新たに追加© 2020 SRA OSS, Inc. Japan

26

インタフェースでの SNMP 設定
SNMP のバージョンやパラメータをインタフェースで設定© 2020 SRA OSS, Inc. Japan27

Zabbix 5.0 フロントエンドのその他の新機能• 障害を未確認に戻す機能• 独自モジュールによるフロントエンドの拡張• LLD ルール一覧にフィルタが追加• ウィジェットに新規フィルタを追加• グラフウィジェットのスクリーンショットの PNG ダウンロード機能• ウィジェットのコピー & ペースト機能© 2020 SRA OSS, Inc. Japan28

Zabbix 5.2 の新機能

© 2020 SRA OSS, Inc. Japan29

Zabbix 5.2 の新機能
アイテム/トリガー© 2020 SRA OSS, Inc. Japan30

スクリプトタイプのアイテム
JavaScript で HTTP/HTTPS を介したデータ収集が可能なアイテムタイプが追加• 複数対象へのリクエスト• 多段ステップのリクエスト• 取得データの複雑な加工や処理© 2020 SRA OSS, Inc. Japan31

複数ホストからのアクティブチェック
1 つの Zabbix エージェントで複数ホストのアクティブチェックを設定可能

App server
アクティブチェックアイテム A

Hostname=App server, Web server

Web server
アクティブチェックアイテム B© 2020 SRA OSS, Inc. Japan32

Modbus および MQTT のサポート
IoT 機器の監視に有用なアイテムの追加• modbus.get• modbus データを JSON 形式で返す• Zabbix エージェントおよびZabbix エージェント 2 で利用可能• mqtt.get• MQTT のトピックを JSON 形式で返す• Zabbix エージェント 2 のアクティブチェックでのみ利用可能© 2020 SRA OSS, Inc. Japan33

長期解析用のトリガー関数
トレンド値を対象としたトリガー関数が追加• trendavg• trendcount• trenddelta• trendmax• trendmin• trendsum: 一定期間のトレンド値の平均値: 一定期間のトレンド値の個数: 一定期間のトレンド値の最大/最小値の差分: 一定期間のトレンド値の最大値: 一定期間のトレンド値の最小値: 一定期間のトレンド値の合計© 2020 SRA OSS, Inc. Japan34

長期解析用のトリガー関数 - 使用例• 最新の 1 時間のメモリ使用量の最大値と最小値の差分が1M バイトより大きければ障害{server:vm.memory.size[available].trenddelta(1h,now/h)}>1M• 今月の 1 分平均の CPU ロードの平均値が先月より 10% 以上増加したら障害{server:system.cpu.load[all,avg1].trendavg(1M,now/M)}>=
1.1*{server:system.cpu.load[all,avg1].trendavg(1M,now/M-1M)}© 2020 SRA OSS, Inc. Japan35

Zabbix 5.2 アイテム/トリガーのその他の新機能• アイテム取得不可時のエラーカスタマイズ• エージェントの設定ファイルに UserParameterDir パラメータの追加• ユーザパラメータのサーチパス• このディレクトリにスクリプトを配置することで、UserParameter で./script.sh の指定方法が可能• 取得不可アイテムの監視間隔設定の削除• Zabbix 5.0 までは一般設定で一括して設定• Zabbix 5.2 からは各アイテムの監視間隔を利用© 2020 SRA OSS, Inc. Japan36

Zabbix 5.2 の新機能
マクロ

© 2020 SRA OSS, Inc. Japan37

エクスプレッション（計算式）マクロ
計算式の結果を出力するマクロが追加• {?計算式} で設定• トリガー名で利用可能• トリガー関数を含むアイテムキーを計算式内で使用可能• 内部のマクロも展開される{?10*{{HOST.HOST}:system.cpu.load.trendavg(1h,now/h)}}© 2020 SRA OSS, Inc. Japan38

マクロ関数の追加
数値および日時をフォーマットして出力するマクロ関数が追加• fmtnum (<digits>)• 出力する小数点以下の桁数を digits で指定• 使用できるマクロは {ITEM.VALUE}、{ITEM.LASTVALUE}、計算式マクロ• fmttime (<format>,<time_shift>)• 出力する日時のフォーマットおよびオフセットを指定• 使用できるマクロは {TIME}• format に指定する内容は strftime のフォーマットに従う© 2020 SRA OSS, Inc. Japan

39

式マクロおよびマクロ関数の使用例
CPU load increased by{{?100*{{HOST.HOST}:system.cpu.load.trendavg(1M,now/M)}/{{HOST.HOST}:system.cpu.load.trendavg(1M,now/M-1M)}}.fmtnum(0)}%in {{TIME}.fmttime(%B,-1M)}comparing to {{TIME}.fmttime(%B,-2M)}

CPU load increased by 24% in July comparing to June
© 2020 SRA OSS, Inc. Japan40

Zabbix 5.2 マクロのその他の新機能• {ITEM.LOG.*} マクロの使用可能箇所の追加• 新規マクロの追加• {ITEM.DESCRIPTION.ORIG<1-9>}：マクロ展開なしのアイテムの説明• {LLDRULE.DESCRIPTION.ORIG}：マクロ展開なしの LLD ルールの説明• ユーザマクロがアイテムおよび LLD ルールの説明で使用可能• ユーザマクロの最大長が 255 文字から 2048 文字に拡張© 2020 SRA OSS, Inc. Japan41

Zabbix 5.2 の新機能
セキュリティ

© 2020 SRA OSS, Inc. Japan42

機密情報のストレージ
ユーザマクロの値や Zabbix DB に接続するユーザ・パスワードをHashiCorp Vault に保存可能• HashiCorp Vault• 機密情報管理のためのソフトウェア• 対応するシークレットエンジンは
KV Secrets Engine - Version 2(kv-v2)• Zabbix は設定キャッシュに保存© 2020 SRA OSS, Inc. Japan

資格情報の取得

Vault から取得した資格情報でアクセス

43

Zabbix 5.2 セキュリティのその他の新機能• HTTP エージェントおよび Web 監視での Digest 認証のサポート追加© 2020 SRA OSS, Inc. Japan44

Zabbix 5.2 の新機能
フロントエンド© 2020 SRA OSS, Inc. Japan45

タイムゾーンの定義
グローバルおよびユーザ毎にタイムゾーンが設定可能• Zabbix 5.0 まで：PHP の date.timezone で全体のタイムゾーン設定• Zabbix 5.2：システムデフォルトのタイムゾーン設定
グローバルのタイムゾーン設定
ユーザ毎のタイムゾーン設定© 2020 SRA OSS, Inc. Japan46

タイムゾーンの定義 – 注意点• 通知内の {EVENT.TIME} などのマクロは送信されるユーザに設定されたタイムゾーンで展開• メディアの有効な時間帯の設定もユーザに設定されたタイムゾーンに依存© 2020 SRA OSS, Inc. Japan47

ユーザロールの追加
ユーザごとにロール（役割）を細かく設定可能
ユーザグループ B

ユーザグループ A

ロール A

ロール B
© 2020 SRA OSS, Inc. Japan

ロール C
48

ユーザロール – ロールの設定内容• フロントエンドの各ページへのアクセス権限• 各 Zabbix API の実行可否• ダッシュボードやマップの作成・変更権限• 障害の更新権限© 2020 SRA OSS, Inc. Japan49

タブにおける情報表示
タブ上に設定数や機能の利用状況を表示© 2020 SRA OSS, Inc. Japan

50

フィルタ設定の保存
監視データ ⇒ ホスト/障害ページのフィルタ設定を保存• 保存した設定はタブで管理• 設定毎に現在のレコード数を表示可能© 2020 SRA OSS, Inc. Japan51

Zabbix 5.2 フロントエンドのその他の新機能• インタフェース設定なしのホストを作成可能• デフォルトの言語設定機能• メンテナンスページの構成変更• 管理 ⇒ 一般設定ページの構成変更・パラメータ追加• セッション情報の Cookie への保存
• YAML 形式での設定エクスポート© 2020 SRA OSS, Inc. Japan52

Zabbix 5.42021 年 4 – 6 月リリース予定© 2020 SRA OSS, Inc. Japan53

Thank you!
© 2020 SRA OSS, Inc. Japan54

Appendix
HashiCorp Vault の設定例

© 2020 SRA OSS, Inc. Japan

55

Vault のインストール• 以下の公式サイトを参考にインストールする• https://www.vaultproject.io/docs/install• パッケージ、コンパイル済みバイナリ、ソースコンパイルがある• 今回の設定例ではコンパイル済みバイナリを使用// バイナリのダウンロードと配置# wget https://releases.hashicorp.com/vault/1.6.0/vault_1.6.0_linux_amd64.zip# unzip vault_1.6.0_linux_amd64.zip# mv vault /usr/local/sbin/// 動作確認# vault
Usage: vault <command> [args]…
© 2020 SRA OSS, Inc. Japan

56

Vault の設定ファイル作成• ストレージとして Filesystem (/var/lib/vault/data) を使用• プロトコルは http とする (セキュリティを考慮するなら https の方がよい)# vi /etc /vault.hcl
storage “file” {path = “/var/lib/vault/data"}
listener "tcp" {address= "127.0.0.1:8200"
tls_disable = 1}
api_addr = "http://127.0.0.1:8200"
ui = true© 2020 SRA OSS, Inc. Japan57

Vault の起動// 設定したストレージ用のディレクトリ作成# mkdir -p /var/lib/vault/data// Vault サーバの起動# vault server –config=/etc /vault.hcl==> Vault server configuration:
Api Address: http://127.0.0.1:8200
Cgo: disabled
Cluster Address: https://127.0.0.1:8201
Go Version: go1.15.4…
==> Vault server started! Log data will stream in below:© 2020 SRA OSS, Inc. Japan58

Vault の初期化
• 初期化時に出力される Unseal Key と Root Token はメモしておく// クライアントが Vault サーバと通信するためのエンドポイントを環境変数で設定# export VAULT_ADDR=http://127.0.0.1:8200// Vault の初期化
# vault operator init
Unseal Key 1: 4jYbl2CBIv6SpkKj6Hos9iD32k5RfGkLzlosrrq/JgOm
Unseal Key 2: B05G1DRtfYckFV5BbdBvXq0wkK5HFqB9g2jcDmNfTQiS
Unseal Key 3: Arig0N9rN9ezkTRo7qTB7gsIZDaonOcc53EHo83F5chA
Unseal Key 4: 0cZE0C/gEk3YHaKjIWxhyyfs8REhqkRW/CSXTnmTilv+
Unseal Key 5: fYhZOseRgzxmJCmIqUdxEm9C3jB5Q27AowER9w4FC2Ck
Initial Root Token: s.KkNJYWF5g0pomcCLEmDdOVCW…
© 2020 SRA OSS, Inc. Japan

59

Vault の保護解除• 起動直後は保護状態のため、unseal key で保護を解除する• 保護状態だと vault に対する読み書きはできない• 5 つの unseal key の内、異なる 3 つの key を使うことで解除できる• Sealed が false になれば解除状態// Vault の保護解除（異なる unseal key で 3 回実行）
# vault operator unseal
Unseal Key (will be hidden): <unseal key を入力>…
KeyValue------Seal Type shamir
Initialized true
Sealedfalse<= 保護解除状態…
© 2020 SRA OSS, Inc. Japan60

Vault への Root Token での認証
• Root Token を使って Vault へログインする# vault login s.KkNJYWF5g0pomcCLEmDdOVCW
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"again. Future Vault requests will automatically use this token.
KeyValue------tokens.KkNJYWF5g0pomcCLEmDdOVCW
token_accessor
3VdcC5p7aRj4VWJuL35HhAKz
token_duration∞
token_renewable false
token_policies["root"]identity_policies []policies["root"]© 2020 SRA OSS, Inc. Japan61

シークレットエンジンの有効化• KV Secrets Engine - Version 2 (kv-v2) を有効化する• パスはなんでもよいが Zabbix の公式ドキュメントに従って secret/ とする• これで機密情報を Vault に保存する準備は完了# vault secrets enable -path=secret/ kv-v2
Success! Enabled the kv-v2 secrets engine at: secret/© 2020 SRA OSS, Inc. Japan62

Vault へのユーザマクロ用の機密情報の登録• Vault にユーザマクロで利用したい機密情報を登録する// secret/zabbix に key：snmp_community、value：hoge で登録する# vault kv put secret/zabbix snmp_community=hoge// 登録内容の確認# vault kv get secret/zabbix…
====== Data ======
KeyValue------Snmp_community hoge

© 2020 SRA OSS, Inc. Japan63

マクロの設定• マクロの値を <Vault の保存先パス：キー> の形式で登録し右のドロップボックスで「Vault のシークレット」を選択する• マクロは Vault に登録された対応する value の値で展開される© 2020 SRA OSS, Inc. Japan64

Vault への Zabbix DB の資格情報の登録• Vault に Zabbix DB のユーザ名およびパスワードを登録する// secret/zabbix/database に Zabbix DB のユーザ名およびパスワードを登録# vault kv put secret/zabbix/database username=zabbix password=<パスワード>// 登録内容の確認# vault kv get secret/zabbix/database…
====== Data ======
KeyValue------password <パスワード>
username zabbix© 2020 SRA OSS, Inc. Japan65

Zabbix サーバ・プロキシの設定• 各設定ファイルの Vault* パラメータに設定する• 実際にはトークンは read-only のものを別途用意したほうがよい# vi /etc /zabbix/zabbix_[server|proxy].conf
VaultToken=s.KkNJYWF5g0pomcCLEmDdOVCW
VaultURL=http://127.0.0.1:8200
VaultDBPath=secret/zabbix/database• Zabbix プロキシは直接 Vault には接続せず、Zabbix サーバが持っている機密情報から検索して取得する© 2020 SRA OSS, Inc. Japan66

フロントエンドの設定• フロントエンドのセットアップ時に Vault の情報を設定する• /etc/zabbix/web/zabbix.conf.php からも設定可能# vi /etc /zabbix/web/zabbix.conf.php$DB['VAULT_URL']= 'http://127.0.0.1:8200';$DB[‘VAULT_DB_PATH’]= 'secret/zabbix/database';$DB[‘VAULT_TOKEN’]= ‘s.KkNJYWF5g0pomcCLEmDdOVCW';© 2020 SRA OSS, Inc. Japan67

HashiCorp Vault の詳細情報• https://www.vaultproject.io/docs• https://learn.hashicorp.com/vault© 2020 SRA OSS, Inc. Japan68