ACCpromAdapter
Version: 1.0
Author: Christian Strube
License: MIT —
Die ACCPromAdapter App ist eine innovative macOS-Anwendung, die speziell dafür entwickelt wurde, die Metriken des Apple Content Cache zu überwachen und in einem Prometheus-kompatiblen Format bereitzustellen. Dank ihrer flexiblen Architektur können Administratoren und DevOps-Teams die Caching-Infrastruktur bequem visualisieren – etwa in Grafana. Zusätzlich bieten wir mit dem ACCPromAdapterDaemon eine Lösung für headless Installationen an, bei denen der Dienst automatisch beim Systemstart aktiv ist und Metriken auch ohne Benutzeranmeldung sammelt.
Was ist ACCPromAdapter?
ACCPromAdapter verbindet sich mit dem Apple Content Cache und liest die Metriken aus der zugehörigen Metrics.db aus. Die App entscheidet intelligent, ob sie die Metriken von einem extern laufenden Daemon (HTTP-Server) oder über den direkten Zugriff auf die lokale Datenbank bezieht. Diese duale Strategie stellt sicher, dass immer aktuelle Daten zur Verfügung stehen – unabhängig davon, ob der externe Dienst verfügbar ist oder nicht.
Hauptfunktionen
- Automatische Umgebungserkennung: Beim Start prüft die App, ob ein externer HTTP-Daemon aktiv ist, der die Metriken bereits bereitstellt. Falls ja, werden diese genutzt; andernfalls greift die App auf die lokale Metrics.db zu.
- Prometheus-kompatibler Output: Die Metriken werden in einem Format ausgegeben, das direkt von Prometheus abgefragt werden kann. So lässt sich die App nahtlos in Grafana-Dashboards integrieren.
- Benutzerfreundliche Menüleisten-Anzeige: Ein übersichtliches UI in der macOS-Menüleiste zeigt die wichtigsten Metriken an – ergänzt durch einen visuellen Statusindikator, der den aktiven Modus (extern oder lokal) anzeigt.
- Automatische Aktualisierung: Die Metriken werden in regelmäßigen 30-Sekunden-Zyklen aktualisiert, wobei ein Fortschrittsbalken den aktuellen Stand des Updates visuell darstellt.
- Headless Installation mit ACCPromAdapterDaemon: Für Umgebungen ohne Benutzeranmeldung, wie z. B. Server oder Headless Mac Minis, bietet der ACCPromAdapterDaemon eine vollständig automatisierte Lösung. Der Daemon startet beim Systemstart und liefert kontinuierlich Metriken, die von Prometheus abgefragt werden können.
Technische Architektur
Die App ist in Swift geschrieben und nutzt moderne Technologien wie Swift Concurrency (async/await), Combine und SwiftNIO für die Netzwerkkommunikation. Dabei wird ein modularer Ansatz verfolgt:
- AppInitializer: Verantwortlich für die zentrale Initialisierung der Anwendung und die Entscheidung, ob externe oder lokale Metriken verwendet werden.
- MetricsCache: Sammelt und aktualisiert die Metriken aus der lokalen Datenbank, falls kein externer Daemon verfügbar ist.
- MetricsFetcher: Holt die Metriken über HTTP, wenn der externe Daemon aktiv ist.
- PrometheusServer: Startet einen internen HTTP-Server, der Prometheus-kompatiblen Output liefert – als Fallback, wenn kein externer Dienst vorhanden ist.
- ACCPromAdapterDaemon: Ein separater Daemon, der speziell für headless Installationen konzipiert wurde. Er läuft systemweit, sammelt Metriken aus der Metrics.db und stellt sie über einen HTTP-Endpunkt bereit, ohne dass ein Benutzer eingeloggt sein muss.
Einsatzmöglichkeiten
ACCPromAdapter eignet sich ideal für:
- Administrator:innen und IT-Teams, die die Performance und Auslastung ihres Apple Content Cache überwachen möchten.
- DevOps-Teams, die Dashboards in Grafana erstellen wollen, um Metriken in Echtzeit zu visualisieren.
- Headless Umgebungen, in denen der ACCPromAdapterDaemon dafür sorgt, dass Metriken automatisch auch ohne Benutzeranmeldung gesammelt werden.
Installation & Erste Schritte
- ACCPromAdapter App: Laden Sie die App direkt bei Github herunter. Beim ersten Start werden Sie aufgefordert, die Metrics.db auszuwählen, um den Lesezugriff zu konfigurieren.
- ACCPromAdapterDaemon (Optional): Laden Sie das Installationspaket (ACCpromAdapterDaemon.pkg) herunter – verfügbar über GitHub oder als Direktdownload im Blog. Installieren Sie den Daemon, der beim Systemstart automatisch aktiviert wird.
- Monitoring: Starten Sie die App und beobachten Sie die Metriken in der Menüleiste. Falls der externe Daemon aktiv ist, werden die Metriken von diesem abgerufen.
- Grafana-Integration: Konfigurieren Sie Prometheus so, dass es die Metriken von
http://localhost:9200/metrics
abruft, und erstellen Sie ein passendes Dashboard in Grafana.
Fazit
ACCPromAdapter und der ACCPromAdapterDaemon bieten zusammen eine flexible und robuste Lösung zur Überwachung der Apple Content Cache Metriken. Mit der dualen Strategie – ob über einen externen HTTP-Daemon oder direkt aus der lokalen Datenbank – garantiert die Lösung stets aktuelle und zuverlässige Daten. Dieses innovative Tool hilft Ihnen, die Performance Ihrer Caching-Infrastruktur optimal zu überwachen und Probleme frühzeitig zu erkennen.
Bleiben Sie dran für weitere Updates und Verbesserungen der ACCPromAdapter App!
Für Fragen und Feedback stehe ich Ihnen jederzeit zur Verfügung – kontaktieren Sie mich über GitHub oder per E-Mail.
English Version:
Description
ACCPromAdapter is an innovative macOS menu bar application designed to monitor the Apple Content Cache metrics and provide them in a Prometheus-compatible format. The app reads the Metrics.db file from the system directory and serves the data via an integrated HTTP server, allowing administrators and DevOps teams to seamlessly visualize the caching infrastructure in tools such as Grafana.
In addition, we offer the ACCPromAdapterDaemon for headless installations. This daemon is ideal for server environments and headless Mac Minis where the service automatically starts at system boot and collects metrics even without a user login.
What is ACCPromAdapter?
ACCPromAdapter connects to the Apple Content Cache and reads the metrics from its associated Metrics.db file. The app intelligently determines whether to retrieve the metrics from an externally running daemon (HTTP server) or by directly accessing the local database. This dual approach ensures that current data is always available, regardless of whether the external service is operational.
Key Features
- Automatic Environment Detection: On startup, the app checks if an external HTTP daemon is active to provide metrics. If so, these metrics are used; otherwise, the app falls back to the local Metrics.db.
- Prometheus-Compatible Output: The metrics are output in a format that can be directly scraped by Prometheus, enabling seamless integration into Grafana dashboards.
- User-Friendly Menu Bar Interface: A clear UI in the macOS menu bar displays the key metrics, complemented by a visual status indicator showing the active mode (external or local).
- Automatic Updates: Metrics are refreshed every 30 seconds, with a progress bar visually indicating the current update cycle.
- Headless Installation with ACCPromAdapterDaemon: For environments without user interaction—such as servers or headless Mac Minis—the ACCPromAdapterDaemon provides a fully automated solution. The daemon starts at system boot and continuously serves metrics that Prometheus can scrape.
Technical Architecture
The app is written in Swift and leverages modern technologies such as Swift Concurrency (async/await
), Combine, and SwiftNIO for network communication. It employs a modular architecture:
- AppInitializer: Handles the central initialization of the application and determines whether to use external HTTP metrics or the local database.
- MetricsCache: Collects and updates metrics from the local database if no external daemon is available.
- MetricsFetcher: Retrieves metrics over HTTP when an external daemon is active.
- PrometheusServer: Launches an internal HTTP server that delivers Prometheus-compatible output as a fallback when no external service is present.
- ACCPromAdapterDaemon: A separate daemon designed specifically for headless installations. It runs system-wide, gathers metrics from Metrics.db, and exposes them via an HTTP endpoint without requiring a user login.
Use Cases
ACCPromAdapter is ideal for:
- Administrators and IT Teams who need to monitor the performance and load of their Apple Content Cache.
- DevOps Teams who wish to build Grafana dashboards for real-time metrics visualization.
- Headless Environments where the ACCPromAdapterDaemon ensures continuous metrics collection even without user interaction.
Installation & Getting Started
ACCPromAdapter App:
- Clone the Project:
1 2
git clone https://github.com/MadChristian/ACCpromAdapter.git cd ACCpromAdapter
- Open in Xcode:
1
open ACCpromAdapter.xcodeproj
- Set Up Code Signing:
- In Xcode, navigate to “Signing & Capabilities” and enter your Developer ID as required.
- Run the App:
- Press Cmd + R to build and launch the app.
- Initial Configuration:
On first launch, you will be prompted to select the Metrics.db file to configure read access.
ACCPromAdapterDaemon (Optional): - Download the installation package ACCPromAdapterDaemon.pkg from GitHub Releases or as a direct download on the blog. - Install the daemon, which will automatically start at system boot.
Monitoring:
- Launch the app and monitor the metrics in the menu bar. If the external daemon is active, metrics will be retrieved via HTTP.
Grafana Integration:
- Configure Prometheus to scrape metrics from:
http://localhost:9200/metrics
Then, create a suitable dashboard in Grafana.
Conclusion
ACCPromAdapter and the ACCPromAdapterDaemon together provide a flexible and robust solution for monitoring Apple Content Cache metrics. With a dual strategy—retrieving metrics via an external HTTP daemon or directly from the local database—this innovative tool ensures that up-to-date and reliable data is always available. This empowers you to optimally monitor your caching infrastructure and identify potential issues early on.
Stay tuned for further updates and improvements to the ACCPromAdapter App!
Deployment
The latest version of the ACCpromAdapter App and the daemon is available as a release. Visit the Releases Page to download the installation package.
For any questions or feedback, please contact me via GitHub or by email.