モノのインターネット (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プロデューサーライブラリの特徴

Cプロデューサーライブラリの利点

IoTデバイスのカスタムソリューションとして、C Producer Libraryには次の利点があります。

Cプロデューサーライブラリの利点
  • 同時並行性の高い書き込みトラフィック: クライアントのスレッドプールを設定して、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ソリューション

C Producer Libraryをダウンロードして使用する

ダウンロードURL: GitHub

アプリケーションごとに複数のプロデューサーを作成し、プロデューサーごとに複数のクライアントを作成できます。 各クライアントの宛先IPアドレス、ログレベル、ローカルデバッグ、キャッシュサイズ、カスタム識別子、およびトピックを設定できます。

C Producer Libraryのインストール方法の詳細については、「README」をご参照ください。

C Producer Libraryをダウンロードして使用する

性能テスト

Environment 設定
  • 高性能シナリオ: 従来のx86サーバー。
  • 低パフォーマンスシナリオ: Raspberry Pi (低消費電力環境) 。

次の図は、設定の詳細を示しています。

Environment 設定

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
__タグ __: 1: 2
__タグ __: 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
_レベル_: LOG_PRODUCER_LEVEL_WARN
_line_: 248
_thread_: 40978304
LogHub: リアルタイムのログ収集と使用
検索 /分析: クエリとリアルタイム分析
相互接続: GrafanaとJDBC/SQL92
視覚化: ダッシュボードとレポート機能
テスト結果
  • 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を消費する。
    x86サーバーでのテスト結果
  • 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を消費してログを送信します。
    Raspberry Piのテスト結果