Amazon Data Firehose war zuvor als Amazon Kinesis Data Firehose bekannt
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Mit Kinesis Agent in Amazon Data Firehose schreiben
Amazon Kinesis Agent ist eine eigenständige Java-Softwareanwendung, die als Referenzimplementierung dient und zeigt, wie Sie Daten sammeln und an Firehose senden können. Der Agent überwacht kontinuierlich eine Reihe von Dateien und sendet neue Daten an Ihren Firehose-Stream. Der Agent zeigt, wie Sie mit Dateirotation, Checkpoints und Wiederholungen bei Fehlern umgehen können. Er zeigt, wie Sie Ihre Daten zuverlässig, zeitnah und einfach bereitstellen können. Außerdem wird gezeigt, wie Sie CloudWatch Metriken ausgeben können, um den Streaming-Prozess besser zu überwachen und Fehler zu beheben. Weitere Informationen finden Sie unter awslabs/ amazon-kinesis-agent
Standardmäßig werden Datensätze aus den einzelnen Dateien anhand des Zeilenumbruchzeichens ('\n'
) analysiert. Der Agent kann jedoch auch für die Analyse mehrzeiliger Datensätze konfiguriert werden (siehe Konfigurationseinstellungen für den Agenten).
Sie können den Agenten in Linux-Serverumgebungen installieren, beispielsweise auf Webservern, Protokollservern und Datenbankservern. Nachdem Sie den Agenten installiert haben, konfigurieren Sie ihn, indem Sie die zu überwachenden Dateien und den Firehose-Stream für die Daten angeben. Nach der Konfiguration sammelt der Agent dauerhaft Daten aus den Dateien und sendet sie zuverlässig an den Firehose-Stream.
Themen
- Voraussetzungen
- Anmeldeinformationen
- Anbieter von benutzerdefinierten Anmeldeinformationen
- Herunterladen und Installieren des Agenten
- Konfigurieren und Starten des Agenten
- Konfigurationseinstellungen für den Agenten
- Überwachen mehrerer Dateiverzeichnisse und Schreiben in mehrere Streams
- Verwenden des Agenten zur Datenvorverarbeitung
- CLI-Befehle des Agenten
- Häufig gestellte Fragen
Voraussetzungen
-
Ihr Betriebssystem muss Amazon Linux oder Red Hat Enterprise Linux Version 7 oder höher sein.
-
Agent-Version 2.0.0 oder höher wird mit JRE-Version 1.8 oder höher ausgeführt. Agent-Version 1.1.x wird mit JRE 1.7 oder höher ausgeführt.
-
Starten Sie Ihre EC2-Instance, wenn Sie Amazon EC2 verwenden, um den Agenten auszuführen.
-
Die von Ihnen angegebene IAM-Rolle oder die AWS Anmeldeinformationen müssen berechtigt sein, den Amazon Data PutRecordBatchFirehose-Vorgang auszuführen, damit der Agent Daten an Ihren Firehose-Stream senden kann. Wenn Sie die CloudWatch Überwachung für den Agenten aktivieren, ist auch eine Genehmigung zur Durchführung des CloudWatch PutMetricDataVorgangs erforderlich. Weitere Informationen finden Sie unter Zugriffskontrolle mit Amazon Data FirehoseÜberwachen des Zustands des Kinesis-Agenten, und Authentifizierung und Zugriffskontrolle für Amazon CloudWatch.
Anmeldeinformationen
Verwalten Sie Ihre AWS Anmeldeinformationen mit einer der folgenden Methoden:
-
Erstellen Sie einen Anbieter benutzerdefinierter Anmeldeinformationen. Details hierzu finden Sie unter Anbieter von benutzerdefinierten Anmeldeinformationen.
-
Geben Sie eine IAM-Rolle an, wenn Sie Ihre EC2 Instance starten.
-
Geben Sie die AWS Anmeldeinformationen an, wenn Sie den Agenten konfigurieren (siehe die Einträge für
awsAccessKeyId
undawsSecretAccessKey
in der Konfigurationstabelle unterKonfigurationseinstellungen für den Agenten). -
Bearbeiten Sie
/etc/sysconfig/aws-kinesis-agent
, um Ihre AWS Region und Ihre AWS Zugriffsschlüssel anzugeben. -
Wenn sich Ihre EC2-Instance in einem anderen AWS Konto befindet, erstellen Sie eine IAM-Rolle, um Zugriff auf den Amazon Data Firehose-Service zu gewähren. Geben Sie diese Rolle bei der Konfiguration des Agenten an (siehe assumeRoleARN und assumeRoleExternal Id). Verwenden Sie eine der vorherigen Methoden, um die AWS Anmeldeinformationen eines Benutzers in dem anderen Konto anzugeben, der berechtigt ist, diese Rolle anzunehmen.
Anbieter von benutzerdefinierten Anmeldeinformationen
Sie können einen Anbieter für benutzerdefinierte Anmeldeinformationen erstellen und den Klassennamen und den JAR-Pfad zum Kinesis Agent in den folgenden Konfigurationseinstellungen angeben: userDefinedCredentialsProvider.classname
und userDefinedCredentialsProvider.location
. Die Beschreibungen dieser beiden Konfigurationseinstellungen finden Sie unter Konfigurationseinstellungen für den Agenten.
Um einen Anbieter benutzerdefinierte Anmeldeinformationen zu erstellen, definieren Sie eine Klasse, die die AWS CredentialsProvider
-Schnittstelle implementiert, wie im folgenden Beispiel.
import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; public class
YourClassName
implements AWSCredentialsProvider { publicYourClassName
() { } public AWSCredentials getCredentials() { return new BasicAWSCredentials("key1
", "key2
"); } public void refresh() { } }
Ihre Klasse muss über einen Konstruktor verfügen, der keine Argumente annimmt.
AWS ruft die Refresh-Methode regelmäßig auf, um aktualisierte Anmeldeinformationen abzurufen. Wenn Ihr Anmeldeinformationsanbieter während seiner gesamten Lebensdauer unterschiedliche Anmeldeinformationen bereitstellen soll, fügen Sie Code ein, um die Anmeldeinformationen in dieser Methode zu aktualisieren. Alternativ können Sie diese Methode leer lassen, wenn Sie einen Anmeldeinformationsanbieter wünschen, der statische (nicht ändernde) Anmeldeinformationen vergibt.
Herunterladen und Installieren des Agenten
Stellen Sie zunächst eine Verbindung mit Ihrer Instance her. Weitere Informationen finden Sie unter Connect to Your Instance im Amazon EC2 EC2-Benutzerhandbuch. Wenn Sie Probleme mit der Verbindung haben, finden Sie weitere Informationen unter Problembehandlung beim Herstellen einer Verbindung zu Ihrer Instance im Amazon EC2 EC2-Benutzerhandbuch.
Installieren Sie als Nächstes mithilfe einer der folgenden Methoden den Agenten.
-
So richten Sie den Agenten über die Amazon-Linux-Repositorys ein
Diese Methode funktioniert nur für Amazon-Linux-Instances. Verwenden Sie den folgenden Befehl:
sudo yum install –y aws-kinesis-agent
Agent v 2.0.0 oder höher ist auf Computern mit dem Betriebssystem Amazon Linux 2 (AL2) installiert. Diese Agent-Version erfordert Java-Version 1.8 oder höher. Falls die erforderliche Java-Version noch nicht vorhanden ist, wird sie bei der Agenteninstallation installiert. Weitere Informationen zu Amazon Linux 2 finden Sie unter https://aws.amazon.com/amazon-linux-2/
. -
So richten Sie den Agenten über die Amazon-S3-Repositorys ein
Diese Methode funktioniert sowohl für Instances von Red Hat Enterprise Linux als auch von Amazon Linux 2, da sie den Agenten aus dem öffentlich verfügbaren Repository installiert. Verwenden Sie den folgenden Befehl, um die neueste Version der Agentenversion 2.x.x. herunterzuladen und zu installieren:
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn2.noarch.rpm
Um eine bestimmte Version des Agents zu installieren, geben Sie die Versionsnummer im Befehl an. Mit dem folgenden Befehl wird beispielsweise Agent v 2.0.1. installiert.
sudo yum install –y https://streaming-data-agent.s3.amazonaws.com/aws-kinesis-agent-2.0.1-1.amzn1.noarch.rpm
Wenn Sie Java 1.7 haben und es nicht aktualisieren möchten, können Sie die Agentenversion 1.x.x herunterladen, die mit Java 1.7 kompatibel ist. Um beispielsweise Agent v1.1.6 herunterzuladen, können Sie den folgenden Befehl verwenden:
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-1.1.6-1.amzn1.noarch.rpm
Der neueste Agent v1.x.x kann mit dem folgenden Befehl heruntergeladen werden:
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm
-
Um den Agenten vom Repo aus einzurichten GitHub
-
Stellen Sie zunächst sicher, dass die erforderliche Java-Version installiert ist, je nach Agentenversion.
-
Laden Sie den Agenten aus dem amazon-kinesis-agent GitHub awslabs/Repo
herunter. -
Installieren Sie den Agenten, indem Sie zum Download-Verzeichnis navigieren und den folgenden Befehl ausführen:
sudo ./setup --install
-
-
So richten Sie den Agenten in einem Docker-Container ein
Kinesis Agent kann auch in einem Container über die amazonlinux-Containerbasis ausgeführt werden. Verwenden Sie die folgende Docker-Datei und führen Sie dann
docker build
aus.FROM amazonlinux RUN yum install -y aws-kinesis-agent which findutils COPY agent.json /etc/aws-kinesis/agent.json CMD ["start-aws-kinesis-agent"]
Konfigurieren und Starten des Agenten
So konfigurieren und starten Sie den Agenten
-
Öffnen und bearbeiten Sie die Konfigurationsdatei (als Superuser, wenn Sie standardmäßige Dateizugriffsberechtigungen nutzen):
/etc/aws-kinesis/agent.json
Geben Sie in dieser Konfigurationsdatei die Dateien (
"filePattern"
) an, aus denen der Agent Daten sammelt, und den Namen des Firehose-Streams ("deliveryStream"
), an den der Agent Daten sendet. Der Dateiname ein Muster ist und der Agent Dateirotationen erkennt. Sie können nur einmal pro Sekunde Dateien rotieren oder neue Dateien erstellen. Der Agent verwendet den Zeitstempel der Dateierstellung, um zu bestimmen, welche Dateien nachverfolgt und in Ihren Firehose-Stream aufgenommen werden sollen. Wenn Daten häufiger als einmal pro Sekunde neu erstellt oder rotiert werden, kann der Agent nicht richtig zwischen den Dateien unterscheiden.{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "yourdeliverystream
" } ] }Die AWS Standardregion ist
us-east-1
. Wenn Sie eine andere Region verwenden, fügen Sie der Konfigurationsdatei die Einstellungfirehose.endpoint
hinzu, um den Endpunkt für Ihre Region anzugeben. Weitere Informationen finden Sie unter Konfigurationseinstellungen für den Agenten. -
Starten Sie den Agenten manuell:
sudo service aws-kinesis-agent start
-
(Optional) Konfigurieren Sie den Agenten so, dass er beim Startup des Systems gestartet wird:
sudo chkconfig aws-kinesis-agent on
Der Agent wird jetzt als Systemdienst im Hintergrund ausgeführt. Es überwacht kontinuierlich die angegebenen Dateien und sendet Daten an den angegebenen Firehose-Stream. Die Agentenaktivität wird in /var/log/aws-kinesis-agent/aws-kinesis-agent.log
protokolliert.
Konfigurationseinstellungen für den Agenten
Der Agent unterstützt zwei obligatorische Konfigurationseinstellungen, filePattern
und deliveryStream
, sowie optionale Konfigurationseinstellungen für zusätzliche Funktionen. Sie können sowohl die obligatorischen als auch die optionalen Konfigurationseinstellungen in /etc/aws-kinesis/agent.json
festlegen.
Wenn Sie die Konfigurationsdatei ändern, müssen Sie den Agenten mit den folgenden Befehlen anhalten und starten:
sudo service aws-kinesis-agent stop
sudo service aws-kinesis-agent start
Alternativ können Sie auch den folgenden Befehl nutzen:
sudo service aws-kinesis-agent restart
Im Folgenden finden Sie die allgemeinen Konfigurationseinstellungen.
Konfigurationseinstellung | Beschreibung |
---|---|
assumeRoleARN |
Der Amazon-Ressourcenname (ARN) der Rolle, die der Benutzer übernehmen soll. Weitere Informationen finden Sie unter AWS Kontenübergreifendes Delegieren des Zugriffs mithilfe von IAM-Rollen im IAM-Benutzerhandbuch. |
assumeRoleExternalId |
Eine optionale Kennung, die festlegt, wer die Rolle übernehmen kann. Weitere Informationen finden Sie unter Verwendung einer externen ID im IAM-Benutzerhandbuch. |
awsAccessKeyId |
AWS Zugriffsschlüssel-ID, die die Standardanmeldedaten überschreibt. Diese Einstellung hat Vorrang vor allen anderen Anbietern von Anmeldeinformationen. |
awsSecretAccessKey |
AWS geheimer Schlüssel, der die Standardanmeldedaten überschreibt. Diese Einstellung hat Vorrang vor allen anderen Anbietern von Anmeldeinformationen. |
cloudwatch.emitMetrics |
Ermöglicht dem Agenten, Metriken auszusenden, CloudWatch sofern diese Einstellung gesetzt ist (true). Standard: true |
cloudwatch.endpoint |
Der regionale Endpunkt für CloudWatch. Standard: |
firehose.endpoint |
Der regionale Endpunkt für Amazon Data Firehose. Standard: |
sts.endpoint |
Der regionale Endpunkt für den AWS Security Token Service. Standard: |
userDefinedCredentialsProvider.classname |
Wenn Sie einen Anbieter für benutzerdefinierte Anmeldeinformationen definieren, geben Sie den vollständig qualifizierten Klassennamen mit dieser Einstellung an. Fügen Sie .class nicht am Ende des Klassennamens ein. |
userDefinedCredentialsProvider.location |
Wenn Sie einen Anbieter für benutzerdefinierte Anmeldeinformationen definieren, verwenden Sie diese Einstellung, um den absoluten JAR-Pfad anzugeben, der den Anbieter für benutzerdefinierte Anmeldeinformationen enthält. Der Agent sucht auch am folgenden Speicherort nach der JAR-Datei: /usr/share/aws-kinesis-agent/lib/ . |
Im Folgenden finden Sie die Konfigurationseinstellungen für den Ablauf.
Konfigurationseinstellung | Beschreibung |
---|---|
aggregatedRecordSizeBytes |
Geben Sie diese Einstellung an, damit der Agent Datensätze aggregiert und sie dann in einem Vorgang in den Firehose-Stream einfügt. Stellen Sie ihn auf die Größe ein, die der Aggregatdatensatz haben soll, bevor der Agent ihn in den Firehose-Stream einfügt. Standard: 0 (keine Aggregation) |
dataProcessingOptions |
Die Liste der Verarbeitungsoptionen, die auf jeden analysierten Datensatz angewendet werden, bevor er an den Firehose-Stream gesendet wird. Die Verarbeitungsoptionen werden in der angegebenen Reihenfolge ausgeführt. Weitere Informationen finden Sie unter Verwenden des Agenten zur Datenvorverarbeitung. |
deliveryStream |
[Erforderlich] Der Name des Firehose-Streams. |
filePattern |
[Erforderlich] Glob für die Dateien, die vom Agent überwacht werden müssen. Eine Datei, die mit diesem Muster übereinstimmt, wird vom Agenten automatisch erfasst und überwacht. Gewähren Sie WichtigDer Agent verarbeitet jede Datei, die diesem Muster entspricht. Dieses Muster muss sorgfältig so ausgewählt werden, dass der Agent nur die gewünschten Datensätze verarbeitet. |
initialPosition |
Die Position, an der mit der Analyse der Datei begonnen wurde. Gültige Werte sind Standard: |
maxBufferAgeMillis |
Die maximale Zeit in Millisekunden, für die der Agent Daten zwischenspeichert, bevor er sie an den Firehose-Stream sendet. Wertebereich: 1 000–900 000 (1 Sekunde bis 15 Minuten) Standard: 60.000 (1 Minute) |
maxBufferSizeBytes |
Die maximale Größe in Byte, für die der Agent Daten puffert, bevor er sie an den Firehose-Stream sendet. Wertebereich: 1–4 194 304 (4 MB) Standard: 4.194.304 (4 MB) |
maxBufferSizeRecords |
Die maximale Anzahl von Datensätzen, für die der Agent Daten zwischenspeichert, bevor er sie an den Firehose-Stream sendet. Wertebereich: 1–500 Standard: 500 |
minTimeBetweenFilePollsMillis |
Das Zeitintervall (in Millisekunden), in dem der Agent die überwachten Dateien auf neue Daten abfragt und analysiert. Wertbereich: 1 oder höher Standard: 100 |
multiLineStartPattern |
Das Muster für die Identifizierung des Datensatzbeginns. Ein Datensatz besteht aus einer Zeile, die mit dem angegebenen Muster übereinstimmt, und allen folgenden Zeilen, die nicht dem Muster entsprechen. Gültige Werte sind reguläre Ausdrücke. Standardmäßig wird jede neue Zeile in den Protokolldateien als einziger Datensatz analysiert. |
skipHeaderLines |
Die Anzahl der Zeilen, die der Agent überspringt, ehe mit der Analyse der überwachten Dateien begonnen wird. Wertbereich: 0 oder höher Standard: 0 (null) |
truncatedRecordTerminator |
Die Zeichenfolge, die der Agent verwendet, um einen analysierten Datensatz zu kürzen, wenn die Datensatzgröße die Datensatzgrößenbeschränkung von Amazon Data Firehose überschreitet. (1,000 KB) Standard: |
Überwachen mehrerer Dateiverzeichnisse und Schreiben in mehrere Streams
Wenn Sie mehrere Ablaufkonfigurationseinstellungen angeben, können Sie den Agenten so konfigurieren, dass er mehrere Dateiverzeichnisse überwacht und Daten an verschiedene Streams sendet. Im folgenden Konfigurationsbeispiel überwacht der Agent zwei Dateiverzeichnisse und sendet Daten an einen Kinesis-Datenstream bzw. einen Firehose-Stream. Sie können unterschiedliche Endpunkte für Kinesis Data Streams und Amazon Data Firehose angeben, sodass sich Ihr Datenstream und Ihr Firehose-Stream nicht in derselben Region befinden müssen.
{ "cloudwatch.emitMetrics":
true
, "kinesis.endpoint": "https://your/kinesis/endpoint
", "firehose.endpoint": "https://your/firehose/endpoint
", "flows": [ { "filePattern": "/tmp/app1.log*
", "kinesisStream": "yourkinesisstream
" }, { "filePattern": "/tmp/app2.log*
", "deliveryStream": "yourfirehosedeliverystream
" } ] }
Ausführlichere Informationen zur Verwendung des Agenten mit Amazon Kinesis Data Streams finden Sie unter Schreiben in Amazon Kinesis Data Streams mit Kinesis Agent.
Verwenden des Agenten zur Datenvorverarbeitung
Der Agent kann die aus den überwachten Dateien analysierten Datensätze vorverarbeiten, bevor er sie an Ihren Firehose-Stream sendet. Sie können dieses Feature aktivieren, indem Sie Ihrem Dateifluss die Konfigurationseinstellung dataProcessingOptions
hinzufügen. Sie können eine oder mehrere Verarbeitungsoptionen hinzufügen. Diese werden in der angegebenen Reihenfolge ausgeführt.
Der Agent unterstützt die folgenden Verarbeitungsoptionen. Der Agent ist ein Open-Source-Tool, sodass Sie dessen Verarbeitungsoptionen optimieren und erweitern können. Sie können den Agenten von Kinesis Agent
Verarbeitungsoptionen
SINGLELINE
-
Konvertiert einen mehrzeiligen Datensatz in einen einzeiligen Datensatz, indem Zeilenumbruchzeichen sowie vorangestellte und folgende Leerzeichen entfernt werden.
{ "optionName": "SINGLELINE" }
CSVTOJSON
-
Konvertiert einen Datensatz aus dem durch Trennzeichen getrennten Format in einen Datensatz im JSON-Format.
{ "optionName": "CSVTOJSON", "customFieldNames": [ "
field1
", "field2
",...
], "delimiter": "yourdelimiter
" }customFieldNames
-
[Erforderlich] Die Feldnamen, die als Schlüssel in den einzelnen JSON-Schlüssel-Wert-Paaren verwendet werden. Wenn Sie beispielsweise
["f1", "f2"]
angeben, wird der Datensatz „v1, v2“ in{"f1":"v1","f2":"v2"}
konvertiert. delimiter
-
Die Zeichenfolge, die als Trennzeichen im Datensatz verwendet wird. Standardmäßig wird ein Komma (,) verwendet.
LOGTOJSON
-
Konvertiert einen Datensatz aus einem Protokollformat in einen Datensatz im JSON-Format. Folgende Protokollformate werden unterstützt: Apache Common Log, Apache Combined Log, Apache Error Log und RFC3164 Syslog.
{ "optionName": "LOGTOJSON", "logFormat": "
logformat
", "matchPattern": "yourregexpattern
", "customFieldNames": [ "field1
", "field2
",…
] }logFormat
-
[Erforderlich] Das Format des Protokolleintrags. Folgende Werte sind möglich:
-
COMMONAPACHELOG
– Das Apache-Common-Log-Format. Jeder Protokolleintrag weist standardmäßig das folgende Muster auf: „%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}
“. -
COMBINEDAPACHELOG
– Das Apache-Combined-Log-Format. Jeder Protokolleintrag weist standardmäßig das folgende Muster auf: „%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}
“. -
APACHEERRORLOG
– Das Apache-Error-Log-Format. Jeder Protokolleintrag weist standardmäßig das folgende Muster auf: „[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}
“. -
SYSLOG
– Das RFC3164-Syslog-Format. Jeder Protokolleintrag weist standardmäßig das folgende Muster auf: „%{timestamp} %{hostname} %{program}[%{processid}]: %{message}
“.
-
matchPattern
-
Überschreibt das Standardmuster für das angegebene Protokollformat. Verwenden Sie diese Einstellung, um Werte aus Protokolleinträgen zu extrahieren, wenn sie ein benutzerdefiniertes Format verwenden. Wenn Sie
matchPattern
angeben, müssen Sie auchcustomFieldNames
angeben. customFieldNames
-
Die benutzerdefinierten Feldnamen, die als Schlüssel in den einzelnen JSON-Schlüssel-Wert-Paaren verwendet werden. Mit dieser Einstellung können Sie Feldnamen für Werte definieren, die aus
matchPattern
extrahiert wurden, oder die Standardfeldnamen von vordefinierten Protokollformaten überschreiben.
Beispiel : LOGTOJSON-Konfiguration
Nachfolgend ein Beispiel einer LOGTOJSON
-Konfiguration für einen Apache Common Log-Eintrag, der in ein JSON-Format konvertiert wurde:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" }
Vor der Konvertierung:
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
Nach der Konvertierung:
{"host":"64.242.88.10","ident":null,"authuser":null,"datetime":"07/Mar/2004:16:10:02 -0800","request":"GET /mailman/listinfo/hsdivision HTTP/1.1","response":"200","bytes":"6291"}
Beispiel : LOGTOJSON-Konfiguration mit benutzerdefinierten Feldern
Im Folgenden ein weiteres Beispiel einer LOGTOJSON
-Konfiguration:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"] }
Durch diese Konfigurationseinstellung wird der Apache Common Log-Eintrag aus dem vorherigen Beispiel wie folgt in ein JSON-Format konvertiert:
{"f1":"64.242.88.10","f2":null,"f3":null,"f4":"07/Mar/2004:16:10:02 -0800","f5":"GET /mailman/listinfo/hsdivision HTTP/1.1","f6":"200","f7":"6291"}
Beispiel : Konvertieren eines Apache Common Log-Eintrags
Bei der folgenden Ablaufkonfiguration wird ein Apache Common Log-Eintrag in einen einzeiligen Datensatz im JSON-Format umgewandelt:
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
Beispiel : Konvertieren mehrzeiliger Datensätze
Bei der folgenden Ablaufkonfiguration werden mehrzeilige Datensätze analysiert, deren erste Zeile mit „[SEQUENCE=
“ beginnt. Jeder Datensatz wird in einen einzeiligen Datensatz konvertiert. Anschließend werden Werte aus dem Datensatz basierend auf einem Tabulatortrennzeichen extrahiert. Die extrahierten Werte werden zu angegebenen customFieldNames
-Werten zugeordnet und ergeben so einen einzeiligen Datensatz im JSON-Format.
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "multiLineStartPattern": "\\[SEQUENCE=
", "dataProcessingOptions": [ { "optionName": "SINGLELINE" }, { "optionName": "CSVTOJSON", "customFieldNames": [ "field1
", "field2
", "field3
" ], "delimiter": "\\t
" } ] } ] }
Beispiel : LOGTOJSON-Konfiguration mit Übereinstimmungsmuster
Nachfolgend ein Beispiel einer LOGTOJSON
-Konfiguration für einen Apache Common Log-Eintrag, der in das JSON-Format konvertiert wurde. Das letzte Feld (Bytes) wurde ausgelassen:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})", "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"] }
Vor der Konvertierung:
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
Nach der Konvertierung:
{"host":"123.45.67.89","ident":null,"authuser":null,"datetime":"27/Oct/2000:09:27:09 -0400","request":"GET /java/javaResources.html HTTP/1.0","response":"200"}
CLI-Befehle des Agenten
Automatisches Startup des Agenten beim Systemstart:
sudo chkconfig aws-kinesis-agent on
Prüfen des Status des Agenten:
sudo service aws-kinesis-agent status
Beenden des Agenten:
sudo service aws-kinesis-agent stop
Auslesen der Protokolldatei des Agenten von diesem Speicherort:
/var/log/aws-kinesis-agent/aws-kinesis-agent.log
Deinstallieren des Agenten:
sudo yum remove aws-kinesis-agent
Häufig gestellte Fragen
Gibt es einen Kinesis Agent für Windows?
Kinesis Agent für Windows ist eine andere Software als Kinesis Agent für Linux-Plattformen.
Warum verlangsamt sich Kinesis Agent und/oder RecordSendErrors
nimmt zu?
Dies ist normalerweise auf die Drosselung durch Kinesis zurückzuführen. Überprüfen Sie die WriteProvisionedThroughputExceeded
Metrik für Kinesis Data Streams oder die ThrottledRecords
Metrik für Firehose-Streams. Jede Erhöhung dieser Metriken von 0 zeigt an, dass die Stream-Grenzwerte erhöht werden müssen. Weitere Informationen finden Sie unter Kinesis Data Stream-Grenzwerte und Firehose-Streams.
Sobald Sie die Drosselung ausgeschlossen haben, überprüfen Sie, ob der Kinesis Agent so konfiguriert ist, dass er eine große Menge kleiner Dateien durchsucht. Es gibt eine Verzögerung, wenn der Kinesis Agent eine neue Datei überwacht, daher sollte der Kinesis-Agent eine kleine Menge größerer Dateien überwachen. Versuchen Sie, Ihre Protokolldateien in größeren Dateien zusammenzufassen.
Warum erhalte ich java.lang.OutOfMemoryError
-Ausnahmen?
Kinesis Agent verfügt nicht über genügend Arbeitsspeicher, um seinen aktuellen Workload zu bewältigen. Versuchen Sie, JAVA_START_HEAP
und JAVA_MAX_HEAP
in /usr/bin/start-aws-kinesis-agent
zu erhöhen und den Agenten neu zu starten.
Warum erhalte ich IllegalStateException : connection pool shut down
-Ausnahmen?
Kinesis Agent verfügt nicht über genügend Verbindungen, um seinen aktuellen Workload zu bewältigen. Versuchen Sie, maxConnections
und maxSendingThreads
in den allgemeinen Konfigurationseinstellungen des Agenten unter /etc/aws-kinesis/agent.json
zu erhöhen. Der Standardwert für diese Felder ist das 12-fache der verfügbaren Laufzeitprozessoren. Weitere Informationen zu den Einstellungen für erweiterte Agentenkonfigurationen finden Sie unter AgentConfiguration.java
Wie kann ich ein anderes Problem mit Kinesis Agent beheben?
DEBUG
-Level-Protokolle können in /etc/aws-kinesis/log4j.xml
aktiviert werden.
Wie sollte ich Kinesis Agent konfigurieren?
Je kleiner das maxBufferSizeBytes
, desto häufiger sendet der Kinesis Agent Daten. Dies kann nützlich sein, da es die Lieferzeit von Datensätzen verkürzt, aber es erhöht auch die Anfragen pro Sekunde an Kinesis.
Warum sendet Kinesis Agent doppelte Datensätze?
Dies ist auf eine Fehlkonfiguration bei der Dateiüberwachung zurückzuführen. Stellen Sie sicher, dass jedes fileFlow’s filePattern
nur einer Datei entspricht. Dies kann auch auftreten, wenn der verwendete logrotate
-Modus im copytruncate
-Modus ist. Versuchen Sie, den Modus auf den Standard- oder Erstellungsmodus zu ändern, um Duplikate zu vermeiden. Weitere Informationen zum Umgang mit doppelten Datensätzen finden Sie unter Umgang mit doppelten Datensätzen.