Forum Discussion

asotoaec's avatar
asotoaec
Icon for Altostratus rankAltostratus
Feb 07, 2024

Decode BIG-IP performance files

Hi everyone, I'm trying to extract the performance data from a QKview, this is to generate way charts and export automatic reports.

I'm running into the problem because the files are encoded in a format that I can't find a way to read them, I'd like to know if some F5 genius can give me a hint of how I can export the performance data from an uncompressed qkview from .tgz

This is an example of the output from a performance file in /shared/tmstat/snapshots/blade0/performance/100/blade0-performance-10-2024-02-06T08_27_20

TMSS  ÿÿÿÿÿÿÿÿ    'l                                    name                                                1       tableid                                           1        offset                                            3       size                                              5       type                                              7       rule                                              8       dropped                                           :        next                                              ;         name                                                 1           rows                                               5    
   rowsz                                              9    
   cols                                               ;        is_sorted                                          =    
   category                                           @       rr_limit                                           B       rr_last                                            F       dynamic                                            J       first_col                                          O         name                                               1       ctime                                             9        tree                                                      time                                              S         slot_id                                                    cpu_id                                                    user                                                     nice                                                     system                                                   idle                                                      iowait                                            (       irq                                               0       softirq                                           8       stolen                                            @        ratio                                             H    !   five_sec_avg.user                                 P    "   five_sec_avg.nice                                 X    #   five_sec_avg.system                               `    $   five_sec_avg.idle                                 h    %   five_sec_avg.iowait                               p    &   five_sec_avg.irq                                  x    '   five_sec_avg.softirq                              €    (   five_sec_avg.stolen                               ˆ    )   five_sec_avg.ratio                                    *   one_min_avg.user                                  ˜    +   one_min_avg.nice                                       ,   one_min_avg.system                                ¨    -   one_min_avg.idle                                  °    .   one_min_avg.iowait                                ¸    /   one_min_avg.irq                                   À    0   one_min_avg.softirq                               È    1   one_min_avg.stolen                                Ð    2   one_min_avg.ratio                                 Ø    3   five_min_avg.user                                 à    4   five_min_avg.nice                                 è    5   five_min_avg.system                               ð    6   five_min_avg.idle                                 ø    7   five_min_avg.iowait                                   8   five_min_avg.irq                                     9   five_min_avg.softirq                                 :   five_min_avg.stolen                                  ;   five_min_avg.ratio                                    <   plane_name                                        (        slot_id                                                 >   total_ram                                                  TMSS  ÿÿÿ    ÿ     'l                                    +-      blade0-performance                               Tue Feb  6 08:26:10 2024  ‚AÂe                                         |  +-   hal_sens_tbls                                    Fri Jun 16 04:59:49 2023  ¥@Œd                                         |  +-   scripts                                          Tue Feb  8 13:55:00 2022  ”Êb                                         |  +-   vcmp_union_tables                                Wed Jan  5 10:34:41 2022  ¡ÈÕa                                         |  +-   mgmt_acld                                        Wed Jan  5 10:33:46 2022  jÈÕa                                         |  +-   bigd_stat_segment.1                              Wed Jan  5 10:33:44 2022  hÈÕa                                         |  +-   bigd_stat_segment.0                              Wed Jan  5 10:33:44 2022  hÈÕa                                         |  +-   zxfrd                                            Wed Jan  5 10:33:43 2022  gÈÕa                                         |  +-   tmplugin_cbr                                     Wed Jan  5 10:33:43 2022  gÈÕa                                         |  +-   profile_xml_stat                                 Wed Jan  5 10:33:43 2022  gÈÕa                                         |  +-   tmplugin_ntlmconnpool                            Wed Jan  5 10:33:42 2022  fÈÕa                                         |  +-   lcdwarnseg                                       Wed Jan  5 10:33:41 2022  eÈÕa                                         |  +-   lacpd                                            Wed Jan  5 10:33:35 2022  _ÈÕa                                         |  +-   tmm2                                             Wed Jan  5 10:33:25 2022  UÈÕa                                         |  +-   tmm1                                             Wed Jan  5 10:33:25 2022  UÈÕa                                         |  +-   tmm3                                             Wed Jan  5 10:33:25 2022  UÈÕa                                         |  +-   tmm0                                             Wed Jan  5 10:33:22 2022  RÈÕa                                         |  +-   racoon0                                          Wed Jan  5 10:33:24 2022  TÈÕa                                         |  +-   tmipsecd                                         Wed Jan  5 10:33:04 2022  @ÈÕa                                         |  +-   pfmand                                           Wed Jan  5 10:33:02 2022  >ÈÕa                                         |  +-   logstat                                          Wed Jan  5 10:33:01 2022  =ÈÕa                                         |  +-   pccd_current_state                               Wed Jan  5 10:33:01 2022  =ÈÕa                                         |  +-   pccd_overlap_info                                Wed Jan  5 10:33:01 2022  =ÈÕa                                         |  +-   statsd                                           Wed Jan  5 10:32:59 2022  ;ÈÕa                                         |  +-   cert_order_mgmt                                  Wed Jan  5 10:32:59 2022  ;ÈÕa                                         |  +-   crl_mgr                                          Wed Jan  5 10:32:59 2022  ;ÈÕa                                         |  +-   bundle_mgmt                                      Wed Jan  5 10:32:59 2022  ;ÈÕa                                         |  +-   lldpd                                            Wed Jan  5 10:32:57 2022  9ÈÕa                                         |  +-   latency                                          Wed Jan  5 10:32:47 2022  /ÈÕa                                         |  +-   hal_lop_cpld                                     Wed Jan  5 10:32:20 2022  ÈÕa                                         |  +-   hal                                              Wed Jan  5 10:32:19 2022  ÈÕa      

  • Those files are TMM's idea of resource usage. Remember that TMM is a user space microkernel so it has its own scheduler and memory management. So its idea about "free memory" and "cpu use" is different than the linux kernel's. To read what its statistics are, you can use:

    tmctl -a -f <tmstat table file>

     

    This solution article has more information about it:

    https://my.f5.com/manage/s/article/K91433389

     

    These files are a binary-only format and the column alignments sometimes change by version so make sure to use matching version tmstat table files and tmctl binary.

  • Those files are TMM's idea of resource usage. Remember that TMM is a user space microkernel so it has its own scheduler and memory management. So its idea about "free memory" and "cpu use" is different than the linux kernel's. To read what its statistics are, you can use:

    tmctl -a -f <tmstat table file>

     

    This solution article has more information about it:

    https://my.f5.com/manage/s/article/K91433389

     

    These files are a binary-only format and the column alignments sometimes change by version so make sure to use matching version tmstat table files and tmctl binary.

    • asotoaec's avatar
      asotoaec
      Icon for Altostratus rankAltostratus

      Thanks Lucas, your answer was very usefull for me.

  • asotoaec I believe you can gather the data you are looking for from the performance stats export on the F5. You would go to "Statistics" -> "Dashboard" then in the top right click on "ACTIONS" dropdown and finally click on "Download Data (CSV)". From here you can select timeframe, metrics, data, and then click download.

  • You can also use the RESTfull API and query the F5 on a schedule.

    https://clouddocs.f5.com/api/icontrol-soap/System__Statistics.html

    Alternatively, you can also perhaps investigate SNMP OIDs that may be helpful.

    Not sure it is good use of time to reverse engineer the F5 product to obtain stats from a static snapshot in time. I am not aware of the format used here — have you tried using mine files and testing the file via standard unix commands? https://shapeshed.com/unix-file/