国产精品青草久-国产精品情侣愉拍-国产精品区网红主-国产精品区一区二-国产精品热久久-国产精品热热热-国产精品人aⅴ-国产精品人成在线-国产精品人妻人伦-国产精品人人

金喜正规买球

amCharts應用實例:日志分析

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

概述:在眾多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@fc6vip.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
    国产精彩 | 国产成人精品亚洲线观看 | 国产露出精品一区二区三区91 | 亚洲午夜福利院在线观看 | 欧美高清视频www夜色资源网 | 无码国产69精品久久久孕妇 | 最新国产自产视频 | 国产午夜不卡av高清 | av永久天堂一区二区三区 | 91精品国产91久久国产作爱视频 | 日韩人妻无码一区二区三区久久 | 国产在线精品91国自产拍免费 | a男人的天 | av色综合久久天堂av色综合 | 69视频在线观看免费 | 国内少妇人妻 | 亚洲午夜久久久影院伊人 | 日韩亚洲欧美一区噜噜 | 亚洲久久超碰无码中文字幕 | 97在线观看视频网站 | 欧美高清视频www夜色资源网 | 色综合99久久久无码国产精品 | 国产成人影院一区二区三区 | 狠狠色丁香婷婷综合尤物 | 91精产国品一二三产区区别在 | 亚洲精品v欧洲精品v日韩精品 | 不卡无码福利一区二区 | 亚洲日韩国精品视频一区二区三区 | 日韩在线亚洲欧美另类青青 | 日本精品中文字幕在线播放 | 狠狠人妻久久久久久综合蜜桃 | 91九色在线视频 | 日本动漫在中国的传播黄金时期 | 国产在线观看高清视频黄网 | 伊人色综合视频一区二区三区 | 国产精品一区二区公司 | 亚洲丰满爆乳肉感无码一区二区三 | 国内亚洲精品视频在线观看 | 成人碰碰视频公开老师 | 国产一级特黄aaa大片在 | 亚洲国产精品无码av | 亚洲超碰97 | 亚洲精品无码专区在线在线播放 | 国产国产久热这里只有精品 | 自拍高清影视无码 | 午夜亚洲国产日本电影一区二区三区 | 国产精品亚洲片夜色在线 | 91在线视频免费观看 | 九月婷婷人人澡人人添人人爽 | 日本韩av无码毛片潮喷免费 | av天堂永久资源网 | 中文字幕人妻一区二区在线视频 | 亚洲精品无码久久久久不卡 | 惠民福利国产96av在线播放视频 | 国产成人av三级在线观看 | 99久久久无码国产精品6 | 国产精品国产三级国产av中文 | 国产男女猛视频在线观看 | 超薄丝袜足j好爽在线 | 成人国产aⅴ一级毛片无码 成人国产第一区在线观看 成人国产经典 | 午夜亚洲精品不卡在线观看 | 亚洲午夜理论电影在线观看 | 国产一级片观看 | 成人在免费视频手机观看网站 | 在线视频www色 | 麻豆人妻| 欧美精品成人a在线 | 无码乱人伦一区二区亚洲一 | 97精品伊人久久久大 | 国产白丝在线观看 | 97无码免费人妻超级碰碰夜夜 | 麻豆人妻| 麻豆国产午夜福利片在线观看 | 午夜av不卡网站在线播放 | 无码a级毛片在线观 | 久本草在线中文字幕 | 国产无遮挡大学生第一次做 | 天天躁狠狠躁狠狠 | 亚洲一区二区观看 | 91天堂素人精品系列全集亚洲 | 色综合久 | 91午夜精品福利视频 | 亚洲成色av网站 | 精品一区二区三区视频免费观看 | 中文韩国日本免费不卡五月天成人 | 91最新电影电视剧综艺动漫在线观看 | 91精品国产麻豆91久久久久久 | 日本免费一区二区视频 | 日韩成人国产精品视频 | 99re66热在线播放视频 | 亚洲aⅴ无码乱码在线播放 亚洲aⅴ无码码潮喷在线观看 | 色综合天天综合网在线观看 | 亚洲国产人成 | 日韩在线视频二 | 国产亚洲免费在线观看 | 亚洲欧美日本国产专区 | 无码不卡一区二区三区在线 | 国产尤物精品视频 | 91尤物在线观看免费 | 国产人妻精品久久久久野外 | av无码精品久久久久精品免费 | 精品国产亚洲一区二区三区在线 | 久久成人亚洲香蕉草草 | 日日夜夜精品视频天天7799男男 | 国产精品玖玖 | 日本不卡在线观看 | 国产a∨精品一区二区三区不卡 | 97在线观看永久免费视频 | 国产丝袜调教视频免费的 | 精品亚洲a∨一区二区三区 精品亚洲aⅴ无码午夜在线观看 | 欧美一区二区三区久久成人 | 国产欧美日韩亚洲一区二区三区 | 国产乱码精品一区二区三区 | 久别的草原电视剧免费观看高清 | 日本韩av无码毛片潮喷免费 | 人人揉揉香蕉 | 91大神精品视频高清免费观看 | 好吊视频一区二区三区 | 91成人抖音 | 欧美成人高清视频a在线看 欧美成人高清在线播放 | 欧美日本三级 | 国产成人99久久亚洲综合精品 | 亚洲av无码一区东京热久久 | 亚洲日韩在线观看不卡 | 中文字幕高清在线中文字幕 | 精品久久久久久久久国产免费 | 国产精品国产免费无码专区不 | 国产娇小粉嫩在线观看 | 丰满的熟妇岳中文字幕 | 91亚洲国产成人久久精品 | 国产伦精品一区二区三区网 | 少妇精品久久久一区二区三区 | 无码一区二区三三精品视频久久久 | 亚洲中文字幕综合日韩 | 亚洲成a人一区二区三区 | 亚洲无码免费在 | 国产午夜福利不卡在线观 | 国产成人亚洲精品无码av | 99在线精品视频免费 | 黑人与中国少妇xxxx视频 | 九九在线中文字幕无码 | a级毛片免费网站 | 成人免费视频一区二区三区 | 极品尤物国产在线播放 | 久久大香萑太香蕉av黄软件 | 色婷婷狠狠进18久 | 国产欧美视频高 | 婷婷欧美成人在线 | 69国产成人精品午夜福中文 | 成人看片黄a免费看在线 | 成年黄网 | 99久久免费精品国产免费高清 | 日韩av一级毛片无码 | 97亚洲熟妇自 | 国产在线视频二区不卡 | 国产一区二区三区精品尤物 | 国产一在线精品一区在线观看 | 天美果冻星空大象视频 | 欧美高清视频www夜色资源网 | 内射后入在 | 精品爆乳一区二区三区无码aⅴ | 亚洲一级av影视在线观看 | 亚洲综合精品网站在线观看 | 国产激情一区二区三区 | 中文字幕日韩欧美 | 亚洲欧美日韩精品久久 | 国产一级婬片视频免费观看 | 日本欧美大码一区二区 | 99只有精品 | 国产午夜视频久久 | 国产在线视频一区二区三区 | 国产在线精品2区 | 国产成人小午夜视频在线观看 | 高潮好爽视频在线观看 | 香蕉网久久 | 精品免费国产一区二区三区 | 97久久天天综合色天天综合色h | 国产精品久免 | 欧美一区二区三区久久成人 | 97se狠狠狠狠狼鲁亚洲综合色 | а8天堂资源在线官网 | 国产边靠边叫麻豆av | 丰满人妻一区二区三区53视频 | 国产午夜精品 | 亚洲不卡中文字幕无码的影片 | 午夜免费观看福利片一区二 | 91精品国产免费久久国语蜜臀 | 无码国产激情在线观看 | 97精品伊人久久大香线蕉视频 | 国产精品无码在线观看 | 成人青草亚洲国产 | 国产福利一区二区三区视频在线 | 国产偷v国产偷v亚洲高清 | 亚洲字幕成人中文在线电影网 | 亚洲av永久无码精品秋霞电影 | 午夜视频在线观看免费完 | 91在线日| 中文字幕无码系列专区 | 91桃色大香蕉 | 精品国产a| 91人妻中文字幕无码专区 | 黄色免费国产小视频 | 国产一区二区三区专区精品 | 无码人妻精品一 | 少妇精品无码一 | 国产特级亚州一级淫片 | 欧美日韩一区二区三区人妻 | 国产亚洲av另类一区二区三区 | 女人三级片电影一区二区区 | 无码精品人妻一区二区 | 亚洲不卡2卡3卡4卡5卡入口 | 国产成人精品免费播放视频 | 国产精品亚洲成在人线 | 国产欧美日韩综合精品一区二区三 | 97伦理影院 | 91精品福利麻豆专区 | 国产综合久久久久影院 | 91精品国自产在线偷拍蜜桃 | 国产亚洲精品a在线观看app | 亚洲精品中文字幕不卡在线 | 91亚色视频| 亚洲综合无码一区二区 | 亚洲国产2025最新 | 婷婷久久综合九色综合97 | 99精品热6080yy久久 | 丰满人妻熟妇乱精品视频 | 日韩精品一区 | 欧美日韩在线一区二区三区 | 精品黑人一区二区三区 | 国产91大片精品一区在线观看 | 国产欧美日韩高清在线不卡 | 成人性生交大片免费看96 | 二区三区在线 | 99热国产这里只有精品 | 果冻传媒2025精品一区 | 亚洲国产精品无码一区二区 | 中文精品久久久久人妻不卡 | 亚洲成a人片在 | 国产蜜桃一区二区三区在线观看 | 亚洲无码黄色视频在线 | 成人午夜啪啪免费网站 | 国产台湾无码av片在线观看 | 亚洲av极品无码专区在线观看 | 日韩视频精品动漫一区 | 国产人妖网站视频 | 精品国产无码大片在线看 | 人人草人人爱 | 亚洲精品电影网 | 亚洲免费图区在线视频 | 色婷婷91 | 日韩国产亚洲欧美成人图片 | 精品国产不卡一区二区三区 | 亚洲国产欧美日本韩国中文在线字幕 | 丰满少妇夜夜爽爽高潮水 | 国产av巨作丝袜秘书 | 在线观看国产麻豆 | 久久91精| 99精品视频久久精 | 波多野结衣无码高清在线观看 | 麻豆乱码国产一区二区三区 | 国产美女一级片 | 日韩成人一区二 | 动漫3d精品一区二区三区乱码 | 午夜福利视频合集1000 | 91精品啪在线观看国产线免费 | 香蕉视频在 | 国产成人综合亚洲 | 国模无码人体 | 国产成人精品无码 | 亚洲欧美日韩在线观看无 | 日本中文字幕www | 中文字幕一区波多野结衣 | 色欲av永久无码精品无码 | 国产人成无码视频在线观看 | 国产麻豆剧传媒精品国产av | 国产免费不卡av在线播放 | 三上悠亚精品二区在线观看 | 97久久精品久久免费观看 | 无码精品久久 | 成年女人a级毛片免费观看 成年女人a毛片免费视频 | 国产一区二区三区水蜜桃 | 四虎永久在线精品免费 | 国产女主播白浆在线观看 | 国产成人午夜福利r在线观看观看 | 日本中文 | 91视频网址入口 | 国产麻豆精品 | 国产福利在线视频 | 亚洲男人的天堂aⅴ在线视频 | 国产精品一区二区av片福利 | 无码国产精成人午夜视频一区二区 | 日韩免费a级毛片无码a∨ | 果冻传媒2025网站入口官方最新 | 99re6久| 欧美日韩高清一区二区三区 | 午夜三级毛片欧美国 | 国产无套 | 99久久亚 | 国产日韩精品一区二区三区在线观 | 人妻系列偷拍无码视频 | 欧美视频在线视 | 欧美性色xxxxⅹooo | 精品久久免费观看 | 国内亚洲精品视频久久 | 日本一区二区三区免费 | 97超频在线视频免费观看 | 欧美高清一区二区三区 | 99久久国产视 | 亚洲熟妇无码另类久久久 | 欧美人妖视频网站 | 97碰碰碰| 美女18禁黄无遮挡网站 | 国产免费人成网站x | 91桃色在线观看视频 | 97久久精品人人澡人人爽 | 亚洲av一级在线免费观看 | 91星空无限传媒在线 | 精品动漫中文字幕一区二区三区 | 国产亚洲人成网站在线观看 | 国产人成视频 | 97国产婷婷综合 | 国产亚洲av手机在线观看 | 中文字幕123区 | 一区二区三区免费播放 | 国产成人精品免费视频大全 | 日韩av一级毛片无码 | 欧美日韩国产成人在线观看 | 日韩电影免费在线观看网站 | 91九色中文在线播放 | 亚洲免费在线观看 | 中文字幕免费在线看线人动作大片 | 亚洲欧美日韩久久精品黄色片 | 99精品国产在热久久无毒不卡 | 97超清在线观看 | 美女扒开奶 | 欧美精品| 97精品一区二区三区 | 97av| 精品无码国产不卡在线观看首 | 国产一区二区三区四区精华液毛 | 国产在线第一区二区三区 | 日本特黄特色aaa大片免费 | 无人区一码卡二卡三乱码 | 国产午夜福利在线播放 | 欧美av色香蕉一区二区久久 | 精品国产aⅴ无码一区二区蜜桃 | 成人第四色 | 亚洲另类无码一区二区三区 | 人妻无码aⅴ中文字幕系列 人妻无码αv中文字幕久久 | 国产观看免费在线久 | 成全视频在线观看免费高清在线观看 | 亚洲无码精品免费一区 | 中文www天堂在线网 中文不卡视频 | 9久久9久久精品 | 亚洲国产精品成人a∨在线 亚洲国产精品成人av在线 | 国产无你高清在线观看av | 日本高清成本人视频一区 | 日本一区二区在线播放 | 91在线精品播放 | 99伊人网 | 在线欧美日韩亚洲国产一区 | 国产女人18毛片水真多18精品 | 中文字幕综合网 | 中文字幕在线播放 | 国产aⅴ无码专 | 欧美日韩国产精品va | 国产亚洲精品欧洲在线观看 | 变态另类天堂无码专区 | 国产精品呦交免费视频 | 国产精品亚洲午夜一区二区三区 | 欧美高清视频www夜色资源网 | 无码av永久免费专区网站 | 亚洲熟妇无码av | 午夜看片网址97久久精品视频 | 精品日韩在线观看 | 在线观看一区二区在线观 | 午夜国产大片免费观看 | 97久久天| 日韩亚洲av无码一区二区三区 | 亚洲精品午夜久久aaa级久久久 | 果冻传媒2025网站入口下载 | 国产欧美一区二区三区久久 | 国内不卡1区2区 | 国产欧美整片∧v | 午夜亚洲www湿 | 国产精品成人第一区二区三区 | 91精品国产一区自在线拍 | 蜜臀av性久久久久蜜臀aⅴ麻豆 | 亚洲东京热无v一区综合精品区 | 欧美综合自拍亚洲综合图区 | 亚洲avav天堂av在线精品一 | 亚洲国产小视频 | 国产一区二区三区成人欧美日韩在 | 麻豆国产av精选 | 色狠狠av一区二区三区 | 亚洲女人的天堂网观看 | а√天堂资源bt在线官网 | 99久久精品国产国产毛片 | 国产av国片| 亚洲电影日本强d在线播放 亚洲电影日韩精品 | 在线精品国产一区二区三区88 | 国产做无码视频在线观看浪潮 | 国产成人无码精品久久二区三区 | 国产成人精品免费影视大全 | 黄片看看亚洲最大 | 人妻一级毛片免费看 | 欧美日韩精品久久久免费观看 | 性色av一区二区三区咪爱四虎 | 国产一区 | 人人操人人干人人玩 | 精品丰满欧美一区二区三区 | 国产秀色在线www免费观看 | 国产精品臀控福利在线观看 | 欧美区精品系列在线观看不卡 | 人妻无码aⅴ中文系列久久免费 | 高清无码一区波多野结衣x99av | 国产成人午夜福 | 欧美日韩一区二区三区在线播放 | 国内精品免费久久久久电影院97 | b毛多的女人图片 | a级日本理论片在线播放 | 日韩国产激情www | 国产在线拍揄自揄 | 国产精品男女 | 国产乱码精品一区二区三区 | 国产成人精品亚洲日本在线 | 国精产品一 | 国产午夜激无码αv毛片久久 | 亚洲国产精品国自产拍av | 成人片黄网站色 | 国产精品拍综合在线 | 亚洲av无码一区东京热久久 | av成为人电影一区二区三区 | 日韩av一级毛片无码 | 91精产品自偷自偷综合 | 日韩人妻久久久久 | 国产综合av一区二区三区无码 | 亚洲午夜无码久 | 国产sm系列在线观看 | 天天综合色天天综合色hd | 在线首页av免费观看 | 日韩欧美国产综合在线 | 91电影网 | 欧美最猛性xxxxxx | 精品久久久久久久久一起玩 | 99国产欧美久久久精品蜜芽 | 国内精品久久久 | 国产欧美综合一区二区三区 | 操女优国产成人综合色在 | 亚洲av成人永久无在线观看 | 国产做a | 国产成人精品日本亚洲77美色 | 亚洲无码二级黄色网站 | 精品国产无码大片在线看 | 午夜十二点高清完整版免费观看 | 精品一区二区三区在线观看视频 | 日韩亚洲国产激情在线观 | 成人午夜久久青苹果影院 | 日日摸日日碰夜夜爽无码 | 精品福利在线观看 | 国产精品香蕉在线观看 | 亚洲精品天堂无码中文字幕 | 精品无人区无码乱码毛片国产 | 亚洲一区二区三区四区五区六区 | 四虎成人网址 | 国产亚洲精品福利视频在线观看 | 国产精品自产拍在线网站 | 美奶福利视频一区二区三区 | 国产成人综合亚洲精品777 | 一区二区三区日本视频 | 中文字幕一区波多野结衣 | 日韩在线观看第一页 | 日韩高清无码v | 国产在线播精品第三 | 少妇高潮喷潮久久久影院 | 国产爆初菊一区 | 精品国产av无码久久久黄 | 欧美乱妇高清免费96欧美乱妇高 | 91成人在线观看 | 国产成人va视频在线观看 | 亚洲va国产va欧美 | 日本高清天码一区在线播放 | 成人网址在线观 | 精品一区二区三区四区无码 | 91桃色安卓版下载 | 在线观看国产丝袜控网站 | 国产成人精品亚洲午夜 | 色婷婷综合久久久久中文 | 国产午夜福利在线观看红一片 | 国产在线一91区免费国产91 | 精品亚洲国产专区在线观看 | 日本无码视频精品一区二区 | 国产精品久在线观 | 久久99九九精品久久久久齐齐 | 国产v精品成人免费视频71pao | 欧美成人高清视频a在线看 欧美成人高清在线播放 | 苍井空亚洲精品aa片在线播放 | 国产在线视频二区不卡 | 日本深夜福利19禁在线播放 | 久久99国产精品片久久99蜜桃 | 亚洲a∨一区二区三区18 | 精品第一国产综合精品aⅴ完整版 | 亚洲乱码卡一卡二卡 | 国产r级在线 | 91精品天美精东 | 日韩午夜影院在线观看 | 一区二区三区精品视频 | 日韩欧美电影在线 | 91精品91久久久 | 亚洲无码在线观看免费视频 | 中文字幕国内精品久久人妻 | 亚洲日本va午夜在线影院 | 日本经典电影在线观看 | 国内精品九九久久久精品 | 午夜三级毛片欧美国产精品 | 91尤物国产自产福利在线观看 | 中文字幕乱码av | 一区二区三区精品 | 国产精品嫩草影院免费 | 丰满少妇愉情中文字幕18禁片 | 欧美一区二区三区啪 | 亚洲av无码一区二区三 | 黄网站色视频免费观看无码一区 | 日本限制 | 亚洲av无码一区二区三区dv | 91精品人妻一区二区蜜桃 | 一区二区三区国产无码 | 国产精品伦理久久久久 | 国产成人精品午夜视频 | 亚洲精品高清一线久 | 91精品在线视频观看 | 亚洲毛片av日韩av无码 | 麻豆国产一级片在线观看 | 亚洲国产成人高清片在线观看 | 亚洲国产精品va在线观看麻豆 | 久草超碰一区二区在线 | 极品尤物国产在线播放 | 欧洲va亚洲va韩国va | 在线观看免费视频一区 | 99精品免视看 | 国产日韩欧美一区二区久久精品 | 国产精品爽爽va在 | 久久91亚洲精品中文字幕奶水 | 人妻日韩精品中文字幕 | 日本中文字幕一区二区有码在线 | 国产精品一区久久 | 日本中文无线码在线观看 | 91精品啪在线观看国产线免费 | 国产精品久片在 | 日韩精品国产自在久久现线拍 | 午夜精品久久久久久久无码 | 国产无套露面在线 | 午夜剧场a级毛片 | 亚洲国产成人精品一区刚刚 | 91下载站 | 中文亚洲av片在线1观看 | 国产乱xxxxx97国语对白 | 激情麻豆视频 | 丰满孕妇孕交 | 欧美日韩女优在线 | 精品日韩国产欧美视频 | 欧美成人精品高清在线播放 | 成人男人的天堂av | 国产麻豆精品国产传媒av | 国产看黄网站又黄又爽又色 | 日韩三级+在线播放 | 丰满少妇人妻hd高清大乳 | 香蕉久久夜色精品国产 | 人妻体内射精一区二区三四 | 国产av永久无码精品网站 | 麻豆国产精品va在线观看不卡 | 波多野结衣乳喷高潮视频 | 日本一区二区三区免费在线观看 | 97欧美精品系列一区二区 | 日本丰满岳乱妇在线观看 | 国产午夜无码专区喷水 | 国产午夜福利短视频 | 人妻日韩欧美综合制服 | 亚洲一二三四五区 | 成年肉动漫在线观看无修 | 精品少妇人妻av久久免费 | 无码日韩aⅴ一区二区三区 无码日韩av一区二区三区 | 国产精品国产免费无码专区 | 东京热中文字幕aⅴ专区 | 无码区日韩特区永久免费系列 | 亚洲日本乱码一区二区产线一∨ | h无码动漫超w网站 | 国产精品尹人在线观看 | 国产美女流出白浆在线观看 | 国产福利免费 | 蜜臀视频免费观看国产一区二区 | 国产精品不卡一区二区三区四区 | 亚洲av无码男人的天堂 | 国产巨胸爆乳裸体免费视频 | 午夜性色福利视频久久 | 国产精品一久久香蕉国产线看观看 | 99久久无码免费国产 | 国产激情无码一区二区视频 | 国产精品嫩草影院在线 | 果冻传媒91制片厂女艺人名单 | 在线一区二区日本欧美 | 97视频在线精品国自产拍 | 国产一区二区精品久久呦 | 国产精品一区不卡在线观看 | 国产精品秘麻豆免费版 | 精品久久久久国产免费 | 国产成人亚洲日韩欧美久久 | 国产91玩精品秘入口福利 | 日本波多野结衣久久久久 | 国产激情一区二区三区成人 | h漫全彩纯肉无码网站 | 国产在线无码一区二区三区 | 亚洲va久久久噜噜噜久久刺激 | 人妻丰满熟妇 | 亚洲成a人一区二区三区 | 国产在线一区二 | 国产成人无码18禁午夜福利p | 成人美女黄网站色大免费的 | 国产人妻精品久久久久野外 | 91制片厂制作果冻传媒麻豆 | 国产乱女乱子视频在线播放 | 欧美精品黑人粗大 | 99精品人妻一区二区 | 无码人妻精品一区二区三区66 | 91精品无人区麻豆乱码4区开放 | 日本香蕉一区二区在线观看 | 偷拍久久国产视频免费2025 | 精品无码一区二区三区亚洲桃色 | 亚洲va国产日韩欧美精品 | 欧美日韩精品 | 99久久久免费精品播放 | 国产高潮白浆加无码 | 国产精品国语刺激对白在线观看 | 九九热99久 | 成人黄色在线观看 | 国产乱子伦精品免费视频 | 国产亚洲欧美高清在线观看 | 亚洲日韩精品看片无码 | 欧美高清国产一区二区三区 | av中文字幕精品一区二区久久久 | 亚洲国产日韩在线观看18 | 国产办公室秘书 | 老司机aⅴ在线精品导航 | 国产很色很黄很大爽的视频 | 欧美一区二区三区久久综合 | 亚洲一区日韩一区 | 69国产成人精品午夜福中文 | 国产成人久久精品77777 | 69sex久久精品国产麻豆 | 亚洲aⅴ无码精品一区二区三区 | 国产精品自拍午夜福利在线播放 | 亚洲精品日韩专区 | 无码国产6 | av无码av天天av天天爽 | 日韩高清 | 97se亚洲国产综合自在线观看 | 黄网站色视频免费观看 | 日韩欧美系列精 | 99久久综合精品国产 | 亚洲无码 | 九一香蕉| 国产精品99久久99久久久 | 91天堂亚洲色欲天堂久久 | 亚洲日本人成中文字幕 | 麻豆国产av巨作国产剧情 | 国产福利电影一区二区三区 | 亚洲日韩在线观看 | 中文字幕日本最新乱码视频 | 精品无码成人久久久久久动漫 | 国产成人aa在线观看 | 亚洲日韩欧美精品 | 国产精品高清另类一区二区三区 | 日韩精品免 | 国产精品露脸国产对白 | 午夜精品福利电 | 内射后入在线观看一区 | 国产v片在线播放免费观看大全 | 国产成人愉拍免费视频 | av大片在线观看 | 亚洲亚洲人成综合丝袜图片 | 国产欧美日韩综合精 | 色综合99久久久无码国产精品 | 99视频社区下载 | 99在线精品国自产拍中文字幕 | 欧美剧大全高清全集免费在线观看 | 日本gv在线一区二区三区 | 韩国精彩电影电视剧推荐在线观看 | 国产精品无码久久久久久久久久 | 国产日韩欧美亚洲综合在线 | 亚洲综合国产一区二区三区 | 亚洲成av人片天堂网久久 | 欧美孕妇变态重口另类 | 亚洲精品永久在线观看 | 亚洲欧美精品日韩欧美 | 97超级碰碰碰久久久久 | 国产精品无码dvd在线观看 | 日韩电影一区二区三区红桃 | 国产精品免费看久久久无码 | 国产成人亚洲精品乱码在线 | 动漫美女的巨乳被揉胸 | 精品国产a | 麻豆成人av电影 | 99久久国产综合精品 | 91在线无码一区二区 | 韩国午夜理伦三级在线观看中文版 | 丰满尤物一区二区三区 | 人人妻人人澡欧美一区二区 | 亚洲日本中文字幕天天更新 | 亚洲精品高清国产一线久久 | 国产精品一级免费av | 91模特国 | 天美传媒果冻传媒国产日本 | 9久久99久久久 | 亚洲中文字幕久久精品无码app | 91在线免 | 中文字幕乱码亚洲第一页 | 无码人妻精品一区二区三区66 | 国产精品国产av片国产 | 精品日韩中文字幕 | 高清无码专区av | 国产欧美在线观看免费观看 | 敌伦交换一区二区三区流畅不卡顿 | 欧美v日韩v国产 | 亚洲av日韩在线中文一区二区 | 四虎影视国产永久免费 | 日产综合欧美一区二区 | 午夜精品久久久久久毛片 | 国精品产区wnw2544 | 少妇精品揄拍高潮少妇 | 国产va免费精品高清在线观看 | 卡通动漫日韩无码一区二区三区 | 亚洲国产精品无码久久98 | av麻豆出品免费在线观看 | 91麻豆国产视频一级片 | 99久久国产热无码精品免费久久久久 | 无码专区午夜福利在线观看 | 国产成人拍精品视频午夜网站 | 女性高爱潮aaaa级视频免费 | 国产v无码专区亚洲v桃花庵 | 国产色欲av一区二区三区 | 特级毛片视频无码免费看 | av免费不卡国产观看高清 | 国产精品免费无遮挡无 | 狠狠人妻久久久久久综合蜜桃 | 欧美三级不卡在线观看 | 国内精品久久久 | 色综合网站av综合无码综合网 | 国产综合精 | 亚洲精品97久久中文字幕无码 | 国产日韩高清一区二区三区 | 日韩精品欧美在线视频在线 | 天天干天天色综合 | 无码欧美人xxxxx日本漫画 | 国产成人啪精品午 | 国产精品成人第一区二区三区 | 99在线精品国自产拍中文字幕 | 国产ts在线播放网站 | 97久久精品人妻人人搡人人玩 | 国语自产精 | 亚洲av无码国产精品色 | 在线a级毛片无码免费真人 在线a精品一区二区 | 亚洲三级片在线观看 | 变态sm天堂无码专区 | 成年女人免费碰碰视频 | 中日韩一卡二卡三卡四卡免 | 成年永久一区二区三区免费视频 | 精品国产在天天线在线 | 午夜精品国产爱在线观看不卡 | 国产对白刺激 | 亚洲av无码一区二区三 | 剧情av原创免费 | 国产成人无码精品一区在线观看 | 亚洲v无码精品色午夜v电影 | 亚洲无码在线小视频 | 午夜福利电影1区 | 97久久精品人妻人人搡人人 | 精品香蕉一区二区三区 | 99精品久| 日本乱码伦午夜福利在线 | 国产永久观看在线 | 国产成人精品高清在线观看99 | 日韩av无码专区免费 | 午夜视频在线观看一区 | 亚洲欧美一区二区 | 国产一区91在线精品 | 国产精品一区二区av日韩在线 | 91蜜桃传媒精品久久久一区 | 国产片欧美片亚洲片久久综合 | 精品国产av无码久久久黄 | 亚洲精品一区二区三区四区五区 | 欧美尤物精品国产中文 | 国产精品内射后入合集 | 91po最新 | 在线播放国产一区二区三区 | 亚洲日韩精品第 | 欧美在线观看一区 | 韩国理论片久久电影网 | 人妻少妇偷人系列 | 欧美少妇国产影视 |