Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

firestore-metrics

Package Overview
Dependencies
Maintainers
1
Versions
10
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.0.9
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

Firestore Metrics npm npm

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

Pre-requisites

  1. A service account with permission to access the API.
    1. Viewer role should suffice.
  2. Project must be billing enabled.
    1. 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

  1. Create a service account.
    1. Follow steps here to create a service account.
    2. Select the Console tab.
    3. When selecting a role, under Quick access > Basic, pick Viewer.
  2. Download the service account keys.
    1. Follow the steps here to download the service account key.
  3. 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({
    serviceAccountPath: "./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({
    serviceAccountPath: "./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({
  serviceAccountPath: "./service-account.json",
});

Using service-account credentials

Just provide the JSON object of your service-account credentials

const firestoreMetrics = new FirestoreMetrics({
  credentials: {
    type: "service_account",
    project_id: "<PROJECT_ID>",
    private_key_id: "<PRIVATE_KEY_ID>",
    private_key: "<PRIVATE_KEY>",
    client_email: "<CLIENT_EMAIL>",
    client_id: "<CLIENT_ID>",
    auth_uri: "<AUTH_URI>",
    token_uri: "<TOKEN_URI>",
    auth_provider_x509_cert_url: "<AUTH_PROVIDER_X509_CERT_URL>",
    client_x509_cert_url: "<CLIENT_X509_CERT_URL>",
    universe_domain: "<UNIVERSE_DOMAIN>",
  },
});

Keywords

FAQs

Package last updated on 21 Aug 2023

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc