日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于监控服务器指标、CPU、内存、警报的一些解决方案

發布時間:2024/3/13 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于监控服务器指标、CPU、内存、警报的一些解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 關于監控服務器指標、CPU、內存、警報的一些解決方案
    • `Prometheus` + `Grafana` 配置 `IRIS` / `Caché` 監控服務器
      • `Prometheus`
        • 簡介
        • 特點
        • 架構圖
      • `Grafana`
        • 簡介
        • 特點
      • 配置流程
    • 自定義`Prometheus`接口定義
    • 配置 `Exporter` 監控服務器系統資源
      • 簡介
      • 配置流程
    • 使用 `Alertmanager`報警
      • 簡介
      • 配置流程
    • 基于`M`實現監控服務器,并用郵件報警
      • 解析`Prometheus`數據接口信息
      • 使用嵌入式`Python`方式獲取系統`CPU`、內存等
        • `python`模塊之`psutil`詳解
          • `CPU`相關
          • `Memory`內存相關
          • `Disk`相關
          • `Network`相關
          • `Process`相關
        • 通過嵌入式`Python`調用`psutil`庫
      • 使用郵件發送報警信息
        • 使用`M`發送郵件發送消息
        • 通過配置文件`csv`文件,來獲取維護指標,進行郵件報警。
    • 總結
    • 思考

關于監控服務器指標、CPU、內存、警報的一些解決方案

本文章主要介紹以下幾個章節內容:

  • Prometheus + Grafana 配置 IRIS / Caché 監控服務器
  • 自定義Prometheus接口定義 - 配置 Caché 監控服務
  • 配置 Exporter 監控服務器系統資源
  • 使用 Alertmanager報警
  • 基于M實現監控服務器,并用郵件報警
    • 解析Prometheus數據接口信息
    • 使用嵌入式Python方式獲取系統CPU、內存等
    • 使用郵件發送報警信息

Prometheus + Grafana 配置 IRIS / Caché 監控服務器

首先我們介紹一下如何用IRIS結合Prometheus + Grafana的使用,在介紹如何配置之前我們先了簡單了解一下工具。

Prometheus

簡介

Prometheus是一個最初在SoundCloud上構建的開源系統監視和警報工具包 。 自2012年成立以來,許多公司和組織都采用了Prometheus,該項目擁有一個非常活躍的開發人員和用戶社區。它現在是一個獨立的開源項目,可以獨立于任何公司進行維護。為了強調這一點,并澄清項目的治理結構,Prometheus 于2016年加入 云計算本地計算基金會,作為繼Kubernetes之后的第二個托管項目。

特點

  • 具有由度量名稱和鍵/值對標識的時間序列數據的多維數據模型。
  • 一個靈活的查詢語言 來利用這一維度。
  • 不依賴分布式存儲,單個服務器節點是自治的。
  • 時間序列收集通過 HTTP 上的拉模型發生。
  • 通過中間網關支持推送時間序列。
  • 通過服務發現或靜態配置發現目標。
  • 多種圖形和儀表板支持模式。

架構圖

Grafana

簡介

Grafana是一個跨平臺的開源的度量分析和可視化工具,可以通過將采集的數據查詢然后可視化的展示,并及時通知。

特點

  • 展示方式:快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標和日志,官方庫中具有豐富的儀表盤插件,比如熱圖、折線圖、圖表等多種展示方式。
  • 支持多種數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等。
  • 通知提醒:以可視方式定義最重要指標的警報規則,Grafana將不斷計算并發送通知,在數據達到閾值時通過Slack、PagerDuty等獲得通知。
  • 混合展示:在同一圖表中混合使用不同的數據源,可以基于每個查詢指定數據源,甚至自定義數據源。
  • 注釋:使用來自不同數據源的豐富事件注釋圖表,將鼠標懸停在事件上會顯示完整的事件元數據和標記。
  • 過濾器:Ad-hoc過濾器允許動態創建新的鍵/值過濾器,這些過濾器會自動應用于使用該數據源的所有查詢。

