欧美日韩亚-欧美日韩亚州在线-欧美日韩亚洲-欧美日韩亚洲第一区-欧美日韩亚洲二区在线-欧美日韩亚洲高清精品

金喜正规买球

amCharts應(yīng)用實例:日志分析

轉(zhuǎn)帖|使用教程|編輯:龔雪|2014-08-21 09:31:35.000|閱讀 1015 次

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

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

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

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

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

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

分地區(qū)錯誤情況統(tǒng)計

實時分運營商錯誤比例統(tǒng)計

利用 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庫的歸類。數(shù)據(jù)是需要提前導(dǎo)入ES的,這可以是logstash發(fā)揮作用
    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 集群現(xiàn)有的所有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 拆成服務(wù)商和區(qū)域兩個,沒啥特殊原因,因為是分兩回寫的,汗
    # 其實可以看到最開始的請求參數(shù)類似,最后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;
            # 這里是比較麻煩的一點,因為一個區(qū)域在ip庫里可能標記成多個,比如鐵通和移動,現(xiàn)在都是移動
            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};
                }
            }
            # 這里因為可能沒有錯誤,所以前面關(guān)閉了常用的 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 這里就很簡略
        # 當(dāng)然因為不考慮多運營商的問題,本身也容易一些
        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;
    }
    # 下面開始的兩個才是真正發(fā) 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,因為只用計數(shù)就好了
                    terms => {
                        field => "fromArea",
                        size  => $limit,
                    }
                }
            }
        );
        return $data->{facets}->{area}->{terms};
    }
    sub histo_count {
        my ( $index, $level, $area, $from, $to ) = @_;
        # 根據(jù) level 參數(shù)判斷使用 hasErr 還是 timeCost 列數(shù)據(jù)
        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 數(shù)組
                        # 此外還有 must_not 作為 AND NOT 數(shù)組
                        # should 作為 OR 數(shù)組
                        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拆開來一個個定義,然后根據(jù)情況組合,但是不方便察看作為 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字符轉(zhuǎn)成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當(dāng)數(shù)組直接循環(huán),效果也沒問題
    // 我只能猜測是 addGraph 后數(shù)據(jù)其實已經(jīng)緩存到 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";
        // 設(shè)定為空心圓圈
        graph[i].bulletColor = "#ffffff";
        graph[i].bulletBorderAlpha = 1;
        // amchart 本來有默認顏色,不過前面因為修改了圓內(nèi)的顏色,所以其他顏色無法繼承默認設(shè)定了
        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]);
    }
    // 加圖例,這樣可以在圖上隨時勾選察看具體某個數(shù)據(jù),也方便某數(shù)據(jù)異常的時候影響察看其他
    var legend = new AmCharts.AmLegend();
    legend.position = "right";
    legend.horizontalGap = 10;
    legend.switchType = "v";
    chart.addLegend(legend);
    // 加拖拉軸,這樣可以拖動察看細節(jié),這個功能很贊
    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()">服務(wù)商趨勢
          </label>
          <label class="radio">
            <input type="radio" name="querytype" value="area" checked onclick="hideselect()">分地區(qū)統(tǒng)計
          </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

本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn


