You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

firestore-metrics

Package Overview
Dependencies
Maintainers
0
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

firestore-metrics

A library which uses the Cloud Monitoring API v3 to view Firestore metrics.

1.1.1
latest
Source
npmnpm
Version published
Maintainers
0
Created
Source

Firestore Metrics npm npm

This is a library which uses the Cloud Monitoring API v3 to view Firestore usage metrics.

Pre-requisites

  • An account with permission to access the API.
    • Viewer role should suffice.
  • If you're using a service account, the project the service account belongs to must be billing enabled.
    • This might be more of a bug as requests that use the bearer token obtained from a service account results in a 403 error when the project is not billing enabled.

How to use

  • Create a service account.
    • Follow steps here to create a service account.
    • Select the Console tab.
    • When selecting a role, under Quick access > Basic, pick Viewer.
  • Download the service account keys.
  • Pass the service-account key file path or service-account credentials to FirestoreMetrics

Method references

Usage metrics
  • getRequestCount() - Get Firestore API calls count
  • getReadCount() - Get Firestore read count metrics
  • getWriteCount() - Get Firestore write count metrics
  • getDeleteCount() - Get Firestore delete count metrics
  • getSnapshotListeners() - Get Firestore snapshot listeners count metrics
  • getActiveConnections() - Get Firestore active connections count metrics
  • getTTLDeletionCount() - Get Firestore documents deleted by TTL services count
  • getRulesEvaluationCount() - Get Firestore Security Rule evaluations count performed in response to write read requests
Misc.
  • getProjectId() - Gets the project ID and sets its value if it is still null
  • generateToken() - Generate an access token to be used to authenticate requests
  • setAccessToken() - Overwrites the access token used to authenticate requests

Get read metrics

import { FirestoreMetrics } from "firestore-metrics";

async function testApi() {
  const firestoreMetrics = new FirestoreMetrics({
    projectId: "PROJECT_ID",
    keyFile: "./service-account.json",
  });
  const readUsage = await firestoreMetrics.getReadCount(
    "2023-07-22T08:00:00Z",
    "2023-07-22T22:42:15Z"
  );

  console.log(JSON.stringify(readUsage, null, 4));
}

testApi();

Output would look like:

[
  {
    "type": "QUERY",
    "interval": {
      "startTime": "2023-08-21T16:15:00Z",
      "endTime": "2023-08-21T16:16:00Z"
    },
    "count": 26
  },
  {
    "type": "QUERY",
    "interval": {
      "startTime": "2023-08-21T16:14:00Z",
      "endTime": "2023-08-21T16:15:00Z"
    },
    "count": 15
  },
  {
    "type": "QUERY",
    "interval": {
      "startTime": "2023-08-21T15:51:00Z",
      "endTime": "2023-08-21T15:52:00Z"
    },
    "count": 11
  }
]

Get write metrics

import { FirestoreMetrics } from "firestore-metrics";

async function testApi() {
  const firestoreMetrics = new FirestoreMetrics({
    projectId: "PROJECT_ID",
    keyFile: "./service-account.json",
  });
  const writeUsage = await firestoreMetrics.getWriteCount(
    "2023-08-21T15:00:00Z",
    "2023-08-21T20:00:00Z"
  );

  console.log(JSON.stringify(writeUsage, null, 4));
}

testApi();

Output would look like:

[
  {
    "op": "CREATE",
    "interval": {
      "startTime": "2023-08-21T16:09:00Z",
      "endTime": "2023-08-21T16:10:00Z"
    },
    "count": 1
  },
  {
    "op": "UPDATE",
    "interval": {
      "startTime": "2023-08-21T16:15:00Z",
      "endTime": "2023-08-21T16:16:00Z"
    },
    "count": 1
  },
  {
    "op": "UPDATE",
    "interval": {
      "startTime": "2023-08-21T16:09:00Z",
      "endTime": "2023-08-21T16:10:00Z"
    },
    "count": 1
  }
]

Ways to authenticate request

Using a service-account file

Just provide the path to your service-account file

const firestoreMetrics = new FirestoreMetrics({
  projectId: "PROJECT_ID",
  keyFile: "./service-account.json",
});

Keywords

Firestore Usage

FAQs

Package last updated on 17 Feb 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts