Shopware 615 min Lesezeit26.11.2025

Elastic APM für Shopware: Performance-Monitoring richtig gemacht

So überwachen Sie Ihren Shopware 6 Shop mit Elastic APM (Application Performance Monitoring), finden Performance-Bottlenecks und verkürzen Ladezeiten messbar - mit Setup-Anleitungen und Praxisbeispielen aus laufenden Projekten.

Felix Astner
Felix AstnerSoftware-Entwickler

Ihr Shopware-Shop ist live, die Verkäufe laufen, doch plötzlich häufen sich Beschwerden: „Der Checkout ist so langsam!", „Die Produktsuche hängt sich auf!". Ohne Monitoring fehlen Ihnen die Antworten: Welche Seiten sind betroffen? Liegt es am PHP-Code, der Datenbank oder an externen APIs? Diese Fragen beantwortet Elastic APM (Application Performance Monitoring). Das Tool ist Teil des Elastic Stack (früher ELK-Stack) und misst Ihre Shopware-Anwendung durchgehend: Backend-Transaktionen ebenso wie das Rendering im Browser. Bei CODING 9 gehört dieses Monitoring standardmäßig zu Shopware-Projekten. Dieser Guide zeigt Installation, Konfiguration und Auswertung, damit Sie Performance-Probleme sehen, bevor Kunden sich melden.

Was ist Elastic APM und warum für Shopware?

Elastic APM ist ein Open-Source-Tool für Application Performance Monitoring und Distributed Tracing. Als Performance-Monitoring-System misst es Ihre Anwendungen im laufenden Betrieb in Echtzeit und erfasst:

  • Backend-Transaktionen: eingehende HTTP-Requests, Database Queries, API-Calls

  • Frontend-Performance (RUM): Page Load, Core Web Vitals, JavaScript-Fehler

  • Fehler & Exceptions: Stack Traces, Error Rates, Impact-Analyse

  • Service Maps: Visualisierung der Abhängigkeiten zwischen Shopware, MySQL, Redis und Payment-Gateway

Die Messung übernehmen Agents. Sie hängen sich in die Laufzeit der Anwendung ein und instrumentieren eingehende Requests automatisch: Jeder HTTP-Request wird zu einer Transaktion, jede Database Query darunter zu einem Span. Was ein Agent von sich aus erkennt, ist agent-spezifisch. Der PHP-Agent kennt Symfony, Doctrine und Guzzle, der JavaScript-Agent kennt Navigation Timing und Fetch-Aufrufe im Browser. Eigener Code kommt über manuelle Spans dazu, dazu später mehr.

Warum sich das Tool speziell für Shopware 6 eignet

  • Native PHP-Integration: Elastic bietet einen offiziellen PHP-Agent, der Symfony/Shopware automatisch instrumentiert

  • Open Source & Self-Hosted: Volle Datenkontrolle (wichtig für DSGVO)

  • RUM für Storefront: Misst echte User-Erfahrung (nicht nur synthetische Tests)

  • Kosteneffizient: Free Tier für kleine Shops, ~€50-200/Monat für mittelgroße Shops (vs. €500+ bei New Relic/Datadog)

Setup Teil 1: Elastic APM Server installieren

Sie haben zwei Optionen: Self-Hosted oder Elastic Cloud.

Option 1: Self-Hosted (Docker Compose)

Ideal für volle Kontrolle und DSGVO-Compliance:

# docker-compose.yml
version: '3.8'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
    ports:
      - "9200:9200"
    volumes:
      - elasticsearch-data:/usr/share/elasticsearch/data

  apm-server:
    image: docker.elastic.co/apm/apm-server:8.11.0
    ports:
      - "8200:8200"
    environment:
      - output.elasticsearch.hosts=["elasticsearch:9200"]
    depends_on:
      - elasticsearch

  kibana:
    image: docker.elastic.co/kibana/kibana:8.11.0
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    depends_on:
      - elasticsearch

volumes:
  elasticsearch-data:
docker compose up -d
# Kibana erreichbar unter: http://localhost:5601

Option 2: Elastic Cloud (Managed)

  1. Account erstellen auf cloud.elastic.co

  2. Deployment erstellen (14-Tage Free Trial)

  3. APM-Server aktivieren (unter "Integrations")

  4. Secret Token & Server URL notieren

Setup Teil 2: PHP Agent für Shopware installieren

