Graylog: はじめに

Graylogの始め方

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

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

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

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

インプットはGraylogがログを受信するエンドポイントです。TCPまたはUDPを使用してログを送信できます。さらに、GraylogはAPI、Kafkaキュー、RabbitMQサーバーなどからログエントリを収集できます。

この例では、生のUDPインプットを作成します。まず、Graylogインターフェースを開き、「System」から「Inputs」に移動します。「Raw/Plaintext UDP」を選択し、「Launch new input」をクリックします。次の値でインプットを設定し、フォームを確認してください。

  1. Node: ノードを選択
  2. Title: RAW UDP
  3. Port: 5555

次に、コンピュータのターミナルを開き、GraylogサーバーにUDPメッセージを送信します。XXXXXXをサービスのドメイン名に置き換えることを忘れないでください。

  • macOSの場合: echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  • Linuxの場合: echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

メッセージを送信した後、Graylogに戻り「Search」をクリックします。メッセージが表示されるはずです 🎉

おめでとうございます、これでGraylogに最初のメッセージを送信しました!必要に応じて追加のインプットやダッシュボードを作成してください。さらにガイダンスが必要な場合は、Graylogの公式ドキュメントを参照してください。

いくつかのコード例がGitリポジトリにあります。このリポジトリは、Graylogを最大限に活用するための実用的な実装と追加のカスタマイズを提供します。

rsyslogクライアントを持っていて、Graylogに安全にログを送信したい場合は、次の手順に従ってください。

GraylogのインプットでTLSオプションを有効にしないでください。TLSはインスタンス上のリバースプロキシによって直接管理されるため、Graylogはそれを処理しません。

  1. StackheroダッシュボードでGraylogサービスの設定に移動し、Syslog TCPポート514の「TLS encryption」を有効にします。

  2. 以下のようにrsyslog設定を更新します。<XXXXXX>.stackhero-network.comをインスタンスのホスト名に置き換えてください。

    # TLS CA証明書を定義
    global(
      DefaultNetstreamDriver="gtls"
      DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt"
    )
    
    # すべてのログをリモートサーバーに送信
    # このアクションのためにディスク上にキューが作成されます。リモートホストが
    # ダウンしている場合、メッセージはディスクにスプールされ、再び利用可能になったときに送信されます
    # 詳細はhttps://www.rsyslog.com/doc/v8-stable/configuration/actions.html
    # およびhttps://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.htmlを参照
    *.* action(
      type="omfwd"
      target="<XXXXXX>.stackhero-network.com"
      port="514"
      protocol="tcp"
      KeepAlive="on"
      KeepAlive.Interval="30"
      StreamDriver="gtls"
      StreamDriverMode="1"
      StreamDriverAuthMode="x509/name"
      ResendLastMSGOnReconnect="on"
      queue.filename="fwdRule1"  # スプールファイルのユニークな名前プレフィックス
      queue.type="LinkedList"
      queue.maxDiskSpace="256m"
      queue.saveOnShutdown="on"
      action.resumeRetryCount="-1"
      action.resumeInterval="30"
    )
    
  3. rsyslogサービスを再起動し、次のコマンドでログを送信して設定を確認します。

    logger This is a test
    

これで設定は完了です。TLS暗号化を使用してGraylogに安全にログを送信しています!

次のようなエラーが発生することがあります。

org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'

このエラーは、StackheroダッシュボードまたはGraylog管理パネルのSystem > Overview > Indexer failuresで確認できます。

このエラーは、フィールドtimeに期待される型(この場合は「long」型の数値)と一致しない値が送信されたことを示しています。GraylogはOpenSearchの動的マッピング機能を利用しています。ログが初めて送信されると、OpenSearchはフィールドタイプを推測しようとします。たとえば、ログに数値1234を持つフィールドtimeが含まれている場合、OpenSearchはそれを数値フィールドとして定義します。別のログがフィールドtimeを文字列"abcd"として送信すると、OpenSearchは数値を期待しているため、それを拒否します。

フィールド名timeはあくまで例として使用されています。任意のフィールド名とタイプが使用される可能性があります。

この問題を解決するには、OpenSearchが期待するタイプを再定義する必要があります。詳細については、公式のGraylogドキュメントを参照してください。

続行する前に、StackheroダッシュボードでOpenSearchアクセスを有効にします。Graylogサービスに移動し、「Configure」ボタンをクリックしてOpenSearchアクセスを有効にします。

これらの変更には注意が必要です。不正な設定はOpenSearchクラスターをブロックし、データ損失を引き起こす可能性があります。確信が持てない場合は、続行しないでください。

  1. 新しいマッピングを定義します。この例では、フィールドtimeを文字列型に再定義します。利用可能なタイプはOpenSearchフィールドデータタイプドキュメントで確認できます。

  2. 次の内容をgraylog-custom-mapping.jsonという名前のファイルに保存します。

    {
      "template": "graylog_*",
      "mappings": {
        "message": {
          "properties": {
            "time": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
    
  3. 次のcurlコマンドを使用してこのファイルを送信します(<XXXXXX>.stackhero-network.comをインスタンスのドメイン名に置き換えてください)。

    curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'
    

    次のような応答を受け取るはずです。

    {
      "acknowledged": true
    }
    
  4. 最後に、次のコマンドでマッピングが更新されたことを確認します(必要に応じてドメインを置き換えてください)。

    curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
    

次のようなエラーが表示される場合があります。

Unable to write audit log entry because there is no valid license

または

Not running cleanup for auditlog entries in MongoDB because there is no valid license

これは、Graylog Enterpriseが有効なライセンスなしでアクティブ化されたために発生します。ライセンスをお持ちの場合は、Graylogインターフェースに入力できます。ライセンスをお持ちでない場合は、StackheroダッシュボードでGraylog Enterpriseを無効にしてください。