PHPackages                             davit-vardanyan/netdata-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. davit-vardanyan/netdata-laravel

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

davit-vardanyan/netdata-laravel
===============================

A production-ready Laravel wrapper for the Netdata API v3 PHP SDK

1.1.0(2mo ago)00MITPHPPHP ^8.2CI passing

Since Mar 13Pushed 2mo agoCompare

[ Source](https://github.com/davit-vardanyan/netdata-laravel)[ Packagist](https://packagist.org/packages/davit-vardanyan/netdata-laravel)[ RSS](/packages/davit-vardanyan-netdata-laravel/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (3)Dependencies (34)Versions (4)Used By (0)

Netdata Laravel
===============

[](#netdata-laravel)

[![Tests](https://github.com/davit-vardanyan/netdata-laravel/actions/workflows/tests.yml/badge.svg)](https://github.com/davit-vardanyan/netdata-laravel/actions/workflows/tests.yml)[![Code Style](https://github.com/davit-vardanyan/netdata-laravel/actions/workflows/code-style.yml/badge.svg)](https://github.com/davit-vardanyan/netdata-laravel/actions/workflows/code-style.yml)[![Latest Version on Packagist](https://camo.githubusercontent.com/5383324f9249a845e8c47769a26c5df5853ec56d481979c483db2bdbb26a75aa/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f64617669742d76617264616e79616e2f6e6574646174612d6c61726176656c2e737667)](https://packagist.org/packages/davit-vardanyan/netdata-laravel)[![PHP Version](https://camo.githubusercontent.com/27464a3b1c955ee2504c24fb52aafd97b9e25611d39431af35c48d6027464e66/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f64617669742d76617264616e79616e2f6e6574646174612d6c61726176656c2e737667)](https://packagist.org/packages/davit-vardanyan/netdata-laravel)[![License](https://camo.githubusercontent.com/d709a1760e98ccaeafade566ff0a8cd0300d2ee73f26479d89b3c78f520471e7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f64617669742d76617264616e79616e2f6e6574646174612d6c61726176656c2e737667)](https://packagist.org/packages/davit-vardanyan/netdata-laravel)

A production-ready Laravel wrapper for the [Netdata API v3 PHP SDK](https://github.com/davit-vardanyan/netdata-php). Provides facade, multi-connection support, caching, artisan commands, monitoring, health checks, and more.

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 11.x, 12.x, or 13.x
- [davit-vardanyan/netdata-php](https://github.com/davit-vardanyan/netdata-php) ^1.0

Installation
------------

[](#installation)

```
composer require davit-vardanyan/netdata-laravel
```

The package auto-discovers its service provider and facade.

Configuration
-------------

[](#configuration)

Publish the configuration file:

```
php artisan vendor:publish --tag=netdata-config
```

Set your environment variables in `.env`:

```
NETDATA_TOKEN=your-bearer-token
NETDATA_BASE_URL=https://registry.my-netdata.io
```

The base URL defaults to `https://registry.my-netdata.io`. Point it at any Netdata agent or Cloud instance — for example, a local agent at `http://localhost:19999`.

### Multi-Connection Setup

[](#multi-connection-setup)

```
// config/netdata.php
'connections' => [
    'default' => [
        'token' => env('NETDATA_TOKEN'),
        'base_url' => env('NETDATA_BASE_URL', 'https://registry.my-netdata.io'),
        'timeout' => (int) env('NETDATA_TIMEOUT', 30),
        'read_timeout' => (int) env('NETDATA_READ_TIMEOUT', 60),
        'retry' => [
            'max_attempts' => (int) env('NETDATA_RETRY_MAX', 3),
            'base_delay_ms' => (int) env('NETDATA_RETRY_DELAY', 1000),
        ],
    ],
    'local' => [
        'token' => '',
        'base_url' => 'http://localhost:19999',
    ],
],
```

Quick Start
-----------

[](#quick-start)

```
use DavitVardanyan\NetdataLaravel\Facades\Netdata;

$nodes = Netdata::nodes()->list();
$cpuData = Netdata::data()->cpu();
$alerts = Netdata::alerts()->list();
```

Usage
-----

[](#usage)

### All 13 Resource Accessors

[](#all-13-resource-accessors)

```
use DavitVardanyan\NetdataLaravel\Facades\Netdata;

Netdata::data()->cpu();              // CPU metrics (last 10 min)
Netdata::data()->memory();           // Memory metrics
Netdata::data()->disk();             // Disk metrics
Netdata::data()->network();          // Network metrics
Netdata::data()->query($request);    // Custom data query via DataQueryRequest
Netdata::weights()->query($request); // Metric weight/correlation analysis
Netdata::contexts()->list();         // Browse metric contexts
Netdata::nodes()->list();            // List monitored nodes
Netdata::alerts()->list();           // Active alert summaries
Netdata::functions()->list();        // Agent functions
Netdata::info()->get();              // Agent info (version, hostname, OS)
Netdata::search()->query('cpu');     // Search across metrics
Netdata::badges()->svg('system.cpu');// Generate badge SVGs
Netdata::allMetrics()->get();        // Export all metrics (Prometheus format)
Netdata::config()->tree();           // Agent configuration tree
Netdata::streamPath()->get();        // Streaming path info
Netdata::claim()->info();            // Agent claim status
```

### Dependency Injection

[](#dependency-injection)

```
use DavitVardanyan\NetdataLaravel\NetdataManager;

public function __construct(private NetdataManager $netdata) {}

$this->netdata->nodes()->list();
$this->netdata->connection('local')->nodes()->list();
```

### Multiple Connections

[](#multiple-connections)

```
Netdata::connection('local')->nodes()->list();
Netdata::connection('production')->alerts()->list();
```

### Caching

[](#caching)

Caching is enabled by default. Configure per-resource TTLs in `config/netdata.php`:

```
'cache' => [
    'enabled' => true,
    'store' => null, // uses default cache store
    'prefix' => 'netdata',
    'ttl' => [
        'nodes' => 300,      // 5 minutes
        'contexts' => 1800,  // 30 minutes
        'info' => 3600,      // 1 hour
        'functions' => 1800, // 30 minutes
        'data' => 60,        // 1 minute
        'alerts' => 30,      // 30 seconds
    ],
],
```

Resources like `weights`, `search`, `badges`, `allMetrics`, `config`, `streamPath`, and `claim` bypass the cache automatically.

Flush cache programmatically:

```
Netdata::flushCache();              // Flush all
Netdata::flushCache('nodes');       // Flush nodes only
```

Artisan Commands
----------------

[](#artisan-commands)

```
php artisan netdata:test                          # Test connectivity
php artisan netdata:nodes                         # List monitored nodes
php artisan netdata:alerts                        # List active alerts
php artisan netdata:alerts --status=critical      # Filter by status
php artisan netdata:health                        # System health overview (CPU, RAM, disk, network)
php artisan netdata:metrics system.cpu            # Query metric data
php artisan netdata:metrics system.cpu --after=-3600 --points=60
php artisan netdata:contexts                      # List metric contexts
php artisan netdata:contexts --filter=system      # Filter contexts
php artisan netdata:info                          # Agent information
php artisan netdata:functions                     # List agent functions
php artisan netdata:functions --execute=processes # Execute a function
```

All commands support `--connection=NAME` and `--json` flags.

Monitoring
----------

[](#monitoring)

### Alert Polling

[](#alert-polling)

Polls for new alerts and dispatches `AlertTriggered` events. Alerts are deduplicated by name and chart.

```
// config/netdata.php
'monitoring' => [
    'alerts' => [
        'enabled' => true,
        'poll_interval' => 60,
        'dispatch_events' => true,
        'notify' => [
            'enabled' => true,
            'channels' => ['mail', 'slack'],
            'recipients' => ['admin@example.com'],
        ],
    ],
],
```

### Node Status Monitoring

[](#node-status-monitoring)

Detects nodes going online/offline and dispatches `NodeWentOffline` / `NodeCameOnline` events.

```
'monitoring' => [
    'nodes' => [
        'enabled' => true,
        'poll_interval' => 120,
        'dispatch_events' => true,
    ],
],
```

### Threshold Rules

[](#threshold-rules)

Monitor specific metrics against thresholds. Supports `>`, `>=`, ` [
    'thresholds' => [
        'enabled' => true,
        'rules' => [
            [
                'context' => 'system.cpu',
                'dimension' => 'user',
                'operator' => '>',
                'value' => 90,
                'duration' => 300, // seconds the threshold must be breached
                'severity' => 'critical',
            ],
        ],
    ],
],
```

Events
------

[](#events)

Listen to monitoring events in your `EventServiceProvider` or anywhere Laravel events are registered:

```
use DavitVardanyan\NetdataLaravel\Events\AlertTriggered;
use DavitVardanyan\NetdataLaravel\Events\NodeWentOffline;
use DavitVardanyan\NetdataLaravel\Events\NodeCameOnline;
use DavitVardanyan\NetdataLaravel\Events\MetricThresholdExceeded;

Event::listen(AlertTriggered::class, function (AlertTriggered $event) {
    Log::warning("Alert: {$event->alert->name} [{$event->alert->status->value}]");
});

Event::listen(NodeWentOffline::class, function (NodeWentOffline $event) {
    Log::error("Node offline: {$event->node->name}");
});

Event::listen(MetricThresholdExceeded::class, function (MetricThresholdExceeded $event) {
    Log::critical("{$event->context}.{$event->dimension} {$event->operator} {$event->threshold} (value: {$event->value})");
});
```

Health Check
------------

[](#health-check)

```
use DavitVardanyan\NetdataLaravel\Health\NetdataHealthCheck;

$check = app(NetdataHealthCheck::class);
$result = $check->run();
// $result->status: Status::Ok, Status::Warning, or Status::Failed
// $result->message: Human-readable description

// Check a specific connection
$result = $check->connection('local')->run();
```

Middleware
----------

[](#middleware)

Log request performance with the built-in middleware:

```
// In a route group or kernel
use DavitVardanyan\NetdataLaravel\Middleware\NetdataPerformanceMiddleware;

Route::middleware(NetdataPerformanceMiddleware::class)->group(function () {
    // ...
});
```

Testing
-------

[](#testing)

Use the `FakesNetdata` trait in your Pest or PHPUnit tests:

```
use DavitVardanyan\NetdataLaravel\Testing\FakesNetdata;

uses(FakesNetdata::class);

test('dashboard shows node list', function () {
    $fake = $this->fakeNetdata();
    $fake->fakeNodes([
        ['nd' => 'abc', 'nm' => 'web-1', 'v' => 'v2.0.0'],
    ]);

    $this->get('/dashboard')->assertOk();

    $fake->assertCalled('/api/v3/nodes');
});
```

### Running the Package Tests

[](#running-the-package-tests)

```
vendor/bin/pest              # Run tests (63 tests, 136 assertions)
vendor/bin/phpstan analyse   # Static analysis (level 8)
vendor/bin/pint --test       # Code style check (Laravel preset)
```

Releasing
---------

[](#releasing)

To create a new tag and GitHub release entirely from the command line:

```
# 1. Bump version in composer.json, update CHANGELOG.md, commit
git add composer.json CHANGELOG.md
git commit -m "chore: release v1.x.x"

# 2. Create an annotated tag
git tag -a v1.x.x -m "Release v1.x.x"

# 3. Push the commit and the tag
git push origin main
git push origin v1.x.x

# 4. Create the GitHub release (requires the gh CLI)
gh release create v1.x.x \
  --title "v1.x.x" \
  --notes "$(sed -n '/^## \[1.x.x\]/,/^## \[/p' CHANGELOG.md | head -n -1)"
```

The `sed` command above extracts the relevant CHANGELOG section automatically as release notes. Install the `gh` CLI with `brew install gh` and authenticate once with `gh auth login`.

License
-------

[](#license)

MIT License. See [LICENSE](LICENSE) for details.

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance83

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~10 days

Total

3

Last Release

85d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0e7bd79022d33b28e6b89edda5b3a1877c1661816d9ea1bc2c7d73caebdf7ef5?d=identicon)[davit-vardanyan](/maintainers/davit-vardanyan)

---

Top Contributors

[![davit-vardanyan](https://avatars.githubusercontent.com/u/1898639?v=4)](https://github.com/davit-vardanyan "davit-vardanyan (3 commits)")

---

Tags

apilaravelmonitoringMetricsdashboardnetdata

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/davit-vardanyan-netdata-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/davit-vardanyan-netdata-laravel/health.svg)](https://phpackages.com/packages/davit-vardanyan-netdata-laravel)
```

###  Alternatives

[spatie/laravel-health

Monitor the health of a Laravel application

87411.3M153](/packages/spatie-laravel-health)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9742.3M121](/packages/roots-acorn)[psalm/plugin-laravel

Psalm plugin for Laravel

3345.1M337](/packages/psalm-plugin-laravel)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.5k28.4M137](/packages/laravel-cashier)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k14.1M122](/packages/laravel-pulse)[propaganistas/laravel-disposable-email

Disposable email validator

6012.9M7](/packages/propaganistas-laravel-disposable-email)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
