Команда разработчиков языка программирования Swift представила Swift System Metrics 1.0 — инструмент для сбора системных метрик в серверных Swift-приложениях. Утилита доступна для macOS и Linux.

Swift System Metrics собирает базовые метрики процесса, включая нагрузку на CPU, потребление памяти, количество открытых файловых дескрипторов, установленный лимит файловых дескрипторов и время работы процесса. Авторы проекта отмечают, что этого набора метрик хватает для анализа производительности сервисов и потребления ресурсов.
Инструмент встраивается в экосистему Swift и передаёт собранные данные в Swift Metrics — общий API для работы с метриками. Благодаря этому разработчики могут экспортировать данные в сторонние системы визуализации и мониторинга, например, в Grafana, Prometheus и OpenTelemetry.
Для работы со Swift System Metrics надо сперва добавить зависимость в Package.swift и target:
.package(url: "https://github.com/apple/swift-system-metrics", from: "1.0.0");.product(name: "SystemMetrics", package: "swift-system-metrics").
После этого инструмент можно экспортировать и использовать в коде проекта:
import SystemMetrics import ServiceLifecycle import Logging import OTel @main struct Application { static func main() async throws { // Create a logger, or use one of the existing loggers let logger = Logger(label: "Application") // Setup MetricsSystem, for example using swift-otel var otelConfig = OTel.Configuration.default otelConfig.serviceName = "Application" let otelService = try OTel.bootstrap(configuration: otelConfig) // Setup your service let service = FooService() // Create the monitor let systemMetricsMonitor = SystemMetricsMonitor(logger: logger) // Create the service let serviceGroup = ServiceGroup( services: [otelService, service, systemMetricsMonitor], gracefulShutdownSignals: [.sigint], cancellationSignals: [.sigterm], logger: logger ) try await serviceGroup.run() } }
Код Swift System Metrics опубликован на GitHub, а документация — на портале для разработчиков.
