Files
AutopilotMonitor/docs/getting-started.md
T
Oliver Kieselbach 5690620058 Initial commit
2026-02-05 06:14:41 +01:00

5.7 KiB

Getting Started with Autopilot Monitor

This guide will help you set up and run Autopilot Monitor locally for development and testing.

Prerequisites

Required

  • Windows 10/11 (for agent development and testing)
  • .NET Framework 4.8 SDK
  • .NET 8 SDK
  • Visual Studio 2022 or VS Code with C# extensions
  • Node.js 18+ and npm
  • Azure Storage Emulator or Azurite (for local storage)
  • Azure Functions Core Tools v4

Optional

  • Git
  • PowerShell 5.1 or later
  • Microsoft Intune tenant (for production deployment)

Quick Start (5 Minutes)

1. Clone and Build

# Clone the repository
git clone <your-repo-url>
cd Autopilot-Monitor

# Restore and build all .NET projects
dotnet restore
dotnet build

2. Start Local Storage

Install and start Azurite (Azure Storage Emulator):

npm install -g azurite
azurite --silent --location c:\azurite --debug c:\azurite\debug.log

Or use the Azure Storage Emulator if you have it installed.

3. Start Azure Functions Backend

cd src/Backend/AutopilotMonitor.Functions
func start

The API will be available at http://localhost:7071

4. Start Web UI

cd src/Web/autopilot-monitor-web

# Install dependencies (first time only)
npm install

# Copy environment template
cp .env.local.template .env.local

# Start development server
npm run dev

The web UI will be available at http://localhost:3000

5. Test the Agent

Open a new PowerShell window as Administrator:

cd src/Agent/AutopilotMonitor.Agent/bin/Debug/net48
.\AutopilotMonitor.Agent.exe --console

You should see the agent start and begin sending telemetry to the backend.

Detailed Setup

Backend Configuration

The Azure Functions use local.settings.json for configuration. This file is created from the template:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "AzureTableStorageConnectionString": "UseDevelopmentStorage=true",
    "AzureBlobStorageConnectionString": "UseDevelopmentStorage=true"
  }
}

For production, replace UseDevelopmentStorage=true with your Azure Storage connection strings.

Agent Configuration

The agent reads configuration from the Windows Registry (set by the bootstrap script) or falls back to defaults. For testing, you can modify Program.cs:

return new AgentConfiguration
{
    ApiBaseUrl = "http://localhost:7071",
    SessionId = Guid.NewGuid().ToString(),
    TenantId = "test-tenant",
    // ... other settings
};

Web UI Configuration

Create .env.local in the web project:

NEXT_PUBLIC_API_BASE_URL=http://localhost:7071

This tells the web UI where to find the backend API.

Testing End-to-End

1. Verify Backend is Running

Open a browser and navigate to:

http://localhost:7071/api/sessions/register

You should see a response (even if it's an error, it confirms the function is running).

2. Run the Agent

Start the agent in console mode (as Administrator):

cd src/Agent/AutopilotMonitor.Agent/bin/Debug/net48
.\AutopilotMonitor.Agent.exe --console

3. Check Logs

Agent logs are written to:

C:\ProgramData\AutopilotMonitor\Logs\agent_YYYYMMDD.log

Backend logs appear in the Functions console output.

4. View in Web UI

Open http://localhost:3000 and you should see the dashboard (currently shows placeholder data in Phase 1).

Common Issues

Azure Functions won't start

Error: Missing value for AzureWebJobsStorage

Solution: Ensure Azurite or Azure Storage Emulator is running, or update local.settings.json with valid connection strings.

Agent can't connect to API

Error: Error uploading events: The remote name could not be resolved

Solution:

  1. Verify Azure Functions is running at http://localhost:7071
  2. Check Windows Firewall isn't blocking the connection
  3. Update agent configuration with correct API URL

Web UI shows blank page

Solution:

  1. Check browser console for errors
  2. Verify npm run dev completed without errors
  3. Check .env.local exists and has correct API URL

Permission Errors

Many agent operations require Administrator privileges:

  • Reading certain event logs
  • Writing to Program Files
  • Installing as a Windows Service

Always run the agent as Administrator during development.

Development Workflow

Typical Development Session

  1. Start infrastructure (Azurite, Functions)

    # Terminal 1: Azurite
    azurite --silent --location c:\azurite
    
    # Terminal 2: Functions
    cd src/Backend/AutopilotMonitor.Functions
    func start
    
    # Terminal 3: Web UI
    cd src/Web/autopilot-monitor-web
    npm run dev
    
  2. Make changes to agent, backend, or web code

  3. Test changes

    • Agent: Rebuild and run in console mode
    • Backend: Hot reload should pick up changes
    • Web: Hot reload should pick up changes
  4. Debug

    • Agent: Attach Visual Studio debugger or use console output
    • Backend: Use Functions console logs or attach debugger
    • Web: Use browser DevTools

Building for Release

# Build all projects in Release mode
dotnet build -c Release

# Build web UI for production
cd src/Web/autopilot-monitor-web
npm run build

Next Steps

Getting Help

  • Check the README for general information
  • Review logs in C:\ProgramData\AutopilotMonitor\Logs\
  • Check Azure Functions output for backend errors
  • Use browser DevTools for web UI issues