nodejsagent
provides a set of complementary instrumentation features for collecting relevant data to be processed by Hypertrace.
- Update protobuf definitions
- Update the
agent-config
submodule.git submodule update --init --recursive
- Generate protobbuf files:
./src/instrumentation/config/generated.js
and./src/instrumentation/config.generated.d.ts
.npm run generate_pb
- Update the
- Build.
npm run build
You can then install the generated .tgz as a normal dependency.
Note: Using npm link doesnt solve the local testing problem as it will use the hypertrace package dev-dependencies during instrumentation instead of the targetted node app
-
Run the example application
-
cd ./examples/correlation
- Update
config.yaml
if needed. - Install dependencies
npm install
- Start application
npm start
-
-
Unit tests
- Start external services
cd ./test/externalServices docker-compose up -d cd -
-
npm run test
- Stop external services if not needed.
cd ./test/externalServices docker-compose down cd -
Tests should be added to the
test
directory, in a structure that matches that of the file you are attempting to test.Ideally all functionality is testable in locally runnable unit-tests(as opposed to in a docker container), primarily for ease of debugging.
- Start external services
To build the layer & upload it to an AWS account:
- Build using the steps above.
- Run
./build_layer.sh <REGION>
where region is the region you want the layer to be available in - Add an environment variable to your lambda:
AWS_LAMBDA_EXEC_WRAPPER=/opt/hypertrace-instrument
- Configure reporting to a collector, you can set
HT_REPORTING_ENDPOINT
to a valid OTLP collector address. - If using with a collector layer, no need to specify an OTLP address as it will export to localhost:4317