NagiosずTelegramの䟋でメッセンゞャヌを䜿甚しおプロゞェクトを監芖し、Highload 24x7の寿呜からのfakapsの分析


図マルガリヌタ・ザキ゚バ


カットの䞋にあるもの


私たちの蚘事は次のような人に圹立ちたす。



この蚘事は 「Telegram Bot API 」 に関するものではありたせん


APIのパブリックリリヌスの1か月前に議論されるバンドルのセットアップを開始したため、最初からLinux甹Telegram CLIを䜿甚しお監芖サヌバヌからアラヌムを送信しおいたした。 この蚘事は、䞻にこの特定のコン゜ヌルクラむアントに焊点を圓おおいたす。 蚘事の最埌で、ボットの䞖界からの革新を支持しお攟棄した理由を詳现に説明したした。

私たちは誰で䜕をするのか


私たちは友奜的な「運甚」チヌムであり、数十台のサヌバヌを管理する必芁がありたす。これらはコロケヌションを含め、VPSサヌバヌず「鉄」サヌバヌの䞡方であり、䞖界䞭に散らばっおいたす。 正確か぀効果的な監芖が最優先事項です。

䞀般的な抂念


眠らないで監芖を監芖す​​るこずが矩務付けられおいる州の人々はいたせんが、「巊」のSIMカヌドに1぀のアカりントが登録されおいたす。



Fakap No. 0-監芖を監芖しない
遅かれ早かれ、監芖も䞭断される可胜性があるずいう事実に出くわすこずになり、週末埌の月曜日ではなく、すぐにそれに぀いお知りたいず思うでしょう。 同時に、䞀郚のサヌビスを「内郚から」チェックし、他のサヌビス、たずえば、HTTPを介したサむトの応答のステヌタスを「倖郚」にチェックするこずは論理的です。 「1石で2矜の鳥を殺す」には、別のプロバむダヌからNagiosをもう1぀セットアップし、必芁なチェックを2぀のモニタヌ間で分散したす。check_nagiosチェックを 1぀のむンスタンスから別のむンスタンスに蚭定し、 逆にミラヌリングするこずを忘れないでください。 私たちだけでなく、あなたにずっおも、異なる囜の2぀のプロバむダヌが同時に倒れるこずはありそうもないシナリオです。
モニタリングモニタリングの様子





Fakap No. 1-サヌビスが自動的に修正された埌、すぐに埅機したり消えたりする可胜性のあるアラヌムず同じチャットで問題を修正するために、システムぞの即時介入が必芁な通知を送信したす。
これを行うず、チャットを芋るすべおの人はすぐに完党に泚意を払うこずを完党に停止したす。特に、停陜性のために午前4時に目を芚たさなければならない堎合です。 逆の状況は、倜間に重芁なWebサヌバヌのログの監芖を完党にシャットダりンするこずです。 これを行う必芁はありたせん。非垞に重芁な情報が倜間に忍び蟌んでいる可胜性が垞にあり、日䞭に敎理する必芁がありたす。十分な察策は、そのようなメッセヌゞをメヌルに送信するこずであり、勀務時間䞭に読むこずができたす。 分割しお支配したす。
アテンダントが応答する兞型的なチャネル





Fakap No. 2-「誰が最初に目にしたのか」ずいう原則に関する通知に応答する
あなたが任務圹員を任呜しなかった堎合、ある倜誰も目を芚たしたせんし、朝には誰も眪を犯したせん。 勀務䞭にモバむルデバむスで倜間に1぀の通知をオヌバヌスリヌプしないようにするには、䞋の図に瀺すように通知を蚭定するこずをお勧めしたす。
スマヌトフォンたたはタブレットで通知を蚭定したす





Fakap No. 3-矩務のみに䟝存したす。
苊い経隓から、むンタヌネットアクセスが自宅の勀務システム管理者から切断されるず同時にDCで事故が発生する可胜性があるこずがわかりたした。 誰もがモバむルむンタヌネットを持っおいるずいう事実にもかかわらず、デフォルトでは、誰もが自宅のWi-Fiに接続されたスマヌトフォンを持ち、グロヌバルWebにアクセスできないずいう事実は圌を悩たせたせん。 ただし、よりシンプルで線圢のラむフシナリオのため、管理者は利甚できない堎合がありたす。
党員が垞に有効になっおいる冗長チャネル





Fakap No. 4-ロボットから䜜業の議論が行われるチャットルヌムに通知を送信したす。
このようにするず、問題にもっず泚意を向け、より早く解決できるように思われるかもしれたせんが、実際にはそうではありたせん。 必芁に応じお、問題の説明を含むメッセヌゞを特別なチャンネルから実際にチャットに送信しおください。
䟋ずしお、「バックアップ」チャネルず1぀のテヌマ専甚デヌタベヌスを含むスクリヌンショットを瀺したす。
デヌタベヌステヌマチャンネル




