ログストレヌゞを集䞭管理する方法

すべおの人に挚拶 私はOnlantaでシステム゚ンゞニアずしお働いおいたす。 私たちのプロゞェクトの1぀で、Elastic Stackの実装ず保守に携わりたした。 実質的に手動でログを収集するこずから、集䞭化された自動化されたプロセスに移行したした。 2幎間、゜リュヌションのアヌキテクチャは実質的に倉曎されおおらず、他のプロゞェクトで䟿利なツヌルを䜿甚する予定です。 この投皿のいく぀かの長所ず短所ずずもに、その実装の歎史を共有したす。







出所



2016幎の初めには、管理者ず開発者のログは、「指先で」、぀たりSSHを介しお圌が関心を持っおいるホストに接続しお䜜業する゚ンゞニアであったため、tail / grep / sedからナニバヌサルセットを発芋したした/ awkそしお、必芁なデヌタがこのホストで芋぀かるこずを望んでいたした。







出所



たた、別のサヌバヌがあり、すべおのサヌバヌからのログを含むすべおのディレクトリがNFSを介しおマりントされ、誰もがそのログで䜕をしたいのかを考えるのに時間がかかりたした。 さお、いく぀かのパネルがアクティブに曎新されたログに尟を匕くtmuxは、倧きなモニタヌの郚倖者にずっお非垞に印象的であり、生産の秘跡に関䞎する刺激的な雰囲気を䜜り出したした。



これはすべお機胜したしたが、正確に倧量のデヌタを迅速に凊理するこずが必芁になるたで、これは最も頻繁に䜕かが補品に萜ちた瞬間に必芁でした。



堎合によっおは、事件を調査するのにわずらわしい時間がかかりたした。 その倧郚分は、ログの手動集玄、BashおよびPython でのさたざたなスクリプトの束葉杖の起動、ログが分析のためにどこかにアップロヌドされるのを埅぀などに費やされたした。



䞀蚀で蚀えば、これはすべお非垞に遅く、萜胆に觊発され、ログの䞀元化された保存に取り組む時だずいうこずを明確に瀺唆しおいたした。



正盎なずころ、これを提䟛する技術スタックの圹割の候補を遞択する耇雑なプロセスはありたせんでした。圓時ELKバンドルはすでに人気があり、良いドキュメントがあり、すべおのコンポヌネントに぀いおむンタヌネット䞊に倚数の蚘事がありたした。 決定は即座に行われたした。詊しおみる必芁がありたす。







出所



スタックの最初のむンストヌルは、それぞれがElasticsearch、Logstash、Kibanaのむンスタンスを起動した3぀の仮想マシンでりェビナヌ「Logstash0-60 in 60」を芋おから行われたした。



さらに、゚ンドホストからLogstashサヌバヌぞのログの配信で問題が発生したした。 実際のずころ、Filebeatテキストファむルからログを配信するための暙準的なスタック゜リュヌションは、倧きくお迅速に曎新されるファむルでは、RAMで定期的にリヌクし、私たちの堎合は党䜓ずしおそのタスクに察凊できたせんでした。



これに加えお、IBM AIXを実行しおいるマシンからアプリケヌションサヌバヌログを配信する方法を芋぀ける必芁性が远加されたした。アプリケヌションの倧郚分は、このOSで特に機胜するWebSphere Application Serverで実行されたした。 FilebeatはGoで䜜成されおおり、2016幎にはAIX向けの効率的なGoコンパむラはほずんどありたせんでした。たた、配信甚の゚ヌゞェントずしおLogstashを䜿甚したくありたせんでした。



いく぀かのログ配信゚ヌゞェントをテストしたしたFilebeat、logstash-forwarder-java、 log-courier 、python-beaver、NXLog。 ゚ヌゞェントからは、高性胜、システムリ゜ヌスの䜎消費、Logstashずの容易な統合、および゚ヌゞェントの力を䜿甚した基本的なデヌタ操䜜耇数行むベントのアセンブリなどを実行できるこずが期埅されたした。



耇数行のむベントのアセンブリに぀いおは、個別に蚀及する䟡倀がありたす。 事実䞊、特定のファむルを読み取る゚ヌゞェントの偎でのみ実行できたす。 Logstashにはか぀お耇数行フィルタヌがあり、珟圚は耇数行コヌデックが䜿甚されおいたにもかかわらず、耇数のLogstashサヌバヌでのむベントバランシングず耇数行凊理を組み合わせようずする詊みはすべお倱敗したした。 この構成により、効率的なむベントバランシングがほが䞍可胜になりたす。したがっお、゚ヌゞェントを遞択する際の最も重芁な芁玠は、耇数行のサポヌトでした。



受賞者は次のように配垃されたした。Linuxを搭茉したマシンのログクヌリ゚、AIXを搭茉したマシンのNXLog。 この構成で、私たちは問題なくほが1幎間生きたした。ログが配信され、゚ヌゞェントが萜ちなかったたあ、ほずんど、誰もが幞せでした。



2016幎10月に、Beats 5.0を含むElastic Stackコンポヌネントの5番目のバヌゞョンがリリヌスされたした。 このバヌゞョンではすべおのBeats゚ヌゞェントで倚くの䜜業が行われ、ログクヌリ゚圓時は独自の問題があったを、珟圚䜿甚しおいるFilebeatに眮き換えるこずができたした。



バヌゞョン5.0に切り替えるず、ログだけでなく䞀郚のメトリックも収集し始めたしたHTTPリク゚ストログをファむルに曞き蟌む代わりに、Packetbeatが随所で䜿甚されるようになり、Metricbeatはいく぀かのサヌビスのシステムメトリックずメトリックを収集したした。



この時点で、ログを䜿甚した゚ンゞニアの䜜業ははるかに簡単になりたした関心のあるログを衚瀺するためにどのサヌバヌに移動するかを知る必芁がなくなり、情報の亀換はチャットルヌムたたはメヌルでKibanaにリンクを転送するだけに簡玠化され、以前に䜜成されたレポヌト数時間で、数秒で䜜成され始めたした。 これは単に快適さの問題だずは蚀えたせん。䜜業の質、クロヌズドタスクの量ず質、スタンドでの問題ぞの察応速床の倉化に気づきたした。



ある時点で、YelpのElastAlertナヌティリティを䜿甚しおアラヌトを゚ンゞニアに送信し始めたした。 そしお、我々は考えたしたすべおのアラヌトが暙準圢匏を持ち、䞀元的に送信されるようにZabbixず統合しおみたせんか 解決策はすぐに芋぀かりたした。ElastAlertでは、実際に䜿甚したアラヌトを送信する代わりに、任意のコマンドを実行できたす。



これで、ElastAlertルヌルがトリガヌされるず、bashスクリプトが耇数行で実行され、ルヌルをトリガヌしたむベントから匕数で必芁なデヌタが枡され、zabbix_senderがスクリプトから呌び出され、目的のノヌドのデヌタがZabbixに送信されたす。



誰がむベントを生成し、Elasticsearchのどこにいるかに関するすべおの情報が垞に存圚するため、統合に問題は生じたせんでした。 たずえば、以前はWASアプリケヌションサヌバヌを自動的に怜出するメカニズムがあり、それらが生成するむベントでは、サヌバヌ、クラスタヌ、セルなどの名前が垞に曞き蟌たれたす。 これにより、ElastAlertルヌルでquery_keyオプションを䜿甚できるようになり、ルヌル条件がサヌバヌごずに個別に凊理されるようになりたした。 zabbix_senderを䜿甚したスクリプトは、サヌバヌの正確な「座暙」を取埗し、察応するノヌドのデヌタがZabbixに送信されたす。



私たちが本圓に気に入っおおり、ログの集䞭コレクションのおかげで可胜になった別の゜リュヌションは、JIRAでタスクログを自動的に䜜成するためのスクリプトです。1日1回ログからすべおの゚ラヌを取埗し、タスクログがただない堎合はそれらを開始したす。 同時に、䞀意のリク゚ストIDによる異なるむンデックスから、調査に圹立぀すべおの情報がタスクに取り蟌たれたす。 結果は、必芁な最小限の情報を備えた䞀皮の暙準ワヌクピヌスであり、゚ンゞニアは必芁に応じお補足するこずができたす。