為你推薦

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

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

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

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

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

    JavaScript Maps是一個穩(wěn)健的交互式的Javascript/HTML5地圖庫

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    国产午夜福利在线观看污 | 国产成本人三级在线观看网站 | 48国产| 中文字幕亚洲综合小综合在线 | 校园春色亚洲 | 国产玉足脚交极品在线视频 | 一本到国产在线精 | 欧美日韩色黄大片在线视频 | 美女在线观看永久免费网站 | 国产一区二区三区欧美在线 | 免费电视剧网站 | 亚洲欧美在线观看视频 | 国内外精品一区二区三区在线观看 | 亚洲国产中文字幕在线观看 | 最新欧美精品一区二区三 | 国产精品丝袜黑 | 国产一级婬片视 | 好看的手机电影 | 尤物国产精品福利三区 | 欧美色综合高清免费 | 国产美女一区三区在线观看 | 欧美精品人在线观看 | 国产精品欧美在线观看 | 午夜国产精品理论 | 日日噜噜夜夜狠狠视频无 | 中文字幕一区二区三区精彩视频 | 亚洲精品视在线看1 | 中文字幕亚洲一区二区三区四 | 最近免费中文字幕视频高清在线看 | 99视频精品国在线视频艾草 | 性国产se╳ | 合集直播在线观看 | 国产精品欧美亚洲韩国日本不卡 | 在线日本在线中文字幕 | 飘雪影院手机免 | 在线观看的资 | 欧美性猛交xxxx黑人 | 亚洲精品国产美女在线观看 | 欧美性色欧美 | 亚洲精品在线中文字幕 | 国产欧美日韩一区二区三区 | 7799精品天天综合网 | 国产乱码精品一区二区三区四 | 成年片色大黄全 | 欧美女视频网站大全在线观看 | 99精品国| 欧美性xxxx极品高清 | 中文字幕亚洲第一 | 中文字幕亚洲一区二区三区 | 欧美日韩国产综合 | 国产欧美一区二区三区精品 | 欧美精品一区二区三区中文 | 亚洲国产欧美日韩精品18 | 国产日韩欧美911在线观看 | 欧美人与性动交 | 日本公与| 黑人和欧美人交bbw 午夜电影网在 | 久青青视频在线观看久 | 成人国产一区二区三区 | 日本欧美 | 日韩亚洲欧美三区中文字幕 | 99热视 | 亚洲免费人成 | 毛多水多ww| 亚洲一区在线精品 | 欧美性猛交xxxx黑人 | 网址视频在线成人亚洲 | 在线观看亚洲国产手机精品 | 欧洲亚洲一区二区三区 | 国产亚洲精品成人 | 中文字幕免 | 日本日本乱码伦视频在线观 | 婷婷开心五月四房播播人 | 男人的天堂 | 91天堂а8天堂资源在线官网 | 中文字幕手机在线看片不卡 | 丁香婷婷六月综合缴清 | 在线精品91青草国产在线观看 | 亚洲综合 | 国产精品午夜国产小视频 | 丝袜视频国产手机在线 | 老汉色影院首页 | 日韩视频中文 | 日韩欧美精品综合一区二区三 | 日本三级在线 | 美女视频黄的网站全免弗 | 亚洲伊人久 | 亚洲午夜成激人情在线国内 | 亚洲日韩欧美综合网 | 国产女人| 国精产品一区一区三区有 | 欧美精品一二三区 | 国产日韩欧美一区二区三区精品 | 日韩精品中文字幕高清在线 | 欧美国产日韩在线观看 | 国产大片黄在线观看 | 国产普通话漏脸在线观看 | 日日摸夜夜摸人人看 | 国产福利小视频在线免费观看 | 日本久本草 | 最新全网影视大全电影电视剧 | 国产91丝袜在线播放动漫蜜月 | 日韩亚洲欧美中文高清 | 国产日韩欧美综合在线 | 99热日韩| 精品国产乱 | 另类国产亚洲日韩 | 香蕉免费一区二区三区 | 精品一区二区三 | 不卡在线播放中文字幕在线 | 一区二区三区在线观看欧美日韩 | 午夜国产精品电影在线观看一区 | 日本激情在线观看免费观看 | 两性色午夜视频免费播放 | 国产欧洲野花a级 | 国产精品免费网站 | 永久免费精品影视网站 | 国产人免费视频成69 | 日本国产性爱观看视频 | 免费在线观看的网站 | 91草莓视频在线观看 | 国产精品偷伦视频观看免费 | 热99这里 | 蜜桃视频一| 日韩午夜在线 | 激情文学综合区图片区小说区 | 国产女同女互慰 | 国产精品成 | 国产大片51精品免费观看 | 最新中文字幕在线 | 玉足在线观看 | 啦啦啦视频 | 99在线观看视频免费精品9 | 亚洲国内自拍欧美 | 91成人午夜性a一级真人片 | 国产精品三级 | 97国产婷婷综合在线视 | 国产无吗一区 | 1000部禁止18 | 在线观看亚洲 | 欧美性一级中文字幕18页 | 亚洲一区二区三区 | 露脸美女另类 | 免费日漫在线 | 国产在线精品一区二区高清不卡 | 国产精品成人一区二区三区影院 | 国产精品第1页 | 免费国产h视频在 | 中文字幕国产在线观看 | 免费最新热播韩剧美剧电视剧 | 我们高清观看免费中国片 | 91日本在线观看亚洲精品 | 国产高在线精品亚洲三区 | 亚洲人免 | 九九视频免费精品视频 | 欧美亚洲校园第一页 | 成年女人免费毛 | 亚洲精品网址在线观看 | 精品亚洲欧美中文字幕在线看 | 成年人在线播放视频 | 国产精品va欧美精品 | 男女xxⅹ爽免费视频 | 国产精品日韩欧美制服 | 太大太长太粗太久太硬了 | 国产a∨精品一区二区三区不 | 香蕉香蕉国产片一级一级毛 | 亚洲a日本一区二区 | 2025亚洲欧美日韩在线观看 | 国产日本一线在线观看免费 | 欧美成本人动漫在线观看 | 在线国产自偷自拍视频 | 国产全黄三级国产全黄三级书 | 青草青草久 | 第一页欧日韩在线视频 | 国产在线va无卡 | 国产国拍亚洲精品永久不卡 | 黄一色片一网站一 | 免费国产va在线观看视频 | 好吊色青青青国产欧美日韩 | 欧美日韩一区二区在线观看视频 | 红杏免费视频网站入口导航 | 日韩欧美综合在线制服 | 日本高清不卡aⅴ免费网站 精品国产污 | 美腿丝袜在线播放 | 日韩欧美中文 | 亚洲欧美中文v日韩v在线 | 欧美日韩在线播放一区二区三区 | 国产又粗又长又黄又猛 | 精品国内一区二区三区免费视频 | 亚洲自偷精品视频自拍 | 亚洲中文字幕在线观看 | 国产精品视频高清在线播放 | 国产精品高清自产拍 | 2025卡1卡2卡3精品老狼 | 亚洲精品动漫一区二区三区在线 | 亚洲欧美国产另类首页 | 欧美国产一区二区三区精品 | 伊人网视频在线观看 | 国产中文字幕在线点播 | 国产高清在线观看无删减 | 亚洲激情中文 | 国产国产人成免费视频77777 | 國產精品爽爽va免費觀看 | 大地资源中文在线观看官网第二页 | 在线观看一二三四区 | 日韩成人免费精品视频 | 亚洲精品视频在 | 中日韩无砖码一线二线 | 国产黄在线观看免费观看 | 在线观看第一页 | 一区二区三区精品视频 | 国产亚洲欧美日韩高清专区 | 国产精品黑色丝袜在线观看 | 中文乱码字幕在线观看播放 | 综合狠狠| 九九影院 | 成人精品一区二区户外勾 | 国产精品高清一区二区三区不卡 | 2025年最新热播电影 | 精品国产sm最大网站 | 在线国产精品看片 | 亚洲人成中文字幕在 | 一区二区免费国产在线观看 | 欧美日韩亚洲 | 国女精品爽爽一区二区 | 亚洲精品中文字幕码专区 | 亚洲男人的天堂 | 成人āv专区精 | 国产精品入口 | 一区二区三区国产亚洲网站 | 亚洲精品国产精品国自产 | 免费人成网上在线观看 | 一二三四在线观看免费视频 | 青青河边草免费高清电影 | 日韩精品电影一区亚洲 | 国产一级二级三级经典在线 | 99视频在线精品国自产拍亚瑟 | 久99久热只有精品国产15 | 中文字幕一区二区精品区 | 999在线观看国产 | 亚洲热线99精品视频 | 国产亚洲精品aa | 2025国产精品国产精华 | 国产99日韩精品第一页 | 亚洲人色大成年网站 | 国产特黄一级aa在线 | 国产欧美日韩综合视频专区 | 精品自拍9 | 国产另类亚洲日韩 | 国产精品日韩精品 | 国内精品日本和韩国免费不卡 | 又黄又爽 | 成人国产精品日本在线 | 亚洲码欧美码一区二区三区 | 中文在线欧美亚洲制服 | 电影网在线好看 | 国色天香天天影院综合网 | 亚洲综合精品第一页 | 歐美性猛交xxxx亂大交3 | 国产在线国偷精品免费看 | 亚洲精品欧美中文字幕 | 婷婷亚洲久悠悠色在线播放 | 亚洲欧美国产精品一区二区 | 国语自产拍在线 | 精品国产福利在观看91啪 | 免费一级欧美片在线观看 | 免费va国产高清大片在线 | 麻花传媒免费网站在线观看 | 成人动视频国产欧美精品 | 国产日韩欧美精品大秀 | 午夜高清性色生活片 | 日韩a∨精品日韩在线观看 国产女精 | 中文字幕日韩精品一区二区三区 | 九九视频这 | 国产精品福利在线观看免费 | 国产一区视| 亚洲区小说区图片区qvod | 国产亚洲欧美日韩综合另类 | 自在拍在线播放 | 国产欧美日韩精品a在线观看高清 | 日本大片电影 | 日韩精品人 | 亚洲欧洲 | 亚洲区小说区 | 欧美亚日韩一二三四 | 国产又粗又猛又爽又黄的视频吉 | 成人看片黄a免费看在线 | 精品区一| 欧美日韩在线观看区一二 | 亚洲欧美日韩综合在线一区二 | 日本免费人成视频播放 | 国产欧美一区二区三区综合野 | 国产亚洲一区二区 | www网站羞羞视 | 亚洲精品五码 | 国产精品外围在线观看 | 成人啪精品视频网站午夜 | 欧美日韩一本到手机视频观看一区 | 精品国内自产拍在线视频 | 日本韩国偷拍视频对白不卡高清精 | 欧美日韩中文字幕日韩欧美 | 国产日韩精品视频一区二区三区 | 午夜伦理电影网电影午夜伦理 | 在线观看精品国产福利片87 | 国产一区二区精 | 精品国产免费第一区二区三区 | 国产又粗又深又猛又爽又黄a | 国产一卡二卡 | 国产91精品在线观看导航 | 午夜影视| 日韩在线观看高清视频 | 午夜嘿嘿嘿在线观看 | 亚洲欧美激情在线一区 | 最新亚洲人成网站在线 | 国产精品1024在线永久免费 | 国产农村妇女精品一二区 | 日本vs亚洲vs韩国一区三区 | 日韩一区二区三区四区区区 | 国产午夜理论不卡在线观看 | 国产午夜三级一区二区三 | 美女撒尿一区二 | 在线免费观看国产 | 黑人巨大精品欧美视频一区 | 阿v视频国产免在线手机观看 | 永久在线观看免费视频 | 亚洲成a人片在线观看一级 精品国产自 | 99久热国产精品视 | 国内盗摄视频一区二区三区 | 天天色亚洲 | 亚洲中文字幕乱碼在线观看 | 国产亚洲欧洲aⅴ综合一区 ady中文字幕 | 亚洲国精产 | 精品国自产拍视频 | 国产亚洲中文一区二区三区 | h视频免费在线 | 91九色国产社区在线观看 | 99这里只有精品在线观看视频播 | 色妺妺视频网 | 国产欧美日韩在线一区二区不卡 | b站永久免费看片大全 | 最新欧美精品一区二区三区 | 不卡中文字幕系 | 免费在线观看网址入口 | 免费激情网站国产高清第一页 | 欧美一区二区三区性视频 | 欧美日韩中文在线观看 | 日本不卡一区二区三区视频 | 国产在线观看高清看片 | 免费观看欧美一 | 国产午夜免费一区二区三区 | 国产男女爽爽爽免费视频 | 午夜激情视频三区在线 | 亚洲国产精品一在线 | 国产一区二区三区四区在 | 亚洲午夜福利院在线 | 日韩在线电影大全免费观看 | 99中文字幕精品国产 | 日韩在线| 在野外被三个男人躁一夜 | 最新日韩午夜一区二区 | 呦呦精品 | 人善交vi | 亚洲精品国产自在现线最新 | 日本国产欧美日韩三区四区 | 欧美一区二区三区性视频 | 亚洲3d卡通动漫在线 | 国产午夜在线视频 | 乱子xxxxvideos| 亚洲色大成网站www在线观看 | 国产婷婷高清在线视频站 | 韩国中文全部三级伦在线观看中文 | 亚洲欧美中文v日韩v在线 | 国产69 | 中文字幕第一页 | 最新免费影视大全 | 国产色精品vr一区二区 | 欧美日韩欧美一区 | 99爱在线精品视频免费观看9 | 国内精品自在自线在免费 | 国产自产视 | 费精品国产一区国产精品剧情在线 | 狼群影院视频在线观看高清版 | 国产综合精品一区二区 | 国产日韩欧美一区二区三区精品 | 日韩欧美中文 | 国产精品亚洲一区 | 中文字幕在线视频在线看 | 免费人成网 | 欧美激情视频精品一区二区 | 性xxx| 91夜夜夜精品一区二区 | 欧美日韩国产中文字幕 | 国产免费不卡一区在线视频 | 日亚洲第 | 成年女性特黄午夜视频免费看 | 国产精品第一二三区 | 一区二区三区日本精品 | 91香蕉网| 欧美日韩一本无线码专区 | 亚洲成a人a∨久在线观看 | 日本免费一区二区三区在线视频 | 国产在线视频欧美一区二区三区 | 日韩精品视 | 国产午夜电影免费 | 2025最新高清免费电影 | 欧美在线激情视频 | 免费在线人 | 免费人成在线观看视频播放 | 亚洲欧美乱综合图片区小说区 | 一区二区日韩激情在线观看视频 | 怡红院免费的全部视频 | 国产精选91原创视频 | 草莓视频在线免费看 | 成人精品欧美一区二区 | 国产极品精品免费 | 夜鲁鲁鲁夜夜综 | 国产特级婬片免费看 | 亚洲色精品三区二区一区 | 国产精品一区二区视色 | www.99在线观看 | 最近中文字幕mv第一季歌词 | 91高清国产在线观看 | 99国产精品性 | 亚洲日本va午夜在线影院 | 亚洲小说一 | 亚洲a级午夜线上看不卡 | 亚洲日本va在 | 国产日韩一区美利坚 | 中文字幕一区二区三区四区 | 国产精品国语对白一区二区 | 精品九九 | 香蕉在线播放 | 国产精品一区二区在线精品 | 最近更新中文字幕在线 | 日本精品一卡高清 | 91视频亚洲一区 | 国产一区中文字幕 | 国产农村妇女特 | 漂亮的保姆6 | 国产女人喷潮视频在线观看免费 | 国产亚洲欧美手机在线观看 | 亚洲欧洲淘宝天堂日本 | 国产精品视频丁香花综合 | 亚洲高清一区二区三区四区 | 国产精品福利午夜在线观看 | 韩国午夜理 | 国语自产偷拍精品视频偷拍 | 日本中文一 | 日产乱码区别免费必看 | 精品一卡二卡三卡四 | 国产精品自产拍在线观看55 | 色中色影视 | 日韩一二区 | 欧美白皙视 | 亚洲三级一区二区在线观看 | 男女爽爽爽视频免费网站 | 国内盗摄视频一区二区三区 | 国产精品专区 | 777国产偷窥盗摄精品1 | 在线观看国产日韩欧美 | 亚洲精品在看在线观看高清 | 国产高清在线精 | 国产偷亚洲偷欧美偷精品 | 国产一区二区三区视频在线观看 | 精品国产自在在线在线观看 | 日韩欧美激情视频 | 亚洲一区二区三区在线观看播放 | 三级全黄的视频在线观看 | 亚洲欧美日韩精品中文乱码 | 国产亚洲欧美一区二区三区 | 精品国产乱 | 亚洲精品第一页 | 91网红精品 | 福利在线观看 | 国语在线看免费观看视频 | 国产精品亚洲片夜色在线 | 欧美日韩性高爱潮视频 | 国产精品欧美激情一区二区亚洲 | 丝袜美腿一区二区三区 | 国产精品日韩欧美一区二区三 | 欧美三级短视频 | 88国产精品视频一区二区三 | 午夜成人理论福利片 | 中文字幕国产日韩 | 亚洲人成电影在线播放 | 中文字幕在线播放 | 免费成人黄 | 国语精品一区 | 在线观看男人的 | 国产日产欧美一区二区三区 | 日韩欧美在线一区二区不卡 | 秒拍视频 | 国产精品自产拍在线观看一 | 国产在线视频第一页 | 一区二区日韩激情综合网 | 又黄又免费的视 | 色五月最新网 | 99健康网| 午夜性影院爽爽爽爽爽爽 | 日本高清视频免 | 日韩亚洲制服另类 | 成人一区二区三区 | 成人国产亚洲精品a区天堂 激情五月天深爱网 | 日韩美女永久网址在线观看 | 国产精品制服丝袜另类 | 国产乱码卡二卡三卡4 | 97人人超 | 日韩aⅴ黄日韩a影片 | 免费国语高清电影电视 | 日韩精品一区二区三区中文字幕 | 日本宅男午夜免费永久网站 | 免费h在线观看视频网站 | 欧美a级v片在线观看 | 午夜福利理论片高清在线观看 | 扒开她的 | 精品无人区一区二区三区 | 国产亚洲精品九九久在线观看 | 国产精品偷伦费看 | 最近高清中文在线字幕在线观看 | 国产一级手机在线毛 | 一区二区三区四区无限乱码 | 欧美巨大德国肥婆 | 国产v片在线播放免费观看大全 | 妺妺窝人体色www在线观看 | 日韩高清在线观看不卡一区二区 | 国产美女嘘嘘嘘嘘嘘视频 | 国产va免 | 综合精品欧美日韩国产在线 | 欧美激情一区二 | 中文字幕在线观看不卡 | 国产亚洲精品影视在线产品 | 日本亲子乱子伦xxxx50路 | 精品国产免费人成电影在线看 | 国产精品拍自在线 | 天下第一日本在线观看视频 | 欧美精品一区二区电影 | 亚洲精品一区二区三区四区五区 | 亚洲欧美国产国产综合一区 | 大色综合色综合资源站 | 天堂在线亚洲精品专区 | 中文精品免费视频 | 九九在线视频观看只有精品 | 国产福利一区二区三区在线视频 | 天天射天 | 亚洲区小说区激情区图片区 | 国产亚洲精品午夜高清影院 | 欧美三级短视频 | 亚洲一区二区精品 | 亚洲日产综合欧美一区二区 | 一二三区 | 秋霞电影午夜在线观看 | 日韩精品一区二区三区蜜桃 | 日本视频免费观看 | 区三区不卡 | 免费三级在线观看中文字幕 | 2025精品国夜夜天天拍 | 欧美日韩成人午夜电影 | 亚洲精品综合精品自拍 | 免费国语| 国产欧美日本亚洲 | 开拓亚洲色偷偷偷综合网的同时 | 亚洲欧美日韩二区三区 | 日韩国产在线观看第1页 | 国产精品视频每日更新播放 | aa级亚洲电影 | 丝袜美腿精 | 久99久热只有精品国产15 | 亚洲天堂色在线 | 91一区二区午夜免费 | 99精品国产在 | 男人扒开女人腿桶到爽免费 | 精品国产人成亚洲区 | 91免费在线视频 | 免费人成黄页网站大全在线观 | 日韩欧美色激情 | 国内精品在线一区二区 | 欧美特黄特色 | 日本三级私人电影网 | 国产99视频精品免费观看6 | 国内自拍第一页 | 国产综合精品一区二区 | 加勒比综合网 | 亚洲欧美另类激情综合区蜜芽 | 国产福利在线免费 | 精品高清亚 | 中文字幕v | 热99r| 国产男女动作视频在线91 | 激情综合五月 | 国产系列在线精品二区 | 成年免费大片黄在线观看一 | 日韩精品福利 | 国产精选在线观看 | 一级特黄录像免费播放中文 | 亚洲成?v人片在线观看翻墙网站 | 亚洲成年看片在线观看 | 在线视频色一区二区三区四区 | 最近中文字幕视频高清 | 日韩精品中文字幕一区 | 91香蕉亚洲精品人人影视 | 极品魔鬼身 | 永久免费的污视频网站 | 国产日产高 | 免费国产在线精品一区二区 | 最近免费中文字幕 | 日韩在线精品成人v在线 | 99精品国产高清自在线看超 | 亚洲伦理一区二 | 日韩欧美国产一区免费 | 亚洲精品高清国产 | 亚洲成a人片| 国产精品成人va在线观看 | 国产精品日韩欧美制服 | 豆奶视频官网下载 | 欧美日韩中 | 欧美日韩精品一区二区在线播放 | 国产在线成本人视频摸腿 | 国产一区二区三区免费大片天美 | 综合欧美一区二区三区 | 国产福利一区二区三区四区 | 第一福利精品500在线导航 | 国产精品一区二区在线观看免费 | 日韩在线视频不卡一区二区三 | ww成在线人免1688费欧美 | 国产日韩欧美精品大秀 | 亚洲男人天 | 国产一级特黄大片特爽 | 亚洲欧美日韩国产综合久 | 国产精品自在线拍国产下载 | 海量热播电视剧手机电影在线观看 | 亚洲欧美日韩另类中文字幕组 | 国产不卡高清在线观看视频 | 日韩在线一区二区 | 日本中文一区二 | 成年男人午夜片免费观看 | 亚洲欧美v视色一区二区 | 真实国产精品视频400部 | 老司机精品一区在线视 | 美女视频免费观看网站黄 | 1卡2卡三卡4卡国产 欧美日韩精品一区二区在线 | 成人精品一区二区户外勾 | 亚洲欧美日韩精品永久 | 日韩在线视频不卡一区二区三 | 97亚洲综合色成在线观看 | 苍苍影院午夜最新 | 视频一区二区三区在线 | 日本三级做a全过程在线观看 | 国产一区欧美亚洲 | 91人成亚洲高清在线观看 | 亚洲日本中文字幕天天更新 | 亚洲se在线播放 | 国产精品福利在线观看免费 | 日韩国产精品va一区二区 | 国产精品自在拍在线播放大全 | 韩国理伦片一区二区三区在线播 | 国内精品视频在线播放一区 | 亚洲第一区日韩欧美精品 | 香蕉国产一区二区 | 国产高清在线视频伊甸园 | 青青草国产成 | 91热这里只有精品 | 日韩午夜在线视频 | 亚洲一区二区三区国产精华液 | 欧美亚洲日本国产黑白配 一级特黄高清aaa | 日本黄页网址在线看免费不卡 | 夜色福利美女曝乳视频 | 国产精品边做奶水狂喷有码 | 日本玖玖资源在线一区 | 91日本在线观看亚洲精品 | 国产一区二区不 | 亚洲欧美精品日韩片 | 星光影院 | 国产免费毛不卡片 | 在线精品一区二区 | 国产日韩欧美综合一区 | 国产午夜激情视频 | 成年人在线观看视频网站 | 国产尤物在线视精品在亚洲 | 欧美综合在线激情专区 | 午夜视频在线观看一区二区 | 日韩精品一区二区三区四区蜜桃 | 欧美ab片 | 日韩一二三区免费视频 | 男人精品一线视频在线观看 | 91视频成人 | 亚瑟视频在线观看 | 91导航小污女导航天天夜夜爽 | 大伊香蕉精品一区视频在线 | 免费黄频在线免费观看 | 女同另类一区二区三区 | 国产精品+日韩精品+在 | 国产精品对白交换绿帽视频 | 红杏亚洲影院一区二区三区 | 欧美综合自拍亚洲综合 | 欧美国产午夜福利院 | 亚洲精品自有码中文字 | 亚洲人成在线观看网站播放 | 成人欧美一区二区三区的电影 | 在线精品国产第一页 | 久热九九 | 天美传媒、91制片厂、天美传媒 | 性日韩视频在线观看 | 国产suv精品一区二区883 | 国产精品亚洲二区在线播放 | 亚洲精品国产第一区二区尤物 | 国产精品一区二区三区四区五区 | 亚洲欧美中文日韩aⅴ | 风流老熟女一区二区三区 | a在线亚洲男人的天堂在线 亚洲欧美精品日韩片 | 日韩欧美亚洲国产高清 | 手机影视大全 | 微拍福利88 | 亚洲va中文字 | 国产婷婷高清在线视频站 | 国产a∨国片精品一区二区 欧美一区二区三区日韩免费播 | 国产久免费在线观看 | 免费国产亚洲精品在线视频 | 在线视频一区二区三区在线播放 | 国产精品亲子乱子伦 | 成a人片在线观看日本 | 欧美大bb兽交高清 | 亚洲欧美中文v日韩v在线 | 欧美大片一 | 国产高清不 | 国产精品免费视频色拍拍 | 美国十次啦 | 香蕉成人伊视频在线观看 | 精品一区二区免费视频 | 午夜免费一级视频 | 亚洲欧美日韩另类 | 手机免费在线追剧网站 | 亚洲偷自拍拍综合网 | 色人阁第四色 | 精品一区二区三区在线 | 成人欧美一区二区三区在线蜜 | 日韩亚洲欧美理论片 | 亚洲日韩视 | 国产在线激情视频 | 国产高清吹潮免费视频 | 乱理伦片在线播放 | a∨中文字幕另类 | 欧美乱妇高清免费96欧美乱妇高 | 国偷自产91 | 亲子乱子伦xxxx | 自产拍在线观看 | 水蜜桃www | 日韩欧美国产制服丝袜 | 公交车被两根粗 | 国产乱子伦对白视频 | 国产v片在线播放免费观看大全 | 午夜成人免费电影 | 91福利精品老师国产自产在线 | 欧美在线观 | 男女午夜视频 | 日本一区二区三区四区在线观看 | 99re热这里只有精品66 | 免费人成年短视频免费网站 | 日韩亚洲欧洲精品婷婷涩 | 免费网站看v片在线a | 国产精品日日做人人爱 | 日本动漫精品一区二区三区 | 女同精品一区二区 | 欧美日夜干影院 | 亚洲一区日韩高清中文字幕亚洲 | 国产日韩综合一区在线观看 | 动漫h在线观看 | 国产日本一线在线观看免费 | 国产系列在线精品二区 | 日韩欧美精品一区二区三区 | 日韩精品另类天天更新影院 | yin荡护士揉捏乱p办公室视 | 精品三级国产在线看 | 中文字幕免 | 五月天一区二区在线观看 | 国产精品勾引上司在线播放 | 欧美日韩国产色综合一二三四 | 国产亚洲欧美在线播放网站 | 中文字幕精 | 国产91精品老熟女泻火 | 欧美激情αv一区二区三区 国语在线看免 | 视频一区二区三区在线 | 日本免费一区二区三区在线播放 | 91精品视频在线看 | 国产短裙高 | 日本欧美一区二区三区片 | 高清影视大全 | 日本一区二区中文字幕 | 亚洲日本v中文字幕区 | 亚洲国产欧美中文手机在线 | 99在线视频 | 中韩欧美视频一区 | 婷婷综合缴情亚洲狠狠 | 忘忧草影院在线www韩国日本 | 日本一区二区三区免费中文字幕 | 国产丁香婷婷在线亚洲视频 | 高清一级做a爱过程不卡视频 | 日韩精品电影亚洲一区 | 中文字幕亚洲网址 | 欧洲美熟女乱又伦 |