分析任務執行時間

在遇到執行 playbook 花費較多時間的情況時,該怎麼去進行分析,找出執行效能瓶頸呢?

在 ansible-core 2.15 版以前,可以在 ansible.cfg 裡加上 callback_whitelist = profile_tasks 來進行分析。 在 ansible-core 2.15 版以後,就強制要使用新的設定 callback_enabled = profile_tasks 了。

設定方法如下:(ansible.cfg 可以是在 playbook 所在的路徑,也可以修改 /etc/ansible/ansible.cfg)

# 2.15 之前
[defaults]
callback_whitelist = profile_tasks
# 2.15 之後 
[defaults]
callback_enabled = profile_tasks

那麼在執行 playbook 時,就會輸出每個 task 的運行時間,讓你知道哪個 task 花費最多時間。

PLAY [NTP] *************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
Monday 18 April 2022  10:39:45 +0800 (0:00:00.016)       0:00:00.016 ********** 
ok: [taipei-2-2]
ok: [taipei-2-1]
ok: [taipei-1-2]
ok: [taipei-1-1]
ok: [taipei-1-3]
ok: [tainan-1-3]
ok: [tainan-1-2]
ok: [tainan-1-1]
ok: [tainan-1-4]
ok: [taipei-2-3]

TASK [Make sure NTP enabled and started] *******************************************************************************
Monday 18 April 2022  10:39:55 +0800 (0:00:10.116)       0:00:10.133 ********** 
ok: [taipei-2-2]
ok: [taipei-2-1]
ok: [taipei-1-2]
ok: [taipei-1-3]
ok: [taipei-1-1]
ok: [taipei-2-3]
ok: [tainan-1-1]
ok: [tainan-1-3]
ok: [tainan-1-4]
ok: [tainan-1-2]

PLAY RECAP *************************************************************************************************************
tainan-1-1                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
tainan-1-2                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
tainan-1-3                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
tainan-1-4                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
taipei-1-1                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
taipei-1-2                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
taipei-1-3                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
taipei-2-1                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
taipei-2-2                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
taipei-2-3                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Monday 18 April 2022  10:39:58 +0800 (0:00:03.264)       0:00:13.397 ********** 
=============================================================================== 
Gathering Facts ------------------------------------------------------------------------------------------------ 10.12s
Make sure NTP enabled and started ------------------------------------------------------------------------------- 3.26s

除了 task 以外,也可以分析 role 執行效能的話,這時可以再加上 profile_roles

# 2.15 之後 
[defaults]
callback_enabled = profile_tasks,profile_roles

參考資料