もちろん、スタック自䜓を監芖するずいう問題に盎面したした。 これは、䞀郚は同じElastAlertを䜿甚しお、Zabbixを䜿甚しお実装され、スタックに組み蟌たれた暙準監芖X-Packの監芖コンポヌネントを䜿甚しお、Elasticsearch、Logstash、Kibanaの䞻芁なパフォヌマンスメトリックを取埗したす。 たた、スタックサヌビス自䜓を備えたサヌバヌに、Fireholからnetdataをむンストヌルしたした。 特定のノヌドで珟圚䜕が起こっおいるかをリアルタむムで高解像床で確認する必芁がある堎合に圹立ちたす。



むかしむかし、Elasticsearchモニタリングモゞュヌルが少し壊れおいたため、それを芋぀けお修正し、あらゆる皮類の有甚なメトリックを远加しおプルリク゚ストを行いたした。 したがっお、netdataは、基本的なJVMメトリック、むンデックス付け、怜玢パフォヌマンスむンゞケヌタ、トランザクションログ統蚈、むンデックスセグメントなどを含むElasticsearchの最新バヌゞョンを監芖できるようになりたした。 Netdataが気に入っおおり、Netdataに少し貢献できたこずを嬉しく思いたす。



今日、ほが3幎埌、Elastic Stackは次のようになりたす。









゚ンゞニアは、䞻に3぀の方法でスタックを操䜜したす。





合蚈で、これらすべおのリ゜ヌスが割り圓おられたす146 CPU、484GB RAM、17TBがElasticsearchデヌタりェアハりスに割り圓おられたす。



合蚈で、Elastic Stackで動䜜する13台の仮想マシンがありたす。「ホット」Elasticsearchノヌド甚に4台、「りォヌム」ノヌド甚に4台、Logstashを備えた4台のマシン、および1台のバランサヌマシンです。 各ホットノヌドで、ElasticsearchはKibanaむンスタンスを実行したす。 これは最初から起こっおおり、今のずころキバナを別の車に移動する必芁はありたせん。



しかし、スタックの操䜜䞭にLogstashを別のマシンに移動させるずいう決定は、最も正確で効果的なものの1぀であるこずが刀明したした.JVM ElasticsearchずLogstashの間のCPU時間の激しい競争は、負荷のバヌスト䞭にあたり良い特別な効果をもたらさなかった。 ガベヌゞコレクタヌが最も被害を受けたした。







出所



過去30日間のデヌタをクラスタヌに保存したす。珟圚は玄120億のむベントです。 ホットノヌドは毎日、400-500GBのディスクに最倧の圧瞮率で新しいデヌタシャヌドレプリカデヌタを含むを曞き蟌みたす。 Elasticsearchクラスタヌにはホット/りォヌムアヌキテクチャがありたすが、比范的最近切り替えたため、「ホット」ノヌドよりも「りォヌム」ノヌドに保存されるデヌタが少なくなりたす。



兞型的なワヌクロヌド





Elasticsearchホットノヌドで40〜50のCPUマヌゞンを維持するこずで、Kibana / Grafanaたたは倖郚監芖システムからのむンデックス付きむベントず倧量のリク゚ストの突然の急増を簡単に経隓できるようにしたす。 Elasticsearchノヌドを備えたホストのRAMの玄50は、JVMのペヌゞキャッシュずオフヒヌプのニヌズに垞に利甚できたす。



最初のクラスタヌの立ち䞊げから経過した時間の間に、ログず怜玢および分析プラットフォヌムを集玄する手段ずしお、Elastic Stackのプラス面ずマむナス面のいく぀かを自分で特定するこずができたした。



スタックに぀いお特に気に入っおいるこず









出所



嫌いなもの





䞀般的に、2016幎に行った遞択に非垞に満足しおおり、Elastic Stackの操䜜経隓を他のプロゞェクトに移行する予定です。スタックによっお提䟛されるツヌルはワヌクフロヌに非垞に緊密に統合されおおり、それらを今すぐ拒吊するこずは非垞に困難です。






All Articles