Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

K

krazi

@krazi
Unfollow Follow
About
Posts
2
Topics
1
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • Transformation Script execution error - Error 17
    K krazi
    Support

    I have added additional info to my original post as FYI.


  • Transformation Script execution error - Error 17
    K krazi
    Support

    Hello,
    I'm experiencing this error after implementing MTBF (Mean Time Between Failures) and MTTR (Mean Time To Repair) Calculation

    This is related to the "Node availability (percentage)" DCI only (other DCIs are OK):
    See attached Capture1.PNG

    Here's the error msg:
    See attached Capture3.PNG

    Here's the line of code being referred to:
    See attached Capture2.PNG

    Here's the full script:

    // This script calculates MTTR, MTBF and perAvailability parameters and stores them in custom attributes
    // Initialize some custom attributes the first time.
    // Undefined attributes are created by SetCustomAttribute function automatically
    CurrentStatus = GetDCIValue($node, FindDCIByName($node, "Status"));
    PreviousState = GetCustomAttribute($node, "PreviousState");
    if (PreviousState == null)
    { // In the first time, previous state is null
    	SetCustomAttribute($node, "PreviousState", CurrentStatus);
    	SetCustomAttribute($node, "TimeStamp", time());
    	SetCustomAttribute($node, "NumFailures", 0);
    	SetCustomAttribute($node, "TotalUptime", 0);
    	SetCustomAttribute($node, "TotalDowntime", 0);
    	return 100;
    }
    
    // From here the 2nd and subsequent times
    NumFailures = GetCustomAttribute($node, "NumFailures");
    LastTime = time() - GetCustomAttribute($node, "TimeStamp");
    
    // Status is up
    if (CurrentStatus == 0)
    {
    	if (PreviousState != CurrentStatus)
    	{   // just changed to up
    		// update mttr
    		TotalDowntime = GetCustomAttribute($node, "TotalDowntime") + LastTime;
    		mttr = TotalDowntime / ((NumFailures == 0) ? 1 : NumFailures) / 3600;   // to prevent division by ze
    		SetCustomAttribute($node, "TotalDowntime", TotalDowntime);
    		SetCustomAttribute($node, "mttr", mttr);
    	}
    	else
    	{      // still up
    		// update mtbf
    		TotalUptime = GetCustomAttribute($node, "TotalUptime") + LastTime;
    		mtbf = TotalUptime / ((NumFailures == 0) ? 1 : NumFailures) / 3600;   // to prevent division by zero
    		SetCustomAttribute($node, "TotalUptime", TotalUptime);
    		SetCustomAttribute($node, "mtbf", mtbf);
    	}
    }
    
    // Status is down
    if (CurrentStatus == 4)
    {
    	if (PreviousState != CurrentStatus)
    	{   // just changed to down
    		// update mtbf
    		NumFailures++;
    		TotalUptime = GetCustomAttribute($node, "TotalUptime") + LastTime;
    		mtbf = TotalUptime / NumFailures / 3600;
    		SetCustomAttribute($node, "NumFailures", NumFailures);
    		SetCustomAttribute($node, "TotalUptime", TotalUptime);
    		SetCustomAttribute($node, "mtbf", mtbf);
    	}
    	else
    	{   // still down
    		// update mttr
    		TotalDowntime = GetCustomAttribute($node, "TotalDowntime") + LastTime;
    		mttr = TotalDowntime / NumFailures / 3600;
    		SetCustomAttribute($node, "TotalDowntime", TotalDowntime);
    		SetCustomAttribute($node, "mttr", mttr);
    	}
    }
    
    if (CurrentStatus == 0 || CurrentStatus == 4)
    {
    	// Save previous state and timestamp
    	SetCustomAttribute($node, "PreviousState", CurrentStatus);
    	SetCustomAttribute($node, "TimeStamp", time());
    
    	// perAvailability section
    	TotalUptime = GetCustomAttribute($node, "TotalUptime");
    	TotalDowntime = GetCustomAttribute($node, "TotalDowntime");
    	perAvailability = TotalUptime / (TotalUptime + TotalDowntime) * 100;
    	SetCustomAttribute($node, "perAvailability", perAvailability);
    
    	return perAvailability;
    }
    

    Appreciate any help.
    Thanks


    Capture1.PNG

    Capture2.PNG

    Capture3.PNG

  • Login

  • Don't have an account? Register

  • Login or register to search.
Powered by NodeBB Contributors
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups