超碰91资源站-超碰97豆花-超碰97人妻-超碰97人人干-超碰97人人香蕉-超碰97天天操-超碰97在线资源站-超碰97资源站共享-超碰97资源站总站-超碰aa在线91-超碰av操-超碰爱爱

半岛外围网上直营

amCharts應用實例:日志分析

轉帖|使用教程|編輯:龔雪|2014-08-21 09:31:35.000|閱讀 1024 次

概述:在眾多JavaScript圖表工具中,amcharts以其易操作性受到廣大用戶好評,我們可以使用amcharts結合ElasticSearch做webserver 日志分析,amcharts強大的數據可視化效果,可以讓我們的分析更直觀、更有效。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

之前有一篇從 ElasticSearch 官網摘下來的博客《【翻譯】用ElasticSearch和Protovis實現數據可視化》。不過一來 Protovis 已經過時,二來 不管是 Protovis 的進化品 D3 還是 Highchart什么的,我覺得在多圖方面都還不如 amcharts 好用。所以在最后依然選擇了老牌的 amcharts 完成。

展示品的大概背景還是 webserver 日志,嗯,這個需求應該是最有代表性的了。我們需要對webserver的性能有所了解。之前有一篇文章《Tatsumaki框架的小demo一個》,講的是通過terms_stats 獲取固定時段內請求時間的平均值。其實這個demo是可以參照官網博客修改成純js應用的。因為 Tatsumaki 在這里除了處理 HTTP 請求參數,什么都沒干。而且這個demo目的是展示 perl 框架的處理,所以amchart方面直接就寫死了各種變量。

但是還有一種需求,比如你需要的是針對某個情況超過某個百分比的分時走勢統計。這時候必須多次請求 ES 來做運算,再讓 js 做,不是說不行,但是多一倍數據在網絡中傳輸,就不如在服務器端封裝 API 了 —— 其實是我 js 太爛這種事情,我會告訴你們么。。。

先上兩張效果圖,其實這個布局我是從 facetgrapher 項目偷來的,但這個項目只適合比較不同 index 之間同時間段的數據,我建議作者修改,作者說”我自己js也是半吊子水平”。。。

分地區錯誤情況統計

實時分運營商錯誤比例統計

利用 bullet 大小來表示 hasErr 的程度

查詢的 ES 庫情況如下:

$ curl "//10.4.16.68:9200/demo-photo/log/_mapping?pretty=1"
    {
      "log" : {
        "properties" : {
          "brower" : {
            "type" : "string"
          },
          "date" : {
            "type" : "date",
            "format" : "dateOptionalTime"
          },
          "fromArea" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "hasErr" : {
            "type" : "string"
          },
          "requestUrl" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "timeCost" : {
            "type" : "long"
          },
          "userId" : {
            "type" : "string"
          },
          "xnforword" : {
            "type" : "string"
          }
        }
      }
    }
    $ curl "//10.4.16.68:9200/demo-photo/log/_search?pretty=1&size=1" -d '{"query":{"match_all":{}}}'
    {
      "took" : 14,
      "timed_out" : false,
      "_shards" : {
        "total" : 10,
        "successful" : 10,
        "failed" : 0
      },
      "hits" : {
        "total" : 2330679,
        "max_score" : 1.0,
        "hits" : [ {
          "_index" : "demo-photo",
          "_type" : "log",
          "_id" : "iSI5xic7Qg2p9Sqk5yp-pQ",
          "_score" : 1.0, "_source" : {"hasErr":"false","date":"2012-12-06T15:04:21,983","userId":"123456789","requestUrl":"//photo.demo.domain.com/path/to/your/app/test.jpg","brower":"chrome17.0.963.84","timeCost":750,"xnforword":["192.168.1.123","10.10.10.10"],"fromArea":"CN-UNI-OTHER"}
        } ]
      }
    }

然后后臺是我慣用的 Dancer 框架:

package AnalysisDemo;
    use Dancer ':syntax';
    use Dancer::Plugin::Ajax;
    use ElasticSearch;
    use POSIX qw(strftime);
    no  warnings;
    my $elsearch         = ElasticSearch->new( { %{ config->{plugins}->{ElasticSearch} } } );
    my $index_prefix     = 'demo-';
    my $type             = 'log';
    # 這里是對ip庫的歸類。數據是需要提前導入ES的,這可以是logstash發揮作用
    my $default_provider = {
        yidong    => [qw(CN-CRN CN-CMN)],
        jiaoyu    => [qw(CN-CER CN-CST)],
        dianxin   => [qw(CN-CHN)],
        liantong  => [qw(CN-UNI CN-CNC)],
        guangdian => [qw(CN-SCN)],
        haiwai => [qw(OS)],
    };
    get '/' => sub {
        # 通過 state API 獲取 ES 集群現有的所有index列表
        # 因為是一個域名一個index,這樣就有了前段頁面上的域名下拉選擇框
        my $indices = $elsearch->cluster_state->{routing_table}->{indices};
        template 'demo/chart',
          {
            providers => [ sort keys %$default_provider ],
            datasources =>
              [ grep { /^$index_prefix/ && s/$index_prefix// } keys %$indices ],
            inputfrom => strftime("%F\T%T", localtime(time()-864000)),
            inputto => strftime("%F\T%T", localtime()),
          };
    };
    # 這里把 api 拆成服務商和區域兩個,沒啥特殊原因,因為是分兩回寫的,汗
    # 其實可以看到最開始的請求參數類似,最后json的field名字都一樣
    ajax '/api/provider' => sub {
        my $param = from_json(request->body);
        my $index = $index_prefix . $param->{'datasource'};
        my $from  = $param->{'from'} || 'now-10d';
        my $to    = $param->{'to'} || 'now';
        my $providers = $param->{'provider'};
        my ( $pct, $chartData );
        for my $provider ( sort @{$providers} ) {
            my $provider_pct;
            # 這里是比較麻煩的一點,因為一個區域在ip庫里可能標記成多個,比如鐵通和移動,現在都是移動
            for my $area ( @{ $default_provider->{$provider} } ) {
                my $res = pct_count( $index, $area, $from, $to );
                for my $time ( sort keys %{$res} ) {
                    $provider_pct->{$time}->{count} += $res->{$time}->{count};
                    $provider_pct->{$time}->{error} += $res->{$time}->{error};
                    $provider_pct->{$time}->{slow}  += $res->{$time}->{slow};
                }
            }
            # 這里因為可能沒有錯誤,所以前面關閉了常用的 warnings 警告
            for my $time ( sort keys %{$provider_pct} ) {
                my $right_pct = 100;
                $right_pct =
                  100 -
                  $provider_pct->{$time}->{slow} / $provider_pct->{$time}->{count}
                  * 100;
                $pct->{$time}->{$provider} = sprintf "%.2f", $right_pct;
                $pct->{$time}->{"${provider}Err"} = sprintf "%.2f",
                  $provider_pct->{$time}->{error} / $provider_pct->{$time}->{count}
                  * 100;
                $pct->{$time}->{"${provider}Size"} = sprintf "%.0f",
                  $pct->{$time}->{"${provider}Err"};
            }
        };
        for my $time ( sort keys %$pct ) {
            my $data->{date} = $time;
            for my $provider ( @$providers ) {
                $data->{$provider} = $pct->{$time}->{$provider} || 100;
                $data->{"${provider}Err"} = $pct->{$time}->{"${provider}Err"} || 0;
                # 百分比太低,所以翻 5 倍來作為 bullet 的大小
                $data->{"${provider}Size"} =
                  $pct->{$time}->{"${provider}Size"} * 5 || 0;
            };
            push @$chartData, $data;
        };
        my $res = {
            type => "line",
            categoryField => "date",
            graphList => $providers,
            chartData => $chartData,
        };
        return to_json($res);
    };
    ajax '/api/area' => sub {
        my $param = from_json(request->body);
        my $index = $index_prefix . $param->{'datasource'};
        my $limit = $param->{'limit'} || 50;
        my $from  = $param->{'from'} || 'now-10d';
        my $to    = $param->{'to'} || 'now';
        # 這是后來寫的,盡可能把 sub 拆分了,所以 ajax 這里就很簡略
        # 當然因為不考慮多運營商的問題,本身也容易一些
        my $res = pct_terms( $index, $limit, $from, $to );
        return to_json($res);
    };
    sub pct_terms {
        my ( $index, $limit, $from, $to ) = @_;
        my $area_all_count = area_terms( $index, 0,    $limit, $from, $to );
        my $area_err_count = area_terms( $index, 2000, $limit, $from, $to );
        my ( $error, $chartData );
        for ( @{$area_err_count} ) {
            $error->{ $_->{term} } = $_->{count};
        }
        for ( @{$area_all_count} ) {
            push @$chartData, {
                area  => $_->{term},
                error => $error->{ $_->{term} } || 0,
                right => $_->{count} - $error->{ $_->{term} },
            };
        }
        my $res = {
            type => "column",
            categoryField => "area",
            graphList => [qw(right error)],
            chartData => $chartData,
        };
        return $res;
    }
    sub pct_count {
        my ( $index, $area, $from, $to ) = @_;
        my $level = $area eq 'OS' ? 3000 : 2000;
        my $all_count  = histo_count( $index, 0,      $area, $from, $to );
        my $slow_count = histo_count( $index, $level,   $area, $from, $to );
        my $err_count  = histo_count( $index, 'hasErr', $area, $from, $to );
        my $res;
        for ( @{$slow_count} ) {
            $res->{ $_->{time} }->{slow} = $_->{count};
        }
        for ( @{$err_count} ) {
            $res->{ $_->{time} }->{error} = $_->{count};
        }
        for ( @{$all_count} ) {
            $res->{ $_->{time} }->{count} = $_->{count};
        }
        return $res;
    }
    # 下面開始的兩個才是真正發 ES 請求的地方
    sub area_terms {
        my ( $index, $level, $limit, $from, $to ) = @_;
        my $data = $elsearch->search(
            index  => $index,
            type   => $type,
            size   => 0,
            facets => {
                area => {
                    facet_filter => {
                        and => [
                            {
                                range => {
                                    date => {
                                        from => $from,
                                        to   => $to
                                    },
                                },
                            },
                            {
                                numeric_range =>
                                  { timeCost => { gte => $level, }, },
                            },
                        ],
                    },
                    # 使用最簡單的 terms facets API,因為只用計數就好了
                    terms => {
                        field => "fromArea",
                        size  => $limit,
                    }
                }
            }
        );
        return $data->{facets}->{area}->{terms};
    }
    sub histo_count {
        my ( $index, $level, $area, $from, $to ) = @_;
        # 根據 level 參數判斷使用 hasErr 還是 timeCost 列數據
        my $level_ref =
          $level eq 'hasErr'
          ? { term => { hasErr => 'true' } }
          : { numeric_range => { timeCost => { gt => $level } } };
        my $facets = {
            pct => {
                facet_filter => {
                    # 這里條件比較多,所以要用 bool API,不能用 and 了
                    bool => {
                        # must 可以提供多個條件作為 AND 數組
                        # 此外還有 must_not 作為 AND NOT 數組
                        # should 作為 OR 數組
                        must => [
                            {
                                range => {
                                    date => {
                                        from => $from,
                                        to   => $to
                                    },
                                },
                            },
                            { prefix => { fromArea => $area } },
                            $level_ref,
                        ],
                    },
                },
                # 這里是需要針對專門的時間列做匯總,所以用 date_histogram 了,具體說明之前有博客
                date_histogram => {
                    field    => "date",
                    interval => "1h",
                }
            }
        };
        my $data = $elsearch->search(
            index  => $index,
            type   => $type,
            facets => $facets,
            size   => 0,
        );
        return $data->{facets}->{pct}->{entries};
    }

其實把里面請求的hash拆開來一個個定義,然后根據情況組合,但是不方便察看作為 demo 的整體情況。

然后看template里怎么寫。這里雖然有兩個效果圖,但是只有一個template喲:

<link rel="stylesheet" href="[% $request.uri_base %]/amcharts/style.css" type="text/css">
<script src="[% $request.uri_base %]/amcharts/amcharts.js" type="text/javascript"></script>
<script type="text/javascript">
  var chart;
  function createAmChart(data) {
    // 清空原有圖形
    $("#chartdiv").empty();
    // 如果是時間軸線圖,需要把date字符轉成Date對象
    if ( data.categoryField == "date" ) {
      for ( var j = 0; j < data.chartData.length; j++ ) {
        data.chartData[j].date = new Date(Number(data.chartData[j].date));
      }
    }
    chart = new AmCharts.AmSerialChart();
    // 拖動條等圖片的路徑
    chart.pathToImages = "/amcharts/images/";
    chart.dataProvider = data.chartData;
    chart.categoryField = data.categoryField;
    // 如果是柱狀圖,可以顯示 3D 效果
    if ( data.type == 'column' ) {
//      chart.rotate = true;
      chart.depth3D = 20;
      chart.angle = 30;
    }
    var categoryAxis = chart.categoryAxis;
    categoryAxis.fillAlpha = 1;
    categoryAxis.fillColor = "#FAFAFA";
    categoryAxis.axisAlpha = 0;
    categoryAxis.gridPosition = "start";
    // 時間軸需要解析Date對象
    if ( data.categoryField == "date" ) {
      categoryAxis.parseDates = true;
      categoryAxis.minPeriod = "hh";
    }
    var valueAxis = new AmCharts.ValueAxis();
    valueAxis.dashLength = 5;
    valueAxis.axisAlpha = 0;
    // 指定柱狀圖為疊加模式,這里有多種模式可以看文檔
    if ( data.type == 'column' ) {
      valueAxis.stackType = "regular";
    }
    chart.addValueAxis(valueAxis);
    // 這里有個有趣的事情,如果不把graph當數組直接循環,效果也沒問題
    // 我只能猜測是 addGraph 后數據其實已經緩存到 chart 了
    var graph = [];
    var colors = ['#FF6600', '#FCD202', '#B0DE09', '#0D8ECF', '#2A0CD0', '#CD0D74', '#CC0000', '#00CC00', '#0000CC', '#DDDDDD', '#999999', '#333333', '#990000'];
    for ( var i = 0; i < data.graphList.length; i++ ) {
      graph[i] = new AmCharts.AmGraph();
      graph[i].title = data.graphList[i];
      graph[i].valueField = data.graphList[i];
      graph[i].type = data.type;
      if ( data.type == 'column' ) {
        graph[i].lineAlpha = 0;
        graph[i].fillAlphas = 1;
      } else {
        graph[i].valueField = data.graphList[i];
        graph[i].descriptionField = data.graphList[i] + "Err";
        graph[i].bulletSizeField = data.graphList[i] + "Size";
        graph[i].bullet = "round";
        // 設定為空心圓圈
        graph[i].bulletColor = "#ffffff";
        graph[i].bulletBorderAlpha = 1;
        // amchart 本來有默認顏色,不過前面因為修改了圓內的顏色,所以其他顏色無法繼承默認設定了
        graph[i].bulletBorderColor =  colors[i];
        graph[i].lineColor =  colors[i];
        graph[i].lineAlpha = 1;
        graph[i].lineThickness = 1;
        graph[i].balloonText = "[[value]]% / hasErr:[[description]]%";
      }
      chart.addGraph(graph[i]);
    }
    // 加圖例,這樣可以在圖上隨時勾選察看具體某個數據,也方便某數據異常的時候影響察看其他
    var legend = new AmCharts.AmLegend();
    legend.position = "right";
    legend.horizontalGap = 10;
    legend.switchType = "v";
    chart.addLegend(legend);
    // 加拖拉軸,這樣可以拖動察看細節,這個功能很贊
    var scrollbar = new AmCharts.ChartScrollbar();
    scrollbar.graph = graph[0];
    scrollbar.graphType = "line";
    scrollbar.height = 30;
    chart.addChartScrollbar(scrollbar);
    var cursor = new AmCharts.ChartCursor();
    chart.addChartCursor(cursor);
    chart.write("chartdiv");
  };
  function drawChart() {
    var provider = [];
    $("#provider :selected").each(function(){
       provider.push( $(this).val() );
    });
    var datasource = $("#datasource :selected").val();
    var apitype = $(":radio:checked").val();
    var from = $("#from").val();
    var to = $("#to").val();
    $.ajax({
      processData: false,
      url: "[% $request.uri_base %]/demo/api/" + apitype,
      data: JSON.stringify({"provider":provider, "datasource":datasource, "from":from, "to":to}),
      type: "POST",
      dataType: "json",
      success : createAmChart
    });
  };
  function showselect() {
    $("#providers").show();
  };
  function hideselect() {
    $("#providers").hide();
  };
</script>
      <div class="well">
        <div class="span8">
          <input type="text" class="input-medium" id="from" name="from" value="[% $inputfrom %]">
          <input type="text" class="input-medium" id="to" name="to" value="[% $inputto %]">
          <select class="input-medium" id="datasource">
%% for $datasources -> $datasource {
            <option value="[% $datasource %]">[% $datasource %]</option>
%% }
          </select>
        </div>
        <div class="span2">
          <label class="radio">
            <input type="radio" name="querytype" value="provider" onclick="showselect()">服務商趨勢
          </label>
          <label class="radio">
            <input type="radio" name="querytype" value="area" checked onclick="hideselect()">分地區統計
          </label>
        </div>
        <button type="submit" class="btn btn-primary" onclick="drawChart()">查詢</button>
        <div id ="providers" class="controls hide">
          <select class="input-medium" id="provider" multiple="mulitiple">
%% for $providers -> $provider {
            <option value="[% $provider %]" selected>[% $provider %]</option>
%% }
          </select>
        </div>
      </div><!--/well-->
      <div id="chartdiv" style="width: 100%; height: 400px;">
      </div>


標簽:圖表amcharts

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn


為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
相關產品
控件
  • 產品功能:圖表
  • 源 碼:非開源
  • 產品編號:11973
  • 當前版本:v4.10.15 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: AMCHARTS 正式授權
  • ">Javascript Stock Chart

    可將任意給予日期和時間數據可視化的Javascript金融圖表工具

    控件
  • 產品功能:圖表
  • 源 碼:非開源
  • 產品編號:11974
  • 當前版本:v4.10.15 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: AMCHARTS 正式授權
  • ">JavaScript Charts

    擁有良好兼容性的JavaScript、HTML5圖表開發工具

    控件
  • 產品功能:圖表
  • 源 碼:非開源
  • 產品編號:13191
  • 當前版本:v4.10.15 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: AMCHARTS 正式授權
  • ">JavaScript Maps

    JavaScript Maps是一個穩健的交互式的Javascript/HTML5地圖庫

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 99久久久国产精品尤物免费 | 国产色老太色老太在线观看 | 国产在线无码不卡影视影院 | 国产精品特级露脸 | 精品日本视频一区二区三区 | 91大神福利在线 | 国产一区二区三区三级无码 | 国产精品成年在线 | 成人免费播放视频 | 国产成a人亚洲精ⅴ品无码性色 | 黑人巨大精品欧美一区二区 | 国产91欧美一区二区精品 | 91av在线国| 国产91成人超清在线 | 东京热人妻无码一区二区av | 岛国在线无码免费观看 | 国产sp调教打屁股视频网站 | 国产欧美国日产在线播放 | 国内精品无码一区二区三区 | 国内精品久久人妻互换 | 国产美女视频免费看网站 | 国产色又爽视频免费播放 | 国产精品福利久久2025 | 91精品丝袜国产高跟在线 | 国产精品内射久久久久欢欢 | 国产欧美另类在线专区 | 爆乳邻居中文字幕 | 国产午夜精品18久久蜜臀 | 国产精品美女免费视频观看 | 国产一区二区丝袜美腿在线 | 成人午夜精品网站在线观看 | 国产区精品一区二区 | 国产字幕在线观看 | 国产一区二区无码蜜芽精品 | 91精品福利视频一区 | 国产99久久久国产精品免费高清 | 精品3d卡通动漫h在线观看 | 精品视频在线观自拍自拍 | 97精品国产一区二区三区 | 丰满少妇高潮惨叫正在播放 | 国产精品成人va在线观看网 | av性久久久久蜜臀aⅴ麻豆 | 91无码人妻aⅴ一区二区三区 | 国产精品亚洲日韩一区二区 | 韩国三级中文字幕hd久久精品 | 成人女人看片免费视频放人 | 大帝av在线一区二区三区 | 国产av无码亚洲av无码 | 精品久久国产av一区 | 成人国产三级在线播放 | av午夜片在线观看 | 18禁黄网站禁片免费观看不卡 | 国产精品va尤物在线观看蜜芽 | 国产无码高清视频不卡 | 国产精品国产日韩精 | 国产一级无码午夜大片在线观看 | 国产高清精品无码免费试看 | 国产成人精欧 | 国产亚洲中文日本不卡二区 | 国产欧美另类久久久精品91 | 国产二区三区在线观看视频 | 国产成人免费a | 91成人免费观看网站 | 91尤物在线视频 | 91精品国产一区二区三区香蕉 | 精品久久久久久久中文字幕 | 国产精品日韩欧美在线第一页 | 97色伦在色在线视频 | 91精品国久久久久久无码免费 | 丰满人妻一区二区三区46 | 国产女主播喷水视频在线观看 | av免费播放一区二区三区 | 国产免费无码av在线观看 | 后入清纯学生妹 | 操美女黄在线网站 | 精品国产中文自拍 | 精品国产午夜福利精品推荐 | 国产精品亚洲综合一区在线观 | 国产精品九九九午夜 | 国产一区二区福利久久 | 国产一区二区三区四区二区 | 成人国产一区 | 国产精品白丝av网站在线观看 | 国产97精品一区二区三区四区 | 国产激情视频一区二区三区 | 国产精品亚洲玖玖玖在线靠爱 | 国产二级一片内射视频播 | 国产成精品在线观看 | 国模精品一区二区 | 成年人无码三级片视频网 | 国产av高清和老师偷尝禁果 | 国产偷窥女洗浴在线 | 国产91精品人妻互换在线 | 成人国产精品一区在线观看播 | 91人妻一区二区三区久久 | 国产精品特黄特色三级视频 | 18禁裸乳无遮挡啪 | 国产精品视频免费一区二区 | 91免费电影 | 国产系列丝袜熟女精品视频 | 国产高清午夜人成在线观看 | 国产精品人妻无码一区牛牛影视 | 变态另类免费一 | 91精品人妻一区二区蜜桃 | 国产精品无码一区二区三不卡 | 国产精品熟女视频一区二区 | 国产偷窥熟女高潮精 | 成年女人a毛片免费视频 | 国产91麻豆精品 | 国产精品一区2区三区内射 国产精品一区91 | 国产三级观看久久 | 成人一区二区在线观看视频 | 91av免费在线观看 | 国产高清a在线视频观看网站 | 国产av一区二 | 国产精品精品自在线看 | 国产一区二区三区不卡在线观 | 精品高朝久久久久9999 | 爆乳女教师高清bd | 国偷自拍视频在线观看 | 国产欧美国产综合每日更新 | 国产午夜精品无码免费不卡影院 | 91福利在线精品国产 | 国产综合中文无码 | 丰满人妻av | 国产一区一级棒 | 国产黄视频网站 | 国产高潮视频免费观看 | 2025年最新偷拍视频一区 | 国产三级精品三级在线专区91 | 爽死你无码免费看一二区 | 国产午夜无码喷水福利在线观看 | 国产成人午夜性a一级毛片 国产成人午夜在线观看91 | 国产精品毛片无码一区二区蜜桃 | 国产午夜精品美女视频福利 | 精品人妻系列无码人妻免费视频 | 国产精品视频一区二区五区 | 国产av无码专区亚洲av蜜芽 | 91精品国产福利尤物免费 | 国产黄色在线看 | 国产精品一区二区三区不卡视频 | 成人无码电影午夜在线观看 | 国产一级aⅴ无码毛片 | 国产成人午夜福利在线观看视 | 国产美女精品自在线拍免费 | 国产精品无码专区在线观看不卡 | 国产成a人亚洲精ⅴ品无码樱花 | 国产三级aⅴ在线播放 | 国产av无码片毛片一级久二区 | 国产精品成人啪精品视频免费观看 | 国产三级电影网站 | 97人妻在线播放 | 国产尤物在线观看不卡 | 国产一二三四2025精字窝 | 国产嫖妓风韵犹存对白 | 精品97人妻无码中文永久在线 | 国产精品午夜爆乳美女视频免费 | 国产美女跪下吃大j8视频 | 国产高清国产精品国产专区 | 国产一区二区精品久久岳√ | 国产中文字幕1在线观看 | 国产一级毛片aa无码 | 精品久久久久久无码中文字幕 | 国产福利在线观看日本二区三区 | 91亚洲火| 国产欧美精品一区二区色综合 | 国产日韩欧美精品区性色 | 国产自啪偷啪成人va | 91尤物在线精品 | 国产高清精品一区二区三区 | 国产免费人成视频在线播放播 | 国产高清在线a大全 | 不卡无在一区二区三 | 国产人妻人伦精品1国产丝袜 | 18禁午夜成人影院在线看 | 国产精品多人p群无码 | 国产成人精品无码免费播放 | 精品日韩欧美人妻少妇 | 国产精品高清无码 | 国产一区二区在线观看免费 | 国产真街拍裙底系列在线观看 | 国产一区二区三区免费观看在线 | 国产午夜人成视频在线观看 | 国产成年无码aⅴ片在线韩国 | 91精品国产网曝事件门 | 成人亚洲性情网站在线观看 | 国产成人综合精品 | 国产一区二区在线日韩 | 国产激情一区二区三区无码 | 国产精品日韩欧美亚洲另类 | 国产aⅴ精品一区二区三区 国产aⅴ精品一区二区三区久久 | 91午夜福利在线观看精品 | 国产偷窥女洗浴在线观看亚洲 | 国产成人福利毛片 | 99久久精品国产 | 国产呦精品一区二区三区图片 | 二区三区成人片在线 | 91精品视频在线播放 | 国产精品亚洲片在线观看不 | 99精品国产一区二区电影 | 91精品视频免费看 | 国产精品观看在 | 国产午夜场免费视频在线播放 | 国产精品免费区二区三区观看 | 国产精品无码素人福利免费 | 国产高清色高清在线观看九 | 国产精品成人av激情在线 | 国产成人精品麻豆免费网站 | 国产精品日韩在线亚洲一区 | 国产成a人亚洲精v品在线观看 | 国产精品女同一区二区久久 | 国产成人无码a区播放视频 国产成人无码a区电影 | 国产成人精品 | 国产做ā爰片久久毛片ā片 | 精品一区二区三区高清 | 国产成人免费ā片在线观看 | 国产真实乱人偷看精品 | 国产成人精品电影午夜 | 国产欧美日韩一区二区三区 | 国产精品白浆一区二区亚洲 | 18禁很色很爽很黄的免费网站 | 精品无码午夜福利免费看 | 精品日韩在线视频一区二区三 | 91精品一| 国产二区精品视频 | 国产av丝袜一区二区三区 | 国产成人亚洲精品91专区高清 | h无码精品动漫在线观看免费 | 国模极品一区二区三区 | av免费无码在线 | 国产成人无码免费视频97 | 国产日韩一区二区三区高清 | 国产在线一区二区三区欧美 | 国产女同精品一区二区三区 | 国产视频一区二区在线播放观看 | 成人免费无码大片a毛片18 | 91免费| 国产成人激烈叫床声视频对白 | 国产精品成人va在线观看软件 | 国产精品一区二区三区不卡视频 | 精品久久久久久中文字幕一区 | 国产精品国色综合久久浪潮 | 国产在线观看乱码精品 | 精品视频午夜一区二区 | 国产在线aⅴ精品91 国产在线aaa片一区二区99 | 国产aⅴ精品一区二区三区久 | 国产成人一区二区三区免费3 | a级无遮挡超级高清 | 国产精品酒店在线 | 99精品欧美一区二区三区 | 国产精品一区二区三区在线观看 | 国产精品亚洲专区无码电影 | 国产精品一二三四区 | 97人人干人 | 成人免费一区二区三区视频软件 | 精品国偷自产在线视频 | 国产亚洲欧洲国产综合一区 | 国产熟女级毛片 | 91日韩高清在线观看播放 | 国产精品午夜久久久久久99热 | 东京热一区二区沙河无 | 99久久亚洲综合精品网站 | www夜片内射视频日韩 | 国产成人精品一区在线 | 18禁美女黄网站色大片免费观 | 国产精品午夜视频 | 精品国产亚洲爽啪在线观看 | 91黄色视频免费在线观看 | 国产麻豆操 | 国产无套乱子伦精彩是白视频 | 精品日韩人伦一区二区三区蜜桃 | 成人精品国产一区二区三区 | 国产69精品久久久久久妇女迅雷 | 加勒比hezyo无码专区 | 91精品久久香蕉国产线看观看 | 97色伦图区97色伦综合图区 | 国产精品一区二区日韩av | 国产精品欧美亚洲日本综合 | 国产精品一区二区白浆 | 国产成a人亚洲精v品无码性色 | 国产一区二区三区亚洲精选 | 国产精品亚洲国产在 | 国产成人一区二区三区电影 | 国产午夜精品精品视频一2025 | 91久久人爽人人添人人澡 | 18处破外女出血视频在线观看 | 国产蜜桃tv一区二区无码 | 91午夜在线观看免费 | 国产免费午夜福利蜜芽无码 | 成人国产一区二区精品小说 | 国产视频一区二区三区免费观看 | 国产毛片一区二区 | 91久久香蕉 | 国产麻豆剧传媒精品国产免费 | 精品国产在天天在线观看 | 国产女人高潮抽搐喷水视频 | 白丝被绑双腿憋尿sm调教 | 91福利视频导航 | 国产精品vr无码专区 | 国产一区精品久久综合 | 99久久久无码 | 动漫处女自慰日韩一区二区 | 国产超碰97人人在线 | a级国产乱理伦片免费观看 a级国产乱理伦片野外 | 国产不卡一区二区三区視频。 | av无码中文一区二区三区四区 | 91久久精品无码一级毛片 | 国产三级精品美女三级 | 国产午夜视频在线观看 | 国产午夜精品一二区理论影院 | av无码专区亚洲avl在线 | av老司机午夜福利片免费观看 | www官网在线 | 99精品国产一区二区三区 | 国产一区二区三区高清在线看 | 国产区精品在线一区二区日韩欧美 | 2025v视频无码高清网站 | 国产精品一区二区尿失禁 | 国内第一永久免费福利视频 | 国产激情视频在线 | 国产三级精品久久三级国专区 | 国产97精品一区二区三区四区 | 国产精品无圣光一区二区 | 91人妻无码精品一区二区毛片 | 精品国产人妻一区二区三区久久 | 国产经典三级av在线播放 | 精品久久国产字幕高潮 | 成人午夜有码一区二区 | 国产精品真实灌醉女在线播放 | 国产盗摄视频一区二区 | 国产精品无码中出在线播出 | av制服丝袜白丝国产网站 | 国产成人在线播放 | av午夜精品在线观看 | 国产自在现偷国产精品国产日韩 | 国产精品v在线观综 | 国产精品秘入口一区二区 | 国产午夜精品久久久久免费视频 | 国产亚洲欧美另类一区二区三区 | 18禁无码永久免费无限制 | 东京热免费视频一区二区三区 | 成人无码区免费av毛 | 成人在线毛片 | 国产一区二区三区免费看视频 | 国产白嫩在| 超碰国产在线高清无码 | 国产原创中文麻豆 | av动漫无码不卡在线观看 | 国产一区二区在线观看美浪 | 国产精品女人高潮毛片 | 国产精品麻豆一区二区三区v视界 | 精品亚洲一区二区三区四区五区 | 成人一区二区三区视频在线观看 | 国产精品女同一区 | 囯产免费久久久久久国产免费 | 成人动漫第一页 | 国产激情久久久久影院小草 | 国产女主播喷水视频 | 国产福利91精品一区二区三 | 国产中文字幕永久综合 | 国产精品呻吟一区二区三区 | 国产高清成人av片 | 福利姬液液酱喷水网站在线观看 | 国产视频一区在线 | 国产成人精品无码一区二区三区 | 国产精品国产三级国产普通 | 国产av无码国产av毛片 | 国产精品国产三级国av中文 | 国产成人亚洲精品无码电影不卡 | 国产一二三四区中 | 国自产偷精品 | 国产精品一区二区不卡的视频 | 国产欧美日韩资源在线观看 | 国产黄片三级视频 | 国产毛片网站视频在观 | 国产成人综合激情视频在线观看 | 国产黄色三级电影免费观看 | 国产午夜亚洲精品无码 | 国产日韩精品福利视频综合一区二区 | 国产精品爽爽va在线观看网站 | 国产麻豆网站 | av亚欧洲日产国码无 | 国产草裙社区在线观看 | 2025国产精品网站在线播放 | 国产高清一区二 | 国产福利91精品一区二区三 | 岛国毛片一级一级特 | 国产成人亚洲精品无码电影 | 精品黄片一区二区 | 国产精品多p对白交 | 99久久精品午夜一区二区 | 高清在线制服亚洲 | 国产aⅴ精品一区二区 | 成人免费区一区二区三区 | 国产成久久综合片 | 国产精品亚欧美一区二区 | 国产成人无码精品a级毛片抽搐 | 国产高清精品一区二区三区 | 国产午夜福利短视频 | av中文字幕网免费 | 国产精品一区2 | 国产高清在线精品一区app | 国产午夜精品不卡视频 | 国精产品一品二 | 国产精品系列在线一区 | 国产a级国片免费播放 | 国产成人毛片一级 | 国产自国产自愉自愉 | 国产精品亚洲片精品 | 国产精品欧美一区二卡 | 国产盗摄视频一区二区三区 | 国产av福利久久精品can | 国产精品自拍小视频 | 国产高清av日 | 成人无码小视 | 高清无码影片在线观看 | 国产一级毛片在线视频 | 国产激情久久久久影院 | 成年永久一区二区三区免费视频 | 动漫av永久无码精品每日更新 | 国产一级无码毛片精品 | 精品久久精品中文字幕无码 | 国产成人a∨无码 | 精品午夜福利国产一区二区在线观看 | 国产成人亚洲精品乱码在线观看 | 国产精品国产三级囯产av中文 | 国产一区二区在线观看涩爱 | a级毛片无码免费视频 | 国产一区自拍视频 | 国产亚洲人成在线影院 | 国产午夜精品一区二区三区嫩草 | 国产喷水在线视频观看网站 | 91欧美精品激情在线观看 | 高清无码爆乳护士在线播放 | 国产区女主播在线观看 | 国产一区亚洲二区 | 国产不卡视频一区 | 国产高清吹潮免费视频 | 国产视频一区二区三区四区 | 国产成人无精品久久久 | 国产乱xxxxx79国语对白 | 18禁免费观看网站 | 成人在线一区二区三区四区 | 国产成人精品国产成人亚洲 | 国产一区二区三精品久久久无 | 国产成人免费无遮拦 | 国产午夜福利综合区 | 国产av无码秘在线 | 国产精品美女久久久久av超 | 国产精品大陆高清 | 国产1024精品视频专区 | 国产成免费人成网站 | 成人精品午夜无码免费视小黄人 | 国产精品成人精品久久久 | 国产精品盗摄!偷窥盗 | 成人国产日韩在线 | 精品亚洲欧美日韩久久 | 国产色婷婷视频在线观看 | 成人免费观看一区二区 | 国产精品毛片在线完整版的 | 国产日韩av免费无码一区二区三区 | 成熟丰满熟妇av无码区 | 国产av剧情免费观看 | 国产无套内精一级毛片色戒 | 国产av动漫一二区 | 国产成人免费视频精品一区二区 | 国产成人啪精品午 | 国产丝袜在线视频亚洲 | av无码精品一区二区三区 | 精品人妻无码专区在线视频 | 国产成人高清精品亚洲 | 国产动漫一区二区三区无码 | 韩国三级电影精品久久 | 国产av性爱亚洲 | 国产午夜鲁丝片av无 | 国产熟女乱伦 | 高清无码免费网址 | av无码久久久久久不卡网站 | 国产无码最新上传在线观看 | 精品国产一区二区三区四区特色 | 国产亚洲综合区成人国产系列 | 国产午夜精品久久久久99 | 国产午夜成人免费看片无遮挡 | 国产丝袜视频在线影院 | 国产成人午夜精彩福利 | 成人午夜性a一级毛片免费 成人午夜亚洲精品无码黄 成人午夜亚洲精品无码区 成人午夜亚洲精品无码网站 | 国产午夜av无码无片久久午夜 | aⅴ精品无码 | 国产不卡久久精品影院 | 爆乳熟妇一区二区三区 | av片在线观看网站免费的 | 国产人妖视频一区二区 | 国产黄视频在线观看 | 国产熟女丝袜高跟视频 | 国产91丝袜在线播放动漫蜜月 | 国产福利萌白酱在线观看视频 | 国产成人久久综合麻豆 | 国产成人午夜精品视频牛牛 | h无码中字动漫在线观看 | 国产成人无精品久久久 | 国产欧美日韩在线一区二区激情 | 精品无人区麻豆乱码1区2区新区 | 国产高清一区二区动漫 | 91精品国产99久久青草蜜桃 | 精品白浆无码流出在现看 | 高潮呻吟在线观看 | 精品福利一区二区在线观看 | 91久久久久精品 | 精品私库av在线 | 精品久久久久久无码专区不久久 | 国产一区二区欧美日韩 | 国产精品九九视频 | av色综合网| 国产麻豆老师在线观看 | 国产精品无码久久专区 | 国产尤物无码一区二区 | 99久久精品成 | 国产精品免费久久久久软件 | 精品人妻中文字幕浪潮aⅴ 精品人妻中文字幕无码 | 精品日本一区二区三区在线观 | 成人国产一区 | 精品亚洲成a人20257在线观看 | 成人va在线一区二区三区四区 | 丰满少妇高潮惨叫久久久 | 国产成人av乱码在线观看 | 国产精品美女久久久久 | 国产欧美日韩va另类 | 精品日本少妇免费 | ww国产内射精品后入国产 | 国产成人av网站 | 99国产精品自在自在久久 | 18处破外女出血在线 | 国内午夜熟妇又乱又伦 | 国产欧美日韩主播在线观看 | 果冻传媒国产在线视频 | 国自产精品手机在线视拍 | av一区二区中文字幕 | 3d动漫av在线观| 国产精品白丝jk白祙喷水视频 | 变态另类重口特级 | 国产麻豆视频免费在线观看 | 国产门事件在线亚洲日韩欧美 | 国产成人a福利在线观看 | 国产精品亚洲片在线va | 成人免费www在线高清观看 | 91精品国产福利在线观看麻豆 | 国产精品涩 | 国产精品观看在线播放 | 国产成人深夜福利在线观 | 国产在线观看免费一级 | 国产精品穿着丝袜打电话播放 | 囯产精品一品二区三区 | a级毛片高清免费视频在线 a级毛片高清免费视频在线播放 | 国产熟女一区二区精品免费 | 国产经典aⅴ三级观看 | 国产91久久久久久久免费 | 精品国产亚洲av麻豆狂野 | 国产精品成人h视频 | 成人无码区免费aⅴ片在线观看 | 国产成人精品久久亚洲高清 | 国产三级精品久久三级国专区 | 国产熟女露脸大叫高潮 | 不卡国产视频第一页 | 国产亚洲成v人片在线观黄桃 | 国产aⅴ一区二区三区精品 国产aⅴ一区二区三区片 | 国产成人无码aⅴ片在线观看 | 精品国产三级久久久久三级 | 国产性大片免费播放 | 国产原创大胆私拍视频 | 国产精品原创午夜宅男视频 | 国产午夜福利精品一区二区三区 | 国产精品午夜福利麻豆 | 国产亚洲日韩欧美一区二区三区 | av天堂永久资源网亚洲高清 | 国产视频一区二区在线播放 | 91亚洲精华国产精华精华液 | 国产aⅴ天堂亚洲国产a | 国产麻豆激情无码aⅴ毛片久久 | 国产精品高清国产av | 国产在线精品无码不卡手机免 | 潮喷大喷水系列无码久久精品 | 国产成人久久精品麻豆二区 | 二区二期视网膜病变能好吗? | 国产户外一区二区三区在线 | 成人无码一区二区三区影院 | 岛国大片网站在线观看 | 精品国产国产综合精品 | 国产三级精品三级男人的 | 99久久国产综合精品麻豆 | 国产经典欧美一区二区三区 | 国产sm影院在线观看 | 精品国产自在91欧 | 国产激情一区二区三区在线hd | 国产成人秘在 | 精品91自产拍在线 | www.国产日本视频 | 国产美女精品视频线免费播放软件 | 国产成人精品午夜福利2025 | 精品无码一区 | 国产毛片网站视频在观 | 国模两腿玉门打开图无码 | 国产欧美日韩视频在线不卡 | 国产女同一区二区在线 | 国产精品无码专区在线播放 | 丰满巨臀大屁股bbw 丰满老熟妇aaaa片 | 国产成人无码精品久久久免费 | 粉嫩av无码一区二区三区软件 | 国产一区精品视频 | 国产精品亚韩精品无码a在线 | 国产精品美女久久久久网站 | 国产精品丰满大屁股流白浆 | 国产精品毛片久久久久久久av | 国产三级国产精品国产专区 | 91精产国品一二三区在线 | 国产肥熟女视频一区二区视频 | 精品系列人妻无码 | 成人爽a毛片一区二区免费 成人爽a毛片在线视频 | 18国产精品白浆在线观看 | 国产精品成人va在线观看网 | 国产超碰人人做人人 | 国产精品一二三四级电影 | 国产精品午夜福利不卡 | 91视频一区 | 国产成人91亚洲精品无码 | 国产成人精品视频免费网站 | 高清亚洲精品一区二区三区 | 国产亚洲日韩欧美另类丝瓜app | 国产欧美日韩亚洲精品区23 | 国产精品国产三级国av | 国产欧美日韩在线综合 | 国产黄色视频网站 | 护士一级毛片 | 精品视频一区二区三区四区戚薇 | 大片精品一区二区三区 | 国产高清国内精品福利99久久 | 91国在线国内在线播放 | 国产午夜精品理论 | 国产午夜福利电影免费在线观看 | 福利一区在线视频 | 东京热无码中文字幕电影 | 国产福利一区二区三区在线观看 | 国产三级精品三级男人的天堂 | 国产福利一区视频 | 国产麻豆激情视频在线观看 | 国产超级avcao在线观看 | 91久久国产精品 | 国产中文字幕乱人伦在线 | 国产av精品一区二区 | 国产激情娇妻在线 | 国产美女久久久久久久久久久 | 国产自产在线视频播放 | 成人精品一级毛片 | 国产精品丝袜综合区 | 国产一区在线不卡 | 国产精品无码专区免费不卡 | 国产毛片久久久久久久精品 | 91麻豆精品国产综合久 | 国产精品亚洲欧美日韩在线播放 | 国产在线拍小情侣国产拍拍偷 | 国产区人妖另类精 | 岛国三级在| 国产午夜精品一区二区三区四区 | 国产人妖ts另类视频 | 精品91自产拍在线观看一区 | 国产一区二区三区美女 | 国产真实乱对白精彩久久91 | 2025露脸国产偷人在视频 | 2025亚洲综合一区二区 | 操日日操 | 国产粉嫩小泬在线 | 国产在线线精品 | 91久久九九亚洲一区二区 | av中文字幕无码免费看 | 国产粗语刺激 | 国产午夜精品爆乳美女蜜臂av | 国产成人综合亚洲 | 国产成a人亚 | 国产精品成人影院在线观看 | 国产一区二区三区观看 | 2025最新国产精品一区 | 国产按摩精品首页 | 北岛玲日韩精品一区二区三区 | 国产极品美女到高潮无套久久 | 国产女主播真实视频在线观看 | 国产私人在线在线视频 | 国产一区二区在线观看视频 | 国产三级影片在线观看 | 91国内揄拍国内精品对白 | 爆爽久久久一区二区又大又黄又嫩 | 国内精品一卡2卡3卡4卡三卡 | 18国产精品白浆在线观看免费 | 黑人巨大精品欧美一区二区.. | 成熟女人特级毛片www免费 | 国产综合亚洲欧美日韩一区二 | 东京热无码一区 | 国产免费无码一区二区 | 国产午夜精品一区二区三区漫 | 精品国产av一二三四区 | 国产白丝内射 | 精品亚洲国产成av人片传媒 | 成人国产精品一区二区视频 | 国产黄片软件在线观看 | 国产一区二区三区亚洲 | 国产精品无码dvd在线观看 | 精品丝袜国产在线播放 | 国产另类图片 | 国模一区二区三区 | 99久久人妻精品免费一区 | 91全网在线观看国产 | av手机看片高清 | 精品视频一区二区三区四 | 国产a网欧美午夜性 | 国产成人综合一区精品 | 国产99日韩精品第一页 | 91a国产尤物视频 | 成人在线视频高清无码不卡 | 国产成人久久精品麻豆二区 | 国产女主播在线播放一区二区 | 国产品九九久久久国产精品 | 国产黄片精品自拍视频 | 国产精品无码专区午夜免费 | 成年人樱桃app下载安装 | 国产一区二区三区免费赤裸裸 | 国产精品麻豆入口 | 国产精品国产三级国产av中文 | 国产制服精品一区二区视色 | 91午夜福利在线观看精品 | 精品无人区一区二区三区 | 91午夜在线 | 91福利国产在线播放午夜 | 成在线观看免费网站 | 国产成人手机在 | 成人午夜精品亚洲日韩 | 2025国产精品国产精华 | 成人免费观看的a级毛片 | 国产成人夜色影视视频 | 国产一区二区在线观看美浪 | av色区一区二区三区 | 成人一区二区免费中文字幕 | 国产精品伦一区二区三级视频 | 精品丰满爆乳熟妇av免费播 | 国产成人αv无码专区亚洲αv | 国产一级毛片中文字幕av | av毛片免费观看 | 国产美女被遭高潮免费 | 国产高清无码视频在线观看 | 国产精品午夜爆乳美女视频 | 国产免费午夜福利在在线 | 成人无码在线视频播放 | 国产在线播放综合网房 | 成人午夜福利国产 | 成人国产一区二区三区精品 | 91久久国产高清 | 91精品亚洲国 | 成人免费无码视频在线网站 | 国产重口老太和小伙乱 | 国产交换配乱婬视频偷大叼 | 99精品国产九九国产精品 | 国产精品伦视频 | 精品无码中文 | 国产在线观看自拍日本 | 国产精品视频一区国模私拍 | 二区三区在 | 国产一区二区最新免费视频 | 精品丝袜国产自在线拍高清 | 国产精品无码福利午夜专区 | 国产精品亚洲二区第一页 | 国产成人麻豆亚洲综合无码精品 | 国产亚洲色高清在线观看 | 精品九九99久久在免费线 | 国产精品视频一区 | 成年女人爽到高潮喷视频 | 国产av一区二区 | heyzo中文字幕| 国产极品免费影院在线 | 国产爆乳无码视频在线观看 | 国产在线小视频 | 国产精品无码卡 | 成人精品久久一区二 | 国产麻豆精品久久久久av | 国产在线拍揄自揄视频不卡99 | 国产精品欧美亚洲韩国日本久 | 国产一区二区三区四区在线无码 | 国产一线天粉嫩馒头极品av | 国产不卡精品一区二区三区 | 2025色婷婷综合久久久 | av无码一区二区 | 国产精品超清无码一区二区 | 国产午夜成人免费看片无遮挡 | 精品人妻无码中文久久免手 | 高清无码在线观看越南专区 | 国产精品毛片va一区二区三区 | 99久久国产免费福利 | 国产欧美精品国产第一区 | 国产超碰在线观看 | 国产精品先锋中文在线第一页 | 国产精品国产成人国产三级 | 国产精品成人免费视频网站京东 | 国产精品v户外野战 |