WADebug: Công cụ khắc phục sự cố cho API WhatsApp Business

Phiên bản hiện tại: 0.1.5

WADebug là công cụ dòng lệnh giúp phát hiện bất kỳ sự cố tiềm ẩn nào khi thiết lập API WhatsApp Business, đồng thời làm cho các yêu cầu trợ giúp từ dịch vụ hỗ trợ WhatsApp trở nên hiệu quả hơn.

WADebug hỗ trợ các kiểu thiết lập khác nhau như trình bày dưới đây. Chạy kiểm tra là các lệnh chạy nhiều hành động khác nhau để xác minh cách thiết lập ứng dụng API WhatsApp Business. Truy xuất nhật ký là lệnh dùng để truy xuất tất cả nhật ký vùng chứa.

Kiểu thiết lậpChạy kiểm traTruy xuất nhật ký

Trường hợp đơn kết nối tại chỗ

Được hỗ trợ (hướng dẫn)

Được hỗ trợ (hướng dẫn)

Độ sẵn sàng cao/Đa kết nối tại chỗ

Không được hỗ trợ

Được hỗ trợ (hướng dẫn)

AWS

Không được hỗ trợ

Được hỗ trợ (hướng dẫn)

Kubernetes

Không được hỗ trợ

Không được hỗ trợ

Tài liệu này bao gồm các nội dung sau:

Cài đặt WADebug

WADebug là một công cụ dòng lệnh được viết bằng ngôn ngữ Python. Cài đặt bằng pip:

pip3 install wadebug

Cách nâng cấp:

pip3 install wadebug --upgrade

Cách gỡ cài đặt:

pip3 uninstall wadebug

Để xác thực mình đã cài đặt wadebug, bạn có thể chạy:

wadebug --help

Chạy kiểm tra

WADebug có một loạt hành động để xác minh việc thiết lập API WhatsApp Business. Theo mặc định, công cụ này chạy tất cả các hành động hiện có. Nếu hệ thống trả về trạng thái problem hoặc warning thì nội dung mô tả, thông tin chi tiết và phương thức giảm thiểu khả thi sẽ hiển thị để hỗ trợ bạn khắc phục sự cố thiết lập. Ngoài ra, bạn sẽ được nhắc về cách tải nhật ký lên Facebook nếu cần trợ giúp.

Để sử dụng công cụ này, hãy chạy lệnh sau từ máy lưu trữ vùng chứa docker API WhatsApp Business:

wadebug

Nếu một hành động dẫn đến wadebug_error, lỗi này sẽ cho biết đã xảy ra cự cố với chính công cụ. Nếu bạn gặp sự cố như vậy, vui lòng báo cáo lỗi này qua kênh Hỗ trợ trực tiếp



File cấu hình

WADebug yêu cầu có file cấu hình (wadebug.conf.yml) trong thư mục hiện tại để chạy kiểm tra đầy đủ.

Khi chạy wadebug mà không có file cấu hình, công cụ sẽ nhắc tạo file bộ khung để bạn điền vào các giá trị cấu hình. Nếu không tìm thấy file cấu hình hoặc chưa đặt giá trị cấu hình, một số hành động sẽ bị bỏ qua do thiếu thông tin.

File cấu hình mẫu:

  
    # configurations related to the MySQL database
    db:
      # hostname of the MySQL database
      host: # for example, "0.0.0.0"
      # host port that the MySQL database uses
      # to connect to database container created by docker-compose scripts, use 33060
      port: # for example, 33060
      # username to connect to the MySQL database
      user: # for example, "root"
      # password of the username that is used to connect to the MySQL database
      password: # for example, "your_database_password"

    # configurations related to WhatsApp Business API
    webapp:
      # url accessible from the host running wadebug
      baseUrl: # https://localhost:9090
      # WhatsApp Business API user account credentials to call Support API
      user: # for example, "wadebug"
      # WhatsApp Business API user account credentials to call Support API
      password: # for example, "secretdebugger"
  

Liệt kê các hành động có thể thực hiện

Để kiểm tra các hành động có sẵn, hãy chạy lệnh sau:

wadebug ls

