簡體   English   中英

nginx視頻流統計

[英]nginx video streaming statistics

我正在使用ngx_http_mp4_module從服務器流式傳輸視頻。 我有一台可以被多個域訪問的服務器。

我使用以下配置nginx:

location /content/ {
    mp4;
    mp4_buffer_size       1m;
    mp4_max_buffer_size   5m;
}

我將所有視頻存儲在服務器中的/ content文件夾下,並通過url訪問它們: http : //example.com/content/testvideo.mp4

由於我可以訪問具有多個域的服務器,因此可以通過訪問以下網站觀看同一視頻

http://mydomain1.com/content/testvideo.mp4

要么

http://mydomain2.com/content/testvideo.mp4

問題是:如何記錄觀看視頻的網址以及多少秒的統計信息?

設置包括$host$request_time變量的日志記錄格式。

在該location指令中使用該日志記錄格式。

它在Nginx網站上有完整的文檔,以及可用於包括在日志中的變量列表,以下變量屬於http塊,並且是標准combined日志格式的修改版本,並在上面加上了兩個變量:

log_format streaming '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" $host $request_time';

這定義了名稱為streaming的日志格式,變量$host顯然是客戶端請求中的主機名。 根據文檔, $request_time是:

以毫秒為單位請求處理時間,以毫秒為單位; 從客戶端讀取第一個字節到將最后一個字節發送到客戶端后的日志寫入之間經過的時間

如果您的視頻是CBR,則還可以使用$bytes_sent記錄傳輸到客戶端的總數據,並計算以這種方式傳輸的視頻的持續時間。

一旦定義了自定義日志格式,就可以在流的位置塊中為該位置的請求設置指令,以使用該格式進行日志記錄,如下所示:

access_log /path/to/log/video.log streaming;

這只是寫入日志的路徑, streaming是用於此日志的日志格式。

現在,Nginx將創建一個日志文件,其中包含對該位置的所有請求,無論客戶端訪問的域是什么。

也許您希望每個域使用單獨的日志? 沒問題,只需將$host變量用作access_log指令中路徑的一部分

access_log /path/to/log/$host-video.log streaming;

現在,每個域都將擁有自己的日志。 example.com-video.log,example.net-video.log等

也許兩者都想要? 沒問題,您可以在同一級別內指定多個access_log指令:

access_log /path/to/log/video.log streaming;
access_log /path/to/log/$host-video.log streaming;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM