ナヌリ・ブッシュメレフ「ログの収集ず配信のためのフィヌルド䞊のレヌキマップ」-トランスクリプト

ログはシステムの重芁な郚分であり、期埅どおりに機胜するたたは機胜しないこずを理解できたす。 マむクロサヌビスアヌキテクチャの条件では、ログの操䜜は特別なオリンピアヌドの別の分野になりたす。 すぐに䞀連の質問を解決する必芁がありたす。



珟圚普及しおいるコンテナ化テクノロゞヌの䜿甚により、問題を解決するためのオプションの分野に熊手の䞊に砂が远加されたす。


ナヌリ・ブッシュメレフの報告曞の「この収集に぀いお」「ログの収集ず配信の分野での地図の䜜成」



猫の䞋で誰が気にしおください。


私の名前はナヌリ・ブッシュメレフです。 ラザダで働いおいたす。 今日は、ログの䜜成方法、ログの収集方法、ログぞの曞き蟌みに぀いお説明したす。



どこから来たの 私たちは誰ですか Lazadaは、東南アゞアの6か囜で1番目のオンラむンストアです。 これらの囜はすべおデヌタセンタヌによっお配垃されおいたす。 珟圚4぀のデヌタセンタヌがありたすが、なぜこれが重芁なのですか いく぀かの決定は、センタヌ間に非垞に匱いリンクがあるずいう事実によるものだったからです。 マむクロサヌビスアヌキテクチャがありたす。 すでに80のマむクロサヌビスがあるこずを知っお驚いた。 ログを䜿甚しおタスクを開始したずき、20個しかありたせんでした。さらに、かなり倧きなPHPレガシヌがありたす。 これはすべお、珟時点でシステム党䜓で毎分600䞇を超えるメッセヌゞを生成したす。 さらに、私たちがどのようにそれず共に生きようずしおいるのか、そしおなぜそうなのかを瀺したす。



なんずかしおこれらの600䞇のメッセヌゞず共に生きなければなりたせん。 それらで䜕をすべきでしょうか 必芁な600䞇のメッセヌゞ




300䞇のメッセヌゞが衚瀺されたずき、私はほが同じ倖芳でした。 䜕セントから始めたからです。 アプリケヌションログがそこに曞き蟌たれおいるこずは明らかです。 たずえば、デヌタベヌスに接続できず、デヌタベヌスに接続できたしたが、䜕かを読むこずができたせんでした。 ただし、これに加えお、各マむクロサヌビスはアクセスログも曞き蟌みたす。 マむクロサヌビスに到着する各リク゚ストはログに分類されたす。 なぜこれを行うのですか 開発者はトレヌスできるようにしたいず考えおいたす。 各アクセスログにはtraceidフィヌルドがあり、それに沿っお特別なむンタヌフェむスがチェヌン党䜓をさらに巻き戻し、トレヌスを矎しく衚瀺したす。 トレヌスは、リク゚ストがどのように送信されたかを瀺したす。これにより、開発者は未確認のガベヌゞを迅速に凊理できたす。



それず䞀緒に暮らすには ここで、オプションの分野に぀いお簡単に説明したす。䞀般にこの問題はどのように解決されたすか。 ログの収集、転送、保存の問題を解決する方法。



アプリケヌションから曞く方法は さたざたな方法があるこずは明らかです。 特に、ファッショナブルな仲間たちが蚀うように、ベストプラクティスがありたす。 祖父が蚀ったように、2぀の圢匏の叀い孊校がありたす。 他の方法がありたす。



ログを収集する状況はほが同じです。 この特定の郚分を解決するための倚くのオプションはありたせん。 すでに倚くありたすが、それほど倚くはありたせん。



しかし、配信ずその埌の分析では、バリ゚ヌションの数が爆発的に増え始めたす。 ここでは、各オプションに぀いお説明したせん。 䞻な遞択肢は、このトピックに興味を持っおいるすべおの人に聞かれるず思いたす。



ラザダでそれをどのように行い、実際にすべおが始たったのかを瀺したす。



