Skip to content

Sync multiple ActivityWatch instances to Prometheus, centralized and visualized with Grafana.

License

Notifications You must be signed in to change notification settings

grayhatdevelopers/aw-sync-suite

 
 

Repository files navigation

Aw-Sync-Suite

Open-Source Solution for Securely Syncing and Visualizing Multiple ActivityWatch Instances.

tests build docker build Latest release

If you’ve ever wished for a simple, centralized solution to sync and visualize data from multiple instances of ActivityWatch, you’re in the right place.
📖 For detailed documentation, visit our GitHub Wiki.

📑 Table of Contents
  1. About
  2. Features
  3. Installation & Usage
  4. Components
  5. Architecture
  6. Requirements
  7. Contributing
  8. License

🔍 About

Aw-Sync-Suite provides an easy-to-deploy solution on syncing data from multiple ActivityWatch instances to a centralized Prometheus database with easy visualization in Grafana.

The project operates independently of ActivityWatch and supports all ActivityWatch versions with a REST API.

👁️ Preview

TOP BOTTOM

You can check also the screenshots for more insights.

🌟 Features

  • 🌐 Centralized Monitoring: Aggregate data from multiple devices effortlessly.
  • 🛡️ Data Filtering: Protect sensitive information by filtering or sanitizing it at the source.
  • 📍 Checkpointing Mechanism: Smart synchronization with automatic tracking of synced data.
  • 🔌 Plugin Mechanism: Use the pre-built plugins or create your own for custom data processing.
  • 📈 Pre-Built Dashboards: Use intuitive Grafana dashboards for instant insights.
  • ⚙️ Effortless Deployment: Simple setup for both agent and central components.

🚀 Installation & Usage

Downloads are available on the releases page.

For instructions on how to get started, please see the guide in the documentation.

🧩 Components

Runs on each device, retrieves and filters ActivityWatch data, and sends it securely to Prometheus via remote-write.

  • Purpose: Syncs data from ActivityWatch to Prometheus.
  • Deployment: Run on each computer you wish to track user activity from.
  • Configuration: Configurable via the aw-sync-settings.yaml file and its plugins.
Platform Support Runs as a Service (-service) General Workability
Windows
Linux
macOS

Note

  • The aw-sync-agent is fully operational on macOS, but the -service feature (which allows the agent to run as a background service) is not yet implemented for macOS.
  • On macOS, you can still manually start and run the agent to sync ActivityWatch data without issues.

The aw-sync-suite supports a range of plugins that allow for custom data processing before pushing the data to Prometheus. You can utilize these plugins to enhance your data synchronization capabilities.

  • Purpose: Plugins enable pre-processing of ActivityWatch data, allowing for filtering, transformation, and custom handling based on specific requirements(read more on how they work here).
  • Integration: Easily configurable within the aw-sync-agent through the aw-sync-settings.yaml file and their configuration files.
  • Repository: For a list of available plugins and their usage, visit the aw-sync-suite-plugins repository.

How to Use Plugins

  1. Add the Plugin: Ensure the desired plugin is available in the aw-sync-suite-plugins repository and modify the aw-sync-settings.yaml file to include the plugin.
  2. Configure the Plugin: If the plugin is configurable add the plugin configuration in the config folder to configure the plugin settings.
  3. Run the Agent: Start the aw-sync-agent, and it will automatically utilize the configured plugins for data processing.

A centralized Prometheus and Grafana setup for aggregating and visualizing data.

  • Purpose: Centralized cloud setup that includes Prometheus and Grafana for monitoring and visualization.
  • Deployment: Set up once for centralized control and management.
  • Included Services: Prometheus, Grafana, and necessary dashboards.

📊 Architecture

Sync-Suite contains two available setups: one without Bearer Token Authentication and another with Bearer Token Authentication.

The latter provides an additional layer of security by securing the Prometheus endpoints with a Bearer token if it is exposed to the internet. This setup uses a Nginx reverse proxy to secure the Prometheus endpoints.

Without Bearer Token Authentication 🔓 With Bearer Token Authentication 🔐
aw-sync-diagram.png aw-sync-diagram-nginx.png

🛠️ Requirements

  • Docker and Docker Compose for easy setup of aw-sync-center.
  • A running instance of ActivityWatch on the computers you want to monitor.

👥 Contributing

Contributions are welcomed! If you have ideas, improvements, or bug fixes, feel free to open an issue or submit a pull request.

📝 License

This project is licensed under the MIT license.

See LICENSE for more information.

About

Sync multiple ActivityWatch instances to Prometheus, centralized and visualized with Grafana.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 93.3%
  • Makefile 4.6%
  • Python 1.3%
  • Dockerfile 0.8%