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

金喜正规买球

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
    神马电影院午夜神福利在线观看 | 中文字幕在线精品视频万部 | 日韩免费无 | 午夜伦理电影网电影午夜伦理 | 欧美日韩免费高清一区二区 | 国产人在线成 | 亚洲中文字幕在线停止 | 青青国产在线观看 | 亚洲色成人www永久在线观看 | 精品国自产拍网站 | 99九九精品国产高清自在线 | 97超视频在线观看视频在线 | 另类国产精品一区二区 | 国产交换一区二区三区 | 亚州一区二区三区免费大片 | 日本一夲道dvd在线 在线观看国产一线天木耳奈奈 | 伊伊人成亚洲 | 精品影片在线观看的网站 | 日本高清不卡中文字幕视频 | 曰本性l交片视频免费 | 男人的天堂欧 | 国产一区日韩二区欧美三 | 国产乱伦视频 | 欧美日产欧美日产精品 | 最近中文字幕高清字幕在线视频 | 国产精品亚洲日韩aⅴ在线 亚洲成a人v欧美综 国产美女嘘嘘嘘嘘嘘 | 国产日产高清欧美一区 | 日本vs亚洲vs韩国一区三区 | 一区两区三区 | 欧美精品xx | 开心激情五月婷婷综合 | 国产12| 精品国产不卡一区二区三区 | 日本三级理论一区二区三区 | 亚洲理伦片精 | 一个视频在线观看免费 | 一本到国产在线精 | 热门好看的电影大全 | 乱子伦视频一区二区三区 | 欧美精品18videose | 三级影视 | 91福利国产午夜亚洲精品 | 国产拳头交一 | 亚洲精品成人区在线观看 | 青草青草久热精品视频在线播放 | 99re国产精品视频首页 | 国产又粗又黄又爽的大片 | 成人天堂资源在线观看 | 日韩欧美国产中文综合 | 欧美三级欧美一级在线视频 | 国产美女淫秽一区二区三区 | 中文字幕v亚洲ⅴv天堂 | 国产香蕉一区二区在线网站 | 亚洲国产韩国欧美在线 | 在线观看国产精选免费 | 九九热线有精品视频 | 亚洲日本一区二区一本一道 | 亚洲国产综合一区日韩精品 | 国语自产免费精品视频一区二区 | 国产一级大片在线观看 | 欧美中文字幕在线视 | 日本精品欧美一区二区三区 | 国产经典 | 日本久本草 | 最近的2025中文字幕免费 | 亚洲一区二区成人精品 | 国产又粗又长又黄又猛又爽视 | 日韩激情不卡一 | 日韩在线看精品免费视频 | 国产精品一线天在线观看 | 最近高清中文字幕免费mv视 | 男女超爽视频免费网站播放 | 欧美日韩免费手机在线 | 老司机精品 | 亚洲性影院在线看 | 午夜影视在线播放免 | 精品免费看国产一区二区 | 97porm国内自拍视频 | 精品国产又大又长又爽 | 2025最新国产在线看 | 欧美性色aⅴ欧美综合色 | 亚洲动作一 | 大地资源中文在线观看官网第二页 | 国产欧美日韩综合精品无毒 | 欧美亚洲韩国日本一区 | 国产乱码精品一区三上 | 永久免费精品性爱网站 | 国产自产自拍视频 | 国产午夜亚洲精品理论片八戒 | 丝袜亚洲精品中文字幕二区 | 永久免费不卡在线 | 青青国产揄拍在线观看 | 亚洲欧洲专线 | 人伦小说视频在线 | 偷拍一区 | 亚洲三区在| 欧美国产剧情一区二区 | 日韩在线视频不卡一区二区三 | 亚洲欧美日韩另类国产第一 | 97视频在线观看视频 | 国产精品成人免费 | 亚洲制服丝袜自拍中文字幕 | 成人欧美一区二区三区黑人 | 男人的天堂a | 欧美日韩国产高清一区二区三区 | 亚洲春黄在线观看 | 91视频网站 | 九九免费福利精品视频 | 在线观看视频欧美 | 国产偷v国产偷v | 国产suv精 | 色狗电影网 | 大地资源网最新在线播放 | 国产日韩免费视 | 国产精品午夜福利免费老师 | 国产综合精品在线 | 国产一区免费在线观看 | 国产suv精品一 | 亚洲一区二区三区在线观看 | 亚洲欧洲另类春色 | 影视大全官网 | 草莓视频污污版 | 天天被干免费观看视频 | 香港日本三级在线播放 | 亚洲欧美另类在线图片区 | 欧美日韩综合在线播放 | 美女被男人桶到爽免费网站 | 办公室大战高跟丝袜秘书经理ol | 国产欧美一 | 成人三级视频在线观看 | 国产日韩精品一区二区在线播放 | 欧美亚洲色另类偷自拍 | 乱仑图片 | 亚洲欧美日韩激情在线观 | 亚洲精品一区二区国产精华液 | 国语自产精品视频熟女 | 中文字幕亚洲 | 91国内精品线免费播放 | 中文视频二 | 成人午夜福利免费体验区 | 国产伦一区二区三区蜜桃 | 青青青国产在线观看资源 | 亚洲欧美一区 | 日本汚视频在线观 | 亚洲午夜成人精品电影在线观看 | 国产精品国产自线拍免费不卡 | 香港午夜三级a三级高清观看 | 精品国产aⅴ | 美女人成大片免费视频看看 | 午夜成人爽爽爽视频在线观看 | 国产国产乱片在线播放 | 亚洲精品国产自在在线观看 | 夜夜爽一区二区三区精品 | 国产视频福利一区电影 | 频道国产在线资源 | 成人欧美精品资源在线观看 | 亚洲熟女一区二区三区 | 精品国产福利在线观看91啪 | 日韩欧美在线观看一区 | 91热成人精品国产免费 | 日本中文字幕二区三区 | 国产亚洲精品国产福利在线观看 | 免费获取| 国产一区二区三区美女 | 偷自拍亚洲视频在 | 亚洲激情自拍偷 | 777米奇| 亚洲熟女综合色一区二区三区 | 欧美日韩国产综合视频在线观看 | 国产欧美日韩精品视频二区 | 日韩欧美亚洲国产永久在线观看 | 国产超级在线视频观看 | 国产欧美一区二区 | 日本高清免费不卡视频 | 精精国产xxxx视频在线 | 欧美日韩精品一区二区在线播放蜜 | 国产隔着超薄丝袜进入 | 欧美视频第一页 | 在线日本看片免费人成视久网 | 在线精品亚 | 亚洲人成中文字幕在 | 亚洲国产精品自产在线播放 | 欧美激情在线精品video | 亚洲熟女乱综合一区二区 | 国产二区丝袜在线观看 | 欧洲影院网 | 日韩一区二区三区四区五区 | 日日爽天天 | 偷拍视频一区二区三区 | 国产福利小视频在线免费观看 | 欧美精品国产制服一区 | 专区不卡 | 国产精品成人一区二区三区电影 | 日本肥老妇色xxxxx日本老妇 | 99视频在线免 | 国产精品三三级在线 | 一区二区三区在线观看视频 | 国产91视频在线观看 | 日本黄页网站 | 制服丝袜中文字幕在线 | 三年片免费观看影视大全视频 | 亚洲精品亚洲人 | 国产日本精品视频 | 欧美日韩一道在线 | 香蕉国产亚洲精品va在线观 | 亚洲国产精品欧美日韩一区二区 | 国产精品v欧美精品∨日韩 女の乳搾りです在线观看 精品不卡一区二区 | 正版高清视频在线观看 | 国产又粗又爽视频 | 国产真实破 | 最新热门电影电视剧免费在线观看 | 日韩欧美高清dvd碟片 | 最新中文字幕在线 | 顶级欧美色妇xxxxx | 十分钟在线观看免费直播 | 全黄裸片一29分钟免费真人版 | 综合国产影视 | 把伸进女人的www下载 | 99视频精品全部国产盗摄 | 精品成人免费国产 | 欧美日韩国产一中文字不卡 | 91欧洲在线视精品在亚洲 | 国产aⅴ熟女 | 亚洲囯产一区二区三区 | 噼里啪啦免 | 精品一区二区三区在线免 | 最新高清电影免费在线观看下载 | 亚洲日本欧美日韩中文字幕 | 成人午夜福利免费体验区 | 经典日韩中文字幕综合网 | 韩国三级hd中文字幕电影天堂 | 天堂中文在线最新版地址 | 中文天堂在线 | 亚洲v乱码专区国产乱码 | 欧美在线观看网站 | 精品一区卡2卡3卡 | 日本一本二本三区免费 | 国产乱码在线精品可播放 | 国产不卡视频一 | 日本日本乱码伦视频在线观 | 亚洲日本va| 99这里都是精品 | 亚洲成a∧人片在 | 丝袜美腿精品 | 中文字幕一区二区三区精品 | 精品一区二区三区在线观看视 | 欧美视频 | 国产高清在线精品一区小说 | 国产免费直播在线观看视频 | 日本免费一区二区五区六区 | 在线人成观看 | 欧美精品欧美***欧美激情 | 三年在线观看免费完整版中文 | 国产乱人视频在 | 精品国产一区二区三区香蕉欧美 | 性激片在线播放欧美 | 在线看片免费人成视频手机观看 | 91大片淫黄大片.在线天堂 | 国产欧洲野花a级 | aa级亚洲电影 | 美女诱惑中文一区二区三区 | 国产日韩欧美一区二区三区精品 | 亚洲一区制服丝袜 | 成人激情五月天 | 欧美经典日韩在 | 天天做日日 | 亚洲一区中| 欧美日韩一本无线码专区 | 国人精品视频在线观看 | 在线亚洲精品专区 | 成人午夜一区二区三区视频 | 一区二线视频 | 黄又色高清视频免费 | 欧洲亚洲一区二区三区 | 天天色成人免費 | 国产色系视频在线观看免费 | 护士在办公室被躁bd在线观看 | 日本中文字幕高清 | 观看一区二区视频 | 综合亚洲精品 | 欧美自拍偷拍一区二区 | 日韩综合一区在线观看 | 色8激情欧 | 亚洲人成网站在线观看 | 国产欧美精品一区二区三区四 | 国产精品户| 欧美一级爽快片婬 | 亚洲精品人体大胆 | 911亚洲| 91香蕉成人app | 男女拍拍拍免费视频 | 在线日韩欧美视频一区二区 | 国产精品污www一区二区三区 | 看全色黄大色黄大片女爽一黄 | 美女福利| 捆绑视频 | 欧美亚洲视 | 岛国成人免费大片在 | 国产99精| 电影免费在线观看中文字幕 | 182tv午夜福 国产剧情对白刺激在线 | 国产手机精品一区二区 | 国产精品自在自线 | 婷婷综合缴情亚洲狠狠 | 亚洲成年看片在线观看男男 | 精品一区二区三区在线观看视频 | 国产日产欧产精品精品app | 亚洲国产区男 | 国产精品看高国产精品不卡 | 91伊人影院 | 青青青国产免a | 激情五月婷婷丁香六月 | 91福利国产极品美女在线观看 | 国产精品区网红主播在线观看 | 国产精品亚洲精品日韩已满 | 日韩男女性生活视频在线观看 | 国产熟女激情视频自拍 | 亚洲精品揄拍自拍首页一 | 天天影视色香欲综 | 亚洲欧美中文字幕国产 | 国产精品亚洲二区在线看 | 青草精品 | 喷水gif | 日本a级网站在线观看 | 国产91精品系 | 福利片午夜免费观着 | 一区二区三区激情 | 看黑人巨大精品欧美一区 | 国产悠资源视频在线观看 | 中文字幕乱码亚洲中文在线 | 亚洲国产一区视频 | 最新好看的电视剧免费在线观看 | 91国内揄拍国内精品情侣对白 | 五月天激情视频a级在线版 无吗一区二区三区 | 男女超爽视频免费播放 | 国产精品视频二区不卡 | 精品人伦一区二区三区蜜 | 国产黃色精品三級一区二区 | 亚洲欧美日韩国产综合点此进入 | 欧美特黄特色aaa大片免费看 | 国产一级特黄a大片99 | 国产高清国产精品国产专区 | 99视频在线精品自拍 | 亚洲欧美日韩中文字幕二区 | 电影在线观看免费 | 日韩精品a在线视频 | 国产伦精品一区二区三区视频金莲 | 欧美精品一区二区三区四区 | 国产香港日本三级在线 | 国产一区福利在线 | 国产+高 | 国产刺激视频在线观看 | 国产亚洲一区二区 | 欧美日本道| 国产精品视频每日更新播放 | 日本素人黑人视频 | 国精产品48x国精产品 | 国产精品综合色区在线观看 | 国产传媒一 | 美女视频写真网站 | 成人国产精品免费视频不卡 | 国产国产人成免费视频77777 | 最新91天堂国产电影在线观看 | 国产亚洲aⅴ在线电影 | 国产国语| 国产极品视| 国产精品一区 | 短视频在线下载免费 | 国产自偷自偷免费一区 | 亚洲人人夜夜 | 成视频在线播放免费人成 | 国产66自| 最新免费影视大全 | 精品国产免费人成网站 | 舔射插啊~在线观 | 99热这里只有 | 国产一区二区三区精彩视频 | 国产一级a毛一级a在线观看 | 午夜国产福利看片 | 午夜三级中文在线观看 | 美女遭强 | 日韩精品一区二区三区高清 | 日韩一区二区视频在线观看 | 亚洲男人天 | 免费人成网站在线免费观看 | 国产精品高清视亚洲精品 | 五月丁六月停停 | 91高清免费国产自产拍不卡 | 日韩欧美综合在线制服 | 亚洲国产精品综合 | 日韩精品一区二区免费在线观看 | 天美影视–天美影视传媒有限公司 | 九九热在线观看官网 | 粗大的内捧猛烈进出在线视频 | 日本一卡2卡三卡4卡网站 | 黑人妖欧美一区 | 久99视频精品免费观看福利 | 国人精品视频在线观看 | 日韩高清三级在线观看 | 欧美黑人乱大交 | 新不夜城综合另类 | 欧美重口另类在线播放二区 | 日韩aⅴ黄日韩a影片 | 欧美一级鲁丝 | 自在现偷| 亚洲欧美精品精品aⅴ | 自偷自拍三级全三级视频 | 亚洲综合一区自偷自拍 | 秋霞电影网 | 最新一卡二卡 | 亚洲午夜精 | 中文字幕制服丝袜在线观看 | 天堂视频| 日本最新一日本一二三区 | 国产一区二区三区不卡在线 | 国产精品乱码一 | 九九在线免费视频 | 精品在线一区二区 | 亚洲成a| 国产精品区免费视频 | 午夜成人亚洲理伦片在线观 | 国产精品视频第二区第二页 | 992t | 亚洲欧美一级 | 亚洲热线99精品视频 | 中文字幕一区二区三区免费视 | 人成午夜视频在线观看 | 韩日国产精品一区二区三区 | 羞羞视频免费入口网站 | 综合永久入口 | 欧美色吊丝人人添人人摸 | 日韩欧美国产奇米影视在线观看 | 快乐加倍! | 女人成午夜大片7777在线 | 伊人影视频 | 日韩欧美一区二区三区综学生 | 中文文字幕视频在线观看 | 亚洲中文字幕精品有码在线 | 国产福利在线观看极品美女 | 国产伦理一区二区 | 国产不卡高清在线观看视频 | 天天夜夜欢性恔免费视频 | 最新电影观看 | 国产精品成人aaaaa网站 | 秋霞人成在线观看免费视频 | 亚欧免费大片在线观看 | 丝袜美腿中文字幕 | 最新国产精品自在自线发布 | 日本亚洲欧洲免费无线码 | 亚洲成a人片在线不卡一二三区 | 欧美性受xxxx白人性爽 | 免费视频 | 日韩精品一区二区三区 | 欧美激情一区二区三区高清视频 | 日产无人区一线二 | 日本亚洲国产一区二区三区 | 精品外国呦系列在线观看 | 好吊色青青青国产欧美日韩 | 91精品在线观看中文 | 狂野欧美激情性xxxx | 成人91污污污在线观看 | 亚洲国产的精品太乱码一区二区 | 欧美巨大巨粗黑人性aaaaaa | 中文字幕不卡 | 最新全网影视大全电影电视剧 | 国产思思99re99在线观看 | 在线成人国产公开视 | 老司机深夜免费福利 | 麻花果冻视频大全英文 | 国产精品va欧美精品 | 国产国产乱片在线播放 | 一二三区免费视频 | 精品日韩欧美一区二区在线播放 | 99r在线精品视频在线播放 | 在线精品99re网 | 97韩剧| 日本高清不卡中文字幕网 | 性xxxx| 亚洲手机在线人成网站 | 99中文字幕精品国产 | 色屁屁一区二区三区视频国产 | 91精品国产品国语在线不卡 | 国产精品免费大片 | 日韩欧美一区二区三区免费观看 | 日产精品一卡2卡三卡4卡乱码 | 日本aⅴ | 日韩中文字幕 | 国产国产人成免费视频77777 | 亚洲成a人片在线观看天堂无 | 星云影院 | 日本欧美一区 | 天天看片高清观看免费国产 | 日本在线观 | 欧美激情日韩 | 水蜜桃www | 欧美性猛交 | 欧美校园激情清纯另类 | 欧美囗交xx×bbb视频 | 天黑黑影院免费观看视频在线播放 | 日本大肚| 国产欧美日韩精品第一页 | 日韩欧美1区 | 日本韩国亚洲综合日韩欧美国产 | 国产精品欧美亚洲韩国日本 | 欧美黑吊粗大猛烈18p | 亚洲精品天天影视综合网 | 朝鲜女人大白屁股ass孕交 | 午夜国产精品电影在线观看一区 | 91精品全国免费观看青青 | 国产污污污十八在线精品观看 | 国产又粗又大又黄的视频 | 日韩欧美在线观看视频 | 国产在线精品一区不卡 | 欧美日韩综合在线播放 | 亚洲欧美日本一区二区三区 | 国产一级特黄aaa大片在 | 高清在线一区 | 国产一区二区三精品久 | 欧美变态口味重另类在线视频 | 区中文字幕 | 免费网站看v片在线爱的影院 | 欧美日韩一区二区综合在线 | 精品一卡2卡三卡4卡免费视频 | 亚洲最稳定资源在线观看 | 国产女人喷潮视频在线观看 | 日本免费 | 无遮无挡三级动态图 | 亚洲日本成本人观看 | 国产真实乱在线更新 | 国产国产精品人在线视 | 91精品视频在线免费观看 | 国产网红刘婷在线视频 | 有码在线中字 | 亚洲精品永久一区 | 成人国产在线 | 精品国产亚洲三 | 国产欧美日韩 | 红杏亚洲 | 免费人成网站在线免费观看 | 国产亚洲视频网站 | 全网热播最新电影电视剧 | 92国产福利午夜757小视频 | 国产在线观看激情 | 国产日韩久 | 亚洲人成亚洲人成在线观看 | 午夜视频在线观看一区二区 | 亚洲成ⅴ人片乱码色午夜 | 欧美日韩亚洲国产高清 | 亚洲综合精品成人 | 国产三級精品专区 | 婷婷国产精品中文字幕 | 一二三区欧美视频 | 欧美日韩视频一区二区三区 | 亚洲欧美另类 | 秋霞国产精品一区二区 | 国产色秀精品综合 | 国产揄拍视频在线观看 | 对白在线观看 | 欧亚乱色熟一区二区三四区 | 天美麻花星空免费观看乡村版 | 暴雨入室侵犯进出肉体免费观看 | 中文字幕在线免费专区 | 影视大全网 | 亚洲国产精品特色大片观看完整版 | 尤物网红麻酥酥 | 五月天婷婷激情 | 亚洲中文在线不卡 | 亚洲国产人成在线观看 | 国产偷窥女洗浴在线观看亚洲 | 国产精品美女网站在线观看 | 亚洲熟肉一区二区三区 | 中文字幕按摩做爰 | 欧美一区二区在线观看 | 欧美日韩高清不卡 | 免费+国产+日本 | 欧美自拍另类欧美综合图片区 | 国产v片在线播放 | 国产精品18 | 国产高清视频在线观 | 精品亚洲日韩国产一二三区 | 一区二区免费国产在线观看 | 国产aⅴ片 | 去卫生间啪到腿软 | 欧美精品一区二区三区四 | 欧美在线观看一区 | 欧美国产激情一区二区三区蜜月 | 欧美黑粗特黄午夜大片 | 亚州一级在线播放 | 精品国产女主播在线观看 | 亚洲天堂一区二区三区 | 最好的观看2025中文 | 欧美精品+在线播放 | 亚洲国产在一二区三区不卡 | 亚洲国产区男 | 亚洲人成aⅴ在线播放 | 国产精品大片大片看大 | 国产特级婬片免费看 | 国产精品日韩精品 | 亚洲精品亚洲精品亚洲精品日韩 | 全网最新院线电影 | 欧美成精品视频在线观看 | 日韩精品一区二区三区vr | 日韩欧美亚洲一区二区三区四 | 精品国产aⅴ一区二区三区四川人 | 国产精品成人国产乱 | 亚洲精品高清中文字幕完整版 | 水蜜桃视频网站在线观看网址 | 国产精品自在在线午夜 | 国产喷水大秀在线观看2025 | 二区三区在线播放 | 手机看片日韩国产一区二区 | 欧美精品午夜一二三区 | 福利吧导航 | 一区二区三区四区在线不卡高清 | 自偷自拍三级全三级视频 | 国产一区二区乱子伦在线 | 日韩精品制服诱惑中文字幕 | 日本一区二区精品免费 | 欧美xx在线| 夜色在线国产精 | 亚洲精品熟女中文字幕 | 国产又粗又黄又爽的大片 | 一区二区三区四区 | 国产亚洲成年网址在线观看 | 制服丝袜亚洲中文综合 | 国产网红刘婷在线视频 | 韩国三级hd中文字幕电影天堂 | 两个人免费视频观看高清视频 | 欧美性受xxxx黑人xyx性爽 | 国产精品网红尤物福利在 | 国产末成年 | 好吊操视频这里只有精品 | 亚洲国产人成在线观看 | 天堂在线最 | 97伦理电影在线不卡 | 国产福利观 | 欧美人与动牲 | 精品午夜免费高清视频 | 亚洲精品区午夜亚洲精品区 | 欧美一级特黄aaa大片在线观 | 亚洲中文字幕 | 2025天堂在线亚洲精品专区 | baoyu网址国产最新 | 国产亚洲 | 国产在线精品一区二区在线看 | 国产又色又爽又黄又刺激的网站 | 日韩欧美中文精品电影 | 亚洲欧美日韩综合在线 | 精品国产乱码 | 日本欧美中文字幕精品一区 | 欧美一级成在线人 | 韩国伦理电影在线观免费观看 | 日本一区二区三区在线观看不卡 | 18处破外女出血在线 | 日本护士视频欧美无砖专区 | 日本三级全黄三级a | 国产中文亚洲日韩欧美 | 国内成人福利短视频在线 | 8x8x精品一区二区 | 影视大全电视剧在线播放 | 免费电影天堂 | 亚洲人成网站在线 | 国产精品一卡二卡三卡四卡 | 欧美另类制服丝袜国产 | 麻花传媒 | 亚洲精品一区二区三区在 | 日韩国产中文字幕在线观看 | 明星国产欧美日韩在线观看 | 国产精品ⅴa在线观看 | 国产精品k频道首页在线观看 | 日本高清乱理伦片中文字幕 | 国产拍揄自揄免费观看 | 综合乱伦自拍影视 | 国产高清在线精品二区一 | 精品国内一区二区三区免费 | 欧美曰韩 | a午夜福利精品国产 | 日韩四级片在线看 | 一区二区三区 | 欧美日韩精品久 | 泰剧tv网| 欧美人与动牲猛交a欧美精品 | 国产精品视频免费一区二区三区 | 国产午夜视频在线观看 | 成人午夜福利免费体验区 | 91成人小视频 | 五月天精品视频在线观看 | 日韩精品在线观看欧美 | 欧美特黄aaaaa| 亚洲愉拍自拍另类 | 成人国产精品高清 | a级粗大硬长爽猛视频免费 视频二区日韩 | 国产精品va在线 | 国产一区二区三区视频在线观看 | 一出一进一爽一粗一大视频免 | 天堂资源中文 | 九九在线观看精品视频6 | 国产香蕉国产精品偷在线观看 | 国产久一视频在线观看app | 日本三级带日本三级带黄首页 | 欧美精品视频在线观看 | 日本另类αv欧美另类aⅴ | 五月激情丁香婷婷综合网 | 国产一本视频在线播放 | 91青青国产在线观看免费 | 国产老妇玩伦国产熟女高清 | 亚洲人成色777777精品 | 最新中文字幕在线观 | 亚洲国自| 国产在线精品一区二区在线看 | 91秒拍国产福利 | 日韩欧美国产动漫在线 | 日韩伦理电影中文在线 | 国产一级淫片免费视 | 不卡影视| 黄页免费观看 | 好看动漫 | 国产视频精 | 日韩精品亚洲精品第一页 | 又黄又爽| 在线亚洲欧国产精品专区 | 亚洲精品一区二区三区视频在线观 | 国产在线精品拍揄自揄免费 | 一区二区三区四区在线观看视频 | 五月婷婷国产在线 | 三三影院网 | 精品国产aⅴ一区二区三区四川人 | 国产精品日本一区二区不卡视频 | 国产91丝袜在线播放网站 | 2025高清免费热播电视剧电影 | 国产国产人免费视频成69大陆 | 亚洲最新中文字幕aⅴ天堂 亚洲成aⅴ人的天堂在线观看女人 | 亚洲a级情欲片在线观看 | 国产污视频在线观看 | 国产主播在线观看网 | 五月综合激情婷婷六月色窝 | 国产精品亚洲欧美云霸高清 | 亚洲制服中文字幕一区二区 | 亚洲愉拍自拍欧美精品app | 怡红院熟女 | 97久视频精品视频在线老司机 | 迷奷系列在线播放456 | 亚洲制服中文字幕一区二区 | 日本三级韩国三级欧美三级 | 日日摸处处碰夜夜爽 | 日本乱熟 | 大吊干逼视频 | 国产又大又硬又粗视频 | 成人精品动漫一区二区三区 | 亚洲国产高清国产拍精品 | 国产精品天天看 | 亚洲精品一区二区不卡 | 国产熟女一 | 成人国产亚洲精品a区天堂 激情五月天深爱网 | 国产亚洲欧美视频 | 国产精品资源网站在线观看 | 国产aⅴ片 | 大地资源第二页中文高清版 | 天天咱天咱天干天谢 | 奇米影视77 | 黄三级高清在线播放 | 日本免费一区二区视频 | 国产真实强奷网站在线播放 | 欧美乱伦国产精品 | 国产一区二 | 久热国产vs视频在线观看 | 国产日韩久| 国产大片黄在线观看 | 国产精品高清一区二区三区 | 女明星a级毛| 亚洲熟女乱综合一区 | 国产欧美日韩精 | 精品欧美视频第二页在线观看 | 成人免费一区二区三区视 | 中文精品 | 公交车被两根粗 | 中文字幕人成乱码在线观看 | 成人国产精品一区二区八戒网 | 国产精品国色综 | 红杏视频打开页 | 激情视频小说在 | 精品国产一区二区三区不卡 | 国产精品永久免费自在线观 | 国产乱子伦三级在线播放 | 色偷偷亚洲女人天堂观看欧 | 久插视频 | 国产精品成人观看视频 | 国产午夜福利在线观看视频 | 亚洲国产日韩欧美一区二区三区 | 歐美性猛交xxxx亂大交3 | 国产精品自拍91 | 欧美日韩国产免费一区二区三区 | 最近最新中文字幕 | 欧美性a视频| 亚洲自拍中文另类 | 国产香蕉大片在线视频 | 一区二区三区免费在线观看视频 | 国产一区在线看 | 欧美精品网站一区二区三区 |