1幎前、私はLazadaに来お、圌らは私をログに関するプロゞェクトに送りたした。 こんな感じでした。 アプリケヌションからのログは、stdoutおよびstderrに曞き蟌たれたした。 すべおがファッショナブルな方法で行われたした。 しかし、その埌、開発者はそれを暙準フロヌから陀倖し、むンフラストラクチャの専門家がそれを䜕らかの方法で敎理したす。 むンフラストラクチャの専門家ず開発者の間には、「ええず...わかりたした。シェルでファむルにラップしおみたしょう」ず蚀ったリリヌス者もいたす。 そしお、これらはすべおコンテナ内にあるので、圌らはそれをコンテナ自䜓に包み、カタログをダりンロヌドしおそこに眮いた。 私はそれが誰から来たのかはほが明らかだず思いたす。



もう少し芋おみたしょう。 これらのログをどのように配信したすか。 誰かがtd-agentを遞択したした。これは実際には流fluentですが、それほど流fluentではありたせん。 私はただこれら2぀のプロゞェクトの関係を理解し​​おいたせんでしたが、それらはほが同じもののようです。 そしお、この流れるようなRubyで曞かれたログファむルを読み取り、䞀定の期間、JSONで解析したした。 それから圌はカフカにそれらを送りたした。 たた、各APIのKafkaでは、4぀の個別のトピックがありたした。 なぜ4 ラむブがあるため、ステヌゞングがあり、stdoutずstderrがあるためです。 開発者はそれらを産み、むンフラストラクチャ゚ンゞニアはそれらをKafkaで䜜成する必芁がありたす。 さらに、カフカは別の郚門によっお管理されおいたした。 したがっお、チケットを䜜成しお、各APIに4぀のトピックを䜜成する必芁がありたした。 誰もがそれを忘れおいたした。 䞀般的に、ゎミや廃棄物がありたした。



これで次に䜕をしたしたか それをカフカに送りたした。 さらにカフカから、ログの半分がログスタッシュに飛んだ。 ログの残りの半分は共有されたした。 䞀郚は1぀のGraylogに飛び、䞀郚は別のGraylogに飛びたした。 その結果、これらすべおが1぀のElasticsearchクラスタヌに飛び蟌みたした。 ぀たり、この混乱は最終的にそこに萜ちたした。 これをする必芁はありたせん



これは、䞊から遠くを芋るずどのように芋えるかです。 これをしないでください ここで、番号は問題のある領域をすぐに瀺したす。 実際にはもっず倚くありたすが、6぀は非垞に問題が倚いため、䜕かを行う必芁がありたす。 それらに぀いお個別に説明したす。



ここ1,2,3ではファむルを䜜成しおいるため、䞀床に3぀のレヌキがありたす。


最初の1は、どこかに曞き蟌む必芁があるずいうこずです。 APIにファむルに盎接曞き蟌む機胜を垞に䞎えたいずは思わないでしょう。 APIはコンテナ内で隔離されるこずが望たしく、読み取り専甚であるこずがさらに望たしいです。 私はシステム管理者であるため、これらのこずに぀いお少しだけ別の芋方をしおいたす。


2番目のポむント2,3-APIには倚くのリク゚ストがありたす。 APIは、倧量のデヌタをファむルに曞き蟌みたす。 ファむルは成長しおいたす。 それらを回転させる必芁がありたす。 そうしないず、そこにディスクが届かないからです。 シェルを介しおディレクトリにリダむレクトされるため、それらを回転させるのは良くありたせん。 移動するこずはできたせん。 蚘述子を再発芋するようにアプリケヌションに指瀺するこずはできたせん。 開発者はあなたを愚か者のように芋おいるからです。「蚘述子ずは䜕ですか 通垞、stdoutに曞き蟌みたす。」 むンフラストラクチャ゚ンゞニアは、logrotateでcopytruncateを䜜成したした。これにより、ファむルのコピヌが䜜成され、元のファむルがコピヌされたす。 したがっお、これらのコピヌプロセスの間に、ディスクスペヌスは通垞終了したす。


4異なるフォヌマットがあり、異なるAPIを䜿甚しおいたした。 それらはわずかに異なっおいたしたが、正芏衚珟は異なっお曞かなければなりたせんでした。 これらはすべおPuppetによっお制埡されおいたため、ゎキブリずクラスの倧芏暡なバンドルがありたした。 さらに、ほずんどの堎合、td-agentはメモリを食べ、愚かで、動䜜しおいるふりをしお、䜕もしたせん。 倖では、圌が䜕もしおいないこずを理解するこずは䞍可胜でした。 せいぜい、圌は倒れ、誰かが埌で圌を拟いたす。 より正確には、アラヌトが到着し、誰かが手で確認したす。



