Graylog: クイックスタート

Graylogの使い始め方

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

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

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

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

Inputは、Graylogがログを受信するエンドポイントです。ログはTCPまたはUDPで送信できます。さらに、GraylogはAPI、Kafkaキュー、RabbitMQサーバーなど、さまざまな方法でログエントリを収集できます。

この例では、Raw UDP Inputを作成します。まず、Graylogのインターフェースを開き、「System」→「Inputs」に移動してください。「Raw/Plaintext UDP」を選択し、「Launch new input」をクリックします。以下の値でInputを設定し、フォームを保存してください:

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

次に、ご自身のPCでターミナルを開き、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への最初のメッセージ送信が完了しました!必要に応じて追加のInputやダッシュボードを作成してご活用ください。さらに詳しい情報はGraylog公式ドキュメントもご参照ください。

いくつかのコード例をGitリポジトリで公開しています。このリポジトリには、実践的な実装例やカスタマイズ例が含まれており、Graylogを最大限に活用するための参考になります。

rsyslogクライアントからGraylogへ安全にログを送信したい場合は、以下の手順に従ってください:

GraylogのInput側でTLSオプションは有効化しないでください。TLSはインスタンス上のリバースプロキシで直接管理されるため、Graylog自体では処理しません。

  1. StackheroダッシュボードのGraylogサービス設定画面で、「Syslog TCPポート514」の「TLS暗号化」を有効にしてください。

  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はフィールド型を推測します。たとえば、timeフィールドに数値1234が含まれていれば、OpenSearchはそれを数値型として定義します。その後、timeフィールドに文字列"abcd"が送信されると、OpenSearchは数値を期待しているためエラーとなり、受け付けません。

なお、timeというフィールド名は例示です。実際には任意のフィールド名・型で同様の問題が発生します。

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

作業前に、StackheroダッシュボードでOpenSearchアクセスを有効にしてください。Graylogサービス画面で「Configure」ボタンをクリックし、OpenSearchアクセスを有効化します。

これらの変更は慎重に行ってください。不適切な設定はOpenSearchクラスタをブロックし、データ損失の原因となる場合があります。不明な点がある場合は作業を中止してください。

  1. 新しいマッピングを定義します。この例では、timeフィールドをstring型に再定義します。利用可能な型は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を無効化してください。