Thursday, November 21, 2024

[Asterisk] Tìm hiểu về file Queue Log

-

File /var/log/asterisk/queue_log là một file ghi lại (log file) trong hệ thống Asterisk, dùng để ghi lại thông tin liên quan đến hoạt động của hàng đợi (queue) trong hệ thống cuộc gọi của Asterisk.

Dưới đây là một số thông tin về file queue_log và cách nó hoạt động:

  • Mục đích của queue_log: File queue_log được sử dụng để ghi lại các sự kiện và hoạt động liên quan đến việc xử lý cuộc gọi trong các hàng đợi của Asterisk. Các sự kiện này bao gồm việc cuộc gọi được thêm vào hàng đợi, cuộc gọi bị xóa khỏi hàng đợi, cuộc gọi được chuyển tiếp từ hàng đợi này sang hàng đợi khác, và nhiều hoạt động khác liên quan đến quản lý cuộc gọi.
  • Định dạng file log: File queue_log thường được viết theo định dạng bản ghi (log format). Mỗi dòng trong file log đại diện cho một sự kiện hoặc hoạt động cụ thể, và các thông tin liên quan được phân tách bằng các dấu phẩy (,).
  • Thông tin ghi lại: Mỗi dòng trong file queue_log chứa các thông tin như thời gian sự kiện xảy ra, tên hàng đợi, tên cuộc gọi, trạng thái cuộc gọi, và nhiều thông tin khác về việc xử lý cuộc gọi.
  • Các sự kiện và hoạt động: File queue_log ghi lại nhiều loại sự kiện và hoạt động liên quan đến hàng đợi. Ví dụ về các sự kiện và hoạt động bao gồm:
    • Cuộc gọi được thêm vào hàng đợi.
    • Cuộc gọi bị loại bỏ khỏi hàng đợi.
    • Cuộc gọi được chuyển tiếp từ hàng đợi này sang hàng đợi khác.
    • Thông tin về thời gian xử lý cuộc gọi trong hàng đợi.
    • Thông tin về sự kiện cuộc gọi được trả lời hoặc bị từ chối.
  • Quản lý và theo dõi: Thông qua file queue_log, người quản trị hệ thống Asterisk có thể theo dõi và quản lý hoạt động của hàng đợi. Điều này bao gồm việc theo dõi thời gian chờ của cuộc gọi trong hàng đợi, đánh giá hiệu suất của hàng đợi, và xác định các sự cố hoặc vấn đề liên quan đến việc xử lý cuộc gọi.
  • Cấu hình và tùy chỉnh: Cấu hình và vị trí lưu trữ của file queue_log có thể được tùy chỉnh trong cài đặt Asterisk. Người quản trị hệ thống có thể xác định cách ghi log, loại sự kiện được ghi lại, và nơi lưu trữ file queue_log.

File queue_log là một công cụ hữu ích cho việc theo dõi và quản lý cuộc gọi trong hệ thống Asterisk, đặc biệt trong các tình huống liên quan đến quản lý hàng đợi cuộc gọi.

Dưới đây là ví dụ nội dung của 1 file queue_log.

1694621576|NONE|NONE|NONE|QUEUESTART|
1694621585|NONE|NONE|NONE|QUEUESTART|
1694621593|1694621591.0|Operator|SIP/2001|ADDMEMBER|
1694621696|NONE|NONE|NONE|QUEUESTART|
1694621706|NONE|NONE|NONE|QUEUESTART|
1694621714|1694621712.0|Operator|SIP/2001|ADDMEMBER|
1694621715|1694621712.0|Operator|SIP/2001|REMOVEMEMBER|
1694622296|1694622294.1|Operator|SIP/2001|ADDMEMBER|
1694622297|1694622294.1|Operator|SIP/2001|REMOVEMEMBER|
1694622358|1694622356.2|Operator|SIP/2001|ADDMEMBER|
1694622359|1694622356.2|Operator|NONE|ENTERQUEUE||2000|1
1694622362|1694622356.2|Operator|SIP/2001|CONNECT|3|1694622359.3|2
1694622365|1694622356.2|Operator|SIP/2001|COMPLETECALLER|3|3|1
1694622365|1694622356.2|Operator|SIP/2001|REMOVEMEMBER|
1694622371|1694622369.4|Operator|SIP/2001|ADDMEMBER|
1694622372|1694622369.4|Operator|NONE|ENTERQUEUE||2000|1
1694622374|1694622369.4|Operator|NONE|ABANDON|1|1|2
1694622374|1694622369.4|Operator|SIP/2001|REMOVEMEMBER|
1694622381|1694622379.6|Operator|SIP/2001|ADDMEMBER|
1694622382|1694622379.6|Operator|NONE|ENTERQUEUE||2000|1
1694622384|1694622379.6|Operator|SIP/2001|RINGNOANSWER|2000
1694622389|1694622379.6|Operator|NONE|EXITWITHTIMEOUT|1|1|7
1694622389|1694622379.6|Operator|NONE|ENTERQUEUE||2000|1
1694622392|1694622379.6|Operator|SIP/2001|RINGNOANSWER|3000
1694622392|1694622379.6|Operator|NONE|EXITWITHTIMEOUT|1|1|3
1694622392|1694622379.6|Operator|SIP/2001|REMOVEMEMBER|

Ví dụ ta phân tích dòng dữ liệu 1694622362|1694622356.2|Operator|SIP/2001|CONNECT|3|1694622359.3|2 trong file queue_log của Asterisk chứa thông tin về một sự kiện hoặc hoạt động liên quan đến cuộc gọi trong một hàng đợi (queue).

Dưới đây là phân tích ý nghĩa của các trường trong dòng dữ liệu này:

  • 1694622362: Đây là thời điểm xảy ra sự kiện, thường là dạng timestamp hoặc số giây kể từ một thời điểm cố định. Trong trường hợp này, đây là thời điểm sự kiện xảy ra.
  • 1694622356.2: Đây là thời gian bắt đầu của sự kiện hoặc thời gian mà sự kiện này bắt đầu xảy ra.
  • Operator: Trường này chứa tên của hàng đợi (queue) liên quan đến sự kiện. Trong trường hợp này, hàng đợi có tên “Operator”.
  • SIP/2001: Đây là kênh (channel) hoặc cuộc gọi liên quan đến sự kiện. Trong trường hợp này, cuộc gọi được đề cập có liên quan đến kênh SIP/2001.
  • CONNECT: Đây là sự kiện hoặc hoạt động cụ thể được ghi lại. Trong trường hợp này, sự kiện là “CONNECT,” có thể chỉ ra cuộc gọi đã được kết nối hoặc bắt đầu xử lý.
  • 3: Trường này có thể chứa thông tin liên quan đến sự kiện hoặc một thứ tự cụ thể của cuộc gọi trong hàng đợi. Trong trường hợp này, nó có giá trị “3.”
  • 1694622359.3: Đây là thời gian mà sự kiện hoặc hoạt động này kết thúc hoặc thời điểm sự kiện tiếp theo bắt đầu. Trong trường hợp này, đây là thời gian kết thúc của sự kiện.
  • 2: Trường này có thể chứa thông tin bổ sung liên quan đến sự kiện hoặc mục đích khác. Trong trường hợp này, nó có giá trị “2.”

Dòng dữ liệu này có thể mô tả một cuộc gọi hoặc sự kiện liên quan đến việc xử lý cuộc gọi trong hàng đợi “Operator” với thông tin về thời gian, kênh, sự kiện, và một số thông tin bổ sung. Thông qua file queue_log, người quản trị hệ thống có thể theo dõi và quản lý hoạt động của hàng đợi cuộc gọi trong Asterisk.

Bạn có thể sử dụng Python để phân tích queue_log.

import json

file_path = '/var/log/asterisk/queue_log'

def parse_queue_log_files_service(file_path):
    with open(file_path, 'r') as file:
        lines = file.readlines()

    parsed_data = []
    
    for line in lines:
        fields = line.strip().split('|')
        if len(fields) >= 8:
            event = {
                "timestamp": int(fields[0]),
                "start_time": float(fields[1]),
                "queue_name": fields[2],
                "channel": fields[3],
                "event_type": fields[4],
                "event_data": fields[5],
                "extra_data1": fields[6],
                "extra_data2": fields[7],
                "exten": fields[3].split("/")[-1] if fields[3].startswith("SIP/") else ""
            }
            parsed_data.append(event)

    print(json.dumps(parsed_data, indent=4))

    return parsed_data

Và bạn sẽ có kết quả.

[
    {
        "channel": "NONE",
        "event_data": "",
        "event_type": "ENTERQUEUE",
        "exten": "",
        "extra_data1": "2000",
        "extra_data2": "1",
        "queue_name": "Operator",
        "start_time": 1694622356.2,
        "timestamp": 1694622359
    },
    {
        "channel": "SIP/2001",
        "event_data": "3",
        "event_type": "CONNECT",
        "exten": "2001",
        "extra_data1": "1694622359.3",
        "extra_data2": "2",
        "queue_name": "Operator",
        "start_time": 1694622356.2,
        "timestamp": 1694622362
    },
    {
        "channel": "SIP/2001",
        "event_data": "3",
        "event_type": "COMPLETECALLER",
        "exten": "2001",
        "extra_data1": "3",
        "extra_data2": "1",
        "queue_name": "Operator",
        "start_time": 1694622356.2,
        "timestamp": 1694622365
    }
]

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories