Opensourcetechブログ

OpensourcetechによるNGINX/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

Zabbix 4.0 LTSでグラフの単位を「K(10^3)」などで丸めず表示する方法

こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。

 Alexei Vladishevさんと一緒

 

 Zabbix 4.0 LTSのグラフで、単位を丸めずに表示する方法に関するメモです。

 

 

デフォルト表示

デフォルトのグラフ表示ですが、

以下のように、1,000であれば1Kなどに丸められてしまいます。

表示する値が気圧など詳細を見たいものの場合、ちょっと不便です。

デフォルトで丸められているグラフ

 

 

原因

原因というかZabbixでグラフの単位表示をどのように処理しているかというと、

「/usr/share/zabbix/include/func.inc.php」の673行目にある「$blackList = ['%', 'ms', 'rpm', 'RPM'];」で指定された単位のみ丸められないようになっています。

takahiro@k-Edubuntu:~$ cat -n /usr/share/zabbix/include/func.inc.php
1 <?php
2 /*
3 ** Zabbix
4 ** Copyright (C) 2001-2019 Zabbix SIA
5 **
6 ** This program is free software; you can redistribute it and/or modify
7 ** it under the terms of the GNU General Public License as published by
8 ** the Free Software Foundation; either version 2 of the License, or
9 ** (at your option) any later version.
10 **
11 ** This program is distributed in the hope that it will be useful,
12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ** GNU General Public License for more details.
15 **
16 ** You should have received a copy of the GNU General Public License
17 ** along with this program; if not, write to the Free Software
18 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 **/
.
.
.
省略
.
.
.
644 function convert_units($options = ) {
645 $defOptions = [
646 'value' => null,
647 'units' => null,
648 'convert' => ITEM_CONVERT_WITH_UNITS,
649 'byteStep' => false,
650 'pow' => false,
651 'ignoreMillisec' => false,
652 'length' => false
653 ];
654
655 $options = zbx_array_merge($defOptions, $options);
656
657 // special processing for unix timestamps
658 if ($options['units'] == 'unixtime') {
659 return zbx_date2str(DATE_TIME_FORMAT_SECONDS, $options['value']);
660 }
661
662 // special processing of uptime
663 if ($options['units'] == 'uptime') {
664 return convertUnitsUptime($options['value']);
665 }
666
667 // special processing for seconds
668 if ($options['units'] == 's') {
669 return convertUnitsS($options['value'], $options['ignoreMillisec']);
670 }
671
672 // black list of units that should have no multiplier prefix (K, M, G etc) applied
673 $blackList = ['%', 'ms', 'rpm', 'RPM'];
674
675 // add to the blacklist if unit is prefixed with '!'
676 if ($options['units'] !== null && $options['units'] !== '' && $options['units'][0] === '!') {
677 $options['units'] = substr($options['units'], 1);
678 $blackList
= $options['units'];
679 }
680
.
.
.
省略

 

 

単位表示の変更方法

以下の記事で設定したアイテムの単位欄にちょっと手を加えることで対応できます。

単位表示変更前

zabbix_senderでRaspberry PiのセンサーデータをZabbix Serverへ送信する(1) - Opensourcetechブログ

zabbix_senderでRaspberry PiのセンサーデータをZabbix Serverへ送信する(2) - Opensourcetechブログ

 

変更方法は、単位の前に「!(エクスクラメーションマーク)」を付与するだけ。

単位変更後

 

 

無事に変更できました!

単位変更後のグラフ

 

 

一応、Zabbix Officialのドキュメントにも載っています。

zabbix officialのドキュメント

https://www.zabbix.com/documentation/4.2/manual/config/items/item

 

 

なおZabbix 4.0より前のバージョンでは、

上記方法ではなく「/usr/share/zabbix/include/func.inc.php」の「$blackList = ['%', 'ms', 'rpm', 'RPM'];」に使用したい単位を追加することで対応できるとのことです。

※未検証

アイテムの単位計算 | 日本Zabbixユーザー会

 

 

www.slideshare.net

github.com

www.facebook.com

twitter.com

www.instagram.com

 

 

にほんブログ村 IT技術ブログ Linuxへ
Linux

にほんブログ村 IT技術ブログ オープンソースへ
オープンソース

 

 

Opensourcetech by Takahiro Kujirai