Die Vorlage "Pub/Sub fรผr Datadog" ist eine Streamingpipeline, die Nachrichten aus einem Pub/Sub-Abo liest und die Nutzlast der Nachricht mithilfe von Datadog-Endpunkten in Datadog schreibt. Der hรคufigste Anwendungsfall fรผr diese Vorlage ist das Exportieren von Logdateien in Datadog.
Vor dem Schreiben in Datadog kรถnnen Sie eine benutzerdefinierte JavaScript-Funktion auf die Nachrichtennutzlast anwenden. Alle Nachrichten, bei denen Verarbeitungsfehler auftreten, werden zur weiteren Fehlerbehebung und erneuten Verarbeitung an ein unverarbeitetes Thema in Pub/Sub weitergeleitet.
Als zusรคtzlichen Schutz fรผr Ihre API-Schlรผssel und -Secrets kรถnnen Sie auch einen Cloud KMS-Schlรผssel zusammen mit dem base64-codierten API-Schlรผsselparameter รผbergeben, der mit dem Cloud KMS-Schlรผssel verschlรผsselt ist. Weitere Informationen zum Verschlรผsseln des API-Schlรผsselparameters finden Sie unter Cloud KMS API-Verschlรผsselungsendpunkt.
Pipelineanforderungen
- Das als Quelle dienende Pub/Sub-Abo muss vorhanden sein, bevor Sie die Pipeline ausfรผhren.
- Das Pub/Sub-Thema fรผr nicht verarbeitete Datensรคtze muss vorhanden sein, bevor die Pipeline ausgefรผhrt wird.
- Auf die Datadog-URL muss รผber das Netzwerk der Dataflow-Worker zugegriffen werden kรถnnen.
- Der Datadog API-Schlรผssel muss generiert und verfรผgbar sein.
Vorlagenparameter
Erforderliche Parameter
- inputSubscription: Das Pub/Sub-Abo, aus dem die Eingabe gelesen werden soll. Beispiel:
projects/your-project-id/subscriptions/your-subscription-name
. - url: Die URL der Datadog Logs API. Diese URL muss von der VPC, in der die Pipeline ausgefรผhrt wird, weitergeleitet werden kรถnnen. Weitere Informationen finden Sie in der Datadog-Dokumentation unter โLogs sendenโ (https://docs.datadoghq.com/api/latest/logs/#send-logs). Beispiel:
https://http-intake.logs.datadoghq.com
- outputDeadletterTopic: Das Pub/Sub-Thema als Weiterleitungsziel fรผr nicht zustellbare Nachrichten. Beispiel:
projects/<PROJECT_ID>/topics/<TOPIC_NAME>
.
Optionale Parameter
- apiKey: Der Datadog API-Schlรผssel. Sie mรผssen diesen Wert angeben, wenn
apiKeySource
aufPLAINTEXT
oderKMS
festgelegt ist. Weitere Informationen finden Sie in der Datadog-Dokumentation unter โAPI- und Anwendungsschlรผsselโ (https://docs.datadoghq.com/account_management/api-app-keys/). - batchCount: Die Batchgrรถรe zum Senden mehrerer Ereignisse an Datadog. Der Standardwert ist
100
. - parallelism: Die maximale Anzahl an parallelen Anfragen. Die Standardeinstellung ist
1
(keine Parallelitรคt). - includePubsubMessage: Gibt an, ob die vollstรคndige Pub/Sub-Nachricht in die Nutzlast aufgenommen werden soll. Der Standardwert ist
true
(alle Elemente, einschlieรlich des Datenelements, sind in der Nutzlast enthalten). - apiKeyKMSEncryptionKey: Der Cloud KMS-Schlรผssel, der zum Entschlรผsseln des API-Schlรผssels verwendet werden soll. Sie mรผssen diesen Parameter angeben, wenn
apiKeySource
aufKMS
festgelegt ist. Wenn der Cloud KMS-Schlรผssel bereitgestellt wird, mรผssen Sie einen verschlรผsselten API-Schlรผssel รผbergeben. Beispiel:projects/your-project-id/locations/global/keyRings/your-keyring/cryptoKeys/your-key-name
- apiKeySecretId: Die geheime ID des Secret Manager fรผr den API-Schlรผssel. Sie mรผssen diesen Parameter angeben, wenn
apiKeySource
aufSECRET_MANAGER
festgelegt ist. Beispiel:projects/your-project-id/secrets/your-secret/versions/your-secret-version
- apiKeySource: Die Quelle des API-Schlรผssels. Die folgenden Werte werden unterstรผtzt:
PLAINTEXT
,KMS
undSECRET_MANAGER
. Sie mรผssen diesen Parameter angeben, wenn Sie Secret Manager verwenden. WennapiKeySource
aufKMS
gesetzt ist, mรผssen Sie auchapiKeyKMSEncryptionKey
und verschlรผsseltesAPI Key
angeben. WennapiKeySource
aufSECRET_MANAGER
gesetzt ist, mรผssen Sie auchapiKeySecretId
angeben. WennapiKeySource
aufPLAINTEXT
gesetzt ist, mรผssen Sie auchapiKey
angeben. - javascriptTextTransformGcsPath: Der Cloud Storage-URI der .js-Datei, in der die zu verwendende benutzerdefinierte JavaScript-Funktion (UDF) definiert wird. Beispiel:
gs://my-bucket/my-udfs/my_file.js
. - javascriptTextTransformFunctionName: Der Name der benutzerdefinierten JavaScript-Funktion (UDF), die verwendet werden soll. Wenn Ihre JavaScript-Funktion beispielsweise
myTransform(inJson) { /*...do stuff...*/ }
ist, lautet der FunktionsnamemyTransform
. Beispiele fรผr JavaScript-UDFs finden Sie unter โUDF-Beispieleโ (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples). - javascriptTextTransformReloadIntervalMinutes: Definieren Sie das Intervall, in dem die Worker mรถglicherweise nach JavaScript-UDF-รnderungen suchen, um die Dateien neu zu laden. Die Standardeinstellung ist 0.
Benutzerdefinierte Funktion
Optional kรถnnen Sie diese Vorlage erweitern, indem Sie eine benutzerdefinierte Funktion (UDF) schreiben. Die Vorlage ruft die UDF fรผr jedes Eingabeelement auf. Nutzlasten von Elementen werden als JSON-Strings serialisiert. Weitere Informationen finden Sie unter Benutzerdefinierte Funktionen fรผr Dataflow-Vorlagen erstellen.
Funktionsspezifikation
UDFs haben die folgende Spezifikation:
- Eingabe: Das Feld der Pub/Sub-Nachrichtendaten, das als JSON-String serialisiert ist.
- Ausgabe: Die Ereignisdaten, die an den Datadog Log-Endpunkt gesendet werden sollen. Die Ausgabe muss ein String oder ein String-JSON-Objekt sein.
Fรผhren Sie die Vorlage aus.
Console
- Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf. Zur Seite "Job aus Vorlage erstellenโ
- Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
- Optional: Wรคhlen Sie fรผr Regionaler Endpunkt einen Wert aus dem Drop-down-Menรผ aus. Die Standardregion ist
us-central1
.Eine Liste der Regionen, in denen Sie einen Dataflow-Job ausfรผhren kรถnnen, finden Sie unter Dataflow-Standorte.
- Wรคhlen Sie im Drop-down-Menรผ Dataflow-Vorlage die Option the Pub/Sub to Datadog templateaus.
- Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
- Klicken Sie auf Job ausfรผhren.
gcloud
Fรผhren Sie die Vorlage in der Shell oder im Terminal aus:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_PubSub_to_Datadog \ --region REGION_NAME \ --staging-location STAGING_LOCATION \ --parameters \ inputSubscription=projects/PROJECT_ID/subscriptions/INPUT_SUBSCRIPTION_NAME,\ apiKey=API_KEY,\ url=URL,\ outputDeadletterTopic=projects/PROJECT_ID/topics/DEADLETTER_TOPIC_NAME,\ javascriptTextTransformGcsPath=PATH_TO_JAVASCRIPT_UDF_FILE,\ javascriptTextTransformFunctionName=JAVASCRIPT_FUNCTION,\ batchCount=BATCH_COUNT,\ parallelism=PARALLELISM
Ersetzen Sie Folgendes:
JOB_NAME
: ein eindeutiger Jobname Ihrer WahlREGION_NAME
: die Region, in der Sie Ihren Dataflow-Job bereitstellen mรถchten, z. B.us-central1
VERSION
: Die Version der Vorlage, die Sie verwenden mรถchtenSie kรถnnen die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten รผbergeordneten Ordner im Bucket verfรผgbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten รผbergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
STAGING_LOCATION
: der Speicherort fรผr das Staging lokaler Dateien (z. B.gs://your-bucket/staging
)INPUT_SUBSCRIPTION_NAME
: der Name des Pub/Sub-AbosAPI_KEY
: Der API-Schlรผssel von DatadogURL
: die URL fรผr den Datadog-Endpunkt (z. B.https://http-intake.logs.datadoghq.com
)DEADLETTER_TOPIC_NAME
: der Name des Pub/Sub-ThemasJAVASCRIPT_FUNCTION
: ist der Name der benutzerdefinierten JavaScript-Funktion (UDF), die Sie verwenden mรถchten.Wenn Ihre JavaScript-Funktion beispielsweise
myTransform(inJson) { /*...do stuff...*/ }
ist, lautet der FunktionsnamemyTransform
. Beispiele fรผr JavaScript-UDFs finden Sie unter UDF-Beispiele.PATH_TO_JAVASCRIPT_UDF_FILE
Der Cloud Storage-URI der Datei.js
, in der die benutzerdefinierte JavaScript-Funktion (UDF) definiert wird, die Sie verwenden mรถchten. Beispiel:gs://my-bucket/my-udfs/my_file.js
BATCH_COUNT
: die Batchgrรถรe zum Senden mehrerer Ereignisse an DatadogPARALLELISM
: die Anzahl der parallelen Anfragen, die zum Senden von Ereignissen an Splunk verwendet werden sollen
API
Senden Sie eine HTTP-POST-Anfrage, um die Vorlage mithilfe der REST API auszufรผhren. Weitere Informationen zur API und ihren Autorisierungsbereichen finden Sie unter projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Cloud_PubSub_to_Datadog { "jobName": "JOB_NAME", "environment": { "ipConfiguration": "WORKER_IP_UNSPECIFIED", "additionalExperiments": [] }, "parameters": { "inputSubscription": "projects/PROJECT_ID/subscriptions/INPUT_SUBSCRIPTION_NAME", "apiKey": "API_KEY", "url": "URL", "outputDeadletterTopic": "projects/PROJECT_ID/topics/DEADLETTER_TOPIC_NAME", "javascriptTextTransformGcsPath": "PATH_TO_JAVASCRIPT_UDF_FILE", "javascriptTextTransformFunctionName": "JAVASCRIPT_FUNCTION", "batchCount": "BATCH_COUNT", "parallelism": "PARALLELISM" } }
Ersetzen Sie Folgendes:
PROJECT_ID
: die Google Cloud Projekt-ID, in der Sie den Dataflow-Job ausfรผhren mรถchtenJOB_NAME
: ein eindeutiger Jobname Ihrer WahlLOCATION
: die Region, in der Sie Ihren Dataflow-Job bereitstellen mรถchten, z. B.us-central1
VERSION
: Die Version der Vorlage, die Sie verwenden mรถchtenSie kรถnnen die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten รผbergeordneten Ordner im Bucket verfรผgbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten รผbergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
STAGING_LOCATION
: der Speicherort fรผr das Staging lokaler Dateien (z. B.gs://your-bucket/staging
)INPUT_SUBSCRIPTION_NAME
: der Name des Pub/Sub-AbosAPI_KEY
: Der API-Schlรผssel von DatadogURL
: die URL fรผr den Datadog-Endpunkt (z. B.https://http-intake.logs.datadoghq.com
)DEADLETTER_TOPIC_NAME
: der Name des Pub/Sub-ThemasJAVASCRIPT_FUNCTION
: ist der Name der benutzerdefinierten JavaScript-Funktion (UDF), die Sie verwenden mรถchten.Wenn Ihre JavaScript-Funktion beispielsweise
myTransform(inJson) { /*...do stuff...*/ }
ist, lautet der FunktionsnamemyTransform
. Beispiele fรผr JavaScript-UDFs finden Sie unter UDF-Beispiele.PATH_TO_JAVASCRIPT_UDF_FILE
Der Cloud Storage-URI der Datei.js
, in der die benutzerdefinierte JavaScript-Funktion (UDF) definiert wird, die Sie verwenden mรถchten. Beispiel:gs://my-bucket/my-udfs/my_file.js
BATCH_COUNT
: die Batchgrรถรe zum Senden mehrerer Ereignisse an DatadogPARALLELISM
: die Anzahl der parallelen Anfragen, die zum Senden von Ereignissen an Splunk verwendet werden sollen
Nรคchste Schritte
- Dataflow-Vorlagen
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.