
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
@dynatrace/openkit-js
Advanced tools
:information_source: We changed the default branch name to main
. You can find the necessary steps to update your local clone on Scott Hanselman's Blog.
We encourage you to rename the default branch in your forks too.
The OpenKit provides an easy and lightweight way to get insights into applications with Dynatrace by instrumenting the source code of those applications.
It is best suited for applications running separated from their backend and communicating via HTTP, like rich-client-applications, embedded devices, terminals, and so on.
The big advantages of the OpenKit are that it's designed to
This repository contains the reference implementation in pure TypeScript. Other implementations are listed as follows:
Promises are required for OpenKit to work at all. If your environment does not support them, they can be polyfilled using a polyfill library.
If you use a platform without XMLHttpRequests and not node.js (http-module), you have to either polyfill the XMLHttpRequest, or provide your own CommunicationChannel implementation, which can use the protocol you want (e.g. MQTT).
OpenKit is available on npm and should be used via npm or yarn.
For browsers a mirroring service like jsDelivr can be used.
<script
type="text/javascript"
src="https://cdn.jsdelivr.net/npm/@dynatrace/openkit-js@1.0.2/dist/browser/openkit.js"
></script>
See contribution.md and development.md.
In this part the concepts used throughout OpenKit are explained. A short sample how to use OpenKit is also provided. For detailed code samples have a look into example.md and the code documentation.
An OpenKitBuilder
instance is responsible for getting and setting application relevant information, e.g.
the application's version and device specific information.
The OpenKit
is responsible for creating user sessions (see Session
).
Although it would be possible to have multiple OpenKit
instances connected to the same endpoint
within one process, there should be one unique instance.
A Session
represents kind of a user session, similar to a browser session in a web application.
However the application developer is free to choose how to treat a Session
.
The Session
is used to create Action
instances, report application crashes, identify users and
to trace web requests when there is no Action
available.
When a Session
is no longer required, it's highly recommended to end it, using the Session.end()
method.
The Action
are named hierarchical nodes for timing and attaching further details.
An Action
is created from the Session
. Actions provide the possibility to attach key-value pairs,
named events and errors, and can be used for tracing web requests.
When the application developer wants to trace a web request, which is served by a service
instrumented by Dynatrace, a WebRequestTracer
should be used, which can be
requested from an Action
and Session
.
A named Event
is attached to an Action
and contains a name.
For an Action
key-value pairs can also be reported. The key is always a String
and the value may be a number
or a string
. All reported numbers are handled as floating point
values by Dynatrace.
Errors are a way to report an erroneous condition on an Action
.
Crashes are used to report (unhandled) exceptions on a Session
.
OpenKit enables you to tag sessions with unique user tags. The user tag is a String that allows to uniquely identify a single user.
This small example provides a rough overview how OpenKit can be used. Detailed explanation is available in example.md.
const applicationID = 'application-id';
const deviceID = 42;
const endpointURL = 'https://tenantid.beaconurl.com/mbeacon';
const openKit = new OpenKitBuilder(endpointURL, applicationID, deviceID)
.withApplicationVersion('1.0.0.0')
.withOperatingSystem('Windows 10')
.withManufacturer('MyCompany')
.withModelId('MyModelId')
.build();
const timeoutInMilliseconds = 10 * 1000;
openKit.waitForInit((success) => {
if (success) {
const clientIP = '8.8.8.8';
const session = openKit.createSession(clientIP);
session.identifyUser('jane.doe@example.com');
const actionName = 'rootActionName';
const action = session.enterAction(actionName);
action.leaveAction();
session.end();
openKit.shutdown();
}
}, timeoutInMilliseconds);
FAQs
OpenKit-JavaScript reference implementation
The npm package @dynatrace/openkit-js receives a total of 3,951 weekly downloads. As such, @dynatrace/openkit-js popularity was classified as popular.
We found that @dynatrace/openkit-js demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.