- Notifications
You must be signed in to change notification settings - Fork33
Java client for the Datadog API
License
DataDog/datadog-api-client-java
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This repository contains a Java API client for theDatadog API.
Building the API client library requires:
- Java 1.8+
- Maven/Gradle
To install the API client library to your local Maven repository, simply execute:
mvn clean install
To deploy it to a remote Maven repository instead, configure the settings of the repository and execute:
mvn clean deploy
Refer to theOSSRH Guide for more information.
Add this dependency to your project's POM:
<dependency> <groupId>com.datadoghq</groupId> <artifactId>datadog-api-client</artifactId> <version>2.10.0</version> <scope>compile</scope></dependency>
See theReleases page for the latest available version.
Add this dependency to your project's build file:
compile"com.datadoghq:datadog-api-client:2.0.0"See theReleases page for the latest available version.
At first generate the JAR by executing:
mvn clean package
Then manually install the following JARs:
target/datadog-api-client-<VERSION>.jartarget/lib/*.jar
Please follow theinstallation instruction and execute the following Java code:
importcom.datadog.api.client.ApiClient;importcom.datadog.api.client.ApiException;importcom.datadog.api.client.v1.api.MonitorsApi;importcom.datadog.api.client.v1.model.Monitor;importcom.datadog.api.client.v1.model.MonitorType;importjava.util.Arrays;publicclassMonitorCreatedExample {publicstaticvoidmain(String[]args) {ApiClientdefaultClient =ApiClient.getDefaultApiClient();MonitorsApiapiInstance =newMonitorsApi(defaultClient);Monitorbody =newMonitor() .name("my-monitor") .type(MonitorType.LOG_ALERT) .query("""logs("service:foo AND type:error").index("main").rollup("count").by("source").last("5m") > 2""") .message("some message Notify: @hipchat-channel") .tags(Arrays.asList("test:example","env:ci")) .priority(3L);try {Monitorresult =apiInstance.createMonitor(body);System.out.println(result); }catch (ApiExceptione) {System.err.println("Exception when calling MonitorsApi#createMonitor");System.err.println("Status code: " +e.getCode());System.err.println("Reason: " +e.getResponseBody());System.err.println("Response headers: " +e.getResponseHeaders());e.printStackTrace(); } }}
All API methods have asynchronous versions returningCompletableFuture when adding theAsync suffix to their names:
importcom.datadog.api.client.ApiClient;importcom.datadog.api.client.v1.api.MonitorsApi;publicclassListMonitorsAsyncExample {publicstaticvoidmain(String[]args) {ApiClientdefaultClient =ApiClient.getDefaultApiClient();MonitorsApiapiInstance =newMonitorsApi(defaultClient);apiInstance.listMonitorsAsync().thenApply(monitors -> {System.out.println(monitors);returnnull; }).exceptionally(error -> {System.out.println(error);returnnull; }); }}
This client includes access to Datadog API endpoints while they are in an unstable state and may undergo breaking changes. An extra configuration step is required to enable these endpoints:
defaultClient.setUnstableOperationEnabled("<Version>.<OperationName>",true);
where<OperationName> is the name of the method used to interact with that endpoint. For example:listSLOCorrection, orgetSLOHistory
When talking to a different server, like theeu instance, change theserverVariables on your client:
HashMap<String,String>serverVariables =newHashMap<String,String>();serverVariables.put("site","datadoghq.eu");defaultApiClient.setServerVariables(serverVariables);
If you want to disable GZIP compressed responses, set thecompress flagon your client:
defaultClient.setCompress(false)
If you want to enable requests logging, set thedebugging flag on your client:
defaultClient.setDebugging(true)
To enable the client to retry when rate limited (status 429) or status 500 and above:
defaultClient.enableRetry(true)
The interval between 2 retry attempts will be the value of thex-ratelimit-reset response header when available. If not, it will be :Math.pow (multiplier_for_retry_backoff, current_retry_count)*base_for_retry_backoff.
You can provide customconnectorProvider implementation toclientConfig to use proxy. See example below usingApacheConnectorProvider:
importorg.glassfish.jersey.apache.connector.ApacheConnectorProvider;importorg.glassfish.jersey.client.ClientConfig;importorg.glassfish.jersey.client.ClientProperties;importcom.datadog.api.client.ApiClient;importcom.datadog.api.client.ApiException;importcom.datadog.api.client.v1.api.DashboardsApi;importcom.datadog.api.client.v1.model.DashboardSummary;publicclassProxyExample {publicstaticvoidmain(String[]args ) {ApiClientdefaultClient =ApiClient.getDefaultApiClient();ClientConfigclientConfig =defaultClient.getClientConfig().connectorProvider(newApacheConnectorProvider());clientConfig.property(ClientProperties.PROXY_URI,"http://127.0.0.1:80");defaultClient.setClientConfig(clientConfig);DashboardsApiapiInstance =newDashboardsApi(defaultClient);try {DashboardSummaryresult =apiInstance.listDashboards();System.out.println(result); }catch (ApiExceptione) {System.err.println("Exception when calling DashboardsApi#listDashboards");System.err.println("Status code: " +e.getCode());System.err.println("Reason: " +e.getResponseBody());System.err.println("Response headers: " +e.getResponseHeaders());e.printStackTrace(); } }}
Outside of the regular JAR file we also release 2 artifacts that can be useful for development, namely:
jar-with-dependencies, which contains all the dependencies of the client in a single JARshaded-jar, which includes and renames the core dependencies of the client, allowing you to use different versions of thoselibraries in your project.
To use them in Maven, just add theclassifier keyword in the dependency definition. For example:
<dependency> <groupId>com.datadoghq</groupId> <artifactId>datadog-api-client</artifactId> <version>2.10.0</version> <classifier>shaded-jar</classifier> <scope>compile</scope></dependency>
Javadoc is available onjavadoc.io.
To programmatically defined authorization headers, calls theconfigureApiKeysmethod with a map containing the required secrets for the operations:
HashMap<String,String>secrets =newHashMap<>();secrets.put("apiKeyAuth","<YOUR API KEY>");secrets.put("appKeyAuth","<YOUR APPLICATION KEY>");generalApiClient.configureApiKeys(secrets);
It's recommended to create an instance ofApiClient per thread in a multithreaded environment to avoid any potential issues.
About
Java client for the Datadog API
Topics
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.