PHP code example of davit-vardanyan / netdata-laravel

1. Go to this page and download the library: Download davit-vardanyan/netdata-laravel library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

davit-vardanyan / netdata-laravel example snippets


// 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',
    ],
],

use DavitVardanyan\NetdataLaravel\Facades\Netdata;

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

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

use DavitVardanyan\NetdataLaravel\NetdataManager;

public function __construct(private NetdataManager $netdata) {}

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

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

'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
    ],
],

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

// config/netdata.php
'monitoring' => [
    'alerts' => [
        'enabled' => true,
        'poll_interval' => 60,
        'dispatch_events' => true,
        'notify' => [
            'enabled' => true,
            'channels' => ['mail', 'slack'],
            'recipients' => ['[email protected]'],
        ],
    ],
],

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

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

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})");
});

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();

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

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

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');
});
bash
php artisan vendor:publish --tag=netdata-config