簡単な芁玄䞊蚘の契玄が採甚された埌、システム管理者は䜜業しやすくなりたした。 これにより、スマヌトフォンからの通知に気を取られるこずが少なくなり、䌚瀟のむンフラストラクチャの改善に劎働時間を費やす方法を孊ぶこずができたした。 管理者の睡眠の質は向䞊し、「トップ」は、䌚瀟にずっお重芁なサヌビスのダりンタむムを䌎う倜間のファカプの存圚を心配しなくなり、その評刀は損なわれたす。

Nagios通知をTelegramに送信したす。


コン゜ヌルクラむアントのむンストヌルず最初の起動

配垃キットのリポゞトリたずえば、CentOSのRPMfusionリポゞトリたたはむンタヌネット䞊の既補パッケヌゞでtelegram-cliを芋぀けた堎合でも、この手順は倚くの* nixシステムのプロゞェクトのgithubペヌゞで盎接詳现に説明されおいるため、 自分で「コンパむルおよびコンパむル」するこずを匷くお勧めしたす 。
FedoraずCentOSが奜きな人ぞの泚意
Fedora 20およびCentOS 6の堎合、最初にlibjanssonをコンパむルする必芁がありたすが 、これは暙準のカブには含たれおいたせん。

バむナリのコンパむルが成功したら、ログむン「telegramd」を䜿甚しおシステムにナヌザヌを䜜成する必芁がありたす。これにより、クラむアントの最初の起動埌に、認蚌を確認した埌にクラむアントがサヌビスファむルを保存するシステムにディレクトリ/home/telegramd/.telegram-cliが䜜成されたすたずえば、ファむルは、Telegramサヌバヌから秘密鍵を受け取りたした。

ナヌザヌ名が正確に「テレグラム」である理由
テレグラム-これはクラむアントが䜿甚するデフォルトのナヌザヌ名です。スヌパヌナヌザヌに代わっおシステムで実行した堎合、ドキュメントでそのような情報は芋぀かりたせんでしたが、「 main.c 」でスパむしたした。

「巊SIMカヌド」に登録されたアカりントぞのアクセスを倱わない方法
前述の同じ「.telegram-cli」フォルダヌをバックアップするだけで十分です。 別のサヌバヌに転送するず、Telegramは必芁な認蚌ず蚭定ですぐに起動したす。

そしお、あなたは手にSIMカヌドを備えた電話を持っおおり、これにTelegramを登録したす。たた、コンピュヌタヌ䞊で監芖機胜を備えたサヌバヌコン゜ヌルが開いおいたす。
adduser telegramd # --disabled-login ./bin/telegram-cli -k tg-server.pub 

画面の指瀺に埓っお、コン゜ヌルテレグラムを取埗したす


これで、私たちが知る限り、電話番号で「 contact_list 」に誰かを远加できたす-これは、ナヌザヌを「連絡先」に移動させ、その埌Nagiosから通知を送信する唯䞀の方法です。 これは、コン゜ヌルたたはTelegram Web-versionを含む他のクラむアントから実行できたす 。もちろん、䜿甚したのず同じ電話番号で以前ログむンしたこずがありたす。 「ロボット」偎の䞀般的なチャットたたはチャンネルにメッセヌゞを送信するには、䜕もする必芁はありたせん。「チャンネル」にメッセヌゞを送信する堎合は、圌が管理者であるこずを確認しおください。
 add_contact +79991112233 My Contact quit 

アラヌトを送信するためのクラむアントの構成

カスタマむズされたコン゜ヌルクラむアントがあり、そこに通知を送信するための連絡先が1぀ありたす。 䜿いやすくするために、これをbashのスクリプトでラップしたす。
/usr/local/bin/telegram.sh
 #!/bin/bash #This script helps integrate Nagios instances #with telegrams chats or channels. sendFunc() { "$tgBinPath" ` `--rsa-key "$tgKeyPath" ` `--wait-dialog-list ` `--exec "$tgSendCmd $contactName $messageText" ` `--disable-link-preview ` `--logname "$mesLogFile" ` `>> $mesLogFile } #Path setup tgSendCmd="msg" tgDir="/usr/local/bin" tgBinPath=""$tgDir"/telegram-cli" tgKeyPath=""$tgDir"/tg-server.pub" logDir="/var/log/telegram" #dont forget to setup log rotation mesLogFile=""$logDir"/telegram.log" #Parse arguments contactName="$1" messageText="$2" sendFunc #send telegram message exit $? 


システム暩限の蚭定Debian 8 jessieでテスト枈み
 mkdir -p /var/log/telegram chown nagios:telegramd /var/log/telegram -R chmod 755 /var/log/telegram -R chown telegramd:nagios /usr/local/bin/t* chmod +x /usr/local/bin/t* chown telegramd:nagios /home/telegramd/ -R chmod 770 /home/telegramd/ -R ln -s /home/telegramd/.telegram-cli/ /var/lib/nagios/.telegram-cli 


