Graylog: 入力タイプを選択する

適切なGraylog入力タイプの選び方

👋 Stackheroのドキュメントへようこそ!

Stackheroは、数多くの利点を提供する、すぐに使えるGraylogクラウドソリューションを提供しています。

  • 無制限で専用のSMTP メールサーバーが含まれています。
  • ワンクリックで簡単にアップデート
  • HTTPSで保護されたカスタマイズ可能なドメイン名(例: https://logs.your-company.com)。
  • プライベートで専用のVMによる最適なパフォーマンスと強力なセキュリティ

時間を節約し、生活を簡素化:StackheroのGraylogクラウドホスティングソリューションを試すのに5分しかかかりません!

Graylogはさまざまな入力を提供しています。これらの入力を使用して、ログをGraylogサーバーに送信したり、Graylogが他のソースからログを取得できるようにします。

ほとんどの場合、アプリケーションやデバイスからGraylogサーバーにデータを送信したいと思うでしょう。 Graylogが他の場所からログを取得する高度なケースについては説明しませんが、これを行いたい場合は、非常に簡単ですのでご安心ください。

最適な入力タイプを選ぶには、まずGraylogに送信したいログ形式を決定する必要があります。以下に詳述するように、GELF形式を使用することをお勧めします。

次に、プロトコルを選択する必要があります:UDPまたはTCP。

最初の決定は、ログメッセージの形式を選ぶことです。主に3つのオプションがあります:RAW/PlaintextSyslog、またはGELF

これは最もシンプルな形式です。完全なプレーンテキストメッセージを送信するため、どのシステムでも動作します。非常に使いやすく、netcatユーティリティを使用してメッセージを送信するなど、初期テストに最適です。

テストするには、「Raw/Plaintext UDP」入力を作成し、次のコマンドラインのいずれかを使用してテストログを送信できます:

  1. macOSから: echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  2. Linuxから: echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

非常に簡単ですね?しかし、基本的な形式であるため、すぐに制限に直面するでしょう。したがって、単純なテスト以上には使用しないことをお勧めします。

これはサーバー環境でログを保存および送信するために広く使用されているよく知られた形式です。Linux、Windows、*BSDなどのオペレーティングシステムで見つけることができます。

Syslog、Rsyslog、または他の互換性のあるサービスを使用してサーバーからGraylogにログを送信したい場合、syslog入力が最も簡単なオプションです。

しかし、GELFはより強力であるため、GELF形式のメッセージを送信できる場合は、以下で説明するようにそれをお勧めします。

Syslog形式は1024文字に制限されていることに注意してください。

GELFは「Graylog Extended Log Format」の略です。この形式はGraylogによって作成され、多くの製品で広く採用され、標準として確立されています。

GELF形式は、ログを構造化された方法で送信するため強力です。構造化されたログ記録により、単一の非構造化テキストメッセージではなく、複数のフィールドと値を送信できます。これにより、Graylogが情報を解析して取得しやすくなります。

たとえば、IPアドレスとリクエストタイプを含むログを送信したい場合、iprequest_typeという2つのフィールドを持つメッセージを送信できます。Graylog側では、これらのフィールドに直接検索をかけることができ、例えばrequest_type: POSTというクエリで全てのリクエストを検索できます。

GELFはJSONに基づいており、少なくともversionhostshort_messageフィールドを含める必要があります。その後、追加のフィールドをアンダースコア(_)で始めて追加できます。

たとえば、device_idという追加フィールドを持つシンプルなメッセージは次のようになります:

{
  "version": "1.1",
  "host": "myIotDevice",
  "short_message": "Something is happening",
  "_device_id": "abcd"
}

その後、Graylogでdevice_id: abcdというクエリを使用してデバイス「abcd」からのすべてのメッセージを検索できます。

GELFの詳細については、公式仕様をこちらで参照できます:https://docs.graylog.org/en/4.0/pages/gelf.html

サーバーやアプリケーションからログを送信したい場合、自動的にメッセージを作成して送信する多くの利用可能なライブラリの1つを使用できます。Node.js.NETPythonの例があります。

適切な形式を選択したら(GELFを選んでいただけることを願っています!)、TCPとUDPの間で通信プロトコルを選択する必要があります。

UDPプロトコルは非常にシンプルです。アプリケーションは受信確認を必要とせずにサーバーにメッセージを送信します。クライアントとサーバーの間に対話はなく、サーバーがメッセージを受信したことを確認しません。

このアプローチの利点は、Graylogサーバーが遅いまたはダウンしている場合でも、アプリケーションのパフォーマンスに影響を与えないことです。欠点は、アプリケーションから送信されたすべてのログがサーバーに到達することを確信できないことです。また、UDPでは暗号化が利用できません。

  1. Graylogが遅いまたはダウンしていてもアプリケーションに影響を与えません。
  1. 一部のメッセージが失われる可能性があります。
  2. 暗号化が利用できません。
  3. メッセージサイズは8192バイトに制限されています。

TCPプロトコルは、UDPとは異なり、アプリケーションとGraylogの間で情報を交換します。これにより、Graylogがメッセージを受信したことを確認できます。

TCPの利点は、Graylogがメッセージを受信しなかった場合(たとえば、サーバーがダウンしている場合)にメッセージを再送信できることです。欠点は、Graylogが遅いまたは応答しない場合、アプリケーションが応答またはタイムアウトを待つ必要があり、潜在的に遅くなる可能性があることです。

もう一つの利点は、TLS(SSLとも呼ばれる)で通信を暗号化できることです。

  • メッセージが受信されたことを確認します。
  • 暗号化が利用可能です(TLS)。
  • メッセージサイズの制限がありません
  • Graylogが応答するのが遅いまたはダウンしている場合、送信者を遅くする可能性があります。

このガイドが、Graylogにログを送信するための最適な形式とプロトコルを選択するための必要な情報を提供できたことを願っています。

複数の入力を同時に実行することができ、それぞれに異なるポートを使用することを忘れないでください。たとえば、ポート514で「syslog UDP」入力を持ち、ポート12201で「GELF TCP」入力を並行して持つことができます。