watchlog-metric
Version:
This is a package to communicate with watchlog.io agent
135 lines (100 loc) ⢠3.3 kB
Markdown
A Node.js client for [watchlog](https://watchlog.io/) server.
š **Website**: [https://watchlog.io](https://watchlog.io)
```bash
npm install watchlog-metric
yarn add watchlog-metric
```
```javascript
const { default: watchlogMetric } = require("watchlog-metric")
// Send Metric: Increments a stat by a value (default is 1)
watchlogMetric.increment("Your_metric")
watchlogMetric.increment("Your_metric", 75)
// Send Metric: Decrements a stat by a value (default is 1)
watchlogMetric.decrement("Your_metric")
watchlogMetric.decrement("Your_metric", 25)
// Send Metric: Percentage a stat by a value (value is required. min is 0 and max is 100)
watchlogMetric.percentage("Your_metric", 12.23)
// Send Metric: To measure a specific metric (value is required)
watchlogMetric.gauge("Your_metric", 12.23)
// Send Metric: To send byte of a metric (value is required)
watchlogMetric.systembyte("Your_metric", 1024000000) // for example: 1024000000 is 1 GB
```
```typescript
import watchlogMetric from 'watchlog-metric';
watchlogMetric.increment("Your_metric");
```
When running your Node.js app in Docker, you can specify the agent URL explicitly:
```javascript
const { SocketCli } = require("watchlog-metric");
// Create client with explicit agent URL for Docker
const watchlogMetric = new SocketCli('http://watchlog-agent:3774');
watchlogMetric.increment("Your_metric", 1);
```
**Docker Compose Example:**
```yaml
version: '3.8'
services:
watchlog-agent:
image: watchlog/agent:latest
container_name: watchlog-agent
ports:
- "3774:3774"
environment:
- WATCHLOG_APIKEY=your-api-key
- WATCHLOG_SERVER=https://log.watchlog.ir
networks:
- app-network
node-app:
build: .
container_name: node-app
ports:
- "3000:3000"
depends_on:
- watchlog-agent
networks:
- app-network
networks:
app-network:
driver: bridge
```
**Docker Run Example:**
```bash
docker network create app-network
docker run -d \
--name watchlog-agent \
--network app-network \
-p 3774:3774 \
-e WATCHLOG_APIKEY="your-api-key" \
-e WATCHLOG_SERVER="https://log.watchlog.ir" \
watchlog/agent:latest
docker run -d \
--name node-app \
--network app-network \
-p 3000:3000 \
my-node-app
```
The package automatically detects the runtime environment:
* **Local / non-K8s**: `http://127.0.0.1:3774`
* **Kubernetes**: `http://watchlog-node-agent.monitoring.svc.cluster.local:3774`
**Manual Override:** You can override the endpoint by passing `agentUrl` parameter to `SocketCli` constructor:
```javascript
const { SocketCli } = require("watchlog-metric");
const client = new SocketCli('http://watchlog-agent:3774'); // Custom agent URL
```
**Important Notes:**
- When using Docker, use the container name as the hostname (e.g., `watchlog-agent`)
- Both containers must be on the same Docker network
- The agent must be running before your app starts
- If `agentUrl` is not provided, auto-detection will be used (local or Kubernetes)
## License
MIT Ā© Watchlog