Chạy một phần

Để chỉ chạy một tập hợp con các hành động có sẵn, hãy nhập lệnh sau:

wadebug partial check_software_version check_mysql_version

Chế độ JSON

wadebug cung cấp 2 chế độ: chế độ tương tác và chế độ JSON.

Chế độ tương tác là chế độ mặc định, khi sử dụng chế độ này, bạn sẽ nhìn thấy các bảng kết quả, thông báo trực quan và được nhắc tạo file cấu hình, v.v.
Chế độ JSON hữu ích khi bạn muốn tích hợp wadebug vào một hệ thống tự động hóa để xác thực cách thiết lập API WhatsApp Business theo định kỳ hoặc mỗi lần bạn nâng cấp phiên bản API WhatsApp Business chẳng hạn.

Để chạy wadebug ở chế độ JSON, hãy chuyển cờ --json vào bất kỳ lệnh wadebug nào có sẵn:

wadebug --json

Phản hồi JSON hợp lệ sẽ được trả về:

{
   "containers_status":{
      "class":"CheckContainersAreUp",
      "user_facing_name":"containers_status",
      "result":"OK"
   },
   "check_mysql_connection":{
      "class":"CheckMySQLConnection",
      "user_facing_name":"check_mysql_connection",
      "result":"OK"
   },
   "check_software_version":{
      "class":"CheckSoftwareVersion",
      "user_facing_name":"check_software_version",
      "result":"OK"
   },
   "check_mysql_version":{
      "class":"CheckMySQLVersion",
      "user_facing_name":"check_mysql_version",
      "result":"OK"
   },
   "check_network":{
      "class":"CheckNetworkAction",
      "user_facing_name":"check_network",
      "result":"OK"
   },
   "check_mysql_permissions":{
      "class":"CheckMySQLPermissions",
      "user_facing_name":"check_mysql_permissions",
      "result":"OK"
   },
   "check_mysql_password":{
      "class":"CheckMySQLPassword",
      "user_facing_name":"check_mysql_password",
      "result":"OK"
   },
   "check_db_settings_exist":{
      "class":"CheckDbSettingsExist",
      "user_facing_name":"check_db_settings_exist",
      "result":"OK"
   },
   "check_webapp_port":{
      "class":"CheckWebappPortAction",
      "user_facing_name":"check_webapp_port",
      "result":"OK"
   }
}    
    

Thu thập và bỏ chọn dữ liệu về cách sử dụng

Mỗi lần wadebug chạy, dữ liệu về cách sử dụng (bao gồm cả hành động đã chạy và kết quả được trả về) sẽ được gửi đến Facebook để góp phần cải thiện công cụ này cũng như đẩy nhanh quá trình hỗ trợ WhatsApp qua kênh Hỗ trợ trực tiếp.

Nếu bạn không muốn chia sẻ dữ liệu về cách sử dụng với Facebook khi dùng công cụ này, hãy chạy wadebug với cờ --do-not-send-usage

wadebug partial check_network --do-not-send-usage

Lưu ý rằng mặc dù bạn vẫn thấy kết quả khắc phục sự cố trên máy, nhưng trải nghiệm khi tương tác với bộ phận hỗ trợ của chúng tôi có thể bị suy giảm.

Truy xuất nhật ký

wadebug mang lại một cách thuận tiện để truy xuất tất cả nhật ký vùng chứa, đồng thời có thể gửi nhật ký đến Facebook để trợ giúp hoạt động điều tra của đội ngũ hỗ trợ chúng tôi.

Truy xuất nhật ký mới nhất

Cách truy xuất nhật ký mới nhất trong wadebug_logs/ ở thư mục hiện tại:

wadebug logs

Thay đổi quan trọng:

  • v0.1.4 trở xuống: Lệnh wadebug logs truy xuất 10.000 dòng nhật ký sau cùng từ mỗi vùng chứa
  • v0.1.5 trở lên: Lệnh wadebug logs truy xuất 3 giờ nhật ký mới nhất từ mỗi vùng chứa

Truy xuất nhật ký bắt đầu từ ngày giờ cụ thể

