JINSテックブログ
🦉

GoogleAppsScriptからDatadogへログを飛ばすライブラリ

2025/02/18に公開

はじめに

株式会社ジンズのバックエンドエンジニア兼開発環境保全活動家の中島です。
最近は守備範囲にシステムアーキテクチャ設計およびインフラエンジニアリングが入ってきました。

それはそれとして今回は開発・公開したものの紹介、GoogleAppsScript上で動くDatadog連携Loggerのお話を書きます。

背景

弊社ジンズは製造小売業(SPA)というモデルに則ったビジネスを展開しています。
これはその名の通り 商品の企画・製造・販売をまるっとまとめて社内で完結させるビジネスモデルで、これにより "低コストでスピーディーに商品を生み出す" という強みを実現しています。

そして当然ながらこの裏側では、大小さまざまなシステムが協働しながら昼夜を問わず動いています。

こういった状況で必要になるのがシステム監視機構、何らかの異常が発生したときに速やかに検知・対処を行いビジネスを健全に回さねばなりません。我々ジンズではこのシステム監視機構としてDatadogを採用しています。
(※このあたりの構成は社内のプロが記事を書いてくれるはずなので割愛します。)

バックエンドシステムの開発にあたりGoogleAppsScriptを利用した際に、Datadogと簡単に連携する方法が見当たらなかったためライブラリを作りました。 今回はその紹介です。

GoogleAppsScriptとは

GoogleAppsScriptはGoogleが提供するGoogleWorkspaceのサービスの一つで、手軽にGoogleWorkspaceの他サービス(GoogleDrive, GoogleSpreadSheet, etc...)と連携したスクリプトを実行できるクラウドベースのJavaScript実行環境です。
導入ハードルが低くユーザーフレンドリーなサービスと簡単に連携可能な点で、GoogleWorkspaceのサービスをインターフェースとした小型システムの構築ではかなり小回りが利きます。

https://developers.google.com/apps-script

Datadogとは

Datadogとは米国Datadog社が提供するSaaS型モニタリング&セキュリティプラットフォームです。
様々なクラウドサービスと連携し、ログやメトリクスの取得・解析・監視・可視化を一括で担ってくれる非常に強力かつリッチなサービスです。

https://www.datadoghq.com

作ったもの

前述の通り、GoogleAppsScript上で動くDatadog連携Loggerを作成しました。

https://github.com/nakashimn/gas-datadog-logger

使い方

使い方は下記の通り、基本的にはcreateDatadogLogger()でLoggerインスタンスを作成して通常通りログを流すだけです。簡単。

// 1. DatadogAPIKeyを取得 (※スクリプトプロパティでの定義を推奨)
const scriptProperties = PropertiesService.getScriptProperties();
const ddApiKey = scriptProperties.getProperty('DD-API-KEY');

// 2. ScriptId, ScriptNameを取得
const scriptId = ScriptApp.getScriptId();
const scriptName = DriveApp.getFileById(scriptId).getName();

// 3. DatadogAPIKey, ScriptId, ScriptName, tagを引数にDatadogLoggerをインスタンス化
const ddLogger = createDatadogLogger(ddApiKey, scriptId, scriptName, tags={'version': '1.0.0'});

// [Example]

// status:DEBUG のログを送付する
ddLogger.debug('debug message.');

// Contentに is_successful:trueを追加し status:WARNING のログを送付する
ddLogger.warn('warning message.', extra={'is_successful': 'true'});

最後に

我々株式会社ジンズITデジタル部、社内では比較的若い部署ではありますが、少しずつ需要も規模も拡大していっています。そのため新たなエンジニアを随時募集しています。

  • 大局を見ながらプロジェクトを運営してビジネスを動かしたい!という方
  • 実際に動くシステムをバリバリ実装しながらベンダーさんと殴り合いたい!という方

どちらの志向でも活躍できる土壌があります。
興味ある方はぜひ、下記募集ページをご覧ください!
https://hrmos.co/pages/jins/jobs/1829091030515531842

JINSテックブログ
JINSテックブログ

Discussion