SwiftMetrics instruments the Swift runtime for performance monitoring. The monitoring data is provided back to the user either programatically via an API or visually with the included embedded dashboard.
SwiftMetrics provides the following built-in data collection sources:
|Environment||Machine and runtime environment information|
|CPU||Process and system CPU|
|Memory||Process and system memory usage|
|HTTP||HTTP metric information|
If you created your Kitura application using the Kitura CLI or by building a starter project using the kitura app then you will already have Swift Metrics included in your project.
To add SwiftMetrics monitoring to your code
import SwiftMetrics import SwiftMetricsDash // Enable SwiftMetrics Monitoring let sm = try SwiftMetrics() // Pass SwiftMetrics to the dashboard for visualising let smd = try SwiftMetricsDash(swiftMetricsInstance : sm)
and amend Package.swift to include the SwiftMetrics dependency with the major and minor release version that is compatible with your Swift version.
dependencies: [ .package(url: "https://github.com/RuntimeTools/SwiftMetrics.git", from: "#.#.#") ]
By default, SwiftMetricsDash will start its own Kitura server and serve the page up under localhost:/swiftmetrics-dash
The port being used is logged to the console when your application starts
SwiftMetricsDash : Starting on port 8080
You can pass an existing Router object to SwiftMetricsDash from which to serve the page up on. SwiftMetricsDash will then use whatever server you are using in your existing application.
let sm = try SwiftMetrics() let router: Router // Activate the Swift Metrics dashboard. let _ = try SwiftMetricsDash(swiftMetricsInstance: sm, endpoint: router) // Add an HTTP server and connect it to the router Kitura.addHTTPServer(onPort: 8080, with: router)