logwatch のzabbix 代替は

logwatch の機能を、zabbix に持たせたいというニーズはあるようです。(英語情報はいくつかありました。) 実際はどうすることが多いのでしょうか?
logwatch をそのままつかって、結果をパースするというのもありかなと思っています。

コメント表示オプション

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

何がしたいかによると思います。

例えば、目的として障害やエラーを検知したいのですか?
それとも、集計したレポートを生成したいのですか?

それらの内容によっては、併用でも代替でもどちらのパターンも
ありうると思います。
あと、何も作成せずに設定だけでは実現できないこともあると思
われますので、それらを作成する時間と労力もあわせて検討する
ことになるでしょう。

具体的な目的やlogwatchのどの機能を代替されたいのかが明確で
はないので、現時点で頂いている情報に対しては以上です。

ユーザー tadashi の写真

TNKさん いつもコメントありがとございます。
この投稿は、まず、どんなlogwatch 代替では、どんな実践があるんだろうというレベルでの
情報を教えてほしかったのです。

どうしたらいいかは多くの場合はやや漠然としています。そういうときには、関連の実践にはどんなものが
あるのかという問いかけをするのが私の習慣なのです。
厳密に何をしたいのかは、自分の場合ですが、はっきりしないことが多いと思いますので、
関連の先行事例はないかと調べることにしています。

で、ふと思ったのですが、zabbix のビジネスでは、クライアントがつかっている監視ツールの機能をzabbix で代替することが
もとめらることが多いのではないでしょう? そういった事例があつまっているといいですね。
商用監視ツールからzabbix へのマイグレーションの単発事例ですが、みたことがあります。そういったのが網羅的にあつまっているといいなと。
(本来のトピとは別なのですみません。)

このトピとの関連でいえば、logwatch の出力内容をどこかで保存して表示できるといいのですが、簡単にできるでしょうか?
障害情報のときに、コメントの並びに情報という項目があります。ここに表示できるといいのですが、ドキュメントのどこを
みたらいいでしょうか?

ユーザー TNK の写真

繰り返しになりますが、代替するにもlogwatchのどの機能を実現す
るか次第です。

何を確認したいか明確ではない状態で、ツールだけを導入しても、
入れただけで満足してしまって、それらの機能は生かされないと思
います。

商用の監視ツールからの移行でも同様です。
運用監視ツールに何を期待しているのか、どのような機能が必要な
のか、それらの機能をZabbixでカバーできるのかを検討します。
ツール名だけをあげて移行や代替ができるかという判断はできませ
ん。

このトピとの関連でいえば、logwatch の出力内容をどこかで保存して表示できるといいのですが、簡単にできるでしょうか?

logwatchの出力レポートをZabbixサーバにアイテムとして取り込み、
その内容をトリガーで障害かを判断できるのであれば、そのトリガー
によって発生したイベントの詳細を確認すると参照できるようにする
ことは設定すれば実現できると思います。
# アクションのメッセージ内に{ITEM.VALUE}などは必要。

障害が発生していない時でも参照できるようにする方法として、常
にファイルにもlogwatchのレポートを出力するようにlogwatchの設
定を行っておいて、Zabbix上はホストスクリプトの機能を利用して、
ファイルの内容を表示させるようなスクリプトを用意し、ホストを
指定してそのスクリプトを実行して表示させるようなこともできま
す。

やはり、目的が明確ではないので、これ以上具体的な対処案も提示
することは困難です。

ユーザー tadashi の写真

早速、レスありがとうございます。

ドキュメントのどのあたりを読めばよいのかも教えてもらえたら、
ありがたいです。

前の投稿でも、ドキュメントに言及しています。

ユーザー TNK の写真

目的が明確ではないので、私からはこれ以上の情報提供は不可能で
す。

何をどう実現されたいのかをご提示頂ければ、マニュアルだけでは
なく、参考になりそうなサイトもご紹介させて頂きます。

ユーザー tadashi の写真

がんばって調べてみました。zabbix は、2.2.3です。

やりたいことは、logwatch のように、何か出力(テキスト)するのをzabbbix におくりつけて、
正規表現などで評価して障害判定してもらい、障害のときは、もとの出力(テキスト)を簡単に
閲覧できる仕組みです。簡単の意味は、ダッシュボードのシステムステータス(でなくてもいいですが )
から、2クリックでそのテキスト参照できることです。

>logwatchの出力レポートをZabbixサーバにアイテムとして取り込み、
>その内容をトリガーで障害かを判断できるのであれば、そのトリガー
>によって発生したイベントの詳細を確認すると参照できるようにする
>ことは設定すれば実現できると思います。
# アクションのメッセージ内に{ITEM.VALUE}などは必要。

イベントの詳細で表示はできますが、ダッシュボードのシステムステータスの障害情報から、すぐにというわけでは
みたいですね。最新20件の障害からたどることになるんでしょうか?
ダッシュボードのシステムステータスで障害をクリックすると、情報( Info ) という項目がでてくるので
ここをクリックするとすぐに見れるといいなと思ったのですが、  できないみたいですね。
正確には、情報( Info )に本来何がはいるかがよくわかりませんでした。

とりあえず、今日はここまでです。

ユーザー TNK の写真

正確には、情報( Info )に本来何がはいるかがよくわかりませんでした。

Webフロントエンドの詳細は、マニュアルをご参照ください。
https://www.zabbix.com/documentation/2.2/manual/web_interface/frontend_s...

ユーザー tadashi の写真

早速ありがとうございました。
言葉たらずですみません。情報( Info ) にデータを送り込みたいのですが、可能なんでしょうか?
コードを見てもすぐにはわかりませんでした。tr_status.php にヒントがありそうなのですが、
ちょっとわかりませんでした。

広瀬です。

横から失礼します。情報(Info)というのは要するにトリガーの分類種別を表すものであり、そこに直接
データを送り込む事自体は不可能だと思います。
根本的な事で申し訳無いが、ダッシュボードのシステムステータスの一覧のそれぞれの分類の意味
合いを正しくご理解されているのか気になる所です。

-閑話休題-

logwatchのデータを取り込む方法ですが、簡易に調べた範疇ですが、以下が使える所では無いかと
おもいます。

「logwatch --save /tmp/logwatch.txt」でファイル出力が可能です。定期的にCronで出力させるように
しておき、それを適当なアイテムを作成します。データ型はテキスト型が良いでしょう。
このアイテムにトリガーを設定し、そのトリガーのキーワードとして、regexpで正規表現で障害と判定
したい単語や文字列を必要に応じて追加していくならば何とかなるんでは無いでしょうか?

尚、上記の方法はエージェント型で行った場合です。zabbix_senderでデータを飛ばす事も可能では
ありますが、どちらにしろ、アイテム・トリガーの作成は必要ですのでやることは基本同じだと思います。
Agentで拾いに行くか、SenderでZabbixServerに飛ばすかの違いに過ぎません。

あとはトリガーの書式については色々とあると思うので、任意で設定頂くなどが望ましいと思われます。
テキスト型のデータの複数行を抽出してアクションでメール飛ばしの方法まではちょっと判らなかった
のですが、この辺何か有効な対応をご存じな方、フォロー頂けると助かります。

以上です。

ユーザー tadashi の写真

wakaba さん コメントありがとうございます。もともと info の意味をよく把握していませんでした。

トリガーですが、とりあえず、正規表現でいくのがいいかなというところです。
zabbix_sender で送る前に軽く処理するのもありかなというところではあります。

Info にこだわったのはUI 的にクリックして内容がすぐにみれると便利だと思った次第です。
障害情報のより詳細な情報が少ない回数のクリックで見れるといいなというところです。

event だけでは、送り込んだ情報は保存されず、alert をだすまでたどりつくと
alerts のテーブルに、送り込んだ情報が保存されて、これを表示するようになっているようです。
さくっとみただけなんで、間違っている可能性も大きいです。

ここまでくると、JSON を送りつけてそれを解読する仕掛けがあるいいような気もしてきました。

今日は、ここまで

ユーザー TNK の写真

書かれている内容を読ませて頂くと、logwatchの出力すべてを1塊でZabbixに送る
方法は止めた方が良いと思います。

テキスト形式で複数行のデータとしてZabbixに送ったとしても、そこから様々な視点の
集計結果が含まれているので、それぞれの視点での障害検知用の正規表現を作成するに
してもフォーマットによってはZabbixでは処理しきれない場合が多そうな気がします。
また、テキスト形式でのサイズ制限もあったと思うので、logwatchの結果出力のサイズ
が大きい場合に途中で切れてしまう可能性があります。

最初にも書かせて頂きましたが、やはり目的を明確にして頂いて、それぞれに合わせた
Zabbixで実現しやすい方法を検討した方が良いと思います。

単純にlogwatchの出力を確認するというだけであれば、Zabbixエージェントが導入
されているサーバであれば、wakabaさんも書かれている通り、logwatchの結果を
ファイルに出力させておいて、以下に添付するURLにあるように、そのファイルを
catするコマンドをリモートで実行させるスクリプトを登録しておく方法が考えられ
ます。
https://www.zabbix.com/documentation/2.2/manual/web_interface/frontend_s...

あと、現時点のZabbixサーバにはJSONで受け取ってそれをパースするような機能は
ありません。
zabbix_senderというコマンドを利用して、数値や文字列を特定のアイテムの値と
して送ることはできますので、logwatchの出力の内容を解析して、必要な値のみを
zabbix_senderを利用してZabbixサーバに送るというような実装であれば実現可能
かと思います。

広瀬です

また、テキスト形式でのサイズ制限もあったと思うので、logwatchの結果出力のサイズが
大きい場合に途中で切れてしまう可能性があります。

あ、ご指摘の通りです。その制限忘れていました。ログにしろテキストにしろ1万2800文字
程度しか値を格納出来ませんでした(TNKさんご指摘ありがとうございます)。

普通にOS再起動直後のHighモード指定だった場合、3万バイトオーバーくらいはログが出
たハズなので、生のままだと無理が生じますね。現実的にはZabbixに送る前に不必要な
情報はカットしておくべきだと思われます。
logwatchの使い方に準ずる話しは本旨と離れてしまうので、割愛させて頂きます。

システムステータスで表示される内容は、どのような方法であれアイテムで収集したデータ
を元に指定したトリガーで分類表示しているに過ぎませんので、アイテム、トリガーの存在
を無くして話しを語る事は出来ません。
要はダッシュボードから最短経路で情報を見たいというのが、恐らく本来の主旨とlogwatch
の融合のお話なのだろうとは思います。そことJSONがどう関わってくるのかがイマイチ理解
出来ません(API経由でアイテムとトリガー作成しようってなら話しは判りますが)。

UI構成元のPHPやそもそも根幹のDBを弄ろうってならば可能なのかもしれません。確かに
似たような事をされている方や企業の発表を拝見した事はありますが、それ等を前提のお話
だとすれば、SIA本家に要望を出された方が良いのでは無いかと思います。

ユーザー tadashi の写真

広瀬さん、TNKさん コメントありがとうございます。

現段階では、障害の報告をzabbix に行って、詳細情報はメールなりでおくるというところから
はじめてみます。

ダッシュボードから、詳細情報の参照が簡単にできるといいのですが、それは次の課題ということで
考えます。