[Mới kể từ v0.1.5] Để truy xuất 3 giờ nhật ký bắt đầu từ ngày giờ cụ thể (múi giờ GMT), hãy sử dụng tùy chọn --since. Ví dụ: lệnh sau sẽ truy xuất nhật ký từ 3:00:02 ngày 07/01/2020 (GMT) đến 6:00:02 ngày 07/01/2020 (GMT):

wadebug logs --since='2020-01-07 3:00:02'

Gửi nhật ký

Để gửi nhật ký đến Facebook, bạn cần thêm cờ --send. Bạn sẽ nhận được run_id trong phản hồi. Bạn có thể tham chiếu ID đó trong kênh Hỗ trợ trực tiếp để đẩy nhanh quá trình điều tra:

wadebug logs --send
wadebug logs --since='2020-01-07 3:00:02' --send

Truy xuất nhật ký từ cách thiết lập Độ sẵn sàng cao/Đa kết nối

Đối với chế độ Độ sẵn sàng cao/Đa kết nối mà trong đó vùng chứa được cài đặt trên một hoặc nhiều máy chủ, bạn cần đăng nhập vào từng máy chủ, cài đặt WADebug rồi chạy lệnh wadebug logs như đề cập ở trên.

Yêu cầu trợ giúp

Nếu bạn cần trợ giúp khắc phục sự cố thiết lập API WhatsApp Business, hãy mở phiếu yêu cầu Hỗ trợ trực tiếp với run_id được trả về sau khi bạn chạy wadebug. Qua đó, chúng tôi có thể xem báo cáo về các hành động đã chạy và kết quả tương ứng.

A report of this run has been uploaded to Facebook.  You can reference run_id (A5jedVKsdI_ZojRwL1_-MOd) in Direct Support (https://business.facebook.com/direct-support) tickets
  	

Nhật ký vùng chứa rất hữu ích khi khắc phục sự cố, để thu thập và gửi nhật ký vùng chứa đến Facebook, vui lòng chạy wadebug logs với cờ --send.

wadebug logs --send

và cung cấp run_id được trả về

Container logs have been uploaded to Facebook.  You can reference run_id (AcClyxkRJk3w1dEr8OAmsTn) in Direct Support (https://business.facebook.com/direct-support) tickets
  	

Nhật ký thay đổi

15/01/2020 (0.1.5)

  • Ngừng hỗ trợ python 2 🎉
  • Từ giờ, wadebug logs sẽ lấy nhật ký 3 giờ qua, thay vì 10.000 dòng nhật ký sau cùng
  • Thêm tùy chọn --since vào wadebug logs để truy xuất 3 giờ nhật ký bắt đầu từ giá trị ngày giờ đã chỉ định
  • [Sửa lỗi] Thất bại sớm ở chế độ json khi các thông số không tương thích được sử dụng

03/09/2019 (v0.1.4)

  • Giao diện người dùng mới và gọn hơn cho WADebug
  • [Sửa lỗi] Sửa cổng bị in sai khi có lỗi kết nối trong hành động check_network
  • [Sửa lỗi] Thêm các yêu cầu về đặc quyền MySQL bị thiếu đối với hành động check_mysql_permissions

26/04/2019 (v0.1.3)

  • Thêm các mục file cấu hình mới mà hành động mới yêu cầu
  • Thêm tùy chọn kiểm tra trạng thái webhook
  • Thêm lời nhắc nâng cấp WADebug khi có phiên bản mới trên PyPi
  • Thêm phản hồi điểm cuối hỗ trợ vào nhật ký được tải lên để khắc phục sự cố dễ dàng hơn
  • Nhật ký sự cố WADebug hiện được tải lên Facebook

28/12/2018 (v0.1.2)

  • Giới hạn kích thước của bản ghi được truy xuất
  • Lấy các bản kết xuất lõi nhớ coreapp trong trường hợp có sự cố
  • Thêm lệnh mới để truy xuất nhật ký mà không tải lên
  • Thêm enum34 làm mô-đun yêu cầu đối với các phiên bản thấp hơn Python 3.4

23/10/2018 (v0.1.1)

  • Phát hành ban đầu