Tmctl使用简介
发布时间:2022-03-24 21:22:52

Tmctl使用简介

一、简要介绍

tmctl是用来实时显示F5 BIG-IP设备的一些统计信息,比如流量统计,内存/CPU统计,丢包率统计等。

统计出来的信息放在/shared/tmstat/snapshots/blade2/public/3600目录下。3600指的是间隔时间为一小时,即每隔一小时收集一次统计信息存储在table表里面。

tmctl的snapshot指F5会固定时间保存tmctl的统计信息,这样不仅可以看到当前的统计信息,还可以看到过去一段时间的统计信息(最长86400s),通过比较两次的差值,就可以缩小问题的范围。

Tmctl使用简介

二、内存命令使用

主要查看proc_pid_stat表中参数rss (Resident set size): 虚拟耗用内存

例如如下实例:

proc_pid_stat

=============


time proc_name pid ppid vsize rss

------------------- ---------- ----- ---- ---------- ------

2022-01-01T00:00:00 icrd_child 19747 8356 1410437120 275546

2022-01-02T00:00:00 icrd_child 19747 8356 1413582848 276545

2022-01-03T00:00:00 icrd_child 19747 8356 1417777152 277441

2022-01-04T00:00:00 icrd_child 19747 8356 1421971456 278387

2022-01-05T00:00:00 icrd_child 19747 8356 1426165760 277859

2022-01-06T00:00:00 icrd_child 19747 8356 1429311488 278899

2022-01-07T00:00:00 icrd_child 19747 8356 1433505792 279963

以上在过去一周中大约增加了22MB((1433505792-1410437120) /1024/1024=22MB)


查看占用内存具体使用分为三种:


第一种

想要看某个特定进程占用的内存可以用以下方法查看(示例为筛选 F5的gtmd进程在对应的proc_pid_stat表中每隔一小时的内存使用情况)。

tmctl -D /shared/tmstat/snapshots/ -w 900 proc_pid_stat -s time,proc_name,rss,vsize -R 3600 proc_name=gtmd | more


[root@GTM_A:Active:Changes Pending] config # tmctl -D /shared/tmstat/snapshots/ -w 900 proc_pid_stat -s time,proc_name,rss,vsize -R 3600 proc_name=gtmd | more

proc_pid_stat

=============

time                proc_name  rss     vsize

------------------- --------- ---- ---------

2022-03-16T17:00:00 gtmd      3394 177463296

2022-03-16T18:00:00 gtmd      3396 177463296

2022-03-16T19:00:00 gtmd      3396 177463296

2022-03-16T20:00:00 gtmd      3403 177463296

2022-03-16T21:00:00 gtmd      3402 177463296

2022-03-16T22:00:00 gtmd      3402 177463296

2022-03-16T23:00:00 gtmd      3402 177463296

2022-03-17T00:00:00 gtmd      3402 177463296

2022-03-17T01:00:00 gtmd      3402 177463296

2022-03-17T02:00:00 gtmd      3402 177463296

2022-03-17T03:00:00 gtmd      3402 177463296

2022-03-17T04:00:00 gtmd      3402 177463296

2022-03-17T05:00:00 gtmd      3394 177463296

2022-03-17T06:00:00 gtmd      3394 177463296

2022-03-17T07:00:00 gtmd      3394 177463296

2022-03-17T08:00:00 gtmd      3394 177463296

2022-03-17T09:00:00 gtmd      3394 177463296

2022-03-17T10:00:00 gtmd      3394 177463296

2022-03-17T11:00:00 gtmd      3432 177463296

2022-03-17T12:00:00 gtmd      3422 177463296

2022-03-17T13:00:00 gtmd      3422 177463296

2022-03-17T14:00:00 gtmd      3568 177463296

2022-03-17T15:00:00 gtmd      3553 177463296


第二种

使用proc_pid_stat筛选中占用内存top 20进程

在F5的命令行输入以下命令:

tmctl -c proc_pid_stat -s proc_name,processor,ppid,vsize,rss | sort -t "," -k 2nr | head -20

[root@GTM_A:Active:Changes Pending] config # tmctl -c proc_pid_stat -s proc_name,processor,ppid,vsize,rss | sort -t "," -k 2nr | head -20

java,7,31495,762003456,143994

tmm.0,0,31488,10543349760,44492

java,2,6943,5191925760,156531

java,2,30926,2821783552,64291

java,7,6944,1382432768,82413

apmd,7,6589,4796911616,26105

oauth,6,6938,1116733440,10396

avrd,6,6595,3352637440,59516

icrd_child,4,30391,371249152,32360

dosl7d,3,4748,5305790464,33236

f5-rest-node,2,8159,1311219712,18315

eca,2,7373,1443397632,11907

mysqld,2,3048,1360429056,97037

icrd_child,2,30391,367054848,29881

asm_config_serv,7,7119,281735168,36193

asm_config_serv,7,7119,218488832,21666

websso,7,31507,390803456,8660

websso,7,31507,390799360,8658

rewrite,7,31434,295997440,8620

rewrite,7,31434,295997440,8620


第三种

筛选出在某一特定时间段占用内存top 15进程(比如可筛选在23点和24点时间段占用内存较高的进程,然后比较一下哪个进程有变化,再针对性地去看进程)。F5命令如下:

tmctl -lf ./blade0-public-3600-2022-03-16T17\:00\:00 proc_pid_stat -s vsize,rss,resident,proc_name | sort -nrk1 | head -n 15


[root@GTM_A:Active:Changes Pending] 3600 # tmctl -lf ./blade0-public-3600-2022-03-16T17\:00\:00 proc_pid_stat -s vsize,rss,resident,proc_name | sort -nrk1 | head -n 15

10,543,349,760  44,492   44,492 tmm.0          

 5,305,790,464  33,305   33,305 dosl7d         

 5,191,708,672 153,272  153,272 java           

 4,796,911,616  30,748   30,748 apmd           

 3,349,983,232   8,505    8,505 admd           

 3,348,488,192  57,949   57,949 avrd           

 3,135,827,968  42,928   42,928 bd             

 3,040,403,456   8,187    8,187 pabnagd        

 2,754,674,688  65,547   65,547 java           

 2,660,126,720   7,558    7,558 dwbld          

 2,584,068,096   6,709    6,709 botd           

 2,524,770,304   6,615    6,615 mgmt_acld      

 2,520,166,400   5,775    5,775 datasyncd      

 1,576,562,688   9,909    9,909 monpd          

 1,443,397,632  11,917   11,917 eca             

注:-D 在使用到snapshot时必须使用

-w表示输出的宽度

-s 输出哪些列,用逗号分开

-C 以CSV格式输出

-R 间隔时间

其他关于tmctl各个参数的解释可进入到F5命令行 tmctl -h输出查看。

三、其他命令使用

       tmctl -d blade virtual_server_cpu_stat

这个用来显示过去的5秒钟/1分钟/5分钟时间内F5设备每个VS的CPU使用率,偶数核(数据平面CPU,也就是tmm)的CPU使用率很高,我们就要重点关注一下这个VS。

Tmctl使用简介

       tmctl –d blade rst_cause_stat

这个表用来显示IG-IP发送TCP RESET的统计,如果我们在某段时间里看到F5发送了大量的TCP reset包,无法抓包的情况下可以连续的输出几次这个table来看那个统计值增长的最快来确定原因。

Tmctl使用简介

       tmctl -d blade cpu_info_stat

获取BIG-IP每个核CPU利用率

Tmctl使用简介


四、额外补充:

理论上我们所有SNMP mib值和我们在F5 特有的tmsh里show出来的数据,其原始数据都保存在tmctl的各种table表里。但如果出现以下两种情况,那用tmctl -d Blade命令收集数据失败,需要使用命令tmctl -d /var/tmstat/blade来收集数据。

1.您正在使用 SNMP 自定义 MIB。

2.您有一个调用tmctl -d Blade命令的自定义脚本,该命令收集自定义 SNMP MIB 的信息。

咨询电话
400-068-1180