Forum Discussion

Tal_BenHaim_112's avatar
Tal_BenHaim_112
Icon for Nimbostratus rankNimbostratus
Jan 23, 2007

Common.StatisticType

 

What is the difference between STATISTIC_BYTES_IN / STATISTIC_BYTES_OUT

 

 

and - STATISTIC_SERVER_SIDE_BYTES_IN / STATISTIC_SERVER_SIDE_BYTES_OUT

 

 

I need to monitor the total throughput on the interface and the total throughput on all of the POOLS.

 

 

what statistic type should I use?

 

5 Replies

  • The stats STATISTIC_BYTES_IN/OUT are the byte counts on the external public facing side of the device. The STATISTIC_SERVER_SIDE_BYTES_IN/OUT are the byte counts that go through the internal private side of the device. These values may be different if you have a profile inserting headers or an iRule that is modifying content in some way. Let's say for instance that you want to insert the X-Forwarded-For header to your HTTP web servers. This isn't in the payload from the browser to the BIG-IP but it is counted in the bytes to the webserver (serverside).

     

     

    As for which you choose, it's really up to you and your requirements. For most cases, using the external stats only is close enough.

     

     

    Hope that helps...

     

     

    -Joe
  • Does STATISTIC_SERVER_SIDE_BYTES_IN/OUT reffer also to requests directed to ASM?

     

     

    As I understand it will be wrong to sum STATISTIC_SERVER_SIDE_BYTES_IN/OUT and STATISTIC_BYTES_IN/OUT

     

    as the total throughput.
  • As I mentioned above, the STATISTIC_SERVER_SIDE_BYTES_IN/OUT are the bytes that have gone in and out of the internal network. The ASM module on BIG-IP is still internal to the box so the server side stats aren't necessarily the same as those in/out of AS if you have that module enabled.

    Here's a diagram to help out things in perspective

    
            (bytes_in)   (server_side_bytes_out) 
                ->                ->
    Browser(ext)       BIG-IP             Server(int)
                <-                <-
            (bytes_out)  (server_side_bytes_in)

    the numbers for server_side and external bytes in/out can be different if you have BIG-IP modify any of the content.

    So, the answer is no that you should not sum up the bytes_in/out with the server_side_bytes_in/out or you will effectively double the total number of bytes. I would recommend summing the STATISTIC_BYTES_IN and STATISTIC_BYTES_OUT on the external interface to give an effective total bytes in/out.

    -Joe
  • Hi,

     

     

    I wrote an application that uses the Interfaces.NetworkingInterfaces.get_statistics

     

    sometimes a receive the following exception:

     

     

    System.InvalidOperationException was unhandled

     

    Message="Client found response content type of 'text/html; charset=iso-8859-1', but expected 'text/xml'.\r\nThe request failed with the error message:\r\n--\r\n \r\n--."

     

    Source="System.Web.Services"

     

    StackTrace:

     

    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)

     

    at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)

     

    at Interfaces.NetworkingInterfaces.get_statistics(String[] interfaces) in D:\Y_SERVER\F5 - Dowloads\DistributionMonitorWithPools2\NetworkingInterfaces.cs:line 310

     

    at DistributionMonitor.PoolsMaxStat.CollectInterfaceData(MemberStatistic InterfaceStatistic) in D:\Y_SERVER\F5 - Dowloads\DistributionMonitorWithPools2\PoolsMaxStat.cs:line 971

     

    at DistributionMonitor.PoolsMaxStat.DataTimer_Tick(Object sender, EventArgs e) in D:\Y_SERVER\F5 - Dowloads\DistributionMonitorWithPools2\PoolsMaxStat.cs:line 692

     

    at System.Windows.Forms.Timer.OnTick(EventArgs e)

     

    at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)

     

    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

     

    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)

     

    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)

     

    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)

     

    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

     

    at System.Windows.Forms.Application.Run(Form mainForm)

     

    at DistributionMonitor.Form1.Main() in D:\Y_SERVER\F5 - Dowloads\DistributionMonitorWithPools2\MainForm.cs:line 301

     

    at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)

     

    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)

     

    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()

     

    at System.Threading.ThreadHelper.ThreadStart_Context(Object state)

     

    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

     

    at System.Threading.ThreadHelper.ThreadStart()

     

     

     

     

    - Do you have any idea?

     

     

    Thanks,

     

    Tal

     

  • Hi,Joe

     

    Is your diagram should be as follows?

     

     

    (bytes_in) (server_side_bytes_in)

     

    -> ->

     

    Browser(ext) BIG-IP Server(int)

     

    <- <-

     

    (bytes_out) (server_side_bytes_out)

     

     

    thx!