elkb実務経験し、構成ファイルの複雑なセットを発表

オリジナル:妹味(マイクロチャネル公共番号ID:xjjdog)が、シェアは、ソースを保管してください再現してください。

バオJianfeng厳しい寒さから、梅の花を研ぎから。

詩人は、南の3月には、道路に沿って詩の将来の世代の曲が人気にするために、感情的に、桃の開口部を確認してください。良いもののために詩人の憧れ、そしてその背後にある感情の窮状。うーん...私は上に行くないよう。

幸いなことに、最初のフレーズは、因果関係です。しかし、詩の最後の部分に、しかし、の典型的な、不合理なたわごと从结果找原因アイデア。でも、「犬の糞が菊から来る臭い」が、また、これよりもよりオープンします。

これは、理論と実践との間の差である、想像力に依存している、スキニーが現実になることです滞在する余裕はありません。

この記事では、一般的な、悪いストリートelkbをご紹介します方案と、作業の重複を減らすために、細かなプロファイルが付属しています。

ELKkB

少し前までは、elkb単に呼び出しますelkbeatsそれが開発した近年のシリーズは、目的は、交換することですflumeし、他の収集コンポーネント。しかし、通常はカフカをという名前のコンポーネントを追加し、このプロセスよりスムーズスケーラブルを作るためです。このような全体的なルックスはそう。

いくつかの簡単なコンポーネントについてのコメント。

1)filebeat。アセンブリ、水路より集中的少ないリソースを簡単なを使用してテストされているログを収集するため。しかし、資源の占有はとてもスマートではありません、あなたは、いくつかのパラメータを調整する必要があります。filebeatも、注意する必要がありますが、メモリとCPUリソースを消費します。

2)カフカ。人気のメッセージキュー、メモリバッファ+ログ収集機能の内部。カフカのトピック機密情報を収集する必要があるので、あまり、深刻なパフォーマンスの問題があるでしょう。また、直接カフカは、異なるクラスタに分割されます。CPU少なく厳しい、大容量メモリ、高速ディスク上のカフカは大幅にパフォーマンスが向上します。

3)logstash。主に成形し、データをフィルタリングします。このコンポーネントは、資源集約、およびアプリケーションプロセスを入れていない非常に貪欲です。しかし、必要拡張に応じていつでも、ステートレスの計算ノードとしてみなされることができます。

4)elasticsearch。これは、ログデータの非常に大きな記憶容量もできます。簡単に削除する一方で、単一のインデックスが大きすぎないことに注意してくださいは、インデックスの大きさに基づいて、毎日または毎月の指標となります。

5)kibana。エス・インテグレーションと非常に良好な表示コンポーネントは、そのために、専用の記事がありxjjdog。「あなたは、kibanaのIをワイルドフラワー」

選択した複数のコンポーネントは、全体のプロセスは、よりエレガントになります。特にカフカ参加し、頭部と臀部の全体チェーンがより多くの魔法、完全に交換可能となっているようになります。修飾する方法:ELK-> ELKB-> ELKkB。

練習ジャーニー

ログフォーマット

これらの一連の私たちのコンポーネントに、我々はいくつかの小さなデータを必要としています。これは、nginxのログが最も一般的で、それがデフォルトのHTTPロードバランササービスとなっています。

まず、それはいくつかの定期的なログフォーマットを実施する必要があり、より有用な構成くれています。

log_format  main 
'$time_iso8601|$hostname|$remote_addr|$upstream_addr|$request_time|'
'$upstream_response_time|$upstream_connect_time|$status|$upstream_status|'
'$bytes_sent|$remote_user|$uri|$query_string|$http_user_agent|$http_referer|$scheme|'
'$request_method|$http_x_forwarded_for' ;

access_log logs/access.log main;
复制代码

最後に、結果のログは、コンテンツが比較的広いまだ、この社長のようになります。このログフォーマットは、それがプログラム、またはスクリプト処理の使用に対処するかどうかを、より便利です。

2019-11-28T11:26:24+08:00|nginx100.server.ops.pro.dc|101.116.237.77|10.32.135.2:41015|0.062|0.060|0.000|200|200|13701|-|/api/exec|v=10&token=H8DH9Snx9877SDER5627|-|-|http|POST|112.40.255.152
复制代码

コレクター

次に、あなたはfilebeatコンポーネントを設定する必要があります。この事は、ビジネスのマシン上に展開されているので、また、上述したように、それは、そのリソースの厳密な制御が必要となります。完全なコンフィギュレーションファイルは、別館でご利用いただけます。

このようなCPUリソース制約など。

max_procs: 1
复制代码

