モノのインターネット (IoT) ソリューションの世界市場は急速に成長しています。 スマートルーター、TVドングル、Tmall Genie、ロボット掃除機など、ますますインテリジェントなIoTデバイスが日常生活に適用されています。 ただし、従来のソフトウェア業界の組み込み開発モデルは、IoT業界に大きな課題をもたらします。 たとえば、従来のデバイスロギングソリューションでは、多数のIoTデバイスがさまざまな場所に広く分散されており、デバッグやスケーリングが困難であるため、要件を満たすことができません。
これらの課題に対処するために、Log ServiceはLogtailの開発における長年の経験に基づいたC Producer Libraryを提供しています。 C Producer Libraryは、IoTデバイス用にカスタマイズされたログ収集ソリューションです。
組み込みソフトウェア開発の要件
IoTまたは組み込みソフトウェア開発者は、多数のIoTデバイスを管理、監視、およびトラブルシューティングするために、深い知識と豊富な経験を持っている必要があります。 組み込みソフトウェア開発には、次の要件があります。
データ収集: 世界中に分散している数百万または数千万のデバイスからリアルタイムでデータを収集します。
デバッグ: 一連のソリューションを使用して、オンラインでデータを収集し、ソフトウェアをリアルタイムでデバッグします。
オンライントラブルシューティング: オンラインIoTデバイスを見つけ、デバイスでエラーが発生した場合にエラーの原因を特定します。
モニタリング: オンラインIoTデバイスの数、ステータス、および場所をモニタリングし、デバイスのアラートルールを設定します。
リアルタイムデータ分析: IoTデバイスで生成されたデータを視覚化し、リアルタイムのコンピューティングプラットフォームやビッグデータウェアハウスに接続してユーザープロファイルを作成します。
IoT分野における大きな課題
従来のソフトウェア開発ソリューションは、次の課題により、IoT業界の前述の要件を満たすことができません。
多数のIoTデバイスがデプロイされています。 従来のO&Mでは、10,000サーバーの管理は大きな課題です。 ただし、IoT業界では、100,000のオンラインIoTデバイスを管理することは基本的な要件にすぎません。
IoTデバイスは、国内または世界中のさまざまな場所に広く分散されています。
ほとんどの場合、IoTデバイスのステータスは不明であり、アクセスやデバッグが困難です。
IoTデバイスは、コストを削減するためにローエンドのハードウェアを備えています。 たとえば、IoTデバイスは、32 MBの総メモリサイズを有し得る。 その結果、PC用の従来のログ収集ソリューションはIoTデバイスには適用されません。
C Producer
log Serviceによってカスタマイズされたログデータ収集ソリューション
LogtailはLog Serviceのエージェントで、数百万台のx86サーバーにデプロイされています。 。さらに、Log Serviceには、があります。
モバイルSDK: SDKを使用して、毎日数千万人のアクティブユーザー (DAU) がいるAndroidまたはiOSプラットフォームからデータを収集できます。
Webトラッキング (JavaScript): Webトラッキングは、Baidu TongjiやGoogle Analyticsに似た軽量のソリューションです。 webトラッキングを使用して、署名なしでデータを収集できます。
これらのソリューションでは、C Producer Libraryは、IoTデバイスからログデータを収集するためにLogtailに基づいてカスタマイズされたソリューションです。 このソリューションは、IoTデバイスのCPU、メモリ、ディスク、ネットワーク、およびアプリケーションモードと互換性があります。 次の図は、これらのソリューションの機能を示しています。
Cプロデューサーライブラリの特徴
C Producer Libraryは、軽量のLogtailとして機能し、高い安定性、高いパフォーマンス、および低いリソース消費を提供します。 Logtailと比較して、C Producer Libraryはリアルタイムの構成管理をサポートしていません。 ただし、C Producer LibraryはLogtailの次の機能を継承します。
複数のテナント: C Producer Libraryは、優先順位に基づいて、Metric、DebugLog、ErrorLogなどの複数の種類のログを処理できます。 C Producer Libraryには複数のクライアントを設定できます。 クライアントごとに、コレクションの優先度、宛先プロジェクト、および宛先Logstoreを設定することもできます。
コンテキストクエリ: 同じクライアントによって生成されたログは同じコンテキストにあります。 指定したログの前後に関連するログを表示できます。
同時送信と再開可能なアップロード: 最大キャッシュサイズを設定できます。 キャッシュされたログのサイズが上限に達すると、それ以上ログをキャッシュに書き込むことはできません。
さらに、C Producer Libraryは、IoTデバイスに固有の次の機能を提供します。
ローカルデバッグ: ログをローカルデバイスにエクスポートできます。 ログの回転、ログの数量、および回転サイズを設定できます。
きめ細かいリソース制御: さまざまな種類のデータまたはログに対して、キャッシュサイズと集約モードを設定できます。
ログキャッシュの圧縮: ログデータをLogstoreに送信できない場合、ログデータを圧縮してIoTデバイスのメモリ使用量を減らすことができます。
Cプロデューサーライブラリの利点
IoTデバイスのカスタムソリューションとして、C Producer Libraryには次の利点があります。
同時並行性の高い書き込みトラフィック: クライアントのスレッドプールを設定して、1秒間に数十万のログをLog Serviceに書き込むことができます。 詳細については、このトピックの「パフォーマンステスト」セクションを参照してください。
Lowリソース消費: Only 70% CPUのリソースは書くために必要な200,000ログ毎秒。 For低高性能ハードウェアなどRaspberry Pi、CPUリソースは影響ない場合でも100ログ生成されます。
直接ログ配布: ログが生成されると、ログは直接log Serviceに送信されます。
Logic分離間コンピューティングとI/O: Logsをブロックすることなく非同期方法で生成され労働者。
複数の優先度: クライアントに異なる優先度を設定して、優先度の高いログが最初に送信されるようにすることができます。
Localデバッグ: 設定することができYouローカルにデバッグテストアプリケーションネットワーク接続場合は使用できません。
C Producer Libraryは、アプリケーション開発を簡素化します。 ログ収集の実装やビジネスへの影響を考慮する必要はありません。 これにより、データ収集がはるかに簡単になります。
次の表は、C Producer Libraryとその他の埋め込みコレクションソリューションの比較です。
データ型 | C Producer | その他のソリューション | |
プログラミング | プラットフォーム | モバイルベースと埋め込み | モバイルベース |
背景 | 対応 | 非対応 | |
複数のログタイプ | 対応 | 非対応 | |
カスタム形式 | 対応 | サポートされていません (いくつかの限定フィールドが提供されます) | |
優先度 | 対応 | 非対応 | |
環境パラメーター | 設定可能 | 設定可能 | |
安定性 | 同時実行 | 高い | 中 |
圧縮アルゴリズム | LZ4 (効率とパフォーマンスのバランス) とGzip | 最適化 | |
低リソース消費 | 最適化 | 中 | |
送信 | 再開可能なアップロード | 対応 | デフォルトでは、再開可能なアップロードはサポートされません。 再開可能なアップロードをサポートするには、二次開発が必要です。 |
サービスアドレス | 中国の8つのエンドポイントと中国以外の8つのエンドポイント | 杭州 | |
デバッグ | ローカルログ | 対応 | 手動モードでサポート |
パラメーター設定 | 対応 | 非対応 | |
リアルタイムコレクション | サーバー側で表示 | 1秒 (99.9%) から3秒 (最大) | 1〜2時間 |
カスタム処理 | 15以上の接続モード | カスタムリアルタイムとオフラインのソリューション |
C Producer Library + Log Serviceソリューション
C Producer LibraryをLog Serviceと統合して、IoTデバイス向けのあらゆる種類のログ収集ソリューションを提供できます。
大規模
クライアントから数億のログをリアルタイムでLog Serviceに書き込みます。
1日あたりペタバイト単位のデータを書き込みます。
高速
高速収集: ログは、Log Serviceに書き込まれた直後に使用できます。
高速クエリ: 5つの条件を指定した複雑なクエリ文を実行すると、数十億のデータレコードを1秒以内に処理およびクエリできます。
高速分析: 5つの集計関数とGROUP by句を含む複雑な分析ステートメントを実行すると、1秒以内に数億のデータレコードを集計および分析できます。
高い互換性
さまざまなAlibaba Cloudサービスとシームレスに統合。
さまざまなオープンソースストレージ、コンピューティング、および視覚化システムと互換性があります。
C Producer Libraryをダウンロードして使用する
ダウンロードURL: GitHub
アプリケーションごとに複数のプロデューサーを作成し、プロデューサーごとに複数のクライアントを作成できます。 各クライアントの宛先IPアドレス、ログレベル、ローカルデバッグ、キャッシュサイズ、カスタム識別子、およびトピックを設定できます。
C Producer Libraryのインストール方法の詳細については、「README」をご参照ください。
性能テスト
Environment 設定
高性能シナリオ: 従来のx86サーバー。
低パフォーマンスシナリオ: Raspberry Pi (低消費電力環境) 。
次の図は、設定の詳細を示しています。
C Producer Libraryの設定
ARM (ラズベリーパイ)
キャッシュサイズ: 10 MB
凝集時間: 3秒。 集計時間、集計パケットのサイズ、または集計ログの数が指定されたしきい値に達すると、データはカプセル化され、Log Serviceに送信されます。
集約パケットのサイズ: 1 MB
集計ログ数: 1,000
送信スレッド数: 1
カスタムタグの数: 5
X86
キャッシュサイズ: 10 MB
凝集時間: 3秒。 集計時間、集計パケットのサイズ、または集計ログの数が指定されたしきい値に達すると、データはカプセル化され、Log Serviceに送信されます。
集約パケットのサイズ: 3 MB
集計ログ数: 4096
送信スレッドの数: 4
カスタムタグの数: 5
次のサンプルログには、9つのキーと値のペアが含まれます。
__source__: 192.0.2.1
__tag__:1: 2
__tag__:5: 6
__tag__:a: b
__tag__:c: d
__tag__:tag_key: tag_value
__topic__: topic_test
_file_: /disk1/workspace/tools/aliyun-log-c-sdk/sample/log_producer_sample.c
_function_: log_producer_post_logs
_level_: LOG_PRODUCER_LEVEL_WARN
_line_: 248
_thread_: 40978304
LogHub: Real-time log collection and consumption
Search/Analytics: Query and real-time analysis
Interconnection: Grafana and JDBC/SQL92
Visualized: dashboard and report functions
テスト結果
x86サーバーでのテスト結果
C Producer Libraryは、1秒あたり最大90 MBのデータを送信できます。 C Producer Libraryは、1秒間に200,000ログをアップロードすることもでき、CPUリソースの70% とメモリの140 MBのみを占有します。
C Producer Libraryが1秒間に200ログを送信する場合、CPUリソースの0.01% 未満しか占有しません。
各送信スレッドは、平均してログを送信するのに1.2 μ sを消費する。
Raspberry Piのテスト結果
Raspberry PiのCPUはわずか600 MHzの速度に達します。 したがって、Raspberry Piのパフォーマンスは、X-86サーバーのパフォーマンスの約10% です。 この場合、C Producer Libraryは1秒あたり最大20,000ログを送信できます。
Raspberry Piが毎秒20ログを送信すると、CPUリソースの0.01% 未満しか占有しません。
Raspberry PiがUSBポートを使用してPC共有ネットワークに接続されている場合、各送信スレッドは平均して12 μ sを消費してログを送信します。