Der Elastic PHP Agent instrumentiert Ihre Shopware-Anwendung automatisch:

Schritt 1: Agent-Installation

# Download & Installation (Debian/Ubuntu)
curl -L -O https://github.com/elastic/apm-agent-php/releases/download/v1.10.0/apm-agent-php_1.10.0_all.deb
sudo dpkg -i apm-agent-php_1.10.0_all.deb

# PHP-Extension aktivieren
sudo phpenmod elastic_apm

# PHP-FPM neustarten
sudo systemctl restart php8.2-fpm

Schritt 2: Konfiguration (.env)

Fügen Sie zu Ihrer Shopware .env hinzu:

# Elastic APM Configuration
ELASTIC_APM_SERVER_URL=http://localhost:8200
ELASTIC_APM_SECRET_TOKEN=your-secret-token
ELASTIC_APM_SERVICE_NAME=shopware-production
ELASTIC_APM_ENVIRONMENT=production
ELASTIC_APM_LOG_LEVEL=info
ELASTIC_APM_ENABLED=true

Schritt 3: Symfony Integration (optional aber empfohlen)

Für bessere Transaction-Namen und Custom Spans:

composer require elastic/apm-agent-php
// config/packages/elastic_apm.yaml
elastic_apm:
    app_name: '%env(ELASTIC_APM_SERVICE_NAME)%'
    server_url: '%env(ELASTIC_APM_SERVER_URL)%'
    secret_token: '%env(ELASTIC_APM_SECRET_TOKEN)%'
    environment: '%env(ELASTIC_APM_ENVIRONMENT)%'
    enabled: '%env(bool:ELASTIC_APM_ENABLED)%'

Nach Deploy sehen Sie bereits erste Transaktionen in Kibana APM!

Setup Teil 3: RUM (Real User Monitoring) für Storefront

RUM trackt Frontend-Performance direkt im Browser Ihrer Kunden:

JavaScript-Agent einbinden

Erstellen Sie ein Shopware-Plugin oder nutzen Sie ein Theme-Override:

{# Resources/views/storefront/layout/meta.html.twig #}
{% sw_extends '@Storefront/storefront/layout/meta.html.twig' %}

{% block layout_head_javascript_tracking %}
    {{ parent() }}

    <script src="https://unpkg.com/@elastic/[email protected]/dist/bundles/elastic-apm-rum.umd.min.js"></script>
    <script>
        elasticApm.init({
            serviceName: 'shopware-storefront',
            serverUrl: '{{ elasticApmServerUrl }}',
            environment: '{{ app.environment }}',
            distributedTracingOrigins: ['{{ app.request.host }}'],

            // Performance Budgets
            breakdownMetrics: true,

            // Privacy: Keine sensiblen Daten tracken
            ignoreTransactions: ['/account/login', '/checkout/payment'],

            // Sampling für hohen Traffic (20% der Sessions)
            transactionSampleRate: 0.2
        });
    </script>
{% endblock %}

Custom Tracking für E-Commerce-Events

// Custom Transaction für Checkout
const checkoutTransaction = elasticApm.startTransaction('Checkout Flow', 'user-interaction');

// Span für Payment Gateway
const paymentSpan = checkoutTransaction.startSpan('PayPal Payment', 'external');
// ... PayPal API Call
paymentSpan.end();

checkoutTransaction.end();

// Error Tracking
try {
    await addToCart(productId);
} catch (error) {
    elasticApm.captureError(error);
}

Daten analysieren: Kibana APM Dashboard

Öffnen Sie in Kibana den Bereich APM. Die wichtigsten Views:

1. Services Overview

  • Zeigt alle Services (shopware-production, shopware-storefront, mysql, redis)

  • Metriken: Durchschnittliche Response Time, Throughput (Requests/Min), Error Rate

2. Transactions

Filtern Sie nach langsamen Endpoints:

  • Beispiel: POST /checkout/confirm braucht im Schnitt 2.3s, deutlich zu langsam

  • Drill-Down: Zeigt Spans (Sub-Operationen) an:

    • SQL Query: 850ms (BOTTLENECK!)

    • PayPal API: 400ms

    • Email Versand: 200ms

3. Errors

  • Stack Traces für jede Exception

  • Gruppierung nach Error-Type

  • Beispiel: "PDOException: SQLSTATE[HY000] Too many connections" → DB-Pool zu klein

4. Service Map

Visualisiert Abhängigkeiten:

[Browser] --> [Shopware Storefront] --> [Shopware Backend]
                                    |
                         [MySQL] + [Redis] + [Elasticsearch]
                                    |
                              [PayPal API]

Performance-Optimierung: Praxis-Beispiele aus CODING 9-Projekten

Fall 1: Langsamer Checkout, von 2.3s auf 0.4s

Problem: APM zeigte 850ms für eine SQL-Query im Checkout

Lösung:

  • Query analysiert: N+1-Problem (lädt jedes Line Item einzeln)

  • Fix: Eager Loading mit Doctrine Associations

  • Resultat: 50ms statt 850ms, Checkout 82% schneller

Fall 2: Hohe Error Rate bei Product Listing, von 12% auf 0.3%

Problem: 12% aller Listing-Requests werfen Timeouts

Lösung:

  • APM Error-Details: Elasticsearch-Timeout bei komplexen Filtern

  • Fix: Elasticsearch Query-Optimierung + Index-Tuning

  • Resultat: Error Rate von 12% auf 0.3%

Fall 3: Schlechte Core Web Vitals, LCP von 4.2s auf 1.8s

Problem: RUM zeigte Largest Contentful Paint (LCP) von 4.2s

Lösung:

  • RUM Transaction-Details: Hero-Image (2MB) unkomprimiert

  • Fix: WebP-Conversion + CDN + Lazy Loading

  • Resultat: LCP von 4.2s auf 1.8s, im Google-Bereich „Good"

Best Practices & Tipps

1. Sampling für hohen Traffic

Bei >100.000 Requests/Tag samplen Sie nur 10-20% der Transaktionen, um Kosten zu senken:

ELASTIC_APM_TRANSACTION_SAMPLE_RATE=0.1  # 10%

2. Alerts einrichten

In Kibana unter Alerts:

  • Error Rate über 5%: Benachrichtigung nach Slack oder per E-Mail

  • Avg. Response Time über 3s: Alert an das DevOps-Team

  • LCP über 2.5s: SEO-Team informieren

3. Custom Spans für Business-Logik

use Elastic\Apm\ElasticApm;

public function calculateShippingCost(Order $order): float
{
    $transaction = ElasticApm::getCurrentTransaction();
    $span = $transaction->beginCurrentSpan('Calculate Shipping', 'app.shipping');

    // ... complex shipping logic

    $span->end();
    return $cost;
}

4. DSGVO-Compliance

  • Anonymisieren Sie User-IDs in Custom Context

  • Filtern Sie sensitive URLs (/account/login, /checkout/payment)

  • Self-Hosting in EU für volle Datenkontrolle

Kosten & ROI

Self-Hosted (Docker)

  • Server: €30-80/Monat (2-4 vCPU, 8-16 GB RAM)

  • Wartung: ~4h/Monat (Updates, Backups)

Elastic Cloud

  • Standard: $95/Monat (bis 50GB Daten)

  • Enterprise: ab $175/Monat (unbegrenzt + Support)

ROI-Beispiel

Ein mittelgroßer Shopware-Shop (€500k/Monat Umsatz):

  • Investition: €100/Monat (Elastic Cloud)

  • Gewinn durch 1% Conversion-Steigerung (bessere Performance): €5.000/Monat

  • ROI: 5.000%

Was APM im laufenden Shopware-Betrieb bringt

In jedem Shopware-Projekt mit nennenswertem Umsatz gehört Elastic APM zur Grundausstattung, so wie Backups und Server-Monitoring. Für uns ist es ein Must-Have im Betrieb. Was es konkret einbringt:

  • Proaktive Fehlerbehebung senkt Downtime und die Zahl der Support-Tickets

  • Performance-Optimierung an den gemessenen Bottlenecks hebt die Conversion Rate

  • Datengetriebene Entscheidungen richten die Entwicklungszeit auf gemessene Probleme statt auf Vermutungen

Wir richten Elastic APM in neuen Shopware-Projekten ein und rüsten es in bestehenden Shops nach, inklusive RUM-Einbindung und Alerts. Kontaktieren Sie uns für ein kostenloses Performance-Audit Ihres Shops!

Nutzen Sie bereits ein APM-Tool in Ihrem E-Commerce-Projekt? Schreiben Sie uns, welche Erfahrungen Sie damit gemacht haben.

Teilen Sie diesen Artikel: