Skip to content

This is an (un)official swift library of the datadog API! Many more features to come, but right now it supports sending metrics and events!

License

Notifications You must be signed in to change notification settings

jaronoff97/SwiftDog

Repository files navigation

SwiftDog

CI Status Version License Platform

This is an (un)official swift library of the datadog API! Many more features to come, but right now it supports sending metrics and events!

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

In order to run this library you need to create a file called datadog_config.plist with two keys: api_key and app_key

Installation

Swift Package Manager

SwiftDog is availabe through Swift Package Manager. To install it, simply add https://github.com/jaronoff97/SwiftDog.git as a Package Dependency in Xcode by navigating to File -> Swift Packages -> Add Package Dependency....

Carthage

SwiftDog is available through CocoaPods. To install it, simply add the following line to your Podfile:

target 'MyApp' do
  pod 'SwiftDog', '~> 0.0.2'
end

Usage

The API currently supports sending metrics and events, with more features coming soon.

Currently, retrieving data is not implemented, nor is it in the plan for the future.

Initialization

There are a few ways to initialize the api.

BE SURE YOU HAVE ADDED datadog_config.plist, SEE REQUIREMENTS

Datadog.initialize_api()
Datadog.initialize_api(default_tags: true)
Datadog.initialize_api(agent: true)
Datadog.initialize_api(agent: true, default_tags: true)

Sending Metrics

Datadog.metric.send(metric: "ios.device.gauge", points: 1)
Datadog.metric.send(metric: "ios.test.event.sent", points: 1, type: .count(1))
Datadog.metric.send(metric: "ios.device.count", points: 1, host: nil, tags: ["device:test_device"], type: .count(1))

You can also create objects to send directly!

let gauge_metric = MetricData(host: nil, tags: ["test:1"], metric_name:"test.metric1", type: MetricData.MetricType.gauge, points: [DataPoint(timestamp: TimeInterval(1525377826.2537289), value: 1)])
let rate_metric = MetricData(host: "device:fun_ios", tags: ["test:2"], metric_name:"test.metric2", type: MetricData.MetricType.rate(10), points: [DataPoint(timestamp: TimeInterval(1525377828.2537289), value: 2)])
let count_metric = MetricData(host: "device:another_device", tags: ["test:3"], metric_name:"test.metric3", type: MetricData.MetricType.count(100), points: [DataPoint(timestamp: TimeInterval(1525377820.2537289), value: 3)])
Datadog.metric.send(series: [gauge_metric, rate_metric, count_metric])

Sending Events

Datadog.event.send(title: "This is a test event", text: "We can now send events from an iOS device!")
Datadog.event.send(title: "This is a test event", text: "We can now send events from an iOS device!", tags: ["method:hello"])
Datadog.event.send(title: "This is a test event", text: "We can now send events from an iOS device!", tags: ["method:hello"], date_happened: Data.currentDate())
Datadog.event.send(title: "This is a test event", text: "We can now send events from an iOS device!", tags: ["method:hello"], date_happened: Data.currentDate(), priority: .low)
Datadog.event.send(title: "This is a test event", text: "We can now send events from an iOS device!", tags: ["method:hello"], date_happened: Data.currentDate(), priority: .normal, alert_type: .error)
Datadog.event.send(title: "This is a test event", text: "We can now send events from an iOS device!", tags: ["method:hello"], date_happened: Data.currentDate(), priority: .normal, alert_type: .error, aggregation_key: "host")
Datadog.event.send(title: "This is a test event", text: "We can now send events from an iOS device!", tags: ["method:hello"], date_happened: Data.currentDate(), priority: .normal, alert_type: .error, aggregation_key: "host", source_type_name: "mobile")

Like metrics, you can create an event and send it too.

let e: EventData = EventData(host: "ios", tags:[], title: "test title", text: "test text", date_happened: 1525412871, priority: .normal, alert_type: .info, aggregation_key: nil, source_type_name: nil)
Datadog.event.send(series: [e])

Author

Jacob Aronoff, jacobaronoff45@gmail.com

License

SwiftDog is available under the APACHE license. See the LICENSE file for more info.

About

This is an (un)official swift library of the datadog API! Many more features to come, but right now it supports sending metrics and events!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published