Contents

EII TimeSeriesProfiler

This module calculates the SPS (Samples Per Second) of any EII time-series modules based on the stream published by that respective module.

Prerequisites

  1. TimeSeriesProfiler expects a set of config, interfaces and public or private keys to be present in ETCD as a prerequisite. To achieve this, ensure an entry for TimeSeriesProfiler with its relative path from IEdgeInsights([WORK_DIR]/IEdgeInsights/) directory is set in the time-series.yml file present in build/usecases([WORK_DIR]/IEdgeInsights/build/usecases) directory. Following is an example:

    AppContexts:
    - ConfigMgrAgent
    - Visualizer/multimodal-data-visualization-streaming/eii/
    - Visualizer/multimodal-data-visualization/eii
    - DataStore
    - Kapacitor
    - Telegraf
    - tools/TimeSeriesProfiler
    
  2. With the previous pre-requisite done, please run the following command:

    python3 builder.py -f ./usecases/time-series.yml
    

EII TimeSeriesProfiler Mode

By default, the EII TimeSeriesProfiler supports “sps” mode.

  1. SPS mode

    This mode is enabled by setting the “mode” key in config([WORK_DIR]/IEdgeInsights/tools/TimeSeriesProfiler/config.json) to “sps”. This mode calculates the samples per second of any EII module by subscribing to that module’s respective stream.

    "mode": "sps"
    

Note

  • For running TimeSeriesProfiler in SPS mode, it is recommended to keep PROFILING_MODE set to false in .env([WORK_DIR]/IEdgeInsights/build/.env) for better performance.

EII TimeSeriesProfiler Configuration

  1. total_number_of_samples

    If mode is set to’sps’, the average SPS is calculated for the number of samples set by this variable. Setting it to (-1) will run the profiler forever unless terminated by stopping the container TimeSeriesProfiler manually. total_number_of_samples should never be set as (-1) for ‘sps’ mode.

  2. export_to_csv

    Setting this switch to true exports csv files for the results obtained in TimeSeriesProfiler.

Running TimeSeriesProfiler

  • The configuration required to run rfc_classifier.py UDF is as follows:

    In Kapacitor config.json(``[WORK_DIR]/IEdgeInsights/Kapacitor/config.json``) , update “task” key as follows:

    "task": [{
       {
        "tick_script": "rfc_task.tick",
        "task_name": "random_forest_sample"
        }
    }]
    

    In kapacitor.conf(``[WORK_DIR]/IEdgeInsights/Kapacitor/config/kapacitor.conf``) update udf section:

    [udf.functions.rfc]
       prog = "python3.7"
       args = ["-u", "/EII/udfs/rfc_classifier.py"]
       timeout = "60s"
       [udf.functions.rfc.env]
          PYTHONPATH = "/EII/go/src/github.com/influxdata/kapacitor/udf/agent/py/"
    

    Keep the config.json([WORK_DIR]/IEdgeInsights/tools/TimeSeriesProfiler/config.json) file as follows:

    {
     "config": {
         "total_number_of_samples": 10,
         "export_to_csv": "False"
     },
     "interfaces": {
         "Subscribers": [
             {
                 "Name": "default",
                 "Type": "zmq_tcp",
                 "EndPoint": "ia_datastore:65032",
                 "PublisherAppName": "DataStore",
                 "Topics": [
                     "rfc_results"
                 ]
             }
         ]
     }
    }
    

    In .env([WORK_DIR]/IEdgeInsights/build/.env): Set the profiling mode to true.

  1. Set environment variables accordingly in config.json([WORK_DIR]/IEdgeInsights/tools/TimeSeriesProfiler/config.json).

#. Set the required output stream or streams and the appropriate stream config in the config.json([WORK_DIR]/IEdgeInsights/tools/TimeSeriesProfiler/config.json) file. #.

To run this tool in IPC mode, the user must make the following changes to the subscribers interface section of [config.json] (./config.json)**:

{
  "type": "zmq_ipc",
  "EndPoint": "/EII/sockets"
}
  1. To provision, build, and run the tool along with the EII time-series recipe or stack, see README.md.

  2. Run the following command to see the logs:

    docker logs -f ia_timeseries_profiler