Note: Still a work in progress. This package might still have breaking changes
Provides application insights functionality in cloudflare workers
npm i --save applicationinsights-cloudflareworkers
If you are using webpack you might need change config to load package properly.
Use webpack-modules
plugin
npm i --save-dev webpack-modules
// Add this to your webpack config file
const WebpackModules = require('webpack-modules');
module.exports = {
// ...
plugins: [
new WebpackModules()
]
}
Change mainFields
setting (may cause issues with other dependencies)
module.exports = {
//...
resolve: {
mainFields: ['module', 'main']
}
};
Sample code:
import { ApplicationInsights, RequestData, ApplicationInsightsConnection } from 'applicationinsights-cloudflareworkers'
const requestTest = new RequestData({
name: 'Test',
success: true,
url: 'https://example.com',
id: '15fadc35-65b2-41da-b86f-998dcb7489e3',
properties: {
anyName: 'anyValue',
},
duration: '00.00:00:10.000000',
responseCode: '200',
})
const ai = new ApplicationInsights({
context: {
'ai.operation.id': 'testid',
},
connection: ApplicationInsightsConnection.fromConnectionString('InstrumentationKey=yourinstrumentationkey;'),
})
// Pass in AvailabilityData, EventData, ExceptionData, MessageData, MetricData, PageViewPerfData, RemoteDependencyData or RequestData
ai.trackData(requestTest, 'RequestData') // type (second) argument might be required if you minify your code(unminified it can be inferred)
const res = await ai.flush() // Flush is not automatic. You need to call .flush()
// After flush it takes ~5 mins before you will see in application insights
console.log(`Status: ${res.status}`) // See response for errors if code is not 200
For more examples see the test folder
In application insights you will see:
I am open to pull requests. Please summarize the changes you make. If you have large changes please open an issue, so we can discuss before you start working on the changes.