数字か文字かの判定方法を教えてください

先日mariaDBへログインしようとしてもtoo many connectionsばかり返してログインできない状態が続いていることがありました。
せめて症状が発生している状態になったことはいち早くつかみたいと考えています。

そこで、mariaDBのmysql.threads.last()を使って、数字を返していれば(とりあえず)正常、「too many connections」のような文字列を返していれば異常と判定させてトリガーを動作させるのはどうかと考えています。

そこで、
https://blog.apar.jp/zabbix/1669/
https://www.zabbix.com/documentation/2.0/jp/manual/appendix/recipes
を参考に、スレッド数を取得できるようにしました。

しかし、数字か文字かの判定が上手くいかず悩んでいます。

ZABBIXエージェントのバージョンは3.0.5
ZABBIXサーバーのバージョンは3.0.5
です。

よろしくお願い致します。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

まず、アイテムとしては、数字と文字列は別の形式で保存されるの
で、アイテムとしてどちらの値を取得するのかを事前に選択してお
く必要があります。

数字である場合と文字列である場合の両方を受け取るのであれば、
アイテムとしては、データ型として「文字列」もしくは「テキスト」
のアイテムとしておくことになるでしょう。

そうすると、数値ではありませんので、スレッド数でのグラフの描
画はできませんし、トリガーで数値との比較での条件式を使用する
ことができません。

スレッド数を数値で取得してグラフ化や閾値でのトリガーを発生さ
せたいし、コマンド実行時のエラーメッセージも判別したいという
ことであれば、数値を受け取るアイテム、文字列を受け取るアイテ
ムは分けて設定された方が良いと思います。

ユーザー yk_taiko の写真

数字か文字列かだけの切り分けで、数字でXX以上とか考えないのであれば、
正規表現で ^[0-9]+$ とか指定したら良いかもしれないです

ユーザー arc-friends の写真

TNKさん、yk_taikoさんありがとうございます。

/etc/zabbix/zabbix_agentd.conf において、現在
UserParameter=mysql.threads,mysqladmin status -u ○○○○○○ -p△△△△△ -h ■.■.■.■|cut -f3 -d":"|cut -f2 -d" "
としていますが、これを何とか文字列かテキストで送信するようにした上でサーバ側のトリガー条件で
{テンプレート名.mysql.threads.last().regexp(^[0-9]+$)}=0
のような感じで指定すればよい感じでしょうか?

もう少し考えてみます。

ユーザー arc-friends の写真

> これを何とか文字列かテキストで送信するようにした上

ZABBIXの理解が足りていませんでした

①/etc/zabbix/zabbix_agentd.conf を
UserParameter=mysql.threads_2,mysqladmin status -u ○○○○○○ -p△△△△△ -h ■.■.■.■|cut -f3 -d":"|cut -f2 -d" "
としてzabbix_agentを再起動しました

②アイテムを別途、mysql.threads_2についてデータ型を文字列にした物を作りました

③その上でトリガーを
{テンプレート名.mysql.threads_2.regexp(^[0-9]+$,#1)}=0
としたところ、動きだしました

これで合っているのかどうか、引き続き様子を見てみます。