Udplogbeat は、開発者が Elasticsearch でインデックスを作成するイベントをログに記録できるようにすることを目的としたカスタム Beats アプリケーションです。ログ エントリはローカル UDP ソケットに送信され、選択された出力を介して送信されます。このツールの本来の目的は、ディスクに書き込むことなく、また Beats フレームワークのさまざまな組み込み出力や機能を利用することなく、あらゆるアプリケーションでメッセージをローカルに簡単に記録できるようにすることです。
このフォルダーが次の場所にあることを確認します: ${GOPATH}/github.com/hartfordfive
このビートは現在、protologbeat に置き換えられています。このビートは問題なく動作するはずですが、いくつかの改良点があり、tcp または udp を選択できるため、代わりに後継バージョンを使用することをお勧めします。このプロジェクトには今後変更が加えられません。
udplogbeat.port
: プロセスがリッスンする UDP ポート (デフォルト = 5000)udplogbeat.max_message_size
: 受け入れられる最大メッセージ サイズ (デフォルト = 1024)udplogbeat.enable_syslog_format_only
: syslog メッセージのみを受け入れるかどうかを示すブール値。 (デフォルト = false)udplogbeat.enable_json_validation
: json
形式のメッセージに JSON スキーマ検証を適用するかどうかを示すブール値 (デフォルト = false)udplogbeat.publish_failed_json_invalid
: 検証が失敗した場合に JSON オブジェクトをシリアル化して送信するかどうかを示すブール値。これにより、 _udplogbeat_jspf
タグが追加されます。 (デフォルト = false)udplogbeat.json_document_type_schema
: キーとして Elasticsearch タイプ、値としてローカル スキーマ ファイルの絶対パスで構成されるハッシュ。syslog 置換のサンプル構成
udplogbeat:
port: 5000
max_message_size: 4096
enable_syslog_format_only: false
JSON 形式のイベントにスキーマを適用するサンプル構成
udplogbeat:
port: 5001
max_message_size: 2048
enable_json_validation: true
json_document_type_schema:
email_contact: "/etc/udplogbeat/app1_schema.json"
stock_item: "/etc/udplogbeat/app2_schema.json"
JSON スキーマは、http://jsonschema.net/ のオブジェクトから自動的に生成できます。含まれているサンプル スキーマapp1_schema.json
およびapp2_schema.json
を例として表示することもできます。
これを Rsyslog によるログのドロップイン代替として使用する場合、この方法ではデータがディスク上のファイルに保存されません。
何らかの理由で udplogbeat がダウンしている場合、構成された UDP ポートに送信されたメッセージは処理されず、ELK クラスターに送信されません。各メッセージが少なくとも 1 回配信されることを 100% 保証する必要がある場合、これは最適なソリューションではない可能性があります。
ログ イベントが失われる可能性がある程度許容できる場合、これは合理的な解決策となる可能性があります。
udplogbeat アプリケーションが syslog 形式のみモード ( enable_syslog_format_only: false ) でないときにイベントを受け入れるには、イベントは次の形式で構造化されている必要があります。
[フォーマット]:[ES_TYPE]:[イベント_データ]
json
またはplain
のいずれか。 JSON でエンコードされたエントリは自動的に解析されます。例:
プレーンエンコードされたイベント:
plain:syslog:Nov 26 18:51:42 my-web-host01 dhclient: DHCPACK of 10.2.1.2 from 10.2.1.3
JSON エンコードされたイベント:
json:my_application:{"message":"This is a test JSON message", "application":"my_application", "log_level":"INFO"}
現在の日付/時刻が各ログ エントリに自動的に追加されることに注意してください。
さまざまな言語のクライアントの例については、 sample_clients/
ディレクトリを参照してください。
Udplogbeat を実行し、依存関係もインストールするには、次のコマンドを実行します。
make setup
主要なステップごとにクリーンな Git 履歴が作成されます。変更をプッシュする前に、必要に応じていつでも履歴を書き換えることができることに注意してください。
Udplogbeat を git リポジトリにプッシュするには、次のコマンドを実行します。
git remote set-url origin https://github.com/hartfordfive/udplogbeat
git push origin master
さらなる開発については、ビート開発者ガイドを確認してください。
Udplogbeat のバイナリをビルドするには、以下のコマンドを実行します。これにより、同じディレクトリに udplogbeat という名前のバイナリが生成されます。
make
または、OSX、Windows、Linux 用の zip バイナリをビルドするには、次のようにします。
./build_os_binaries.sh "[VERSION_NUMBER]"
これらはbin/
ディレクトリに配置されます。
デバッグ出力を有効にして Udplogbeat を実行するには、次を実行します。
./udplogbeat -c udplogbeat.yml -e -d "*"
Udplogbeat をテストするには、次のコマンドを実行します。
make testsuite
あるいは:
make unit-tests
make system-tests
make integration-tests
make coverage-report
テスト カバレッジはフォルダー./build/coverage/
にレポートされます。
各ビートには、 elasticsearch のマッピング用のテンプレートと、 etc/fields.yml
に基づいて自動的に生成されるフィールドのドキュメントがあります。 etc/udplogbeat.template.json および etc/udplogbeat.asciidoc を生成するには
make update
Udplogbeat ソース コードをクリーンアップするには、次のコマンドを実行します。
make fmt
make simplify
ビルド ディレクトリと生成されたアーティファクトをクリーンアップするには、次のコマンドを実行します。
make clean
git リポジトリから Udplogbeat のクローンを作成するには、次のコマンドを実行します。
mkdir -p ${GOPATH}/github.com/hartfordfive
cd ${GOPATH}/github.com/hartfordfive
git clone https://github.com/hartfordfive/udplogbeat
さらなる開発については、ビート開発者ガイドを確認してください。
Beat フレームワークは、さまざまなプラットフォーム向けに Beat をクロスコンパイルしてパッケージ化するためのツールを提供します。これには、上で説明したように、Docker とベンダーが必要です。ビートのパッケージをビルドするには、次のコマンドを実行します。
make package
これにより、ビルド プロセスに必要なすべてのイメージが取得および作成されます。穴の処理が完了するまでに数分かかる場合があります。
アラン・ルフェーブル <hartfordfive 'at' gmail.com>
Apache License、バージョン 2.0 の適用対象 Copyright (c) 2016 Alain Lefebvre