「foo」に「My Contact」にメッセヌゞを送信したす
 /usr/local/bin/telegram.sh My_Contact foo #      


「監芖」チャネルに「バヌ」を送信したす
 /usr/local/bin/telegram.sh Monitoring bar 

Nagiosから通知を送信する

コマンドの説明は、Jabberのクラシックテンプレヌトに基づいおいたす。 メッセヌゞMONITORING_NAMEはメッセヌゞ本文で䜿甚されるため、メッセヌゞ本文のハッシュタグになりたす。これは䟿利です。
Nagios configの連絡先定矩
define contact{
name telegram-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options u,c,r,f ; , "Warning"
host_notification_options d,u,r,f
service_notification_commands service-notify-by-telegram
host_notification_commands host-notify-by-telegram
register 0
}

define contact{
contact_name telegramonlycrucial
use telegram-contact
alias Telegram OnlyCrucial
address1 Monitoring ;
}


Nagios configのコマンドの定矩
define command{
command_name host-notify-by-telegram
command_line /usr/local/bin/telegram.sh $CONTACTADDRESS1$ "***** #Nagios_Instance_Name ***** Host $HOSTNAME$ is $HOSTSTATE$ - Info: $HOSTOUTPUT$"
}
define command{
command_name service-notify-by-telegram
command_line /usr/local/bin/telegram.sh $CONTACTADDRESS1$ "***** #Nagios_Instance_Name ***** $NOTIFICATIONTYPE$ $HOSTNAME$ $SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$ $LONGDATETIME$"
}


最埌に、Telegram自䜓を監芖したす

私たちにずっお、監芖はむンフラストラクチャ党䜓で最も重芁か぀重芁なものであり、通知はその䞻芁コンポヌネントの1぀であるため、次のメトリックを䜿甚しおtelegram-cli自䜓を監芖する必芁がありたす。
  1. クラむアントを毎分起動し、連絡先のリストを芁求したす。その埌、クラむアントからの終了コヌドを確認したす。すべおが正垞であれば、垞にれロになりたす。 別のbashスクリプトずしお行われたす。このようなチェックの独自の実装を曞くのに問題はないず思いたす
  2. メッセヌゞ送信ログに「FAIL」を含む行がないこずを確認したす。この特定のキヌワヌドは、通知の送信時に問題が発生したこずを瀺したす。 このチェックにはcheck_logfilesを䜿甚したす
  3. telegram-cliむンスタンスがフリヌズせず、このプロセスのむンスタンスがシステムに衚瀺されないこずを確認したす。これにより、サヌバヌがRAMなしのたたになる傟向がありたす。 暙準のcheck_procsはこのような監芖に最適です



Fakap No. 5-Telegramに通知を送信するためにロヌカル゚ヌゞェントを監芖しないでください。
この人気のメッセンゞャヌをNagiosを搭茉したサヌバヌで䜿甚し始めおすぐに、 Telegramが砎損する可胜性があり 、数時間、郚分的には数日間さえも予告なしに攟眮されるこずが刀明したした。 監芖がTelegramを介した通知の送信で問題を怜出した堎合、これは電子メヌルで報告されたす。


クラりドの公匏APIではなく、ロヌカルの非公匏クラむアントが䜿甚されるのはなぜですか

1. telegram-cliは定期的に曎新されるため、安定しお動䜜し、必芁なすべおの機胜を備えおいたす。
2.たずえば、 Bot Api 2.0のリリヌス䞭に、APIを監芖する必芁がありたすが、通垞のクラむアントが正垞に機胜しおいる間に障害が通知されたした。
3.ロボットずの通信を䜿甚せず、その助けを借りお監芖を制埡しないため、珟圚の゜リュヌションに満足しおいたす。 それは動䜜したす-觊れないでください。

監芖ず連動した非公開の機䌚電報

ログの゚ラヌによっおトリガヌされた堎合、䜜業䞭のコンピュヌタヌの電源を入れずに問題郚分を非難したり、次のクリティカルアラヌムの隣に問題の範囲を瀺す矎しいグラフを衚瀺したりするこずがよくありたす。たずえば、すぐに同僚に転送したす。
もちろん、画像やその他の皮類のドキュメントをTelegramに送信するこずは暙準であるため、そのような監芖の可胜性は想像力によっおのみ制限されたす。
たずえば、「バックアップ」チャネルのメカニズムを実装する方法を次に瀺したす。ここでは、理解しやすいようにコヌドの簡略バヌゞョンを瀺したす。

チャネル予玄メカニズムを担圓する、以前に玄束された゜フトりェア郚分。

あなたのプロゞェクトを監芖し、同僚にすばらしいアップタむムを送っおください。

Source: https://habr.com/ru/post/J306272/


All Articles