Blog

Ersetzen von awslogs durch Vector beim Upgrade auf Amazon Linux 2023

Mark van Holsteijn

Aktualisiert Oktober 14, 2025
4 Minuten

In diesem Blog zeigen wir Ihnen, wie Sie awslogs durch Vector ersetzen, wenn Sie auf Amazon Linux 2023 aktualisieren, da awslogs nicht mehr verfügbar ist und der empfohlene Unified Cloudwatch Agent journalctl nicht unterstützt.

Warum Vector?

Wir haben uns für Vector entschieden - eine Open-Source-Pipeline für Observability, da sie sowohl journalctl als auch CloudWatch Logs unterstützt. Wir lieben die Einfachheit der Konfigurationsdateien und da wir bereits Datadog für Observability in unserer Plattform verwenden, waren wir erfreut zu wissen, dass Vector vom Community Open Source Engineering Team von Datadog gepflegt wird.

Konfigurieren Sie AL2023 für die Weiterleitung von journalctl-Protokollen an CloudWatch

Um AL2023 so zu konfigurieren, dass journalctl-Protokolle über Vector an CloudWatch weitergeleitet werden, müssen Sie Folgendes tun:

  • Vektor installieren
  • Konfigurieren Sie die Weiterleitung des journald-Protokolls an die CloudWatch-Protokollgruppe
  • Validierung der Gesundheitsprüfung beim Start deaktivieren
  • Sicherstellen, dass Vector bei Änderungen der Umgebungsdatei neu startet
  • Konfigurieren Sie den Namen der AWS-Protokollgruppe
  • Aktivieren Sie die Vector systemd Einheiten
  • Stellen Sie sicher, dass die EC2-Instanz die richtigen Berechtigungen hat

In den folgenden Abschnitten finden Sie Einzelheiten zu den einzelnen Schritten.

Vektor installieren

Die Installation von Vector ist ganz einfach, geben Sie einfach ein:

bash -c "$(curl -L https://setup.vector.dev)"
sudo yum install -y vector

Konfigurieren Sie die journalctl zu CloudWatch Vector Pipeline

Um Vector so zu konfigurieren, dass alle journalctl-Protokolle an eine CloudWatch-Protokollgruppe weitergeleitet werden, erstellen Sie die folgende Konfiguration in /etc/vector/vector.yaml:

---
sources:
  journald:
    type: journald
    exclude_matches:
      _SYSTEMD_UNIT: [ "ntpd.service", "vector.service" ]
      _TRANSPORT: [ "kernel" ]


transforms:
  journald-with-env:
    inputs:
      - journald
    type: "remap"
    source: |
      .log_group_name = "${AWS_LOG_GROUP_NAME:-vector}"

sinks:
  cloudwatch:
    type: aws_cloudwatch_logs
    inputs: [ "journald-with-env" ]
    create_missing_group: true
    create_missing_stream: true
    group_name: "{{ log_group_name }}"
    stream_name: "{{ host }}"
    retention:
      days: 30
      enabled: true
    encoding:
      codec: json

Mit dieser Konfiguration können Sie die CloudWatch Log-Gruppe mithilfe der Umgebungsvariablen AWS_LOG_GROUP_NAME konfigurieren. Diese Konfiguration kann in einem Basis-Image verwendet und pro Instanz über cloud-init angepasst werden. Lesen Sie mehr über die Konfiguration der Vector-Pipeline und aws_cloudwatch_logs für alle Optionen zu AWS CloudWatch Log-Gruppen.

Validierung der Gesundheitsprüfung beim Start deaktivieren

Sie sollten die Validierung der Gesundheitsprüfung beim Start deaktivieren, da Vector nicht mit ihr startet. Das liegt daran, dass Vector beim Start einen Validierungs- und Gesundheitscheck der Konfiguration durchführt. Bei diesem Validierungsschritt wird die Referenz nicht aufgelöst, was wiederum dazu führt, dass die Gesundheitsprüfung der Senke fehlschlägt. Der Grund dafür ist, dass {{ log_group_name }} kein gültiger Protokollgruppenname ist.

Um dies zu vermeiden, überschreiben Sie die Startvalidierung der Vector systemd Konfiguration mit dem folgenden Inhalt in /etc/systemd/system/vector.service.d/override.conf:

ExecStartPre=
ExecStartPre=/usr/bin/vector validate --skip-healthchecks

[Install]
WantedBy=multi-user.target

Sicherstellen, dass Vector bei Änderungen der Umgebungsdatei neu startet

Um sicherzustellen, dass Änderungen in der Umgebungsdatei /etc/default/vector übernommen werden, fügen Sie die folgenden systemd Konfigurationsdateien hinzu: vector-restart.path und vector-restart.service.

Erstellen Sie die Datei /etc/systemd/system/vector-restart.path mit dem folgenden Inhalt:

[Unit]
Description=Monitor Vector environment variable configuration changes
Requires=vector-restart.service

[Path]
PathChanged=/etc/default/vector

[Install]
WantedBy=multi-user.target

Erstellen Sie die Datei /etc/systemd/system/vector-restart.service mit dem folgenden Inhalt:

[Unit]
Description=Restart Vector service on config change

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart vector.service

Konfigurieren Sie den Namen der AWS-Protokollgruppe

Um den Namen der gewünschten Protokollgruppe zu konfigurieren, setzen Sie die Umgebungsvariable AWS_LOG_GROUP_NAME in der Umgebungsdatei von Vector in /etc/default/vector:

AWS_LOG_GROUP_NAME=bastion

Aktivieren Sie die Vector systemd Einheiten

Um sicherzustellen, dass Vector beim Booten startet, geben Sie ein:

systemctl daemon-reload
systemctl enable vector.service vector-restart.path vector-restart.service
systemctl start vector.service vector-restart.path

Sicherstellen der EC2-Instanz-Berechtigungen

Stellen Sie sicher, dass Ihre EC2-Instanz über die folgenden Berechtigungen verfügt:

  • AmazonCloudWatchLogs:CreateLogGroup
  • AmazonCloudWatchLogs:CreateLogStream
  • AmazonCloudWatchLogs:DescribeLogGroups
  • AmazonCloudWatchLogs:DescribeLogStreams
  • AmazonCloudWatchLogs:PutLogEvents

Fazit

Dieses Blog zeigt, wie einfach es ist, den Vector Log Forwarder auf Ihrer EC2-Instanz zu konfigurieren. Indem Sie den Namen der Zielprotokollgruppe in einer Umgebungsvariablen definieren, können Sie diese Konfiguration in einem Basis-Image verwenden und jede Instanz über die Variable AWS_LOG_GROUP_NAME in der Datei /etc/default/vector anpassen.


Das Bild stammt von https://github.com/vectordotdev/vector

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.