Vorlage "Pub/Sub fรผr Datadog"

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 auf PLAINTEXT oder KMS 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 auf KMS 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 auf SECRET_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 und SECRET_MANAGER. Sie mรผssen diesen Parameter angeben, wenn Sie Secret Manager verwenden. Wenn apiKeySource auf KMS gesetzt ist, mรผssen Sie auch apiKeyKMSEncryptionKey und verschlรผsseltes API Key angeben. Wenn apiKeySource auf SECRET_MANAGER gesetzt ist, mรผssen Sie auch apiKeySecretId angeben. Wenn apiKeySource auf PLAINTEXT gesetzt ist, mรผssen Sie auch apiKey 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 Funktionsname myTransform. 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

  1. Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf.
  2. Zur Seite "Job aus Vorlage erstellenโ€œ
  3. Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
  4. 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.

  5. Wรคhlen Sie im Drop-down-Menรผ Dataflow-Vorlage die Option the Pub/Sub to Datadog templateaus.
  6. Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
  7. 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 Wahl
  • REGION_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รถchten

    Sie 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-Abos
  • API_KEY: Der API-Schlรผssel von Datadog
  • URL: die URL fรผr den Datadog-Endpunkt (z. B. https://http-intake.logs.datadoghq.com)
  • DEADLETTER_TOPIC_NAME: der Name des Pub/Sub-Themas
  • JAVASCRIPT_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 Funktionsname myTransform. 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 Datadog
  • PARALLELISM: 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รถchten
  • JOB_NAME: ein eindeutiger Jobname Ihrer Wahl
  • LOCATION: die Region, in der Sie Ihren Dataflow-Job bereitstellen mรถchten, z. B. us-central1
  • VERSION: Die Version der Vorlage, die Sie verwenden mรถchten

    Sie 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-Abos
  • API_KEY: Der API-Schlรผssel von Datadog
  • URL: die URL fรผr den Datadog-Endpunkt (z. B. https://http-intake.logs.datadoghq.com)
  • DEADLETTER_TOPIC_NAME: der Name des Pub/Sub-Themas
  • JAVASCRIPT_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 Funktionsname myTransform. 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 Datadog
  • PARALLELISM: die Anzahl der parallelen Anfragen, die zum Senden von Ereignissen an Splunk verwendet werden sollen

Nรคchste Schritte