6そしお、ほずんどのゎミず廃棄物-それはelasticsearchでした。 叀いバヌゞョンだったからです。 なぜなら、圓時は専任のマスタヌがいなかったからです。 フィヌルドが亀差する異皮ログがありたした。 異なるアプリケヌションの異なるログを同じフィヌルド名で曞き蟌むこずができたすが、同時に異なるデヌタが内郚に存圚する可胜性がありたす。 ぀たり、1぀のログには、フィヌルドたずえば、レベルに敎数が含たれおいたす。 別のログには、レベルフィヌルドに文字列が含たれおいたす。 静的マッピングが存圚しない堎合、このような玠晎らしいものが埗られたす。 elasticsearchでむンデックスをロヌテヌションした埌、文字列を含む最初のメッセヌゞが到着した堎合、正垞に動䜜しおいたす。 そしお、Integerで最初に到着した堎合、Stringで到着した埌続のメッセヌゞはすべお単に砎棄されたす。 フィヌルドタむプが䞀臎しないためです。



私たちはこれらの質問をし始めたした。 私たちは有眪を探さないこずにしたした。



しかし、䜕かする必芁がありたす 明癜なこずは、基準を蚭定するこずです。 すでにいく぀かの暙準がありたした。 少し埌で入手したものもありたす。 幞いなこずに、その時点ですべおのAPIの統䞀されたログ圢匏が既に承認されおいたした。 サヌビスの盞互䜜甚の暙準に盎接曞き蟌たれたす。 したがっお、ログを受信したい人はこの圢匏でログを曞く必芁がありたす。 誰かがこの圢匏でログを曞き蟌たない堎合、䜕も保蚌したせん。


さらに、ログの蚘録、配信、および収集の方法に関する単䞀の暙準を確立したいず思いたす。 実際に、それらをどこで曞き、どのように配信するか。 理想的な状況は、プロゞェクトが同じラむブラリを䜿甚する堎合です。 Go甚の個別のロギングラむブラリず、PHP甚の個別のラむブラリがありたす。 私たちが持っおいるすべおの人-誰もがそれらを䜿甚する必芁がありたす。 珟時点では、私たちはそれを80獲埗しおいるず蚀えたす。 しかし、サボテンを食べ続ける人もいたす。


そしお、スラむド䞊「ログ配信甚のSLA」ずかろうじお登堎したした。 圌はただそこにいたせんが、私たちはそれに取り組んでいたす。 なぜなら、あなたがそのような堎所にそのような圢匏で曞き蟌み、1秒あたりNメッセヌゞを超えない堎合、そのような堎所に配信する可胜性が高いずむンフラが蚀うのは非垞に䟿利だからです。 これは頭​​痛の束を軜枛したす。 SLAがある堎合、これはすばらしいです



どのようにしお問題を解決し始めたしたか 䞻なレヌキはtd-agentでした。 ログの行き先が明確ではありたせんでした。 圌らは配達されたすか 圌らは行きたすか どこにいるの したがっお、最初の項目はtd-agentを眮き換えるこずが決定されたした。 䜕に眮き換えるかのオプションを簡単にスケッチしたした。


流Flu 最初に、私は前の仕事で圌に出くわしたした、そしお、圌はたた定期的にそこに萜ちたした。 第二に、これはプロファむルのみで同じです。


Filebeat。 私たちにずっおどのように䟿利でしたか 圌が囲Goにいるずいう事実、そしお囲weには倚くの専門知識がありたす。 したがっお、もしそうなら、どういうわけか自分で远加するこずができたす。 したがっお、我々はそれを取らなかった。 そのため、自分で曞き盎そうずいう誘惑はありたせんでした。


sysadminの明らかな解決策は、この量のすべおのsyslogsyslog-ng / rsyslog / nxlogです。


たたは、独自の䜕かを䜜成したすが、filebeatのように削陀したした。 䜕かを曞く堎合は、ビゞネスに圹立぀䜕かを曞く方が良いでしょう。 ログを配信するには、䜕かを甚意しおおくこずをお勧めしたす。


したがっお、遞択は実際にはsyslog-ngずrsyslogの間の遞択になりたした。 Puppetにrsyslogのクラスがすでにあるずいう理由だけで、圌はrsyslogに傟倒したしたが、それらの間に明らかな違いは芋圓たりたせんでした。 syslogずは䜕か、syslogずは䜕か。 はい、ドキュメントの質が悪い人、優れた人がいたす。 圌はその方法を知っおおり、圌は別の方法で。



rsyslogに぀いおも少し説明したす。 たず、モゞュヌルがたくさんあるのでクヌルです。 人間が読めるRainerScript最新の構成蚀語がありたす。 玠晎らしいボヌナスは、通垞の手段を䜿甚しおtd-agentの動䜜を゚ミュレヌトできるこずであり、アプリケヌションでは䜕も倉わりたせん。 ぀たり、td-agentをrsyslogに倉曎しおおり、他のすべおに觊れおいるわけではありたせん。 そしおすぐに私達は働く配達を埗たす。 次に、mmnormalizeはrsyslogで玠晎らしいこずです。 ログを解析できたすが、Grokず正芏衚珟は䜿甚できたせん。 圌女は抜象的な構文ツリヌを䜜成したす。 コンパむラが゜ヌスコヌドを解析するずきに、ログをおよそ解析したす。 これにより、非垞に迅速に䜜業でき、CPUをほずんど消費せず、䞀般的に非垞にクヌルなこずです。 他にもたくさんのボヌナスがありたす。 私はそれらに぀いおやめたせん。



Rsyslogにはただ倚くの欠陥がありたす。 それらはボヌナスずほが同じです。 䞻な問題-あなたはそれを調理できるようにする必芁があり、あなたはバヌゞョンを遞択する必芁がありたす。



UNIX゜ケットにログを曞き蟌むこずにしたした。 / dev / logではなく、システムログからポリッゞがあるため、このパむプラむンにはゞャヌナルがありたす。 それでは、カスタム゜ケットに曞き蟌みたしょう。 別のルヌルセットに添付したす。 干枉したせん。 すべおが透明で明確になりたす。 だから実際にやった。 これらの゜ケットのあるディレクトリは暙準化されおおり、すべおのコンテナに転送されたす。 コンテナは必芁な゜ケットを確認し、開いお曞き蟌みたす。


なぜファむルではないのですか 誰もがファむルをdockerに転送しようずしたBadushechkaに関する蚘事を読み、 rsyslogを再起動するずファむル蚘述子が倉曎され、dockerがこのファむルを倱うこずが刀明したためです。 圌は他の䜕かを開いたたたにしたすが、圌らが曞いたのず同じ゜ケットは開きたせん。 この問題を回避するず同時に、ブロッキングの問題も回避するこずにしたした。



Rsyslogはスラむドに瀺されたアクションを実行し、ログをリレヌたたはKafkaに送信したす。 カフカは昔のやり方にマッチしたす。 リレヌ-ログを配信するために玔粋なrsyslogを䜿甚しようずしたした。 Message Queueなしで、暙準のrsyslogツヌル。 基本的には機胜したす。



ただし、埌でこの郚分に詰め蟌む方法には埮劙な違いがありたすLogstash / Graylog / ES。 この郚分rsyslog-rsyslogは、デヌタセンタヌ間で䜿甚されたす。 これは圧瞮されたtcpリンクです。これにより、垯域幅を節玄し、それに応じお、チャネルがいっぱいの状態で別のデヌタセンタヌから䜕らかのログを受信する可胜性を高めるこずができたす。 なぜなら、むンドネシアにはすべおが悪いからです。 これが、この絶え間ない問​​題のある堎所です。



アプリケヌションから蚘録したログがどの皋床の確率で実際に監芖されるかを考えたした。 メトリックを取埗するこずにしたした。 Rsyslogには独自の統蚈収集モゞュヌルがあり、これには䜕らかの皮類のカりンタヌがありたす。 たずえば、キュ​​ヌのサむズ、たたはそのようなアクションで受信したメッセヌゞの数を衚瀺できたす。 それらから䜕かをすでに取るこずができたす。 さらに、構成可胜なカスタムカりンタヌがあり、たずえば、あるAPIが曞き蟌んだメッセヌゞの数を衚瀺したす。 次に、Pythonでrsyslog_exporterを䜜成し、すべおをPrometheusに送信しおプロットしたした。 Graylogメトリックは本圓に必芁でしたが、これたでのずころ、構成する時間がありたせんでした。



問題は䜕ですか ラむブAPIが1秒あたり5䞇件のメッセヌゞを曞き蟌むこずを発芋した突然ずいう事実に問題が発生したした。 これはステヌゞングのないラむブAPIのみです。 たた、Graylogでは、1秒あたり12,000件のメッセヌゞしか衚瀺されたせん。 そしお、合理的な疑問が生じたしたが、残り物はどこにありたすか これから、Graylogは察応できないず結論付けたした。 圌らは芋た、そしお実際、Elasticsearchを備えたGraylogはこのストリヌムをマスタヌしなかった。


さらに、その過皋で行った他の発芋。


゜ケットぞの曞き蟌みはブロックされたす。 これはどのように起こりたしたか 配信にrsyslogを䜿甚するず、ある時点でデヌタセンタヌ間のチャネルが壊れたした。 配達はある堎所で起き、配達は別の堎所で起きたした。 これらはすべお、rsyslog゜ケットに曞き蟌むAPIを備えたマシンに到達したした。 キュヌがありたした。 次に、Unix゜ケットに曞き蟌むためのキュヌがいっぱいになりたした。デフォルトは128パケットです。 そしお、アプリケヌション内の次の曞き蟌みはブロックされたす。 Goのアプリケヌションで䜿甚するラむブラリを芋るず、非曞き蟌みモヌドで゜ケットぞの曞き蟌みが発生するこずが曞かれおいたす。 䜕もブロックしおいないず確信しおいたした。 バドゥシェチカに぀いお曞いた蚘事を読んだからです。 しかし、瞬間がありたす。 この呌び出しの呚りには、メッセヌゞを゜ケットにプッシュしようず絶えず詊みられる無限のサむクルがただありたした。 圌には気づかなかった。 ラむブラリを曞き盎す必芁がありたした。 それ以来、数回倉曎されたしたが、今ではすべおのサブシステムのロックがなくなりたした。 したがっお、rsyslogを停止でき、䜕も萜ちたせん。


キュヌのサむズを監芖する必芁がありたす。これは、このレヌキを螏たないようにするのに圹立ちたす。 たず、メッセヌゞが倱われ始めるのを監芖できたす。 第二に、原則ずしお配信の問題があるこずを監芖できたす。


そしお別の䞍快な瞬間-マむクロサヌビスアヌキテクチャで10倍の増幅-それは非垞に簡単です。 着信リク゚ストはあたりありたせんが、これらのメッセヌゞが実行されるグラフのため、アクセスログのため、ログの負荷は実際に玄10倍に増加したす。 残念ながら、正確な数倀を蚈算する時間はありたせんでしたが、マむクロサヌビスはそうです。 これに留意する必芁がありたす。 珟時点では、ログ収集サブシステムがラザダで最も負荷が高いこずが刀明しおいたす。



elasticsearchの問題を解決するには すべおのマシンにたたがっおログを収集しないように、ログを1か所ですばやく取埗する必芁がある堎合は、ファむルストレヌゞを䜿甚したす。 これは機胜するこずが保蚌されおいたす。 任意のサヌバヌから䜜成されたす。 そこにディスクを貌り付けおsyslogを配眮するだけです。 その埌、すべおのログを1か所に保存するこずが保蚌されたす。 さらに、Elasticsearch、graylogなどをゆっくり調敎するこずはすでに可胜です。 しかし、すでにすべおのログがあり、さらに、十分なディスクアレむたでログを保存できたす。



私の報告の時点で、回路はこのように芋え始めたした。 ファむルぞの曞き蟌みを実質的に停止したした。 今、ほずんどの堎合、残り物をオフにしたす。 APIを実行しおいるロヌカルマシンでは、ファむルぞの曞き蟌みを停止したす。 たず、非垞にうたく機胜するファむルストレヌゞがありたす。 第二に、これらのマシン䞊の堎所は絶えず尜きおおり、絶えず監芖する必芁がありたす。


LogstashずGraylogのこの郚分は、本圓に急䞊昇しおいたす。 したがっお、それを取り陀く必芁がありたす。 1぀遞択する必芁がありたす。



LogstashずKibanaを投げるこずにしたした。 セキュリティ郚門があるからです。 接続ずは䜕ですか 接続は、X-PackおよびShieldなしのKibanaでは、ログぞのアクセス暩を区別できないこずです。 したがっお、圌らはグレむログを取りたした。 圌はそれをすべお持っおいたす。 私は圌が奜きではありたせんが、うたくいきたす。 新しい鉄を賌入し、そこに新しいGraylogを配眮し、厳栌な圢匏のすべおのログを別のGraylogに移動したした。 さたざたなタむプの同䞀のフィヌルドを組織的に解決しお問題を解決したした。



新しいGraylogに正確に含たれるもの。 Dockerにすべおを蚘録したした。 サヌバヌの束を取り、3぀のKafkaむンスタンス、7぀のGraylogサヌバヌバヌゞョン2.3を展開したしたElasticsearchバヌゞョン5が必芁だったため。 HDDからの襲撃に関するこれはすべお発生したした。 1秒あたり最倧10䞇メッセヌゞのむンデックス䜜成率を芋たした。 週に140テラバむトのデヌタがあるこずがわかりたした。



そしお再び熊手 2぀の販売が来おいたす。 600䞇通のメッセヌゞを移動したした。 グレむログには噛む時間がありたせん。 どういうわけか、私たちは再び生き残る必芁がありたす。



このように生き延びたした。 さらにいく぀かのサヌバヌずSSDを远加したした。 珟時点では、私たちはこのように生きおいたす。 珟圚、すでに1秒あたり160kのメッセヌゞを噛んでいたす。 私たちはただ限界に達しおいないので、どれだけ実際にこれから抜け出せるかはただ明確ではありたせん。



これらは将来の蚈画です。 これらのうち、最も重芁なのはおそらく高可甚性です。 ただありたせん。 耇数の車が同じように構成されおいたすが、これたでのずころ、すべおが1台の車を通過しおいたす。 それらの間にフェむルオヌバヌをセットアップするには時間がかかりたす。


Graylogでメトリックを収集したす。


垯域幅やその他すべおを犠牲にしない、クレむゞヌなAPIが1぀あるように、レヌト制限を蚭定したす。


そしお最埌に、開発者ず䜕らかのSLAに眲名しお、それだけのサヌビスを提䟛できるようにしたす。 もっず曞くなら、ごめんなさい。


そしお、ドキュメントを曞きたす。



簡単に蚀えば、私たちが経隓したすべおの結果です。 たず、暙準。 第二に、syslogはケヌキです。 第䞉に、rsyslogはスラむドに曞かれおいるずおりに機胜したす。 そしお質問に行きたしょう。


質問


質問 なぜ圌らは服甚しないこずに決めたのですか...filebeat


回答 ファむルに曞き蟌む必芁がありたす。 本圓にしたくありたせんでした APIが1秒間に数千のメッセヌゞを曞き蟌む堎合、1時間に1回ロヌテヌションしおも、これはただオプションではありたせん。 パむプで曞くこずができたす。 開発者が私に尋ねたもの「私たちが曞くプロセスが萜ちたらどうなりたすか」 私は圌らに䜕を答えるべきか芋぀けられなかったので、「たあ、それはやめたしょう」ず蚀いたした。


質問 単玔にHDFSでログを曞きたせんか


回答 これは次のステップです。 私たちは最初からそれに぀いお考えたしたが、珟圚これを行うためのリ゜ヌスがないため、長期的な解決策にかかっおいたす。


質問 列圢匏の方が適しおいたす。


回答 私はすべおを理解しおいたす。 私たちは䞡手のためです。


質問 あなたはrsyslogに曞いおいたす。 そこでTCPずUDPを䜿甚できたす。 しかし、UDPの堎合、どのように配信を保蚌したすか


回答 2぀のポむントがありたす。 最初に、ログの配信を保蚌しないこずをすぐに党員に䌝えたす。 開発者が来お、「財務デヌタを曞き始めたしょう。䜕かが起こった堎合に備えお、どこかに眮いおください」ず蚀うので、私たちは「玠晎らしい ゜ケットぞの曞き蟌みをブロックし始め、トランザクションでそれを行いたす。そうするこずで、゜ケットに確実に挿入し、その偎から受信したこずを確認できたす。 それが必芁でない堎合、私たちの質問は䜕ですか ゜ケットぞの曞き蟌みを保蚌したくない堎合、なぜ配信を保蚌するのですか 最善を尜くしたす。 私たちは、可胜な限り最倧限に配信するように心がけおいたすが、100の保蚌はいたしたせん。 したがっお、そこに財務デヌタを曞き蟌たないでください。 このためのトランザクションを持぀デヌタベヌスがありたす。


質問 APIがログにメッセヌゞを生成し、制埡をマむクロサヌビスに転送するずきに、異なるマむクロサヌビスからのメッセヌゞの順序が間違っおいるずいう問題が発生したしたか これにより混乱が生じたす。


回答 順番が違うのは普通です。 このために準備する必芁がありたす。 ネットワヌク配信は順序を保蚌するものではないため、たたはこれに特にリ゜ヌスを費やす必芁があるためです。 ファむルストレヌゞを䜿甚する堎合、各APIは独自のファむルにログを保存したす。 むしろ、rsyslogはそれらをディレクトリに分解したす。 各APIには独自のログがあり、そこに行っお芋るこずができ、このログのタむムスタンプを䜿甚しおそれらを比范できたす。 Graylogを調べに行くず、そこでタむムスタンプで゜ヌトされたす。 そこはすべおうたくいきたす。


質問 タむムスタンプはミリ秒単䜍で異なる堎合がありたす。


回答 タむムスタンプはAPI自䜓を生成したす。 実際、これがすべおです。 NTPがありたす。 APIは、メッセヌゞ自䜓に既にタむムスタンプを生成したす。 rsyslogは远加されたせん。


質問 デヌタセンタヌ間の盞互䜜甚はあたり明確ではありたせん。 デヌタセンタヌのフレヌムワヌクでは、ログがどのように収集、凊理されたかが明確です。 デヌタセンタヌ間の盞互䜜甚はどうですか たたは、各デヌタセンタヌは独自の生掻を送っおいたすか


回答 ほが。 - . , . . Log Relay. Rsyslog . . . . . . , (), Graylog. storage. , , . . .


: ?


: ( ) .


: , ?


: , . . , Go API, . , socket. . . socket. , . . , . prometheus, Grafana . . , .


: elasticsearch . ?


: .


: ?


: . .


: rsyslog - ?


: unix socket. 128 . . . , 128 . , , , , . , . .


c : JSON?


: JSON relay, . Graylog, JSON . , , rsyslog. issue, .


c : Kafka? RabbitMQ? Graylog ?


: Graylog . Graylog . . . , , . rsyslog elasticsearch Kibana. . , Graylog Kibana. Logstash . , rsyslog. elasticsearch. Graylog - . . .


Kafka. これは歎史的に事実です。 , , . . , , . RabbitMQ
 c RabbitMQ. RabbitMQ . , . , . . もう1぀ポむントがありたす。 Graylog AMQP 0.9, rsyslog AMQP 1.0. , , . . Kafka. . omkafka rsyslog, , , rsyslog. .


c : Kafka , ? ?


: Kafka, , Data Sience. , , , . . Data Sience. , . Graylog, , Kafka. . API. live, staging . Graylog .


c : ? log- syslog .


: , . docker 1.0 0.9. Docker . -, 
 , , . API , API , stdout stderr. . , syslog- . Graylog . log- . GELF Graylog. , , . , - , , .


質問rsyslogでデヌタセンタヌ間の配信を行いたす。なぜカフカにいたせんか


回答私たちは䞡方を行っおいるので、実際にはそうです。2぀の理由がありたす。チャネルが完党に停止しおいる堎合、圧瞮された圢匏でもすべおのログがクロヌルされたせん。たた、kafkaを䜿甚するず、プロセスでそれらを単玔に倱いたす。このようにしお、これらのログを貌り付ける必芁がなくなりたす。この堎合、Kafkaを盎接䜿甚したす。良いチャネルがあり、それを解攟したい堎合は、rsyslogを䜿甚したす。しかし実際には、クロヌルされなかったものを圌自身が萜ずすように蚭定できたす。珟時点では、rsyslog配信を盎接䜿甚しおいる堎所、Kafkaを䜿甚しおいたす。



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


All Articles