メモリー・リソース制限。

queue.spool:
  file:
    path: "${path.data}/spool.dat"
    size: 512MiB
    page_size: 32KiB
  write:
    buffer_size: 10MiB
    flush.timeout: 5s
    flush.events: 1024
复制代码

また、あなたはいくつかのフィールドを追加することができます。

fields:
  env: pro
复制代码

次のあなたは、configureカフカにする必要があります。オーダーのログは、一般的に大きく、明らかな意味のある、2つ以上の、有用ではないの部数ので、しかし、回復の時間が長くなりますので。

フィルタ

logstash構成は、おそらく最も混乱の場所であり、これは導入の私たちの主なポイントです。上記nginxのログがelasticsearch JSON文字列に解析されますので識別することができます。

入力部を介して、あなたは、データソースの一部にアクセスすることがあります。ここでは、カフカへの私たちのデータソース。あなたが複数のkakfa、または複数のデータソースを持っている場合は、ここで定義することができます。

次に、フィルタ部は、いくつかのデータのクリーニング動作を定義することができます。ここでは非常に悪いAPI、処理の特に日付で、非常に退屈な文法を持っています。コードがフォーマットされていない場合は、ネストされたレベルは、人々がめまいを感じていただけます。Rubyの構文を使用してと言われています。

ノートでは、イベントは組み込み変数いくつかの基本的な属性を含むデータの現在の行を表しています。あなたは、getメソッドによって、いくつかの値を得ることができます。

例えば、情報の主要かつ最も重要な身体、特定のライン情報です。

body = event.get('message')
复制代码

次に、それは、それぞれのキー/値の値に解析されます。セパレータは、|私たちがnginxのログ区切り文字です。アウト活発インパルスはありますか?

reqhash = Hash[@mymapper.zip(message.split('|'))]

query_string = reqhash['query_string']

reqhash.delete('query_string')
复制代码

日付の扱いは旅を悲痛されます。

time_local = event.get('time_local')
datetime = DateTime.strptime(time_local,'%Y-%m-%dT%H:%M:%S%z')
source_timestamp = datetime.to_time.to_i * 1000
source_date = datetime.strftime('%Y-%m-%d')      event.set('source_timestamp',source_timestamp)
event.set('source_date',source_date)
复制代码

あなたは、クエリのparamを解析したい場合は、これはまだ比較的周りに、そこにあります。

query_string = reqhash['query_string']
query_param = CGI.parse(query_string)
query_param.each { |key,value| query_param[key]=value.join() }
reqhash['query_param'] = query_param
buffer_map = LogStash::Event.new(reqhash)
event.append(buffer_map)
复制代码

奇妙な機能非常に多く、そこから来ていますか?logstash私はルビー公式調査からだったことを教えてくれません。それであってもよいLし、私たちに話をする気に。

https://ruby-doc.org/core-2.5.1/
复制代码

あなたがログインする場合のフォーマットは注意を払うように、より深く奇妙な、またはネストレベルを定義しました。解像度は街から旅になる運命されます。

しかし、プロセスをデバッグSTDOUT、リアルタイムと呼ばれるlogstash出力は、そこにある、あなたは視覚的な結果を判断する必要があります。ワンタイム・プログラミング機能の成功のこの比較試験。

終わり

だから、私はあなたが実装しているときにすることを、これらの設定ファイルを共有します。これは、参照することができます。倉庫アドレスも、元を表示するにはクリックすることができます:

https://github.com/xjjdog/elkb.cnf.pro
复制代码

あなたは理論値の何かが非常に精通していない方は、記事の数が完了しているにもあります。全体的なアイデアだけでなく、調査の性質を含みます。「だから、あなたのための右のは、常に多くの監視コンポーネントがある」 kibanaのあなたの花、私は「」

実際elkb実装では、難易度は、プログラム上ではなく、むしろそれを統合します。このバイパスの最初のアプリケーションは、圧倒的されていない既存のサービスの正常な動作に影響を与えることができない;第二は、マシンの数が展開する方法、特に大規模な一般的なプレーで、更新、Aの必要性でありますファン研究。

しかし、フィルタの一部、水路、またはlogstash、すべての周りが、尾根か。

著者について:妹味(xjjdog)、それが公共に迂回プログラマの数を許可していません。フォーカスインフラストラクチャおよびLinux。ディケイドアーキテクチャ、日百億流れ、あなたはあなたに別の味を与え、高い同時実行の世界を探検。私の個人的なマイクロチャネルxjjdog0、友人を追加し、さらに交流を歓迎します。

おすすめ

転載: juejin.im/post/5de8c622f265da33ce455f5b