find-unprocessed-tasks.sh 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/bin/bash
  2. #--------------------------------------------------------------------#
  3. # Find all currently unprocessed tasks by searching the celeryd
  4. # log file.
  5. #
  6. # Please note that this will also include tasks that raised an exception,
  7. # or is just under active processing (will finish soon).
  8. #
  9. # Usage:
  10. #
  11. # # Using default log file /var/log/celeryd.log
  12. # $ bash find-unprocessed-tasks.sh
  13. #
  14. # # Using a custom logfile
  15. # # bash find-unprocessed-tasks.sh ./celeryd.log
  16. #
  17. #--------------------------------------------------------------------#
  18. DEFAULT_LOGFILE=/var/log/celeryd.log
  19. export CELERYD_LOGFILE=${1:-$DEFAULT_LOGFILE}
  20. get_start_date_by_task_id() {
  21. task_id="$1"
  22. grep 'Received task:' $CELERYD_LOGFILE | \
  23. grep "$task_id" | \
  24. perl -nle'
  25. /^\[(.+?): INFO/; print $1' | \
  26. sed 's/\s*$//'
  27. }
  28. get_end_date_by_task_id() {
  29. task_id="$1"
  30. grep processed $CELERYD_LOGFILE | \
  31. grep "$task_id" | \
  32. perl -nle'
  33. /^\[(.+?): INFO/; print $1 ' | \
  34. sed 's/\s*$//'
  35. }
  36. get_all_task_ids() {
  37. grep 'Received task:' $CELERYD_LOGFILE | \
  38. perl -nle'/Received task:.+?\[(.+?)\]/; print($1)'
  39. }
  40. search_logs_for_task_id() {
  41. grep "$task_id" $CELERYD_LOGFILE
  42. }
  43. report_unprocessed_task() {
  44. task_id="$1"
  45. date_start="$2"
  46. cat <<EOFTEXT
  47. "---------------------------------------------------------------------------------"
  48. | UNFINISHED TASK: $task_id [$date_start]
  49. "---------------------------------------------------------------------------------"
  50. Related logs:
  51. EOFTEXT
  52. search_logs_for_task_id "$task_id"
  53. }
  54. for task_id in $(get_all_task_ids); do
  55. date_start=$(get_start_date_by_task_id "$task_id")
  56. date_end=$(get_end_date_by_task_id "$task_id")
  57. if [ -z "$date_end" ]; then
  58. report_unprocessed_task "$task_id" "$date_start"
  59. fi
  60. done