<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-NZ link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>While it is easy to do this with RRDTool, to do it in MRTG is a little more complex.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Lets’s assume that the OIDs are OID1 (for kVA) and OID2 (for kVAR).<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>You could use this:<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Target[xxxx]: OID1&OID2:community@device<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Option[xxxx]: gauge<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>This would collect the two values into the two metrics of the RRD for graphing separately.  You would then need to use something like rrdcgi to construct a custom graphing function to build a graph with a third line, calculated by the RPN expression:  <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>CDEF:w=ds0,ds0,*,ds1,ds1,*,-,SQRT,1000,/<o:p></o:p></span></p><p class=MsoNormal style='margin-top:12.0pt'><span style='color:#1F497D'>Note that we divide by 1000 to get the value in W rather than kW so that the automatic labels work better.  However, this requires you to create a fairly complex rrdcgi page with a custom graph, and it may not work well with your chosen web interface.  Note that, if you are using Routers as your MRTG/RRD frontend, you can use the routers.cgi*Extension API to embed the output of another script (such as rrdcgi) within the framework.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Another way to do it would be to have a really complex Target line, so that the w value is calculated and stored at polling time:<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Target[xxxx]: ( sqrt ( ( OID1&pseudoZero:community@device * OID1&pseudoZero:community@device ) \<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>     – ( OID2&pseudoZero:community@device * OID2&pseudoZero:community@device ) )  ) \<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>     / 1000<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>This will cause things to crash if kVAR > kVA of course, and will not store the source values (though a separate Target can collect these if you wish).  Note that the spaces around the operators are all significant.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>You cannot do it with a postprocessing function, as these only take a single metric as a parameter.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Probably the best way to do it would be with a custom collection script, but this would be non-trivial as it would need to take the community and device name parameters and perform the SNMP lookup itself.  Whether or not you can do this will depend on your coding ability.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Steve<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><p class=MsoNormal><b><span style='color:#1F497D'>Steve Shipway<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-size:10.0pt;color:#1F497D'>T: +64 9 3737 599 ext 86487<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:#1F497D'>E: <a href="mailto:s.shipway@auckland.ac.nz"><span style='color:#0563C1'>s.shipway@auckland.ac.nz</span></a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:1.0pt;color:#1F497D'>(GNU Terry Pratchett)<o:p></o:p></span></p></div><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US>From:</span></b><span lang=EN-US> mrtg [mailto:mrtg-bounces+s.shipway=auckland.ac.nz@lists.oetiker.ch] <b>On Behalf Of </b>Nick price<br><b>Sent:</b> Wednesday, 21 October 2015 2:58 a.m.<br><b>To:</b> mrtg@lists.oetiker.ch<br><b>Subject:</b> [mrtg] maths in mrtg<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-US>For my incoming mains power supply I have a monitor box that gives me kVA and kVAR values via SNMP  I need to get kW into a graph.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I need to do the following maths  kW=(kVA^2-kVAR^2)^0.5 how do I get mrtg to do this<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Many thanks in advance<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Nick<o:p></o:p></span></p></div></div></body></html>