Beaconing RUM data via gRPC or HTTP
If you are already collecting RUM data from your endpoints, you can beacon the telemetry to IBM® NS1 Connect® by using the API. You can bring your own (BYO) data from your CDN footprint or any combination of servers, data centers, or cloud providers.
Beaconed data must contain a performance-based measurement, such as latency, to reference when routing.
Before you begin
Consult with IBM support for guidance on the best data collection methods for your organization and to overview the configuration process.
Step 1 - Create the RUM (Pulsar) application and jobs
A RUM (Pulsar) application represents a group of resources or assets from which NS1 Connect ingests RUM data. Each application is identifiable by its unique application ID (app ID). NS1 Connect references the app ID to determine which set of jobs take the measurement. After you configure the application, you create a RUM (Pulsar) job for each monitored resource.
Step 2 - Configure beacon data via gRPC or HTTP
If your application is already gathering performance data, you can push your telemetry to NS1 Connect via beacon requests to inform routing decisions. Data can be beaconed in bulk via gRPC or HTTP. One payload can support multiple RUM applications and jobs (up to a 4 MB limit if you are using gRPC). Refer to https://github.com/ns1/pulsar-rum for details.
For each endpoint from which you want to push data to NS1 Connect, you must provide the eyeball IP or geographic data (refer to this topic for details), the job ID for that endpoint, and some unit of measurement for the performance metric. The metric you provide must be measured similarly for each endpoint.
DeviceType and DetailedPerformance fields are not used currently. While it is possible to set DetailedPerformance instead of SimpleLatency, the ingestion endpoint currently uses TTFB or TTLB (whichever is present) and treats it as a SimpleLatency value. If no SimpleLatency, DetailedPeformance.TTFB or DetailedPerformance.TTLB value is returned, the data point is discarded. Contact IBM support to learn more about alternatives for generating leads for multi-metric data ingestion.You can send bulk data via gRPC to g.ns1p.net:443. Bulk ingestion via gRPC requires authentication by using an API key that is generated from your NS1 Connect account. Refer to https://github.com/ns1/pulsar-rum#bulk-beacons for implementation details. Details on how to implement a gRPC client are found at https://grpc.io.
Alternatively, you can use HTTP by issuing a PUT request to b.ns1p.net:443. Instead of serializing a protocol buffer message, the JSON of the same data should be included in the POST body. Specifically, the POST body JSON should be unmarshalled by a protocol buffer into a Beacons object as defined in bulkbeacon.proto. Therefore, the same message that is sent in the gRPC example client that is linked is sent via HTTP as follows:
curl -X POST -H "X-NSONE-Key: $NSONE_API_KEY" -d '
{
"beacons": [
{
"appid": "appid",
"measurements": [
{
"attribution": {
"jobid": "jobid1",
"location": {
"ipAddress": "72.89.27.210",
"geoCountry": "FR"
},
"deviceType": "DESKTOP"
},
"payloads": [
{
"statusCode": 200,
"simple": {
"valueMs": 50
}
},
{
"statusCode": 200,
"simple": {
"valueMs": 65
}
},
{
"statusCode": 404,
"detailed": {
"timeToFirstByteMs": 60
}
},
{
"statusCode": 200,
"attribution": {
"jobid": "jobid2",
"location": {
"ipAddress": "72.89.27.210",
"geoCountry": "US",
"geoSubdiv": "NY",
"asn": 701
},
"deviceType": "DESKTOP"
},
"detailed": {
"timeToFirstByteMs": 60,
"timeToLastByteMs": 100
}
},
{
"statusCode": 200,
"attribution": {
"jobid": "jobid3",
"location": {
"ipAddress": "24.188.193.7"
},
"deviceType": "DESKTOP"
},
"detailed": {
"timeToLastByteMs": 100
}
}
]
}
]
}
]
}' 'b.ns1p.net/v1/beacon/bulk'
Next steps
After you create a RUM application and the corresponding jobs, you can connect the job directly to a DNS answer like a monitor or third-party data feed. For instructions, refer to Connecting a monitor or data source to a DNS answer.