From 12c8cd95663c9d8926721063f7f00569c2badabc Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 3 Jul 2025 19:32:56 -0500 Subject: [PATCH] Datadog monitoring --- Meshtastic.xcodeproj/project.pbxproj | 41 +++++++++++++++++++ .../xcshareddata/swiftpm/Package.resolved | 29 ++++++++++++- Meshtastic/MeshtasticApp.swift | 25 +++++++++++ MeshtasticProtobufs/Package.resolved | 15 +++++++ 4 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 MeshtasticProtobufs/Package.resolved diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index d11194bd..4b50b09f 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 102B5EAB2E172F41003D191E /* DatadogCore in Frameworks */ = {isa = PBXBuildFile; productRef = 102B5EAA2E172F41003D191E /* DatadogCore */; }; + 102B5EAD2E172F41003D191E /* DatadogCrashReporting in Frameworks */ = {isa = PBXBuildFile; productRef = 102B5EAC2E172F41003D191E /* DatadogCrashReporting */; }; + 102B5EAF2E172F41003D191E /* DatadogLogs in Frameworks */ = {isa = PBXBuildFile; productRef = 102B5EAE2E172F41003D191E /* DatadogLogs */; }; + 102B5EB12E172F41003D191E /* DatadogRUM in Frameworks */ = {isa = PBXBuildFile; productRef = 102B5EB02E172F41003D191E /* DatadogRUM */; }; 108FFECB2DD3F43C00BFAA81 /* ShareContactQRDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 108FFECA2DD3F43C00BFAA81 /* ShareContactQRDialog.swift */; }; 108FFECD2DD4005600BFAA81 /* NodeInfoEntityToNodeInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 108FFECC2DD4005600BFAA81 /* NodeInfoEntityToNodeInfo.swift */; }; 231B3F212D087A4C0069A07D /* MetricTableColumn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 231B3F202D087A4C0069A07D /* MetricTableColumn.swift */; }; @@ -592,7 +596,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 102B5EAD2E172F41003D191E /* DatadogCrashReporting in Frameworks */, 25A978BA2C13F8ED0003AAE7 /* MeshtasticProtobufs in Frameworks */, + 102B5EAB2E172F41003D191E /* DatadogCore in Frameworks */, + 102B5EAF2E172F41003D191E /* DatadogLogs in Frameworks */, + 102B5EB12E172F41003D191E /* DatadogRUM in Frameworks */, DD0D3D222A55CEB10066DB71 /* CocoaMQTT in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1236,6 +1244,10 @@ packageProductDependencies = ( DD0D3D212A55CEB10066DB71 /* CocoaMQTT */, 25A978B92C13F8ED0003AAE7 /* MeshtasticProtobufs */, + 102B5EAA2E172F41003D191E /* DatadogCore */, + 102B5EAC2E172F41003D191E /* DatadogCrashReporting */, + 102B5EAE2E172F41003D191E /* DatadogLogs */, + 102B5EB02E172F41003D191E /* DatadogRUM */, ); productName = MeshtasticClient; productReference = DDC2E15426CE248E0042C5E4 /* Meshtastic.app */; @@ -1305,6 +1317,7 @@ DD0D3D202A55CEB10066DB71 /* XCRemoteSwiftPackageReference "CocoaMQTT" */, 25A978B82C13F8ED0003AAE7 /* XCLocalSwiftPackageReference "MeshtasticProtobufs" */, 259792242C2F10B600AD1659 /* XCRemoteSwiftPackageReference "swift-protobuf" */, + 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */, ); productRefGroup = DDC2E15526CE248E0042C5E4 /* Products */; projectDirPath = ""; @@ -1985,6 +1998,14 @@ /* End XCLocalSwiftPackageReference section */ /* Begin XCRemoteSwiftPackageReference section */ + 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/DataDog/dd-sdk-ios.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.29.0; + }; + }; 259792242C2F10B600AD1659 /* XCRemoteSwiftPackageReference "swift-protobuf" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/apple/swift-protobuf.git"; @@ -2004,6 +2025,26 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 102B5EAA2E172F41003D191E /* DatadogCore */ = { + isa = XCSwiftPackageProductDependency; + package = 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */; + productName = DatadogCore; + }; + 102B5EAC2E172F41003D191E /* DatadogCrashReporting */ = { + isa = XCSwiftPackageProductDependency; + package = 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */; + productName = DatadogCrashReporting; + }; + 102B5EAE2E172F41003D191E /* DatadogLogs */ = { + isa = XCSwiftPackageProductDependency; + package = 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */; + productName = DatadogLogs; + }; + 102B5EB02E172F41003D191E /* DatadogRUM */ = { + isa = XCSwiftPackageProductDependency; + package = 102B5EA92E172F41003D191E /* XCRemoteSwiftPackageReference "dd-sdk-ios" */; + productName = DatadogRUM; + }; 25A978B92C13F8ED0003AAE7 /* MeshtasticProtobufs */ = { isa = XCSwiftPackageProductDependency; productName = MeshtasticProtobufs; diff --git a/Meshtastic.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Meshtastic.xcworkspace/xcshareddata/swiftpm/Package.resolved index 8cb1b6ba..68276229 100644 --- a/Meshtastic.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Meshtastic.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "a3033aea781828906c453276e3723177901ce64df5757de7ada28c854c9662eb", + "originHash" : "0dabe052e9e56f8514254d01df9aa7245e16b28a649d59bac6781d4ac9a79efa", "pins" : [ { "identity" : "cocoamqtt", @@ -10,6 +10,15 @@ "version" : "2.1.8" } }, + { + "identity" : "dd-sdk-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/DataDog/dd-sdk-ios.git", + "state" : { + "revision" : "d0a42d8067665cb6ee86af51251ccc071f62bd54", + "version" : "2.29.0" + } + }, { "identity" : "mqttcocoaasyncsocket", "kind" : "remoteSourceControl", @@ -19,6 +28,24 @@ "version" : "1.0.8" } }, + { + "identity" : "opentelemetry-swift-packages", + "kind" : "remoteSourceControl", + "location" : "https://github.com/DataDog/opentelemetry-swift-packages.git", + "state" : { + "revision" : "4a7295600d4ebb9525a23c11586c5fdb74ae8b7e", + "version" : "1.13.1" + } + }, + { + "identity" : "plcrashreporter", + "kind" : "remoteSourceControl", + "location" : "https://github.com/microsoft/plcrashreporter.git", + "state" : { + "revision" : "8c61e5e38e9f737dd68512ed1ea5ab081244ad65", + "version" : "1.12.0" + } + }, { "identity" : "starscream", "kind" : "remoteSourceControl", diff --git a/Meshtastic/MeshtasticApp.swift b/Meshtastic/MeshtasticApp.swift index b87aeee3..22ea61f3 100644 --- a/Meshtastic/MeshtasticApp.swift +++ b/Meshtastic/MeshtasticApp.swift @@ -5,6 +5,9 @@ import CoreData import OSLog import TipKit import MeshtasticProtobufs +import DatadogCore +import DatadogCrashReporting +import DatadogRUM @main struct MeshtasticAppleApp: App { @@ -26,6 +29,28 @@ struct MeshtasticAppleApp: App { let appState = AppState( router: Router() ) + // Initialize Datadog + // RUM Client Tokens are NOT secret + let appID = "79fe92a9-74c9-4c8f-ba63-6308384ecfa9" + let clientToken = "pub4427bea20dbdb08a6af68034de22cd3b" + let environment = "testflight" + + Datadog.initialize( + with: Datadog.Configuration( + clientToken: clientToken, + env: environment, + site: .us5 + ), + trackingConsent: .granted + ) + + RUM.enable( + with: RUM.Configuration( + applicationID: appID, + uiKitViewsPredicate: DefaultUIKitRUMViewsPredicate(), + uiKitActionsPredicate: DefaultUIKitRUMActionsPredicate() + ) + ) self._appState = ObservedObject(wrappedValue: appState) // Initialize the BLEManager singleton with the necessary dependencies BLEManager.setup(appState: appState, context: persistenceController.container.viewContext) diff --git a/MeshtasticProtobufs/Package.resolved b/MeshtasticProtobufs/Package.resolved new file mode 100644 index 00000000..a679a95e --- /dev/null +++ b/MeshtasticProtobufs/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "a2385deee281bd55bce80722a1f2b020f7b745c02005befa8ccbf58a39ef4002", + "pins" : [ + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "d72aed98f8253ec1aa9ea1141e28150f408cf17f", + "version" : "1.29.0" + } + } + ], + "version" : 3 +}