配置流程

  • 下載Prometheus,選擇操作系統,下載對應安裝包,以windows為例。
    • 下載地址:https://prometheus.io/download/

  • 下載完成后,直接解壓在所需目錄即可。解壓后進入目錄直接運行premetheus.exe,prometheus默認端口為9090。
  • 在瀏覽器輸入地址、即可查看監控頁面。
    • 地址 - http://localhost:9090/

  • 配置監控服務器信息,編輯 prometheus-2.27.1.windows-amd64/prometheus.yml文件。在scrape_configs:輸入以下代碼:
    • 這里以我的私有服務器地址為例:https://8.142.29.250:2443/api/monitor/metrics。
  • 輸入以下代碼:

    - job_name: "250-IRIS"metrics_path: /api/monitor/metricsscheme: httpstls_config:insecure_skip_verify: truestatic_configs:- targets: ['8.142.29.250:2443']

    其中:

    • job_name - 服務器名稱。
    • metrics_path - 監控服務器地址路徑。
    • scheme - 網絡協議。
    • tls_config - insecure_skip_verify - 過濾完成驗證。
    • static_configs - targets - IP端口號。
  • prometheus.yml文件修改完成后,重新啟動prometheus.exe程序,進入到Status->Targets下,即可看到添加的監控服務器信息;
  • 監控具體指標,點擊Graph->勾選UseLocalime->輸入監控指標iris_cpu_usage->點擊Excute->選擇監控時長范圍30min。
    • iris_cpu_usage - 代表CPU使用率。

    說明:這里監控指標為服務器接口里的具體指標,輸入接口地址具體查看。

  • 由于Prometheus展示的信息相對簡單,圖表類型也比較少,下面介紹如何使用Grafana展示數據。輸入Grafana地址,下載對應版本。
    • 下載地址:https://grafana.com/grafana/download?

  • 下載后直接運行安裝,安裝完成后進入grafana/bin目錄下,雙擊運行garafana-server.exe。
    • garafana默認端口為3030
    • 訪問地址:http://localhost:3000/
    • 默認用戶名密碼admin/admin
  • 在grafana里添加數據源Data Source。
  • 選擇Prometheus。
  • 填寫數據源信息,并保存。
    • Name - Prometheus
    • Url - http://localhost:9090

    • 點擊Save&test顯示測試成功。

  • 創建模版,點擊Dashboards->點擊Browse->輸入模版名稱->New->NewDashboard。
  • 點擊Add a new panel。
  • 選擇數據源Data source,指標iris_cpu_usage -> Run query。
    • Title - 修改儀表盤名稱。

  • 輸入儀表盤名稱,點擊保存即可。
  • 最終效果,依次類推建立多個監控指標。
    • iris_csp_sessions - 會話使用數
    • iris_cpu_usage - cpu使用率
    • iris_system_alerts - 系統警報數
    • iris_process_count - 進程數量
    • iris_glo_ref_per_sec - Global每秒引用數量

    自定義Prometheus接口定義

    那么我們是否可以自定義Prometheus接口呢?

    答案肯定是可以的,整好 Caché 沒有自帶的監控服務,所以我們給Caché 自定義個一個監控服務接口。

  • 首先我們需要創建一個Rest接口類M.Metrics。
  • Class M.Metrics Extends %CSP.REST { }
  • 在Portal中配置Rest接口,系統->安全管理->Web應用程序->編輯Web引用程序。
    • 名稱 - /api/metrics
    • 命名空間 - 選擇Rest接口類所在命名空間
    • 分派類 - M.Metrics

  • 編寫Rest接口邏輯,下面展示主要業務邏輯代碼。
    • 基礎儀表盤接口
    ClassMethod GetDashboardMetrics(ByRef array As %DynamicArray) As %Status {s dashboard = ##class(SYS.Stats.Dashboard).Sample()s properties = ##class(%Dictionary.ClassDefinition).%OpenId(dashboard.%ClassName(1)).Propertiesfor i = 1 : 1 : properties.Count() {s property = properties.GetAt(i)s propertyName = property.Names propertyValue = $property(dashboard, propertyName)if ((propertyValue '= "") && ('$match(propertyValue, ".*[-A-Za-z ]+.*"))) {s metricsName = ..CamelCase2Underscore(propertyName)s metricsValue = propertyValues obj = {}s obj.key = metricsNames obj.val = metricsValued array.%Push(obj)}}q $$$OK }
    • 系統使用情況
    d ##class(SYS.Metrics).GetMainMetrics(""0.pValues, .pStatus, .pMsg)
    • 系統監視器統計
    d ##class(SYS.Metrics).GetGlobalStatistics(""0.pValues, .pStatus, .pMsg)
    • ECP 數據統計
    d ##class(SYS.Metrics).GetECPStatistics(""0.pValues, .pStatus, .pMsg)
    • 磁盤和緩沖區數據統計
    d ##class(SYS.Metrics).GetStatistics(""0.pValues,.pStatus,.pMsg)
    • 許可數據統計
    ClassMethod GetLicenseStatistics(ByRef array As %DynamicArray) {s licenseUsed = ##class(%SYSTEM.License).LUConsumed()s obj = {}s obj.key = ..#PREFIX _ "_license_used"s obj.val = licenseUsedd array.%Push(obj)s licenseAvailable=##class(%SYSTEM.License).LUAvailable()s obj = {}s obj.key = ..#PREFIX _ "_license_avail"s obj.val = licenseAvailabled array.%Push(obj)s licenseTotal=##class(%SYSTEM.License).GetUserLimit()s obj = {}s obj.key = ..#PREFIX _ "_license_total"s obj.val = licenseTotald array.%Push(obj)s obj = {}s obj.key =..#PREFIX _ "_license_load"s obj.val = $fn((licenseUsed / (licenseAvailable + licenseUsed))"N""4")d array.%Push(obj) }
    • 開放性事務數據統計
    ClassMethod GetOpenTransactionStatistics(ByRef array As %DynamicArray) {if ($zv [ "Cache") {s index = "^CacheTemp.SysMetrics"} else {s index = "^IRIS.Temp.SysMetrics"}if (@index@("Transactions")) = "OK" {s val = 1} else {s val = 0}s obj = {}s obj.key = ..#PREFIX _ "_open_transaction"s obj.val = vald array.%Push(obj) }
    • 數據庫情況
    ClassMethod GetDatabaseStatistics(ByRef array As %DynamicArray) {s statement = ##class(%SQL.Statement).%New()s sc = statement.%PrepareClassQuery("%SYS.DatabaseQuery""FreeSpace")s rs = statement.%Execute()while (rs.%Next()) {s databaseName = rs.%Get("DatabaseName")s freeRate = rs.%GetData(7)s availableNum = rs.%Get("AvailableNum")s diskFreeSpaceNum = rs.%Get("DiskFreeSpaceNum")s obj = {}s obj.key =..#PREFIX _ "_database_free"s obj.val = (100 - freeRate) / 100s tag = {}s tag.id = databaseNames obj.tag = tagd array.%Push(obj)} }
    • 把所有數據組裝到一起。
    ClassMethod GetMetrics() {s array = []#; 基礎儀表盤d ..GetDashboardMetrics(.array)#; 系統使用情況d ##class(SYS.Metrics).GetMainMetrics(""0.pValues, .pStatus, .pMsg)d ..ParseJson(.pValues, .array)#; 系統監視器統計d ##class(SYS.Metrics).GetGlobalStatistics(""0.pValues, .pStatus, .pMsg)d ..ParseJson(.pValues, .array)#; ECP 數據統計d ##class(SYS.Metrics).GetECPStatistics(""0.pValues, .pStatus, .pMsg)d ..ParseJson(.pValues, .array)#; 磁盤和緩沖區數據統計d ##class(SYS.Metrics).GetStatistics(""0.pValues,.pStatus,.pMsg)d ..ParseJson(.pValues, .array)#; 許可數據統計d ..GetLicenseStatistics(.array)#; 開放性事務數據統計d ..GetOpenTransactionStatistics(.array)#; 數據庫情況d ..GetDatabaseStatistics(.array)q array }
    • 將數據解析成Prometheus數據格式。

    prometheus將所有數據保存為timeseries data,用metric name和label區分,label是在metric name上的更細維度的劃分,其中的每一個實例是由一個float64和timestamp組成,只不過timestamp是隱式加上去的,#HELP代表指標的注釋信息,#TYPE用于定義樣本的類型注釋信息。如下示例:

    # HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles. # TYPE go_gc_duration_seconds summary go_gc_duration_seconds{quantile="0"} 0
    • metrics name - 為go_gc_duration_seconds
    • label - 為quantile="0"
    • float64 - 為0
    ClassMethod Metrics2Prometheus() As %Status {s %response.ContentType = "text/plain;version=0.0.4;charset=utf-8"s array = ..GetMetrics()s iter = array.%GetIterator()while iter.%GetNext(.key, .json) { s str = json.keyif (json.%IsDefined("tag")) {s tag = json.tags tagIter = tag.%GetIterator()s str = str _ "{" while tagIter.%GetNext(.tagKey, .tagVal) { s str = str _ tagKey _ "=" _ """" _ tagVal _ """" _ ","}s str = $e(str, 1* - 1) _ "}" }w str _" "_ json.val _ $c(10)}q $$$OK }
    • 配置路由
    XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] { <Routes><Route Url="/prometheus" Method="GET" Call="Metrics2Prometheus" /><Route Url="/json" Method="GET" Call="Metrics2Json" /> </Routes> }
  • 在界面輸入自定義配置的Prometheus接口地址。
    • prometheus格式地址接口:http://localhost:57772/api/metrics/prometheus

    • Json格式地址接口:http://localhost:57772/api/metrics/json

  • 在prometheus.yml配置文件中添加自定義的接口。代碼如下:
  • - job_name: "localhost-Cache"metrics_path: /api/metrics/prometheusstatic_configs:- targets: ['localhost:57772']
  • 重新啟動prometheus,查看配置界面。這樣我們就可以給Caché配置一個自定義的接口拉。
  • 配置 Exporter 監控服務器系統資源

    • 通過服務器配置Exporter監控服務器的系統信息,例如內存使用情況,CPU使用情況。

    簡介

    為Prometheus提供監控數據源的應用都可以被成為Exporter,比如Node Exporter則用來提供節點相關的資源使用狀況,而Prometheus從這些不同的Exporter中獲取監控數據,然后可以在諸如Grafana這樣的可視化工具中進行結果的顯示。

    廣義上講所有可以向Prometheus提供監控樣本數據的程序都可以被稱為一個Exporter。而Exporter的一個實例稱為target,如下所示,Prometheus通過輪詢的方式定期從這些target中獲取樣本數據。

    配置流程

  • 下載windows_exporter-0.21.0-amd64.msi文件后,直接雙擊運行;
    • 下載地址:https://github.com/prometheus-community/windows_exporter/releases

  • windows_exporter默認端口號為9182,運行后瀏覽器訪問地址, 出現以下信息,說明安裝成功。
    • 地址:http://localhost:9182/metrics

  • 將Exporter接口添加到Prometheus中。
  • - job_name: "localhost-Exporter"metrics_path: /metricsstatic_configs:- targets: ['localhost:9182']

    使用 Alertmanager報警

    簡介

    Alertmanager是一個獨立的告警模塊,接收Prometheus等客戶端發來的警報,之后通過分組、刪除重復等處理,并將它們通過路由發送給正確的接收器。

    Prometheus 的報警分為兩部分:

    • Prometheus 服務器中的警報規則向警報管理器(Alertmanager)發送警報。
    • 警報管理器負責管理這些警報,包括告警信息進行去重,降噪,分組等,并通過豐富的告警通知渠道,如電子郵件、微信、釘釘、Slack等常用溝通工具發出通知。

    配置流程

  • 下載Prometheus,選擇操作系統,下載對應安裝包,下載完畢后并擠壓,以windows為例。
    • 下載地址:https://github.com/prometheus/alertmanager/releases

  • 雙擊alertmanager.exe,啟動alertmanager服務,瀏覽器訪問端口地址可以看到默認提供的 UI 頁面。
    • 端口 - 9093
    • 地址 - http://localhost:9093/#/alerts

  • AlertManager 默認配置文件為 alertmanager.yml,打開配置文件,配置使用 Email 方式通知報警信息,這里以 QQ 郵箱為例,配置信息如下:
    • global - 全局配置,包括報警解決后的超時時間、SMTP 相關配置、各種渠道通知的 API 地址等等。
    • route - 用來設置報警的分發策略,它是一個樹狀結構,按照深度優先從左向右的順序進行匹配。
    • receivers - 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式。
    • inhibit_rules - 抑制規則配置,當存在與另一組匹配的警報時,抑制規則將禁用與一組匹配的警報(目標)。
    global:resolve_timeout: 5msmtp_from: 'xxxx@qq.com'smtp_smarthost: 'smtp.qq.com:465'smtp_auth_username: 'xxxx@qq.com'smtp_auth_password: 'xxxxxxxxxxxxxx'smtp_require_tls: falsesmtp_hello: 'qq.com'route:group_by: ['alertname']group_wait: 5sgroup_interval: 5srepeat_interval: 5mreceiver: 'email' receivers: - name: 'email'email_configs:- to: 'xxxxx@mediway.cn'send_resolved: trueinhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']
  • 接下來,需要在 Prometheus 配置 AlertManager 服務地址以及告警規則,新建報警規則文件 alert_rules.yml,,放在prometheus.yml同級路徑下,配置如下:
    • name - 規則名稱,可自己定義。
    • alert - 報警名稱,當觸發報警時,會作為郵件標題顯示。
    • expr - 報警規則,為 PromQL 表達式驗證特定節點,如上述配置中up{job="250-IRIS"}為驗證job="250-IRIS"是否還活著,如果等于0則啟動報警。
    • for - 表示報警狀態為 Pending 后等待 15s 變成 Firing 狀態,一旦變成 Firing 狀態則將報警發送到 AlertManager。
    • summary - 報警信息描述。
    groups:- name: "服務器報警"rules:- alert: yx服務器報警expr: up{job="250-IRIS"} == 0for: 15slabels:status: warningannotations:summary: "服務器{{ $labels.instance }} 掛了"description: "姚鑫服務器掛了.請立即查看!"- alert: 本地Cache報警expr: up{job="localhost-Cache"} == 0for: 15slabels:status: warningannotations:summary: "服務器{{ $labels.instance }} 掛了"description: "本地Cache服務器掛了.請立即查看!"- alert: 本地IRIS報警expr: up{job="localhost-IRIS"} == 0for: 15slabels:status: warningannotations:summary: "服務器{{ $labels.instance }} 掛了"description: "本地IRIS服務器掛了.請立即查看!"- name: test-rulesrules:- alert: "內存報警"expr: 100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes) > 3for: 15slabels:status: warningannotations:summary: "服務器:{{$labels.instance}}內存使用率超過3%了"description: "內存使用率: {{ $value }}"value: "{{ $value }}"
  • 配置好報警規則文件后,需要修改 prometheus.yml 配置文件,添加 rules 規則文件:
  • alerting:alertmanagers:- static_configs:- targets:- 'localhost:9093'# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files:- "alert_rules.yml"# - "second_rules.yml"
  • 配置完畢后打,瀏覽器訪問prometheus主頁,進入Alerts和Rules界面,可查看報警規則信息:
    • 地址:http://localhost:9090/alerts?search=

  • 測試報警功能,將本地Caché關閉,停庫。
  • 觀察頁面本地Cache警報狀態。
  • Prometheus Alert 告警狀態有三種:Inactive、Pending、Firing。

    • Inactive - 非活動狀態,表示正在監控,但是還未有任何警報觸發。
    • Pending - 表示這個警報將被觸發。由于警報可以被分組、壓抑/抑制或靜默/靜音,所以等待驗證,一旦所有的驗證都通過,則將轉到 Firing 狀態。
    • Firing - 將警報發送到AlertManager,將按照配置將警報的發送給所有接收者。一旦警報解除,則將狀態轉到 Inactive,如此循環。

    首先發現警報變為Pending狀態。

    過了15秒后變為Firing狀態

  • 觸發報警,根據定義的報警規則,如果有觸發告警的條件,自動向配置的接收郵箱中發送郵件,如下:
  • 基于M實現監控服務器,并用郵件報警

    解析Prometheus數據接口信息

    • 獲取接口信息
    ClassMethod GetMetrics(url) As %Status {#; 初始化request對象#dim request as %Net.HttpRequest= ##class(%Net.HttpRequest).%New()#; 根據地址解析是否是https調用SSL配置d ##class(%Net.URLParser).Parse(url, .components)s scheme = components("scheme")if (scheme = "https") {s request.Https = 1if ($zv [ "IRIS") {s request.SSLConfiguration = "ISC.FeatureTracker.SSL.Config"} else {s request.SSLConfiguration = "WebTerminalSSL"} s request.SSLCheckServerIdentity = 0 }#; 請求地址并返回流數據s sc = request.Get(url)$$$ThrowOnError(sc)s response = request.HttpResponses stream = response.Dataq stream }
    • 將接口信息轉為Json格式
    ClassMethod Metrics2Json(stream) As %Status {s array = []while (stream.AtEnd = 0) {#; 讀取每行信息s metrics = stream.ReadLine()#; 過濾注釋描述信息continue:(metrics [ "# HELP")continue:(metrics [ "# TYPE")#; 指標字符串s str = $p(metrics, " "1)#; 指標值s value = $p(metrics, " "2)#; 指標字名稱s metricsName = $p(str, "{"1)#; 指標字label信息s label = $e($p(str, "{"2)1* - 1)s obj = {}s obj.key = metricsNames obj.val = value#; 如果label不為空將label信息轉為JSONif (label '= "") {s tag = {}s len = $l(label, ",")for i = 1 : 1 : len{s item = $p(label, """," ,i)s key = $p(item, "="1) s val = $e($p(item, "="2)2*-1)d tag.%Set(key, val)}s obj.tag = tag}d array.%Push(obj)}q array }
    • 調用方法。
    /// w ##class(M.ParseMetrics).Main("https://localhost:2443/api/monitor/metrics").%ToJSON() /// w ##class(M.ParseMetrics).Main("http://localhost:9182/metrics").%ToJSON() /// w ##class(M.ParseMetrics).Main("http://localhost:57772/api/metrics/prometheus").%ToJSON() ClassMethod Main(url) As %Status {#; 獲取指標接口信息s stream = ..GetMetrics(url)#; 將接口信息轉為JSON格式s json = ..Metrics2Json(stream)q json }
    • 調用自定義Caché接口
    IMP>w ##class(M.ParseMetrics).Main("http://localhost:57772/api/metrics/prometheus").%ToJSON() [{"key":"yx_application_errors""val":"0"}{"key":"yx_csp_sessions""val":"1"}{"key":"yx_cache_efficiency""val":"235.85"}{"key":"yx_disk_reads""val":"3316"}{"key":"yx_disk_writes""val":"1881"}{"key":"yx_ecp_app_srv_rate""val":"0"}{"key":"yx_ecp_data_srv_rate""val":"0"}{"key":"yx_glo_refs""val":"1225714"}{"key":"yx_glo_refs_per_sec""val":"439.00"}{"key":"yx_glo_sets""val":"108449"}{"key":"yx_journal_entries""val":"17178"}... {"key":"yx_database_free""val":".8988""tag":{"id":"DHC-EPRMETADATA"}}{"key":"yx_database_free""val":".45""tag":{"id":"DHC-EPRQUALITYDATA"}}{"key":"yx_database_free""val":".71""tag":{"id":"DHC-EPRRBACINST"}}{"key":"yx_database_free""val":".74""tag":{"id":"DHC-EPRRBACMETA"}}{"key":"yx_database_free""val":".78""tag":{"id":"DHC-HEIS"}}{"key":"yx_database_free""val":".48""tag":{"id":"DHC-HL7"}}{"key":"yx_database_free""val":".9936""tag":{"id":"DHC-HR"}}{"key":"yx_database_free""val":".0345""tag":{"id":"DHC-LISDATA"}}{"key":"yx_database_free""val":".9328""tag":{"id":"DHC-LISSRC"}}{"key":"yx_database_free""val":".9884""tag":{"id":"DHC-LOGS"}}{"key":"yx_database_free""val":".9098""tag":{"id":"DHC-MEDSRC"}}{"key":"yx_database_free""val":".8996""tag":{"id":"DHC-MRQDATA"}}{"key":"yx_database_free""val":".9871""tag":{"id":"DHC-MRQSRC"}}{"key":"yx_database_free""val":".1""tag":{"id":"DHC-MSG"}}{"key":"yx_database_free""val":".0481""tag":{"id":"DHC-ORDDATA"}}{"key":"yx_database_free""val":".0417""tag":{"id":"DHC-ORDINDEX"}}{"key":"yx_database_free""val":".8782""tag":{"id":"PACS"}}{"key":"yx_database_free""val":".6""tag":{"id":"DHC-PISDATA"}}{"key":"yx_database_free""val":".831""tag":{"id":"DHC-PISSRC"}}{"key":"yx_database_free""val":".9548""tag":{"id":"DHC-RIS"}}{"key":"yx_database_free""val":".9615""tag":{"id":"DHC-SYS"}}{"key":"yx_database_free""val":".9218""tag":{"id":"DHC-TEMP"}}{"key":"yx_database_free""val":".8096""tag":{"id":"DHC-DWR"}}{"key":"yx_database_free""val":".039""tag":{"id":"DHC-WORKLOAD"}}{"key":"yx_database_free""val":".1797""tag":{"id":"IMP"}}]
    • 調用自定義IRIS接口
    IMP>w ##class(M.ParseMetrics).Main("https://localhost:2443/api/monitor/metrics").%ToJSON() [{"key":"iris_cpu_pct""val":"0""tag":{"id":"CSPSRV"}}{"key":"iris_cpu_pct""val":"0""tag":{"id":"ECPWorker"}}{"key":"iris_cpu_pct""val":"0""tag":{"id":"GARCOL"}}{"key":"iris_cpu_pct""val":"0""tag":{"id":"JRNDMN"}}... {"key":"iris_wqm_max_work_queue_depth""val":"0""tag":{"id":"SYS"}}{"key":"iris_wqm_waiting_worker_jobs""val":"1""tag":{"id":"SYS"}}]
    • 調用自定義Exporter接口
    IMP>w ##class(M.ParseMetrics).Main("http://localhost:9182/metrics").%ToJSON() [{"key":"go_gc_duration_seconds","val":"0","tag":{"quantile":"0"}},{"key":"go_gc_duration_seconds","val":"0","tag":{"quantile":"0.25"}},{"key":"go_gc_duration_seconds","val":"0","tag":{"quantile":"0.5"}},{"key":"go_gc_duration_seconds","val":"0","tag":{"quantile":"0.75"}},{"key":"go_gc_duration_seconds","val":"0.0023476","tag":{"quantile":"1"}},{"key":"go_gc_duration_seconds_sum","val":"0.0038789"},{"key":"go_gc_duration_seconds_count","val":"87"},{"key":"go_goroutines","val":"14"},{"key":"go_info","val":"1","tag": ... {"key":"go_threads","val":"19"},{"key":"process_cpu_seconds_total","val":"2.015625"},{"key":"process_max_fds","val":"1.6777216e+07"},{"key":"process_open_fds","val":"414"},{"key":"process_resident_memory_bytes","val":"3.5504128e+07"},{"key":"process_start_time_seconds","val":"1.67670656e+09"},{"key":"process_virtual_memory_bytes","val":"4.0259584e+07"},]

    使用嵌入式Python方式獲取系統CPU、內存等

    python模塊之psutil詳解

    在講嵌入式Python之前我們先了解一下psutil庫

    psutil是一個開源切跨平臺的庫,其提供了便利的函數用來獲取才做系統的信息,比如CPU,內存,磁盤,網絡等。此外,psutil還可以用來進行進程管理,包括判斷進程是否存在、獲取進程列表、獲取進程詳細信息等。而且psutil還提供了許多命令行工具提供的功能,包括:ps,top,lsof,netstat,ifconfig, who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmap。

    psutil是一個跨平臺的庫,在官方網站上查到其支持如下操作系統。

    • Linux
    • Windows
    • OSX
    • FreeBSD
    • OpenBSD
    • NetBSD
    • Sun Solaris
    • AIX
    CPU相關
    函數描述
    psutil.cpu_count()cpu_count(,[logical]):默認返回邏輯CPU的個數,當設置logical的參數為False時,返回物理CPU的個數。
    psutil.cpu_percent()cpu_percent(,[percpu],[interval]):返回CPU的利用率,percpu為True時顯示所有物理核心的利用率,interval不為0時,則阻塞時顯示interval執行的時間內的平均利用率。
    psutil.cpu_times()cpu_times(,[percpu]):以命名元組(namedtuple)的形式返回cpu的時間花費,percpu=True表示獲取每個CPU的時間花費。
    psutil.cpu_times_percent()cpu_times_percent(,[percpu]):功能和cpu_times大致相同,看字面意思就能知道,該函數返回的是耗時比例。
    psutil.cpu_stats()cpu_stats()以命名元組的形式返回CPU的統計信息,包括上下文切換,中斷,軟中斷和系統調用次數。
    psutil.cpu_freq()cpu_freq([percpu]):返回cpu頻率。
    Memory內存相關
    函數描述
    virtual_memory()以命名元組的形式返回內存使用情況,包括總內存,可用內存,內存利用率,buffer和cache等。單位為字節。
    swap_memory()以命名元組的形式返回swap/memory使用情況,包含swap中頁的換入和換出。
    Disk相關
    函數描述
    psutil.disk_io_counters()disk_io_counters([perdisk]):以命名元組的形式返回磁盤io統計信息,包括讀、寫的次數,讀、寫的字節數等。 當perdisk的值為True,則分別列出單個磁盤的統計信息(字典:key為磁盤名稱,value為統計的namedtuple)。
    psutil.disk_partitions()disk_partitions([all=False]):以命名元組的形式返回所有已掛載的磁盤,包含磁盤名稱,掛載點,文件系統類型等信息。 當all等于True時,返回包含/proc等特殊文件系統的掛載信息。
    psutil.disk_usage()disk_usage(path):以命名元組的形式返回path所在磁盤的使用情況,包括磁盤的容量、已經使用的磁盤容量、磁盤的空間利用率等。
    Network相關
    函數詳情
    psutil.net_io_counter([pernic])以命名元組的形式返回當前系統中每塊網卡的網絡io統計信息,包括收發字節數,收發包的數量、出錯的情況和刪包情況。當pernic為True時,則列出所有網卡的統計信息。
    psutil.net_connections([kind])以列表的形式返回每個網絡連接的詳細信息(namedtuple)。命名元組包含fd, family, type, laddr, raddr, status, pid等信息。kind表示過濾的連接類型,支持的值如下:(默認為inet)。
    psutil.net_if_addrs()以字典的形式返回網卡的配置信息,包括IP地址和mac地址、子網掩碼和廣播地址。
    psutil.net_if_stats()返回網卡的詳細信息,包括是否啟動、通信類型、傳輸速度與mtu。
    psutil.users()以命名元組的方式返回當前登陸用戶的信息,包括用戶名,登陸時間,終端,與主機信息。
    psutil.boot_time()以時間戳的形式返回系統的啟動時間。
    Process相關
    函數詳情
    psutil.pids()以列表的形式返回當前正在運行的進程。
    psutil.pid_exists(1)判斷給點定的pid是否存在。
    psutil.process_iter()迭代當前正在運行的進程,返回的是每個進程的Process對象。
    psutil.Process()對進程進行封裝,可以使用該類的方法獲取進行的詳細信息,或者給進程發送信號。

    通過嵌入式Python調用psutil庫

    這里僅簡單介紹個主要方法、其他獲取系統資源方法由讀者自行實現。

    • 在安裝路徑C:\InterSystems\IRISHealth\bin,輸入cmd,進入命令行控制臺輸入命令。安裝 psutil庫。
    irispip install --target C:\InterSystems\IRISHealth\mgr\python psutil

    • 獲取服務器CPU使用率
    ClassMethod GetSystemCpu() As %String [ Language = python ] {from psutil.__init__ import cpu_percent,virtual_memoryreturn cpu_percent(interval=2) } USER> w ##class(M.SystemMetrics).GetSystemCpu() 14.59999999999999964

    根據上圖可以觀察到獲取的內容使用 1 - 是 IRIS監控接口、2 - 是M方法實現、 3 - 是任務管理器,三者監控的CPU使用率基本使用是一致的。(因為CPU使用率是瞬態的,所以可以認為是準確的)

    • 獲取服務系內存使用狀態
    ClassMethod GetSystemMemory() As %String [ Language = python ] {from psutil.__init__ import cpu_percent,virtual_memoryreturn virtual_memory()[2] } USER>w ##class(M.SystemMetrics).GetSystemMemory() 60

    根據上圖可以觀察到獲取的內容使用 1 - 是 360監控、2 - 是任務管理器、 3 - 是M方法實現,三者監控的內存使用是一致的。

    使用郵件發送報警信息

    這里考慮使用郵件來發送警報信息是因為:

    • 郵件相對其他方式來說比較方便,只管發送,不用管是否接收。
    • IRIS自帶發送郵件接口,操作性大。
    • 相比其他方式,例如微信,公眾號等,還需要做接口交互。使用郵件相對簡單。

    那么下一個考慮的問題是通過什么方式來觸發監控發郵件呢,筆者考慮以下兩點可以觸發:

    • 通過掛任務的方式定時輪詢。
    • 通過SessionEvent事件來觸發。

    這里僅提供代碼示例,具體使用哪種方式由讀者自行決定。

    使用M發送郵件發送消息

    • 這里以QQ郵箱例,配置信息與Alertmanager郵箱配置相同
    ClassMethod SetMailConfig() As %Net.SMTP {#; 配置smtp服務s server = ##class(%Net.SMTP).%New()s server.smtpserver = "smtp.qq.com"s server.port = 465if ($zv [ "IRIS") {s server.SSLConfiguration = "ISC.FeatureTracker.SSL.Config"} else {s server.SSLConfiguration = "WebTerminalSSL"} #; 配置郵箱s auth = ##class(%Net.Authenticator).%New()s auth.UserName = "454115408@qq.com"s auth.Password = "xxxxxxxxxxxxxxxx"s server.authenticator = auths server.AuthFrom = auth.UserNameq server }
    • 發送郵件具體方法
    ClassMethod SendMailMessage(title, content) As %List {#; 獲取配置s server = ..SetMailConfig()#; 初始化郵件對象s msg = ##class(%Net.MailMessage).%New()#; 添加from - 發送人,to - 接收人,Cc - 抄送人s from = server.authenticator.UserNames msg.From = fromd msg.To.Insert("yaoxin@mediway.cn")d msg.Cc.Insert("965274651@qq.com")#; 填寫郵件具體內容s msg.Subject = titles msg.IsBinary = 0s msg.IsHTML = 0d msg.TextData.Write(content)#; 執行發送s sc = server.Send(msg)$$$ThrowOnError(sc)q server.FailedSend }
    • 測試郵件方法,發送成功目標郵箱會接收到郵件。
    IMP>w ##class(M.Mail).SendMailMessage("yx發的郵件消息頭","這是yx發的消息內容content") 10@%Collection.ListOfDT

    通過配置文件csv文件,來獲取維護指標,進行郵件報警。

    • 使用csv文件通過手動的方式來維護需要監控的指標
      • key - 指標名稱,這里要與IRIS接口信息的具體指標保持一致。
      • val - 報警的閾值。
      • oper - 操作符。指具體報警時操作符。是大于val時報警,還是小于val時報警,或其他。
      • desc - 指標描述信息。

    • 讀取csv文件將數據轉為Json。
    ClassMethod Csv2Json(filename) {q:('##class(%File).Exists(filename)) $$$NOs stream = ##class(%Stream.FileCharacter).%New()s stream.Filename = filenames array = []s keyStr = ""while 'stream.AtEnd {s str = stream.ReadLine()if ($i(count) = 1) {s keyStr = str}s obj = {} s len = $l(str, ",")for i = 1 : 1 : len {s val = $p(str, ",", i)s key = $p(keyStr, ",", i)d obj.%Set(key, val)}d array.%Push(obj)}q array } IMP>w ##class(M.Mail).LoadFile("E:\temp\metrics.csv").%ToJSON() [{"key":"iris_cpu_usage ","val":"10","oper":">"},{"key":"iris_license_available","val":"290","oper":">"},{"key":"iris_trans_open_count","val":"0","oper":">"},{"key":"memory","val":"40","oper":">"}]
    • 對比維護指標與接口指標,超過閾值發送郵件進行警報。

    注:這里雙循環,時間復雜O2,數據量大,效率可能會比較低,需要注意下。

    ClassMethod Main(url As %String, filename As %String) As %Status {#; 獲取接口指標Jsons irismetrics = ##class(M.ParseMetrics).Main(url)#; 獲取Csv維護指標Jsons config = ##class(M.Mail).Csv2Json(filename)#; 雙向對比,維護指標超過閾值發送郵件警報for i = 1 : 1 : irismetrics.%Size() - 1{s metrics = irismetrics.%Get(i)for j = 1 : 1 : config.%Size() - 1{s obj = config.%Get(j)if (obj.key = metrics.key) {if @(metrics.val _ obj.oper _ obj.val) {s content = obj.desc _ "警報,超過閾值:" _ obj.vald ..SendMailMessage("來自系統的警報",content)ret $$$NO} }}}#; 監控內存使用率,接口中沒有監視內存選項所以調用嵌入式接口s memory = ..GetSystemMemory()if (memory > 30) {d ..SendMailMessage("來自系統的警報","內存使用率已經大于" _ 30 _ "")}ret $$$YES } USER>w ##class(M.Mail).Main("https://localhost:2443/api/monitor/metrics", "E:\temp\metrics.csv") 0

    注:這里基本思路已經實現,可以通過掛任務或其他方式來定時輪詢。

    總結

    以上是個人關于監控服務器指標、CPU、內存、警報的一些理解,由于個人能力有限,歡迎大家提出意見,共同交流。

    思考

    IRIS還提供了alert警報接口,該接口提供alert.log警報日志內容,基于以上方案,思考如何通過M程序進行監控

    • 接口地址:https://localhost:2443/api/monitor/alerts
    • 該接口有警報時會提示報警信息,調用一次后清空。

    • 如果有警報,警報信息如下:
    {"time":"02/19/23-15:49:22:650","severity":2,"message":"Previous system shutdown was abnormal, system forced down or crashed."}

    • /api/monitor/metrics指標含義列表:
    指標描述
    iris_cpu_pct {id="ProcessType"}IRIS 進程類型的 CPU 使用百分比。 ProcessType 可以是以下任何一項:ECPWorker、ECPCliR、ECPCliW、ECPSrvR、ECPSrvW、LICENSESRV、WDAUX、WRTDMN、JRNDMN、GARCOL、CSPDMN、CSPSRV、ODBCSRC、MirrorMaster、MirrorPri、MirrorBack、MirrorPre、MirrorSvrR、MirrorJrnR、MirrorSK、MirrorComm
    iris_cpu_usage操作系統上所有程序的 CPU 使用率百分比
    iris_csp_activity {id="IPaddress:port"}Web 網關服務器自啟動以來處理的 Web 請求數
    iris_csp_actual_connections {id="IPAddress:port"}Web 網關服務器與該服務器的當前連接數
    iris_csp_gateway_latency {id="IPaddress:port"}獲取 iris_csp_ 指標時從 Web 網關服務器獲得響應的時間,以毫秒為單位
    iris_csp_in_use_connections {id="IPaddress:port"}正在處理 Web 請求的 Web 網關服務器與此服務器的當前連接數
    iris_csp_private_connections {id="IPaddress:port"}為狀態感知應用程序保留的 Web 網關服務器與此服務器的當前連接數(保留模式 1)
    iris_csp_sessions此服務器上當前活動的 Web 會話 ID 數
    iris_cache_efficiency全局引用與物理讀寫的比率,以百分比表示
    iris_db_expansion_size_mb {id="database"}擴展數據庫的數量,以兆字節為單位
    iris_db_free_space {id="database"}數據庫中可用的可用空間,以兆字節為單位(此指標每天僅更新一次,可能不會反映最近的更改。)
    iris_db_latency {id="database"}完成從數據庫隨機讀取的時間量,以毫秒為單位
    iris_db_max_size_mb {id="database"}`數據庫可以增長到的最大大小,以兆字節為單位
    iris_db_size_mb {id="database",dir="path"}數據庫大小,以兆字節為單位
    iris_directory_space {id="database",dir="path"}數據庫目錄存儲卷上的可用空間,以兆字節為單位
    iris_disk_percent_full {id="database",dir="path"}數據庫目錄存儲卷上的空間百分比
    iris_ecp_conn此 ECP 應用程序服務器上的活動客戶端連接總數
    iris_ecp_conn_max來自此 ECP 應用程序服務器的最大活動客戶端連接數
    iris_ecp_connections此 ECP 應用程序服務器與其配置的 ECP 數據服務器同步時同步的服務器數
    iris_ecp_latencyECP 應用服務器和 ECP 數據服務器之間的延遲,以毫秒為單位
    iris_ecps_conn每秒與此 ECP 數據服務器的活動客戶端連接總數
    iris_ecps_conn_max與此 ECP 數據服務器的最大活動客戶端連接數
    iris_glo_a_seize_per_sec每秒全局資源上的 Aseizes 數
    iris_glo_n_seize_per_sec每秒全局資源上的 Nseizes 數
    iris_glo_ref_per_sec每秒對位于本地數據庫上的全局變量的引用數
    iris_glo_ref_rem_per_sec每秒對位于遠程數據庫上的全局變量的引用數
    iris_glo_seize_per_sec每秒占用全局資源的次數
    iris_glo_update_per_sec每秒對本地數據庫上的全局變量進行更新(SET 和 KILL 命令)的次數
    iris_glo_update_rem_per_sec每秒對位于遠程數據庫上的全局變量的更新(SET 和 KILL 命令)數
    iris_jrn_block_per_sec每秒寫入磁盤的日志塊
    iris_jrn_free_space {id="JournalType",dir="path"}每個日志目錄的存儲卷上可用的可用空間,以兆字節為單位。 JournalType 可以是 WIJ、primary 或 secondary
    iris_jrn_size {id="JournalType"}每個日志文件的當前大小,以兆字節為單位。 JournalType 可以是 WIJ、primary 或 secondary
    iris_license_available當前未使用的許可證數量
    iris_license_consumed當前使用的許可證數量
    iris_license_percent_used當前使用的許可證的百分比
    iris_log_reads_per_sec每秒邏輯讀取
    iris_obj_a_seize_per_sec每秒對象資源上的 Aseizes 數
    iris_obj_del_per_sec每秒刪除的對象數
    iris_obj_hit_per_sec進程內存中每秒的對象引用數
    iris_obj_load_per_sec每秒從磁盤加載的對象數,不在共享內存中
    iris_obj_miss_per_sec每秒在內存中找不到的對象引用數
    iris_obj_new_per_sec每秒初始化的對象數
    iris_obj_seize_per_sec每秒占用對象資源的次數
    iris_page_space_percent_used已用最大分配頁面文件空間的百分比
    iris_phys_mem_percent_used當前使用的物理內存 (RAM) 的百分比
    iris_phys_reads_per_sec每秒從磁盤讀取的物理數據庫塊
    iris_phys_writes_per_sec每秒寫入磁盤的物理數據庫塊
    iris_process_count活躍的 IRIS 進程總數
    iris_rtn_a_seize_per_sec每秒例程資源上的 Aseizes 數
    iris_rtn_call_local_per_sec每秒對位于遠程數據庫上的全局變量的本地例程調用數
    iris_rtn_call_miss_per_sec每秒在內存中找不到的例程調用數
    iris_rtn_call_remote_per_sec每秒遠程例程調用次數
    iris_rtn_load_per_sec每秒從本地加載或保存到磁盤的例程數
    iris_rtn_load_rem_per_sec每秒從磁盤遠程加載或保存到磁盤的例程數
    iris_rtn_seize_per_sec每秒占用例程資源的次數
    iris_sam_get_db_sensors_seconds收集 iris_db* 傳感器所花費的時間,以秒為單位
    iris_sam_get_jrn_sensors_seconds收集 iris_jrn* 傳感器所花費的時間,以秒為單位
    iris_sam_get_sql_sensors_seconds收集 iris_sql* 傳感器所花費的時間,以秒為單位
    iris_sam_get_wqm_sensors_seconds收集 iris_wqm* 傳感器所花費的時間,以秒為單位
    iris_smh_available {id="purpose"}按目的可用的共享內存,以千字節為單位
    iris_smh_percent_full {id="purpose"}按目的使用的已分配共享內存的百分比
    iris_smh_total為當前實例分配的共享內存,以千字節為單位
    iris_smh_total_percent_full當前實例使用的已分配共享內存的百分比
    iris_smh_used {id="purpose"}按目的使用的共享內存,以千字節為單位
    iris_sql_active_queries {id="namespace"}當前執行的 SQL語句數
    iris_sql_active_queries_95_percentile {id="namespace"}對于當前的活動 SQL 語句集,自語句開始執行以來經過的第 95 個百分位數的時間
    iris_sql_active_queries_99_percentile {id="namespace"}對于當前活動的 SQL 語句集,自語句開始執行以來經過的第 99 個百分位數的時間
    iris_sql_queries_avg_runtime {id="namespace"}平均 SQL 語句運行時間,以秒為單位
    iris_sql_queries_avg_runtime_std_dev {id="namespace"}平均 SQL 語句運行時間的標準偏差
    iris_sql_queries_per_second {id="namespace"}每秒平均 SQL 語句數
    iris_system_alerts自系統啟動以來發布到消息日志的警報數
    iris_system_alerts_log當前位于警報日志中的警報數
    iris_system_alerts_new/api/monitor/alerts 端點上是否有新警報,作為布爾值
    iris_system_state表示系統監視器健康狀態的數字
    iris_trans_open_count當前實例上打開的事務數
    iris_trans_open_secs當前實例上打開事務的平均持續時間,以秒為單位
    iris_trans_open_secs_max當前實例上當前打開的最長事務的
    iris_wd_buffer_redirty寫入守護進程在最近一個周期中寫入并且也在前一個周期中寫入的數據庫緩沖區數
    iris_wd_buffer_write寫入守護進程在其最近周期寫入的數據庫緩沖區數
    iris_wd_cycle_time完成最近的寫入守護進程周期所花費的時間量,以毫秒為單位
    iris_wd_proc_in_global在最近的寫入守護進程周期開始時主動持有全局緩沖區的進程數
    iris_wd_size_write寫入守護程序在其最近周期寫入的數據庫緩沖區的大小,以千字節為單位
    iris_wd_sleep寫入守護進程在其最近的周期開始之前處于非活動狀態的時間量,以毫秒為單位
    iris_wd_temp_queue寫入守護進程在其最近周期開始時使用的內存緩沖區數
    iris_wd_temp_write寫入守護進程在其最近周期中寫入的內存緩沖區數
    iris_wdwij_time寫入守護進程在其最近的周期內寫入 WIJ 文件所花費的時間,以毫秒為單位
    iris_wd_write_time寫守護進程在其最近的周期內將緩沖區寫入數據庫所花費的時間,以毫秒為單位
    iris_wij_writes_per_secWIJ 每秒物理塊寫入
    iris_wqm_active_worker_jobs {id="category"}未被阻塞的運行邏輯的平均工作者作業數
    iris_wqm_commands_per_sec {id="category"}平均每秒在此工作隊列管理類別中執行的命令數
    iris_wqm_globals_per_sec {id="category"}平均每秒在此工作隊列管理類別中運行的全局引用數
    iris_wqm_max_active_worker_jobs {id="category"}自上次記錄日志條目以來的最大活動工作人員數
    iris_wqm_max_work_queue_depth {id="category"}自上次記錄以來此工作隊列管理類別隊列中的最大條目數
    iris_wqm_waiting_worker_jobs {id="category"}等待一個組連接并為其工作的空閑工人作業的平均數量

    總結

    以上是生活随笔為你收集整理的关于监控服务器指标、CPU、内存、警报的一些解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    999ZYZ玖玖资源站永久 | 亚洲综合色av | 色婷婷久久一区二区 | 久久艹久久| 亚洲 欧美变态 另类 综合 | 国产一二三区在线观看 | 国产精品99久久久 | 91视频成人免费 | 国产精品九九九 | 亚洲色图27p | 欧美一级专区免费大片 | 国产1区2区3区精品美女 | 亚洲欧美激情插 | 最新国产精品视频 | 黄色片免费电影 | 国产精品11 | 国产精品正在播放 | 国产精品欧美一区二区三区不卡 | 最新91在线视频 | 日韩中文字幕在线不卡 | 免费精品 | 婷婷丁香久久五月婷婷 | 狠狠gao | 成人污视频在线观看 | 18国产精品白浆在线观看免费 | 日韩免费福利 | 99久久www免费 | 亚洲国产999 | 怡红院av| 一级成人在线 | 国产视频一级 | 国产精品成人在线观看 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产成人99av超碰超爽 | 久久免费视屏 | 99理论片| 久久躁日日躁aaaaxxxx | 91原创在线观看 | 日韩精品久久久久久久电影99爱 | 免费福利在线 | 99免费在线视频观看 | 日韩一区二区三区免费视频 | 在线观看中文字幕第一页 | 久久久亚洲精华液 | 亚洲视频 一区 | 亚洲va在线va天堂va偷拍 | 日韩性久久 | 国产亚洲在线视频 | 在线日韩精品视频 | 又黄又爽又色无遮挡免费 | 日本久久久影视 | 日本护士撒尿xxxx18 | 日韩黄色免费 | 欧美日性视频 | 国产成人一区二区三区免费看 | 国产精品你懂的在线观看 | 91高清视频 | av软件在线观看 | 99精品乱码国产在线观看 | 久久中国精品 | 色无五月| 精品久久电影 | 免费国产在线视频 | 日韩精品视频第一页 | 日韩免| 国产999在线 | 成人影片在线免费观看 | 久久精品国产免费看久久精品 | 国产日本亚洲高清 | 欧美日本啪啪无遮挡网站 | 91视频中文字幕 | 国产99中文字幕 | 四虎影视成人永久免费观看亚洲欧美 | 国产99免费视频 | 2019国产精品| 2020天天干夜夜爽 | 日韩精品一区二区三区丰满 | 中文字幕日韩免费视频 | 中文字幕中文字幕 | 另类老妇性bbwbbw高清 | 日韩在线视频免费看 | 色综合久久综合 | 97在线观视频免费观看 | 国产无套一区二区三区久久 | 国产一级片一区二区三区 | 91香蕉国产 | 精品一区二区亚洲 | 精品爱爱 | 超碰在线成人 | 日韩综合视频在线观看 | 国产精品99久久久久人中文网介绍 | 免费网站在线观看人 | 国产高清在线一区 | 中文字幕精品www乱入免费视频 | 国产精品毛片久久蜜 | av3级在线 | 亚洲日本欧美在线 | 2021久久| 人人澡人人爽 | 在线天堂中文www视软件 | 色爱区综合激月婷婷 | 最新成人av | 国产一级大片免费看 | 伊人中文网 | 色婷婷免费| av免费在线观 | 国产亚洲欧美精品久久久久久 | 亚洲免费色 | 免费久久99精品国产婷婷六月 | 五月婷婷色| 人人澡视频 | 久久在线视频在线 | 最新亚洲视频 | 久久精品99国产国产精 | 五月综合网 | 国产精品亚洲精品 | 国产一级黄色片免费看 | 久久精品直播 | 欧美一级片在线播放 | 精品欧美小视频在线观看 | 五月天com | 免费福利影院 | 久久精品一二三区白丝高潮 | 色多多视频在线观看 | 国产短视频在线播放 | 爱爱一区 | 亚洲成人在线免费 | 黄色成年 | 国产一级精品绿帽视频 | 天天天天射 | 一级免费黄色 | 91在线观看黄 | 中文网丁香综合网 | 成年人视频免费在线播放 | 亚州精品在线视频 | 国产一级不卡毛片 | 视频国产 | 日韩免费一级电影 | 免费看黄的视频 | 日韩精品一卡 | 色播激情五月 | 日韩精品视频免费 | 精品国产91亚洲一区二区三区www | 亚洲狠狠婷婷综合久久久 | 五月婷婷一区 | 色婷婷av一区 | 日韩在线免费播放 | www.香蕉视频在线观看 | 黄色毛片视频免费 | 人成在线免费视频 | 成人sm另类专区 | 国产高清不卡av | 日韩欧美亚州 | a视频在线观看免费 | 久久久伊人网 | 亚州欧美精品 | 婷婷干五月 | 99精品免费 | 国产日韩精品一区二区 | 国产精品男女 | 狠狠五月婷婷 | 免费看久久 | 日韩欧美在线视频一区二区 | 日韩精选在线 | 欧美在线观看视频一区二区三区 | 亚洲精品乱码久久久久久按摩 | 久久这里只有精品9 | 国产精品一区二区三区免费看 | 免费观看国产视频 | 免费a视频 | 亚洲va韩国va欧美va精四季 | 欧美中文字幕久久 | 亚洲国产精品一区二区尤物区 | 欧美久草视频 | 国产成人av综合色 | www.亚洲| 久久免费看片 | 狠狠操精品 | 国精产品永久999 | 久久女同性恋中文字幕 | 福利精品在线 | 国产91精品一区二区麻豆网站 | av中文字幕在线看 | 成人国产电影在线观看 | 91精品区 | 亚洲天堂网在线播放 | 波多野结衣视频一区二区三区 | 视频三区| 久草免费在线 | 五月天激情电影 | 激情狠狠干 | 婷婷www| 99热在| 久草在线视频首页 | 97国产一区 | 国产亚洲综合精品 | av综合站| 午夜久久福利视频 | 亚州成人av在线 | 一区二区三区免费在线观看 | 日韩有码在线观看视频 | 日韩在线高清 | 99热手机在线观看 | 久久精品波多野结衣 | 91在线播放综合 | 麻豆免费视频观看 | 西西大胆啪啪 | 欧美男同网站 | 亚洲黄网址 | 91视频a| 18网站在线观看 | 亚洲成av人片在线观看无 | 伊人狠狠色丁香婷婷综合 | 91资源在线免费观看 | 黄在线免费看 | 婷婷深爱激情 | 国产精品网址在线观看 | 亚洲天堂毛片 | 91av在线视频免费观看 | 97日日碰人人模人人澡分享吧 | 91丨九色丨丝袜 | 免费观看9x视频网站在线观看 | 欧美亚洲一区二区在线 | 国产一级片免费播放 | 中文字幕在线字幕中文 | 亚州精品一二三区 | 成人a在线观看高清电影 | 久久视频这里只有精品 | 一区二区三区精品在线视频 | 黄色国产成人 | 国内精品久久久久影院一蜜桃 | 国产一区免费 | 国产免费中文字幕 | 精品在线观 | 在线观看日韩专区 | 亚洲电影影音先锋 | 久久久999 | 国产黄a三级三级三级三级三级 | 黄毛片在线观看 | 亚洲国产精品成人女人久久 | 久草视频免费在线播放 | 久久综合婷婷 | 五月天激情综合 | 久久久一本精品99久久精品 | 欧美二区在线播放 | 99精品免费久久久久久久久日本 | 中文av不卡 | 国产伦理一区二区三区 | 91精品免费视频 | 久久伊人热 | 天天做天天爱天天爽综合网 | 丁香激情网 | 日韩中字在线 | 国内外成人在线 | 狠狠88综合久久久久综合网 | 色综合欧洲 | 韩国三级一区 | 成人av电影免费在线观看 | 国产日韩欧美视频 | 久久综合五月婷婷 | 麻豆传媒视频观看 | 99久久99久久精品免费 | 久久久国产精品网站 | 国产精品精品国产 | 国产三级精品在线 | www.久艹| 精产嫩模国品一二三区 | 久草视频中文 | 国产精品自拍在线 | 国产精品久久久久久久av电影 | 亚洲视频在线观看免费 | 精品一区二区精品 | 国产精品成人自拍 | 欧美少妇bbwhd | 午夜视频在线观看一区二区三区 | 97超碰总站 | 国产成人av一区二区三区在线观看 | 国产日韩精品欧美 | 国产精品区在线观看 | 日韩一区在线免费观看 | 欧美动漫一区二区三区 | 久久久久女人精品毛片九一 | 五月花丁香婷婷 | 亚州精品成人 | 久久久黄色免费网站 | 国产一区免费观看 | 18pao国产成视频永久免费 | 亚洲色图激情文学 | 五月婷在线播放 | 亚州中文av| 人人爱天天操 | 久久精品视频在线播放 | 在线观看视频国产一区 | 91中文字幕在线播放 | 精品国产精品国产偷麻豆 | 欧美日韩一区二区三区在线观看视频 | 国产剧情一区 | 欧美精品中文在线免费观看 | 日日爽视频 | 天天操天天爽天天干 | 成人av免费 | 国产精品麻豆一区二区三区 | 天堂视频一区 | 五月av在线| 大荫蒂欧美视频另类xxxx | 国产尤物在线视频 | 精品夜夜嗨av一区二区三区 | 国产成人久久77777精品 | 深爱激情开心 | 成人av一区二区兰花在线播放 | 日韩精品一区二区三区不卡 | 欧美一级片免费播放 | 91av播放 | 黄色av电影免费观看 | 国产视频一级 | 国产裸体视频网站 | 国产精品久久久久久久久久直播 | 精品一区二区三区香蕉蜜桃 | 超级碰碰视频 | 成人av影视在线 | 少妇bbbb搡bbbb桶 | 亚洲精品视频免费观看 | 五月婷婷丁香网 | 欧美人体xx| 99亚洲视频 | 国产69精品久久久久99 | 久久久www成人免费毛片 | 顶级欧美色妇4khd | 国产区网址 | 少妇按摩av | 最近久乱中文字幕 | 婷婷av网| 亚洲精品乱码久久久久久蜜桃不爽 | 五月开心六月婷婷 | 亚洲欧美日韩国产 | 日韩一区精品 | 国产日本亚洲高清 | 国产丝袜制服在线 | 久久人人爽人人 | 久草在线资源观看 | 蜜臀av麻豆 | 超碰在线人 | 精品国产乱码久久久久久浪潮 | 日韩视频在线不卡 | 黄色av影视 | 欧美激情在线看 | 在线精品一区二区 | av电影中文| 国产视频精品久久 | 91福利视频久久久久 | 欧美黑人性猛交 | 97视频成人| 日韩中文字幕视频在线观看 | 国产精品美女免费视频 | 精品国产_亚洲人成在线 | 天天干夜夜爱 | 婷婷六月中文字幕 | 91在线日本| 精品欧美一区二区精品久久 | 久久国产日韩 | 日本性生活免费看 | 美女视频黄免费的 | 国产精品久久久精品 | 国产午夜三级 | 黄网站大全 | 国产一级特黄电影 | 久久久99久久 | 国产日韩在线一区 | 国产福利中文字幕 | 人人要人人澡人人爽人人dvd | 日日干天天爽 | 尤物九九久久国产精品的分类 | 国产不卡在线 | 超碰在线人人草 | 99久久这里只有精品 | 国产视频在线免费观看 | 中文字幕成人网 | 一区二区三区免费看 | 手机看片中文字幕 | 中文字幕国产在线 | 97精品久久人人爽人人爽 | 最新av在线播放 | 国产精品久久久久久久久久久久午夜片 | 毛片久久久| 黄色一二级片 | 欧美一级视频在线观看 | 欧美日韩三级 | 精品国产一区二区三区av性色 | 中文字幕日韩精品有码视频 | 在线观看视频黄色 | 久久精品99久久久久久2456 | 中文字幕123区 | 国产综合精品一区二区三区 | 欧美成人999| 性色av免费看 | 手机av电影在线 | 久草免费色站 | 玖玖综合网 | av在线播放网址 | 日韩欧美综合精品 | 日韩免费在线观看视频 | 免费在线观看中文字幕 | 亚洲一区 av| 欧美极品久久 | 日韩r级在线 | 免费精品人在线二线三线 | 婷婷色网视频在线播放 | 亚洲第一成网站 | 久久午夜国产 | 日韩有码专区 | 综合婷婷 | 在线免费国产 | 久免费视频 | 91精品久久久久久 | 69av在线播放 | 国产亚洲精品bv在线观看 | 久久久久免费网 | 中文字幕在线观看网站 | 午夜精品久久久久久久久久 | 久草观看| 午夜在线免费视频 | 国产一区二区日本 | 欧美天天综合 | 国内精品久久久久影院男同志 | 亚洲成人免费 | 六月丁香婷婷网 | 一区二区 不卡 | 337p西西人体大胆瓣开下部 | 成人免费在线播放视频 | 国产精品久久久久久妇 | 欧亚日韩精品一区二区在线 | av在线一级| 日韩在线观看高清 | av网站手机在线观看 | 成人丁香花 | 亚洲va欧美va国产va黑人 | 国内成人综合 | 色的网站在线观看 | 久久综合久久综合这里只有精品 | av免费观看高清 | 一区二区三区在线视频111 | 四虎国产精 | 国产精品免费看久久久8精臀av | 久久人人爽人人爽人人片av免费 | 国产裸体无遮挡 | 操操操com | 亚洲精品在线观看视频 | 中文字幕久久网 | 三级av免费| 免费视频一区二区 | 久久免费高清视频 | 麻豆久久精品 | 九九热免费在线视频 | 91在线网站 | 国产精品久久久久久影院 | 久久精品第一页 | 欧美一级视频一区 | 久久免费播放 | 亚洲欧美怡红院 | 一区 二区电影免费在线观看 | 毛片网在线| 激情婷婷综合 | 国产亚洲视频在线 | 日韩国产精品久久久久久亚洲 | 国产九色在线播放九色 | 97精品超碰一区二区三区 | 久久一区二区三区日韩 | 狠狠88综合久久久久综合网 | 欧美精品二区 | 午夜国产一区 | 久久久免费精品视频 | 在线 欧美 日韩 | 国产精品久久中文字幕 | 欧美在线观看视频免费 | 午夜a区| 91在线观看视频网站 | 亚洲美女免费视频 | 91av视频网站 | 午夜久草 | 欧美一级视频在线观看 | 三级av黄色| 国产综合视频在线观看 | 亚洲精品免费在线观看视频 | 色激情五月 | 欧美日韩啪啪 | 51久久夜色精品国产麻豆 | 视频在线在亚洲 | 日本中文不卡 | 天天舔天天射天天操 | 国产一区电影在线观看 | 免费观看十分钟 | 一区二区精品在线 | 成人精品一区二区三区电影免费 | 99久久精品国产一区 | 欧美精品久久 | 国产又粗又长又硬免费视频 | 国产高清在线免费视频 | 国内精品视频在线播放 | 97精品久久 | 久久黄色免费视频 | 日日夜夜天天干 | av电影在线免费观看 | 日韩av成人在线观看 | 国产精品9999久久久久仙踪林 | 日韩欧美国产免费播放 | 久草男人天堂 | 国产在线更新 | 国产精品一区二区免费 | 国产美女在线观看 | 黄网站色视频 | 国产99一区 | 九九99 | 西西444www| 久久97超碰 | 黄色av在 | 精品不卡av | 日韩动态视频 | 日韩在线理论 | 黄色一二级片 | av看片网址| 久久免费的精品国产v∧ | 香蕉成人在线视频 | 狠狠色丁香婷综合久久 | 亚洲激情婷婷 | 人人看人人草 | 欧美天天综合网 | 天堂av免费观看 | av一级在线观看 | 亚洲午夜久久久综合37日本 | 国产精品永久在线观看 | 99视频导航| 日韩在线视频国产 | 丝袜美腿亚洲综合 | 最新日韩在线观看 | 97综合视频 | 久久久久久久久久久久影院 | 欧美精品一二 | 亚洲精品视频 | 国产不卡毛片 | 中文字幕免费高清 | 日本中文字幕在线一区 | 午夜国产福利视频 | 天天伊人网 | 91精品国产一区二区在线观看 | 色橹橹欧美在线观看视频高清 | 中文久草 | 一区二区电影在线观看 | 国产精品日韩精品 | 中字幕视频在线永久在线观看免费 | 免费av网址大全 | 天天操天天色天天射 | 亚洲激情av | 免费在线观看av网站 | 亚洲人成人天堂h久久 | 欧洲高潮三级做爰 | 国产在线精品二区 | 四虎在线永久免费观看 | 亚洲国产网站 | 免费看的视频 | 国产精品乱码高清在线看 | 国产精品久久久久久久久搜平片 | 国产精品原创在线 | 日日爽 | 婷婷色综合 | 色婷婷成人| 久久综合中文色婷婷 | 91成人免费看 | 香蕉成人在线视频 | 六月丁香社区 | 特级黄录像视频 | 国产精品密入口果冻 | 精品女同一区二区三区在线观看 | 狠狠狠色丁香综合久久天下网 | 日本乱视频 | 狠狠的干狠狠的操 | 日韩精品中文字幕av | 娇妻呻吟一区二区三区 | 国产xxxxx在线观看 | 韩日色视频 | 国产亚洲婷婷免费 | 欧美日韩aaaa | 久久精品福利视频 | 91福利影院在线观看 | 欧美视屏一区二区 | 中文字幕日韩高清 | 午夜精品久久久 | 综合网伊人 | av片免费播放 | 久久九九久久 | 在线免费黄色片 | 麻豆精品91 | 亚洲日本中文字幕在线观看 | 欧美a视频在线观看 | 欧美日韩在线观看一区二区三区 | 在线视频1卡二卡三卡 | 日本最新高清不卡中文字幕 | 久久在线视频精品 | 美女国内精品自产拍在线播放 | 成人91免费视频 | 国产97碰免费视频 | 黄色1级毛片 | 日韩av免费在线电影 | 免费国产一区二区 | 久久久久亚洲国产精品 | 天天干天天干天天干天天干天天干天天干 | 欧美精品久久久久久久 | 国产视频2区 | 一区二区精品在线视频 | 日本激情视频中文字幕 | 久久亚洲免费视频 | 日韩在线色视频 | 激情网在线视频 | 91麻豆精品国产91久久久使用方法 | 99视频一区二区 | 精品国产1区 | 精品福利国产 | 久久99日韩 | 亚洲 综合 国产 精品 | 亚州精品在线视频 | 国产一区视频在线 | 7799av | 国产精品中文字幕av | 91在线免费播放视频 | 正在播放国产精品 | 国产精品国产三级国产不产一地 | 国产视频一区在线免费观看 | 亚洲精品麻豆 | 欧美日韩精品在线观看视频 | 91视频在线免费看 | 亚洲精品乱码久久久久久蜜桃91 | 91精品婷婷国产综合久久蝌蚪 | 91人人爽人人爽人人精88v | 91精品国产91 | 日韩精品视频免费专区在线播放 | 激情小说网站亚洲综合网 | 亚洲成av人片 | 婷婷久操 | 国产麻豆精品传媒av国产下载 | 9999激情 | 亚洲成人av片在线观看 | 夜夜夜精品| 欧美一二区视频 | 伊人狠狠干 | 69久久99精品久久久久婷婷 | 成人黄色片免费看 | 欧美极品xxx | 五月天激情开心 | 五月婷婷丁香网 | 日韩欧美在线观看一区二区三区 | 美女视频a美女大全免费下载蜜臀 | 尤物97国产精品久久精品国产 | 久久综合九色综合久99 | 激情综合中文娱乐网 | 精品久久久一区二区 | 日日日爽爽爽 | 精品久久久久久亚洲 | 亚洲精品中文字幕在线 | 久久综合久久综合这里只有精品 | 成人一级在线 | 久久在线视频精品 | 贫乳av女优大全 | 91九色国产 | 久久婷亚洲五月一区天天躁 | 一级α片免费看 | 天堂av色婷婷一区二区三区 | 国产美女在线免费观看 | 激情欧美xxxx | 国产成人中文字幕 | 亚洲精品永久免费视频 | 国内精品久久久久久久久久 | 欧美另类色图 | 免费视频区| 欧美激情视频一区二区三区 | 91亚洲网站| 超碰电影在线观看 | 在线电影a| 久久免费国产 | 精品视频网站 | 国产不卡在线观看视频 | 欧美男女爱爱视频 | 日韩在线视频观看 | 黄色一级在线观看 | 久久久综合九色合综国产精品 | 国产亚洲一区二区三区 | 亚洲精品玖玖玖av在线看 | www.久久99| 日韩免费在线观看网站 | 91丨精品丨蝌蚪丨白丝jk | 日韩在线观看一区二区 | 日韩久久精品一区二区 | 米奇四色影视 | 国产精品都在这里 | 日韩电影中文,亚洲精品乱码 | 国产黄色片一级 | 欧美九九九| 国产精品久久久久久久av电影 | 欧美精品一区二区在线播放 | 日韩av福利在线 | 久久国产精品一区二区三区四区 | 亚洲精品免费观看视频 | 日韩精品视频免费在线观看 | 久久精品高清 | 天天夜夜亚洲 | 国产一区二区久久 | 久久国产一区二区三区 | 天堂av在线免费观看 | 国产黄色片久久久 | 夜夜夜夜夜夜操 | 国产精品久久久久久久久久白浆 | 一区二区精品在线观看 | 最近中文字幕完整高清 | 日本精品视频一区二区 | 国产在线2020 | 免费看的黄色网 | 久久精品中文 | 久久区二区 | 国产在线传媒 | 日本xxxxav| 久久伊99综合婷婷久久伊 | 免费看成人片 | 欧美一级片在线播放 | 91久久电影| 国产精品麻豆99久久久久久 | 91完整版 | 国产综合精品一区二区三区 | 国产爽视频 | 欧美激情精品久久久久久 | 久久一区二区三区日韩 | 在线观看一级 | 狠狠狠色丁香婷婷综合激情 | 日韩高清www | 视频在线观看99 | 亚州精品国产 | 久久99亚洲热视 | 最新色视频| 欧美色图30p | 日韩欧美在线高清 | 国产在线永久 | 日本中文字幕在线播放 | 国产精品av在线免费观看 | 亚洲日本va中文字幕 | 国产色资源 | 亚洲国产精品免费 | 亚洲欧洲一区二区在线观看 | 99人久久精品视频最新地址 | 欧美精品久久久久性色 | 五月网婷婷 | 久久久片 | 久久综合婷婷综合 | 天堂av免费在线 | 婷婷综合成人 | 五月婷av| 久久久久这里只有精品 | 免费男女羞羞的视频网站中文字幕 | 成人影视免费 | 国产午夜一级毛片 | av免费在线播放 | 一区二区三区四区久久 | 亚洲 成人 欧美 | www.69xx| 亚洲最大成人免费网站 | 国产va饥渴难耐女保洁员在线观看 | 久久国产精品久久精品国产演员表 | 麻豆系列在线观看 | 日韩精品免费在线观看视频 | 欧美一区二区三区在线视频观看 | 国产精品久久久久久久久久免费 | 天堂资源在线观看视频 | 日韩高清免费电影 | 91精品在线观看视频 | 国产五月色婷婷六月丁香视频 | 国产精品国产三级在线专区 | 日韩在线大片 | 国产一区免费 | 美女久久久久久久久久 | 51久久夜色精品国产麻豆 | 黄色com | 国产精品久久久久久久午夜片 | 久久综合爱 | 国产精品九九久久久久久久 | 午夜色大片在线观看 | 四虎在线免费观看 | 国产不卡一 | 三级午夜片 | 尤物九九久久国产精品的分类 | 日韩欧美一区二区三区视频 | 在线观看电影av | 午夜av免费| a天堂中文在线 | 中文字幕在线观看视频一区二区三区 | 国产精品免费久久久久久 | 国产精品 日韩 欧美 | 四虎成人精品永久免费av | 国产精品美女免费视频 | 在线亚洲观看 | 丁香在线观看完整电影视频 | 在线播放亚洲激情 | 亚洲精品久久久久999中文字幕 | 久久久久久久精 | 久精品视频 | 久热色超碰 | 成人91在线 | 人人狠 | 狠狠干,狠狠操 | 在线精品视频免费观看 | 亚洲黄色片在线 | 在线国产精品视频 | 午夜久久久久久久久 | 亚洲自拍自偷 | 久久精品视频2 | 999久久久国产精品 高清av免费观看 | 亚洲免费激情 | 国产成人久久77777精品 | 国产精品久久嫩一区二区免费 | 亚洲电影av在线 | 日韩精品久久久久久久电影99爱 | 久久一区二| 国产日韩欧美在线免费观看 | 亚洲自拍自偷 | 色婷婷导航 | 天天玩天天干 | 久久这里有精品 | 久草在线在线视频 | 亚洲精品动漫在线 | 亚洲欧美在线视频免费 | 欧美日韩精品在线播放 | 三级动态视频在线观看 | 天天综合网 天天 | 久久精品日本啪啪涩涩 | 国产一区二区在线免费播放 | 欧美国产在线看 | 国产黄影院色大全免费 | 就要干b | 黄色电影在线免费观看 | 久久美女精品 | 在线99热| 国产我不卡| 麻豆视频入口 | 免费看片亚洲 | 亚洲精品456在线播放第一页 | 婷婷精品国产一区二区三区日韩 | 久草在线中文视频 | 久久影视一区二区 | 久久av免费观看 | 欧美日韩国产网站 | 成人看片| 亚洲精品视频国产 | 91色综合| 日韩欧美一区二区三区视频 | 精品中文字幕在线 | 91精品国产高清自在线观看 | 高清av免费一区中文字幕 | 亚洲91中文字幕无线码三区 | 狠狠色伊人亚洲综合网站色 | 国产999在线观看 | 午夜精品电影 | 久久久精品久久日韩一区综合 | 天天曰天天 | 色婷av| 欧美乱码精品一区二区 | 日韩欧美网站 | 日韩精品免费在线观看视频 | 91精品国产一区二区在线观看 | 日韩久久久 | 99精品免费久久久久久久久日本 | 成人av免费播放 | 九九免费在线观看视频 | 日韩特级片 | 99在线热播精品免费99热 | 国产91精品久久久久 | 中文字幕在线观看完整版电影 | 免费看黄色毛片 | 97国产大学生情侣白嫩酒店 | 在线看片一区 | 啪啪肉肉污av国网站 | 黄色精品国产 | 国产精品视频全国免费观看 | 久久久久久久毛片 | 国产一区二区在线播放视频 | 91成人免费在线 | 91人人射 | 亚洲精品视频在线免费 | 午夜婷婷在线观看 | 免费视频久久久久 | 91探花视频| 亚洲精品视频在线观看免费视频 | 久久久久国产成人免费精品免费 | 97福利社| 免费观看www视频 | 亚洲在线免费视频 | www..com毛片| 91视频在线看 | 日本性高潮视频 | 天天色天天操天天爽 | 成人小视频在线 | 久久夜av| 国产成人精品一区二区三区在线观看 | 色com| 日日日爽爽爽 | 五月综合激情婷婷 | 91精品国产乱码久久桃 | 亚洲精品观看 | 最近中文字幕高清字幕在线视频 | av在线小说 | 91香蕉国产在线观看软件 | 欧美日韩一区二区视频在线观看 | 成人免费在线视频观看 | 日韩欧美在线免费 | av网址在线播放 | 国产午夜在线观看 | 欧美日韩高清国产 | 国产色婷婷精品综合在线手机播放 | 日韩黄色免费 | 欧美性生交大片免网 | 欧美电影黄色 | 中文字幕在线免费 | 在线国产能看的 | 黄色av电影网| .国产精品成人自产拍在线观看6 | 久久精品美女视频网站 | 91成人国产 | 91精品国产欧美一区二区成人 | 日本 在线 视频 中文 有码 | 久久无码精品一区二区三区 | 国产不卡在线播放 | 欧美日韩国产精品一区二区三区 | www.黄色片网站 | 超碰日韩在线 | 激情av网址 | 欧美精品国产精品 | 在线免费观看视频一区二区三区 | 九九久久久久久久久激情 | 久久综合九色九九 | 中国精品少妇 | 天天夜夜亚洲 | 免费久久久 | av电影在线免费观看 | 中文字幕视频网站 | 亚洲精品在线国产 | 欧美激情第八页 | 狠狠色丁香婷综合久久 | 国产精品系列在线观看 | 精品国内自产拍在线观看视频 | 亚洲,国产成人av | 国产一区高清在线观看 | 国产精品久久一区二区三区, | 国产99久久久久 | 91免费版在线 | 久久久久久久久久久成人 | 首页av在线 | 亚洲精品一区二区三区高潮 | 色综合久久五月天 | 日日夜夜人人天天 | 97av精品| 亚洲精选在线观看 | 国内三级在线观看 | 欧美国产亚洲精品久久久8v | 激情欧美xxxx | 日日干视频 | 国产99久久精品一区二区300 | av一级免费 | 丰满少妇在线观看资源站 | 97免费在线视频 | 久久精品这里都是精品 | 91日本在线播放 | 伊人网av| 国产一区二区三区四区大秀 | 日韩精品不卡在线观看 | 国产精品久久一区二区三区不卡 | 又黄又刺激又爽的视频 | 久久99热国产 | 午夜国产福利视频 | 91.dizhi永久地址最新 | 2019中文在线观看 | 中文字幕影片免费在线观看 | 久久9999久久免费精品国产 | 天天射天天搞 | 亚洲日本国产 | 日韩一级黄色大片 | 国产在线成人 | 超碰.com| 成年人电影毛片 | 伊香蕉大综综综合久久啪 | 免费网址在线播放 | 日韩在线小视频 | 久久亚洲国产精品 | 开心激情婷婷 | 人人干人人做 | 成人毛片a | 亚洲精品在线看 | 99在线观看免费视频精品观看 | 在线观看成人小视频 | 丁香在线视频 | 精品乱码一区二区三四区 | 国产正在播放 | 日韩欧美视频一区二区三区 | av高清不卡 | 亚洲成人第一区 |