国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Prometheus 監(jiān)控系統(tǒng),它有多強(qiáng)!

共 29696字,需瀏覽 60分鐘

 ·

2021-07-09 01:06

大家好,我是杰哥。

Prometheus 是一款基于時(shí)序數(shù)據(jù)庫的開源監(jiān)控告警系統(tǒng),說起 Prometheus 則不得不提 SoundCloud,這是一個(gè)在線音樂分享的平臺(tái),類似于做視頻分享的 YouTube,由于他們?cè)谖⒎?wù)架構(gòu)的道路上越走越遠(yuǎn),出現(xiàn)了成百上千的服務(wù),使用傳統(tǒng)的監(jiān)控系統(tǒng) StatsD 和 Graphite 存在大量的局限性。

于是他們?cè)?2012 年開始著手開發(fā)一套全新的監(jiān)控系統(tǒng)。Prometheus 的原作者是 Matt T. Proud,他也是在 2012 年加入 SoundCloud 的,實(shí)際上,在加入 SoundCloud 之前,Matt 一直就職于 Google,他從 Google 的集群管理器 Borg 和它的監(jiān)控系統(tǒng) Borgmon 中獲取靈感,開發(fā)了開源的監(jiān)控系統(tǒng) Prometheus,和 Google 的很多項(xiàng)目一樣,使用的編程語言是 Go。

很顯然,Prometheus 作為一個(gè)微服務(wù)架構(gòu)監(jiān)控系統(tǒng)的解決方案,它和容器也脫不開關(guān)系。早在 2006 年 8 月 9 日,Eric Schmidt 在搜索引擎大會(huì)上首次提出了云計(jì)算(Cloud Computing)的概念,在之后的十幾年里,云計(jì)算的發(fā)展勢(shì)如破竹。

在 2013 年,Pivotal 的 Matt Stine 又提出了云原生(Cloud Native)的概念,云原生由微服務(wù)架構(gòu)、DevOps 和以容器為代表的敏捷基礎(chǔ)架構(gòu)組成,幫助企業(yè)快速、持續(xù)、可靠、規(guī)?;亟桓盾浖?。

為了統(tǒng)一云計(jì)算接口和相關(guān)標(biāo)準(zhǔn),2015 年 7 月,隸屬于 Linux 基金會(huì)的 云原生計(jì)算基金會(huì)(CNCF,Cloud Native Computing Foundation) 應(yīng)運(yùn)而生。第一個(gè)加入 CNCF 的項(xiàng)目是 Google 的 Kubernetes,而 Prometheus 是第二個(gè)加入的(2016 年)。

目前 Prometheus 已經(jīng)廣泛用于 Kubernetes 集群的監(jiān)控系統(tǒng)中,對(duì) Prometheus 的歷史感興趣的同學(xué)可以看看 SoundCloud 的工程師 Tobias Schmidt 在 2016 年的 PromCon 大會(huì)上的演講:The History of Prometheus at SoundCloud 。

一、Prometheus 概述

我們?cè)?SoundCloud 的官方博客中可以找到一篇關(guān)于他們?yōu)槭裁葱枰麻_發(fā)一個(gè)監(jiān)控系統(tǒng)的文章 Prometheus: Monitoring at SoundCloud,在這篇文章中,他們介紹到,他們需要的監(jiān)控系統(tǒng)必須滿足下面四個(gè)特性:

  • A multi-dimensional data model, so that data can be sliced and diced at will, along dimensions like instance, service, endpoint, and method.

  • Operational simplicity, so that you can spin up a monitoring server where and when you want, even on your local workstation, without setting up a distributed storage backend or reconfiguring the world.

  • Scalable data collection and decentralized architecture, so that you can reliably monitor the many instances of your services, and independent teams can set up independent monitoring servers.

  • Finally, a powerful query language that leverages the data model for meaningful alerting (including easy silencing) and graphing (for dashboards and for ad-hoc exploration).

簡(jiǎn)單來說,就是下面四個(gè)特性:

  • 多維度數(shù)據(jù)模型

  • 方便的部署和維護(hù)

  • 靈活的數(shù)據(jù)采集

  • 強(qiáng)大的查詢語言

實(shí)際上,多維度數(shù)據(jù)模型和強(qiáng)大的查詢語言這兩個(gè)特性,正是時(shí)序數(shù)據(jù)庫所要求的,所以 Prometheus 不僅僅是一個(gè)監(jiān)控系統(tǒng),同時(shí)也是一個(gè)時(shí)序數(shù)據(jù)庫。那為什么 Prometheus 不直接使用現(xiàn)有的時(shí)序數(shù)據(jù)庫作為后端存儲(chǔ)呢?這是因?yàn)?SoundCloud 不僅希望他們的監(jiān)控系統(tǒng)有著時(shí)序數(shù)據(jù)庫的特點(diǎn),而且還需要部署和維護(hù)非常方便。

縱觀比較流行的時(shí)序數(shù)據(jù)庫(參見下面的附錄),他們要么組件太多,要么外部依賴繁重,比如:Druid 有 Historical、MiddleManager、Broker、Coordinator、Overlord、Router 一堆的組件,而且還依賴于 ZooKeeper、Deep storage(HDFS 或 S3 等),Metadata store(PostgreSQL 或 MySQL),部署和維護(hù)起來成本非常高。而 Prometheus 采用去中心化架構(gòu),可以獨(dú)立部署,不依賴于外部的分布式存儲(chǔ),你可以在幾分鐘的時(shí)間里就可以搭建出一套監(jiān)控系統(tǒng)。

此外,Prometheus 數(shù)據(jù)采集方式也非常靈活。要采集目標(biāo)的監(jiān)控?cái)?shù)據(jù),首先需要在目標(biāo)處安裝數(shù)據(jù)采集組件,這被稱之為 Exporter,它會(huì)在目標(biāo)處收集監(jiān)控?cái)?shù)據(jù),并暴露出一個(gè) HTTP 接口供 Prometheus 查詢,Prometheus 通過 Pull 的方式來采集數(shù)據(jù),這和傳統(tǒng)的 Push 模式不同。

不過 Prometheus 也提供了一種方式來支持 Push 模式,你可以將你的數(shù)據(jù)推送到 Push Gateway,Prometheus 通過 Pull 的方式從 Push Gateway 獲取數(shù)據(jù)。目前的 Exporter 已經(jīng)可以采集絕大多數(shù)的第三方數(shù)據(jù),比如 Docker、HAProxy、StatsD、JMX 等等,官網(wǎng)有一份 Exporter 的列表。

除了這四大特性,隨著 Prometheus 的不斷發(fā)展,開始支持越來越多的高級(jí)特性,比如:服務(wù)發(fā)現(xiàn),更豐富的圖表展示,使用外部存儲(chǔ),強(qiáng)大的告警規(guī)則和多樣的通知方式。下圖是 Prometheus 的整體架構(gòu)圖:

從上圖可以看出,Prometheus 生態(tài)系統(tǒng)包含了幾個(gè)關(guān)鍵的組件:Prometheus server、Pushgateway、Alertmanager、Web UI 等,但是大多數(shù)組件都不是必需的,其中最核心的組件當(dāng)然是 Prometheus server,它負(fù)責(zé)收集和存儲(chǔ)指標(biāo)數(shù)據(jù),支持表達(dá)式查詢,和告警的生成。接下來我們就來安裝 Prometheus server。

二、安裝 Prometheus server

Prometheus 可以支持多種安裝方式,包括 Docker、Ansible、Chef、Puppet、Saltstack 等。下面介紹最簡(jiǎn)單的兩種方式,一種是直接使用編譯好的可執(zhí)行文件,開箱即用,另一種是使用 Docker 鏡像。

2.1 開箱即用

首先從 官網(wǎng)的下載頁面 獲取 Prometheus 的最新版本和下載地址,目前最新版本是 2.4.3(2018年10月),執(zhí)行下面的命令下載并解壓:

$ wget https://github.com/prometheus/prometheus/releases/download/v2.4.3/prometheus-2.4.3.linux-amd64.tar.gz  
$ tar xvfz prometheus-2.4.3.linux-amd64.tar.gz  

然后切換到解壓目錄,檢查 Prometheus 版本:

$ cd prometheus-2.4.3.linux-amd64  
$ ./prometheus --version  
prometheus, version 2.4.3 (branch: HEAD, revision: 167a4b4e73a8eca8df648d2d2043e21bdb9a7449)  
  build user:       root@1e42b46043e9  
  build date:       20181004-08:42:02  
  go version:       go1.11.1  

運(yùn)行 Prometheus server:

$ ./prometheus --config.file=prometheus.yml  

2.2 使用 Docker 鏡像

使用 Docker 安裝 Prometheus 更簡(jiǎn)單,運(yùn)行下面的命令即可:

$ sudo docker run -d -p 9090:9090 prom/prometheus  

一般情況下,我們還會(huì)指定配置文件的位置:

$ sudo docker run -d -p 9090:9090 \  
    -v ~/docker/prometheus/:/etc/prometheus/ \  
    prom/prometheus  

我們把配置文件放在本地 ~/docker/prometheus/prometheus.yml,這樣可以方便編輯和查看,通過 -v 參數(shù)將本地的配置文件掛載到 /etc/prometheus/ 位置,這是 prometheus 在容器中默認(rèn)加載的配置文件位置。如果我們不確定默認(rèn)的配置文件在哪,可以先執(zhí)行上面的不帶 -v 參數(shù)的命令,然后通過 docker inspect 命名看看容器在運(yùn)行時(shí)默認(rèn)的參數(shù)有哪些(下面的 Args 參數(shù)):

$ sudo docker inspect 0c  
[...]  
        "Id""0c4c2d0eed938395bcecf1e8bb4b6b87091fc4e6385ce5b404b6bb7419010f46",  
        "Created""2018-10-15T22:27:34.56050369Z",  
        "Path""/bin/prometheus",  
        "Args": [  
            "--config.file=/etc/prometheus/prometheus.yml",  
            "--storage.tsdb.path=/prometheus",  
            "--web.console.libraries=/usr/share/prometheus/console_libraries",  
            "--web.console.templates=/usr/share/prometheus/consoles"  
        ],  

[...]  

2.3 配置 Prometheus

正如上面兩節(jié)看到的,Prometheus 有一個(gè)配置文件,通過參數(shù) --config.file 來指定,配置文件格式為 YAML。我們可以打開默認(rèn)的配置文件 prometheus.yml 看下里面的內(nèi)容:

/etc/prometheus $ cat prometheus.yml   
# my global config  
global:  
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.  
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.  
  # scrape_timeout is set to the global default (10s).  

# Alertmanager configuration  
alerting:  
  alertmanagers:  
  - static_configs:  
    - targets:  
      # - alertmanager:9093  

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.  
rule_files:  
  # - "first_rules.yml"  
  # - "second_rules.yml"  

# A scrape configuration containing exactly one endpoint to scrape:  
# Here it's Prometheus itself.  
scrape_configs:  
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.  
  - job_name: 'prometheus'  

    # metrics_path defaults to '/metrics'  
    # scheme defaults to 'http'.  

    static_configs:  
    - targets: ['localhost:9090']  

Prometheus 默認(rèn)的配置文件分為四大塊:

  • global 塊:Prometheus 的全局配置,比如 scrape_interval 表示 Prometheus 多久抓取一次數(shù)據(jù),evaluation_interval 表示多久檢測(cè)一次告警規(guī)則;

  • alerting 塊:關(guān)于 Alertmanager 的配置,這個(gè)我們后面再看;

  • rule_files 塊:告警規(guī)則,這個(gè)我們后面再看;

  • scrape_config 塊:這里定義了 Prometheus 要抓取的目標(biāo),我們可以看到默認(rèn)已經(jīng)配置了一個(gè)名稱為 prometheus 的 job,這是因?yàn)?Prometheus 在啟動(dòng)的時(shí)候也會(huì)通過 HTTP 接口暴露自身的指標(biāo)數(shù)據(jù),這就相當(dāng)于 Prometheus 自己監(jiān)控自己,雖然這在真正使用 Prometheus 時(shí)沒啥用處,但是我們可以通過這個(gè)例子來學(xué)習(xí)如何使用 Prometheus;可以訪問 http://localhost:9090/metrics 查看 Prometheus 暴露了哪些指標(biāo);

三、學(xué)習(xí) PromQL

通過上面的步驟安裝好 Prometheus 之后,我們現(xiàn)在可以開始體驗(yàn) Prometheus 了。Prometheus 提供了可視化的 Web UI 方便我們操作,直接訪問 http://localhost:9090/ 即可,它默認(rèn)會(huì)跳轉(zhuǎn)到 Graph 頁面:

第一次訪問這個(gè)頁面可能會(huì)不知所措,我們可以先看看其他菜單下的內(nèi)容,比如:Alerts 展示了定義的所有告警規(guī)則,Status 可以查看各種 Prometheus 的狀態(tài)信息,有 Runtime & Build Information、Command-Line Flags、Configuration、Rules、Targets、Service Discovery 等等。

實(shí)際上 Graph 頁面才是 Prometheus 最強(qiáng)大的功能,在這里我們可以使用 Prometheus 提供的一種特殊表達(dá)式來查詢監(jiān)控?cái)?shù)據(jù),這個(gè)表達(dá)式被稱為 PromQL(Prometheus Query Language)。通過 PromQL 不僅可以在 Graph 頁面查詢數(shù)據(jù),而且還可以通過 Prometheus 提供的 HTTP API 來查詢。查詢的監(jiān)控?cái)?shù)據(jù)有列表和曲線圖兩種展現(xiàn)形式(對(duì)應(yīng)上圖中 Console 和 Graph 這兩個(gè)標(biāo)簽)。

我們上面說過,Prometheus 自身也暴露了很多的監(jiān)控指標(biāo),也可以在 Graph 頁面查詢,展開 Execute 按鈕旁邊的下拉框,可以看到很多指標(biāo)名稱,我們隨便選一個(gè),譬如:promhttp_metric_handler_requests_total,這個(gè)指標(biāo)表示 /metrics 頁面的訪問次數(shù),Prometheus 就是通過這個(gè)頁面來抓取自身的監(jiān)控?cái)?shù)據(jù)的。在 Console 標(biāo)簽中查詢結(jié)果如下:

上面在介紹 Prometheus 的配置文件時(shí),可以看到 scrape_interval 參數(shù)是 15s,也就是說 Prometheus 每 15s 訪問一次 /metrics 頁面,所以我們過 15s 刷新下頁面,可以看到指標(biāo)值會(huì)自增。在 Graph 標(biāo)簽中可以看得更明顯:

3.1 數(shù)據(jù)模型

要學(xué)習(xí) PromQL,首先我們需要了解下 Prometheus 的數(shù)據(jù)模型,一條 Prometheus 數(shù)據(jù)由一個(gè)指標(biāo)名稱(metric)和 N 個(gè)標(biāo)簽(label,N >= 0)組成的,比如下面這個(gè)例子:

promhttp\_metric\_handler\_requests\_total{code="200",instance="192.168.0.107:9090",job="prometheus"} 106

這條數(shù)據(jù)的指標(biāo)名稱為 promhttp_metric_handler_requests_total,并且包含三個(gè)標(biāo)簽 code、instance 和 job,這條記錄的值為 106。上面說過,Prometheus 是一個(gè)時(shí)序數(shù)據(jù)庫,相同指標(biāo)相同標(biāo)簽的數(shù)據(jù)構(gòu)成一條時(shí)間序列。如果以傳統(tǒng)數(shù)據(jù)庫的概念來理解時(shí)序數(shù)據(jù)庫,可以把指標(biāo)名當(dāng)作表名,標(biāo)簽是字段,timestamp 是主鍵,還有一個(gè) float64 類型的字段表示值(Prometheus 里面所有值都是按 float64 存儲(chǔ))。

這種數(shù)據(jù)模型和 OpenTSDB 的數(shù)據(jù)模型是比較類似的,詳細(xì)的信息可以參考官網(wǎng)文檔 Data model。另外,關(guān)于指標(biāo)和標(biāo)簽的命名,官網(wǎng)有一些指導(dǎo)性的建議,可以參考 Metric and label naming 。

雖然 Prometheus 里存儲(chǔ)的數(shù)據(jù)都是 float64 的一個(gè)數(shù)值,但如果我們按類型來分,可以把 Prometheus 的數(shù)據(jù)分成四大類:

  • Counter

  • Gauge

  • Histogram

  • Summary

Counter 用于計(jì)數(shù),例如:請(qǐng)求次數(shù)、任務(wù)完成數(shù)、錯(cuò)誤發(fā)生次數(shù),這個(gè)值會(huì)一直增加,不會(huì)減少。Gauge 就是一般的數(shù)值,可大可小,例如:溫度變化、內(nèi)存使用變化。Histogram 是直方圖,或稱為柱狀圖,常用于跟蹤事件發(fā)生的規(guī)模,例如:請(qǐng)求耗時(shí)、響應(yīng)大小。

它特別之處是可以對(duì)記錄的內(nèi)容進(jìn)行分組,提供 count 和 sum 的功能。Summary 和 Histogram 十分相似,也用于跟蹤事件發(fā)生的規(guī)模,不同之處是,它提供了一個(gè) quantiles 的功能,可以按百分比劃分跟蹤的結(jié)果。例如:quantile 取值 0.95,表示取采樣值里面的 95% 數(shù)據(jù)。更多信息可以參考官網(wǎng)文檔 Metric types,Summary 和 Histogram 的概念比較容易混淆,屬于比較高階的指標(biāo)類型,可以參考 Histograms and summaries 這里的說明。

這四種類型的數(shù)據(jù)只在指標(biāo)的提供方作區(qū)分,也就是上面說的 Exporter,如果你需要編寫自己的 Exporter 或者在現(xiàn)有系統(tǒng)中暴露供 Prometheus 抓取的指標(biāo),你可以使用 Prometheus client libraries,這個(gè)時(shí)候你就需要考慮不同指標(biāo)的數(shù)據(jù)類型了。如果你不用自己實(shí)現(xiàn),而是直接使用一些現(xiàn)成的 Exporter,然后在 Prometheus 里查查相關(guān)的指標(biāo)數(shù)據(jù),那么可以不用太關(guān)注這塊,不過理解 Prometheus 的數(shù)據(jù)類型,對(duì)寫出正確合理的 PromQL 也是有幫助的。

3.2 PromQL 入門

我們從一些例子開始學(xué)習(xí) PromQL,最簡(jiǎn)單的 PromQL 就是直接輸入指標(biāo)名稱,比如:

# 表示 Prometheus 能否抓取 target 的指標(biāo),用于 target 的健康檢查  
up  

這條語句會(huì)查出 Prometheus 抓取的所有 target 當(dāng)前運(yùn)行情況,譬如下面這樣:

up{instance="192.168.0.107:9090",job="prometheus"}    1  
up{instance="192.168.0.108:9090",job="prometheus"}    1  
up{instance="192.168.0.107:9100",job="server"}    1  
up{instance="192.168.0.108:9104",job="mysql"}    0  

也可以指定某個(gè) label 來查詢:

up{job="prometheus"}  

這種寫法被稱為 Instant vector selectors,這里不僅可以使用 = 號(hào),還可以使用 !=、=~、!~,比如下面這樣:

up{job!="prometheus"}  
up{job=~"server|mysql"}  
up{job=~"192\.168\.0\.107.+"}  

=~ 是根據(jù)正則表達(dá)式來匹配,必須符合 RE2 的語法。

和 Instant vector selectors 相應(yīng)的,還有一種選擇器,叫做 Range vector selectors,它可以查出一段時(shí)間內(nèi)的所有數(shù)據(jù):

http_requests_total[5m]  

這條語句查出 5 分鐘內(nèi)所有抓取的 HTTP 請(qǐng)求數(shù),注意它返回的數(shù)據(jù)類型是 Range vector,沒辦法在 Graph 上顯示成曲線圖,一般情況下,會(huì)用在 Counter 類型的指標(biāo)上,并和 rate() 或 irate() 函數(shù)一起使用(注意 rate 和 irate 的區(qū)別)。

# 計(jì)算的是每秒的平均值,適用于變化很慢的 counter  
# per-second average rate of increase, for slow-moving counters  
rate(http_requests_total[5m])  

#
 計(jì)算的是每秒瞬時(shí)增加速率,適用于變化很快的 counter  
# per-second instant rate of increase, for volatile and fast-moving counters  
irate(http_requests_total[5m])  

此外,PromQL 還支持 count、sum、min、max、topk 等 聚合操作,還支持 rate、abs、ceil、floor 等一堆的 內(nèi)置函數(shù),更多的例子,還是上官網(wǎng)學(xué)習(xí)吧。如果感興趣,我們還可以把 PromQL 和 SQL 做一個(gè)對(duì)比,會(huì)發(fā)現(xiàn) PromQL 語法更簡(jiǎn)潔,查詢性能也更高。

3.3 HTTP API

我們不僅僅可以在 Prometheus 的 Graph 頁面查詢 PromQL,Prometheus 還提供了一種 HTTP API 的方式,可以更靈活的將 PromQL 整合到其他系統(tǒng)中使用,譬如下面要介紹的 Grafana,就是通過 Prometheus 的 HTTP API 來查詢指標(biāo)數(shù)據(jù)的。實(shí)際上,我們?cè)?Prometheus 的 Graph 頁面查詢也是使用了 HTTP API。

我們看下 Prometheus 的 HTTP API 官方文檔,它提供了下面這些接口:

  • GET /api/v1/query

  • GET /api/v1/query_range

  • GET /api/v1/series

  • GET /api/v1/label/

    /values
  • GET /api/v1/targets

  • GET /api/v1/rules

  • GET /api/v1/alerts

  • GET /api/v1/targets/metadata

  • GET /api/v1/alertmanagers

  • GET /api/v1/status/config

  • GET /api/v1/status/flags

從 Prometheus v2.1 開始,又新增了幾個(gè)用于管理 TSDB 的接口:

  • POST /api/v1/admin/tsdb/snapshot

  • POST /api/v1/admin/tsdb/delete_series

  • POST /api/v1/admin/tsdb/clean_tombstones

四、安裝 Grafana

雖然 Prometheus 提供的 Web UI 也可以很好的查看不同指標(biāo)的視圖,但是這個(gè)功能非常簡(jiǎn)單,只適合用來調(diào)試。要實(shí)現(xiàn)一個(gè)強(qiáng)大的監(jiān)控系統(tǒng),還需要一個(gè)能定制展示不同指標(biāo)的面板,能支持不同類型的展現(xiàn)方式(曲線圖、餅狀圖、熱點(diǎn)圖、TopN 等),這就是儀表盤(Dashboard)功能。

因此 Prometheus 開發(fā)了一套儀表盤系統(tǒng) PromDash,不過很快這套系統(tǒng)就被廢棄了,官方開始推薦使用 Grafana 來對(duì) Prometheus 的指標(biāo)數(shù)據(jù)進(jìn)行可視化,這不僅是因?yàn)?Grafana 的功能非常強(qiáng)大,而且它和 Prometheus 可以完美的無縫融合。

Grafana 是一個(gè)用于可視化大型測(cè)量數(shù)據(jù)的開源系統(tǒng),它的功能非常強(qiáng)大,界面也非常漂亮,使用它可以創(chuàng)建自定義的控制面板,你可以在面板中配置要顯示的數(shù)據(jù)和顯示方式,它 支持很多不同的數(shù)據(jù)源,比如:Graphite、InfluxDB、OpenTSDB、Elasticsearch、Prometheus 等,而且它也 支持眾多的插件。

下面我們就體驗(yàn)下使用 Grafana 來展示 Prometheus 的指標(biāo)數(shù)據(jù)。首先我們來安裝 Grafana,我們使用最簡(jiǎn)單的 Docker 安裝方式:

$ docker run -d -p 3000:3000 grafana/grafana  

運(yùn)行上面的 docker 命令,Grafana 就安裝好了!你也可以采用其他的安裝方式,參考 官方的安裝文檔。安裝完成之后,我們?cè)L問 http://localhost:3000/ 進(jìn)入 Grafana 的登陸頁面,輸入默認(rèn)的用戶名和密碼(admin/admin)即可。

要使用 Grafana,第一步當(dāng)然是要配置數(shù)據(jù)源,告訴 Grafana 從哪里取數(shù)據(jù),我們點(diǎn)擊 Add data source 進(jìn)入數(shù)據(jù)源的配置頁面:

我們?cè)谶@里依次填上:

  • Name: prometheus

  • Type: Prometheus

  • URL: http://localhost:9090

  • Access: Browser

要注意的是,這里的 Access 指的是 Grafana 訪問數(shù)據(jù)源的方式,有 Browser 和 Proxy 兩種方式。Browser 方式表示當(dāng)用戶訪問 Grafana 面板時(shí),瀏覽器直接通過 URL 訪問數(shù)據(jù)源的;而 Proxy 方式表示瀏覽器先訪問 Grafana 的某個(gè)代理接口(接口地址是 /api/datasources/proxy/),由 Grafana 的服務(wù)端來訪問數(shù)據(jù)源的 URL,如果數(shù)據(jù)源是部署在內(nèi)網(wǎng),用戶通過瀏覽器無法直接訪問時(shí),這種方式非常有用。

配置好數(shù)據(jù)源,Grafana 會(huì)默認(rèn)提供幾個(gè)已經(jīng)配置好的面板供你使用,如下圖所示,默認(rèn)提供了三個(gè)面板:Prometheus Stats、Prometheus 2.0 Stats 和 Grafana metrics。點(diǎn)擊 Import 就可以導(dǎo)入并使用該面板。

我們導(dǎo)入 Prometheus 2.0 Stats 這個(gè)面板,可以看到下面這樣的監(jiān)控面板。如果你的公司有條件,可以申請(qǐng)個(gè)大顯示器掛在墻上,將這個(gè)面板投影在大屏上,實(shí)時(shí)觀察線上系統(tǒng)的狀態(tài),可以說是非常 cool 的。

五、使用 Exporter 收集指標(biāo)

目前為止,我們看到的都還只是一些沒有實(shí)際用途的指標(biāo),如果我們要在我們的生產(chǎn)環(huán)境真正使用 Prometheus,往往需要關(guān)注各種各樣的指標(biāo),譬如服務(wù)器的 CPU負(fù)載、內(nèi)存占用量、IO開銷、入網(wǎng)和出網(wǎng)流量等等。

正如上面所說,Prometheus 是使用 Pull 的方式來獲取指標(biāo)數(shù)據(jù)的,要讓 Prometheus 從目標(biāo)處獲得數(shù)據(jù),首先必須在目標(biāo)上安裝指標(biāo)收集的程序,并暴露出 HTTP 接口供 Prometheus 查詢,這個(gè)指標(biāo)收集程序被稱為 Exporter,不同的指標(biāo)需要不同的 Exporter 來收集,目前已經(jīng)有大量的 Exporter 可供使用,幾乎囊括了我們常用的各種系統(tǒng)和軟件。

官網(wǎng)列出了一份 常用 Exporter 的清單,各個(gè) Exporter 都遵循一份端口約定,避免端口沖突,即從 9100 開始依次遞增,這里是 完整的 Exporter 端口列表。另外值得注意的是,有些軟件和系統(tǒng)無需安裝 Exporter,這是因?yàn)樗麄儽旧砭吞峁┝吮┞?Prometheus 格式的指標(biāo)數(shù)據(jù)的功能,比如 Kubernetes、Grafana、Etcd、Ceph 等。

這一節(jié)就讓我們來收集一些有用的數(shù)據(jù)。

5.1 收集服務(wù)器指標(biāo)

首先我們來收集服務(wù)器的指標(biāo),這需要安裝 node_exporter,這個(gè) exporter 用于收集 *NIX 內(nèi)核的系統(tǒng),如果你的服務(wù)器是 Windows,可以使用 WMI exporter。

和 Prometheus server 一樣,node_exporter 也是開箱即用的:

$ wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-amd64.tar.gz  
$ tar xvfz node_exporter-0.16.0.linux-amd64.tar.gz  
$ cd node_exporter-0.16.0.linux-amd64  
$ ./node_exporter  

node_exporter 啟動(dòng)之后,我們?cè)L問下 /metrics 接口看看是否能正常獲取服務(wù)器指標(biāo):

$ curl http://localhost:9100/metrics  

如果一切 OK,我們可以修改 Prometheus 的配置文件,將服務(wù)器加到 scrape_configs 中:

scrape_configs:  
  - job_name: 'prometheus'  
    static_configs:  
      - targets: ['192.168.0.107:9090']  
  - job_name: 'server'  
    static_configs:  
      - targets: ['192.168.0.107:9100']  

修改配置后,需要重啟 Prometheus 服務(wù),或者發(fā)送 HUP 信號(hào)也可以讓 Prometheus 重新加載配置:

$ killall -HUP prometheus  

在 Prometheus Web UI 的 Status -> Targets 中,可以看到新加的服務(wù)器:

在 Graph 頁面的指標(biāo)下拉框可以看到很多名稱以 node 開頭的指標(biāo),譬如我們輸入 node_load1 觀察服務(wù)器負(fù)載:

如果想在 Grafana 中查看服務(wù)器的指標(biāo),可以在 Grafana 的 Dashboards 頁面 搜索 node exporter,有很多的面板模板可以直接使用,譬如:Node Exporter Server Metrics 或者 Node Exporter Full 等。我們打開 Grafana 的 Import dashboard 頁面,輸入面板的 URL(https://grafana.com/dashboards/405)或者 ID(405)即可。

注意事項(xiàng)

一般情況下,node_exporter 都是直接運(yùn)行在要收集指標(biāo)的服務(wù)器上的,官方不推薦用 Docker 來運(yùn)行 node_exporter。如果逼不得已一定要運(yùn)行在 Docker 里,要特別注意,這是因?yàn)?Docker 的文件系統(tǒng)和網(wǎng)絡(luò)都有自己的 namespace,收集的數(shù)據(jù)并不是宿主機(jī)真實(shí)的指標(biāo)。可以使用一些變通的方法,比如運(yùn)行 Docker 時(shí)加上下面這樣的參數(shù):

docker run -d \  
  --net="host" \  
  --pid="host" \  
  -v "/:/host:ro,rslave" \  
  quay.io/prometheus/node-exporter \  
  --path.rootfs /host  

關(guān)于 node_exporter 的更多信息,可以參考 node_exporter 的文檔 和 Prometheus 的官方指南 Monitoring Linux host metrics with the Node Exporter,另外,Julius Volz 的這篇文章 How To Install Prometheus using Docker on Ubuntu 14.04 也是很好的入門材料。

5.2 收集 MySQL 指標(biāo)

mysqld_exporter 是 Prometheus 官方提供的一個(gè) exporter,我們首先 下載最新版本 并解壓(開箱即用):

$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.11.0/mysqld_exporter-0.11.0.linux-amd64.tar.gz  
$ tar xvfz mysqld_exporter-0.11.0.linux-amd64.tar.gz  
$ cd mysqld_exporter-0.11.0.linux-amd64/  

mysqld_exporter 需要連接到 mysqld 才能收集它的指標(biāo),可以通過兩種方式來設(shè)置 mysqld 數(shù)據(jù)源。第一種是通過環(huán)境變量 DATA_SOURCE_NAME,這被稱為 DSN(數(shù)據(jù)源名稱),它必須符合 DSN 的格式,一個(gè)典型的 DSN 格式像這樣:user:password@(host:port)/。

$ export DATA_SOURCE_NAME='root:123456@(192.168.0.107:3306)/'  
$ ./mysqld_exporter  

另一種方式是通過配置文件,默認(rèn)的配置文件是 ~/.my.cnf,或者通過 --config.my-cnf 參數(shù)指定:

$ ./mysqld_exporter --config.my-cnf=".my.cnf"  

配置文件的格式如下:

$ cat .my.cnf  
[client]  
host=localhost  
port=3306  
user=root  
password=123456  

如果要把 MySQL 的指標(biāo)導(dǎo)入 Grafana,可以參考 這些 Dashboard JSON。

注意事項(xiàng)

這里為簡(jiǎn)單起見,在 mysqld_exporter 中直接使用了 root 連接數(shù)據(jù)庫,在真實(shí)環(huán)境中,可以為 mysqld_exporter 創(chuàng)建一個(gè)單獨(dú)的用戶,并賦予它受限的權(quán)限(PROCESS、REPLICATION CLIENT、SELECT),最好還限制它的最大連接數(shù)(MAX_USER_CONNECTIONS)。

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS 3;  
GRANT PROCESS, REPLICATION CLIENTSELECT ON *.* TO 'exporter'@'localhost';  

5.3 收集 Nginx 指標(biāo)

官方提供了兩種收集 Nginx 指標(biāo)的方式。

第一種是 Nginx metric library,這是一段 Lua 腳本(prometheus.lua),Nginx 需要開啟 Lua 支持(libnginx-mod-http-lua 模塊)。為方便起見,也可以使用 OpenResty 的 OPM(OpenResty Package Manager) 或者 luarocks(The Lua package manager) 來安裝。

第二種是 Nginx VTS exporter,這種方式比第一種要強(qiáng)大的多,安裝要更簡(jiǎn)單,支持的指標(biāo)也更豐富,它依賴于 nginx-module-vts 模塊,vts 模塊可以提供大量的 Nginx 指標(biāo)數(shù)據(jù),可以通過 JSON、HTML 等形式查看這些指標(biāo)。Nginx VTS exporter 就是通過抓取 /status/format/json 接口來將 vts 的數(shù)據(jù)格式轉(zhuǎn)換為 Prometheus 的格式。

不過,在 nginx-module-vts 最新的版本中增加了一個(gè)新接口:/status/format/prometheus,這個(gè)接口可以直接返回 Prometheus 的格式,從這點(diǎn)這也能看出 Prometheus 的影響力,估計(jì) Nginx VTS exporter 很快就要退役了(TODO:待驗(yàn)證)。

除此之外,還有很多其他的方式來收集 Nginx 的指標(biāo),比如:nginx_exporter 通過抓取 Nginx 自帶的統(tǒng)計(jì)頁面 /nginx_status 可以獲取一些比較簡(jiǎn)單的指標(biāo)(需要開啟 ngx_http_stub_status_module 模塊);nginx_request_exporter 通過 syslog 協(xié)議 收集并分析 Nginx 的 access log 來統(tǒng)計(jì) HTTP 請(qǐng)求相關(guān)的一些指標(biāo);nginx-prometheus-shiny-exporter 和 nginx_request_exporter 類似,也是使用 syslog 協(xié)議來收集 access log,不過它是使用 Crystal 語言 寫的。還有 vovolie/lua-nginx-prometheus 基于 Openresty、Prometheus、Consul、Grafana 實(shí)現(xiàn)了針對(duì)域名和 Endpoint 級(jí)別的流量統(tǒng)計(jì)。

有需要或感興趣的同學(xué)可以對(duì)照說明文檔自己安裝體驗(yàn)下,這里就不一一嘗試了。

5.4 收集 JMX 指標(biāo)

最后讓我們來看下如何收集 Java 應(yīng)用的指標(biāo),Java 應(yīng)用的指標(biāo)一般是通過 JMX(Java Management Extensions) 來獲取的,顧名思義,JMX 是管理 Java 的一種擴(kuò)展,它可以方便的管理和監(jiān)控正在運(yùn)行的 Java 程序。

JMX Exporter 用于收集 JMX 指標(biāo),很多使用 Java 的系統(tǒng),都可以使用它來收集指標(biāo),比如:Kafaka、Cassandra 等。首先我們下載 JMX Exporter:

$ wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar  

JMX Exporter 是一個(gè) Java Agent 程序,在運(yùn)行 Java 程序時(shí)通過 -javaagent 參數(shù)來加載:

$ java -javaagent:jmx_prometheus_javaagent-0.3.1.jar=9404:config.yml -jar spring-boot-sample-1.0-SNAPSHOT.jar  

其中,9404 是 JMX Exporter 暴露指標(biāo)的端口,config.yml 是 JMX Exporter 的配置文件,它的內(nèi)容可以 參考 JMX Exporter 的配置說明 。然后檢查下指標(biāo)數(shù)據(jù)是否正確獲?。?/p>

$ curl http://localhost:9404/metrics  

六、告警和通知

至此,我們能收集大量的指標(biāo)數(shù)據(jù),也能通過強(qiáng)大而美觀的面板展示出來。不過作為一個(gè)監(jiān)控系統(tǒng),最重要的功能,還是應(yīng)該能及時(shí)發(fā)現(xiàn)系統(tǒng)問題,并及時(shí)通知給系統(tǒng)負(fù)責(zé)人,這就是 Alerting(告警)。

Prometheus 的告警功能被分成兩部分:一個(gè)是告警規(guī)則的配置和檢測(cè),并將告警發(fā)送給 Alertmanager,另一個(gè)是 Alertmanager,它負(fù)責(zé)管理這些告警,去除重復(fù)數(shù)據(jù),分組,并路由到對(duì)應(yīng)的接收方式,發(fā)出報(bào)警。常見的接收方式有:Email、PagerDuty、HipChat、Slack、OpsGenie、WebHook 等。

6.1 配置告警規(guī)則

我們?cè)谏厦娼榻B Prometheus 的配置文件時(shí)了解到,它的默認(rèn)配置文件 prometheus.yml 有四大塊:global、alerting、rule_files、scrape_config,其中 rule_files 塊就是告警規(guī)則的配置項(xiàng),alerting 塊用于配置 Alertmanager,這個(gè)我們下一節(jié)再看?,F(xiàn)在,先讓我們?cè)?rule_files 塊中添加一個(gè)告警規(guī)則文件:

rule_files:  
  - "alert.rules"  

然后參考 官方文檔,創(chuàng)建一個(gè)告警規(guī)則文件 alert.rules:

groups:  
- name: example  
  rules:  

  # Alert for any instance that is unreachable for >5 minutes.  
  - alert: InstanceDown  
    expr: up == 0  
    for5m  
    labels:  
      severity: page  
    annotations:  
      summary: "Instance {{ $labels.instance }} down"  
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."  

  # Alert for any instance that has a median request latency >1s.  
  - alert: APIHighRequestLatency  
    expr: api_http_request_latencies_second{quantile="0.5"} > 1  
    for10m  
    annotations:  
      summary: "High request latency on {{ $labels.instance }}"  
      description: "{{ $labels.instance }} has a median request latency above 1s (current value: {{ $value }}s)"  

這個(gè)規(guī)則文件里,包含了兩條告警規(guī)則:InstanceDown 和 APIHighRequestLatency。顧名思義,InstanceDown 表示當(dāng)實(shí)例宕機(jī)時(shí)(up === 0)觸發(fā)告警,APIHighRequestLatency 表示有一半的 API 請(qǐng)求延遲大于 1s 時(shí)(api_http_request_latencies_second{quantile="0.5"} > 1)觸發(fā)告警。

配置好后,需要重啟下 Prometheus server,然后訪問 http://localhost:9090/rules 可以看到剛剛配置的規(guī)則:

訪問 http://localhost:9090/alerts 可以看到根據(jù)配置的規(guī)則生成的告警:

這里我們將一個(gè)實(shí)例停掉,可以看到有一條 alert 的狀態(tài)是 PENDING,這表示已經(jīng)觸發(fā)了告警規(guī)則,但還沒有達(dá)到告警條件。這是因?yàn)檫@里配置的 for 參數(shù)是 5m,也就是 5 分鐘后才會(huì)觸發(fā)告警,我們等 5 分鐘,可以看到這條 alert 的狀態(tài)變成了 FIRING。

6.2 使用 Alertmanager 發(fā)送告警通知

雖然 Prometheus 的 /alerts 頁面可以看到所有的告警,但是還差最后一步:觸發(fā)告警時(shí)自動(dòng)發(fā)送通知。這是由 Alertmanager 來完成的,我們首先 下載并安裝 Alertmanager,和其他 Prometheus 的組件一樣,Alertmanager 也是開箱即用的:

$ wget https://github.com/prometheus/alertmanager/releases/download/v0.15.2/alertmanager-0.15.2.linux-amd64.tar.gz  
$ tar xvfz alertmanager-0.15.2.linux-amd64.tar.gz  
$ cd alertmanager-0.15.2.linux-amd64  
$ ./alertmanager  

Alertmanager 啟動(dòng)后默認(rèn)可以通過 http://localhost:9093/ 來訪問,但是現(xiàn)在還看不到告警,因?yàn)槲覀冞€沒有把 Alertmanager 配置到 Prometheus 中,我們回到 Prometheus 的配置文件 prometheus.yml,添加下面幾行:

alerting:  
  alertmanagers:  
  - schemehttp  
    static_configs:  
    - targets:  
      - "192.168.0.107:9093"  

這個(gè)配置告訴 Prometheus,當(dāng)發(fā)生告警時(shí),將告警信息發(fā)送到 Alertmanager,Alertmanager 的地址為 http://192.168.0.107:9093。也可以使用命名行的方式指定 Alertmanager:

$ ./prometheus -alertmanager.url=http://192.168.0.107:9093  

這個(gè)時(shí)候再訪問 Alertmanager,可以看到 Alertmanager 已經(jīng)接收到告警了:

下面的問題就是如何讓 Alertmanager 將告警信息發(fā)送給我們了,我們打開默認(rèn)的配置文件 alertmanager.ym:

global:  
  resolve_timeout: 5m  

route:  
  group_by: ['alertname']  
  group_wait: 10s  
  group_interval: 10s  
  repeat_interval: 1h  
  receiver: 'web.hook'  
receivers:  
- name: 'web.hook'  
  webhook_configs:  
  - url: 'http://127.0.0.1:5001/'  
inhibit_rules:  
  - source_match:  
      severity: 'critical'  
    target_match:  
      severity: 'warning'  
    equal: ['alertname''dev''instance']  

參考 官方的配置手冊(cè) 了解各個(gè)配置項(xiàng)的功能,其中 global 塊表示一些全局配置;route 塊表示通知路由,可以根據(jù)不同的標(biāo)簽將告警通知發(fā)送給不同的 receiver,這里沒有配置 routes 項(xiàng),表示所有的告警都發(fā)送給下面定義的 web.hook 這個(gè) receiver;如果要配置多個(gè)路由,可以參考 這個(gè)例子:

routes:  
- receiver: 'database-pager'  
  group_wait: 10s  
  match_re:  
    service: mysql|cassandra  

- receiver: 'frontend-pager'  
  group_by: [product, environment]  
  match:  
    team: frontend  

緊接著,receivers 塊表示告警通知的接收方式,每個(gè) receiver 包含一個(gè) name 和一個(gè) xxx_configs,不同的配置代表了不同的接收方式,Alertmanager 內(nèi)置了下面這些接收方式:

  • email_config

  • hipchat_config

  • pagerduty_config

  • pushover_config

  • slack_config

  • opsgenie_config

  • victorops_config

  • wechat_configs

  • webhook_config

雖然接收方式很豐富,但是在國內(nèi),其中大多數(shù)接收方式都很少使用。最常用到的,莫屬 email_config 和 webhook_config,另外 wechat_configs 可以支持使用微信來告警,也是相當(dāng)符合國情的了。

其實(shí)告警的通知方式是很難做到面面俱到的,因?yàn)橄④浖鞣N各樣,每個(gè)國家還可能不同,不可能完全覆蓋到,所以 Alertmanager 已經(jīng)決定不再添加新的 receiver 了,而是推薦使用 webhook 來集成自定義的接收方式??梢詤⒖?這些集成的例子,譬如 將釘釘接入 Prometheus AlertManager WebHook。

七、學(xué)習(xí)更多

到這里,我們已經(jīng)學(xué)習(xí)了 Prometheus 的大多數(shù)功能,結(jié)合 Prometheus + Grafana + Alertmanager 完全可以搭建一套非常完整的監(jiān)控系統(tǒng)。不過在真正使用時(shí),我們會(huì)發(fā)現(xiàn)更多的問題。

7.1 服務(wù)發(fā)現(xiàn)

由于 Prometheus 是通過 Pull 的方式主動(dòng)獲取監(jiān)控?cái)?shù)據(jù),所以需要手工指定監(jiān)控節(jié)點(diǎn)的列表,當(dāng)監(jiān)控的節(jié)點(diǎn)增多之后,每次增加節(jié)點(diǎn)都需要更改配置文件,非常麻煩,這個(gè)時(shí)候就需要通過服務(wù)發(fā)現(xiàn)(service discovery,SD)機(jī)制去解決。

Prometheus 支持多種服務(wù)發(fā)現(xiàn)機(jī)制,可以自動(dòng)獲取要收集的 targets,可以參考 這里,包含的服務(wù)發(fā)現(xiàn)機(jī)制包括:azure、consul、dns、ec2、openstack、file、gce、kubernetes、marathon、triton、zookeeper(nerve、serverset),配置方法可以參考手冊(cè)的 Configuration 頁面??梢哉f SD 機(jī)制是非常豐富的,但目前由于開發(fā)資源有限,已經(jīng)不再開發(fā)新的 SD 機(jī)制,只對(duì)基于文件的 SD 機(jī)制進(jìn)行維護(hù)。

關(guān)于服務(wù)發(fā)現(xiàn)網(wǎng)上有很多教程,譬如 Prometheus 官方博客中這篇文章 Advanced Service Discovery in Prometheus 0.14.0 對(duì)此有一個(gè)比較系統(tǒng)的介紹,全面的講解了 relabeling 配置,以及如何使用 DNS-SRV、Consul 和文件來做服務(wù)發(fā)現(xiàn)。

另外,官網(wǎng)還提供了 一個(gè)基于文件的服務(wù)發(fā)現(xiàn)的入門例子,Julius Volz 寫的 Prometheus workshop 入門教程中也 使用了 DNS-SRV 來當(dāng)服務(wù)發(fā)現(xiàn)。

7.2 告警配置管理

無論是 Prometheus 的配置還是 Alertmanager 的配置,都沒有提供 API 供我們動(dòng)態(tài)的修改。一個(gè)很常見的場(chǎng)景是,我們需要基于 Prometheus 做一套可自定義規(guī)則的告警系統(tǒng),用戶可根據(jù)自己的需要在頁面上創(chuàng)建修改或刪除告警規(guī)則,或者是修改告警通知方式和聯(lián)系人,正如在 Prometheus Google Groups 里的 這個(gè)用戶的問題:How to dynamically add alerts rules in rules.conf and prometheus yml file via API or something?

不過遺憾的是,Simon Pasquier 在下面說到,目前并沒有這樣的 API,而且以后也沒有這樣的計(jì)劃來開發(fā)這樣的 API,因?yàn)檫@樣的功能更應(yīng)該交給譬如 Puppet、Chef、Ansible、Salt 這樣的配置管理系統(tǒng)。

7.3 使用 Pushgateway

Pushgateway 主要用于收集一些短期的 jobs,由于這類 jobs 存在時(shí)間較短,可能在 Prometheus 來 Pull 之前就消失了。官方對(duì) 什么時(shí)候該使用 Pushgateway 有一個(gè)很好的說明。

總結(jié)

這篇博客參考了網(wǎng)絡(luò)上大量關(guān)于 Prometheus 的中文資料,有文檔,也有博客,比如 1046102779 的 Prometheus 非官方中文手冊(cè),宋佳洋 的電子書《Prometheus 實(shí)戰(zhàn)》,在這里對(duì)這些原作者表示敬意。在 Prometheus 官方文檔的 Media 頁面,也提供了很多學(xué)習(xí)資源。

關(guān)于 Prometheus,還有非常重要的一部分內(nèi)容這篇博客沒有涉及到,正如博客一開頭所講的,Prometheus 是繼 Kubernetes 之后第二個(gè)加入 CNCF 的項(xiàng)目,Prometheus 和 Docker、Kubernetes 的結(jié)合非常緊密,使用 Prometheus 作為 Docker 和 Kubernetes 的監(jiān)控系統(tǒng)也越來越主流。

關(guān)于 Docker 的監(jiān)控,可以參考官網(wǎng)的一篇指南:Monitoring Docker container metrics using cAdvisor,它介紹了如何使用 cAdvisor 來對(duì)容器進(jìn)行監(jiān)控;不過 Docker 現(xiàn)在也開始原生支持 Prometheus 的監(jiān)控了,參考 Docker 的官方文檔 Collect Docker metrics with Prometheus;關(guān)于 Kubernetes 的監(jiān)控,Kubernetes 中文社區(qū) 里有不少關(guān)于 Promehtheus 的資源,另外,《如何以優(yōu)雅的姿勢(shì)監(jiān)控 Kubernetes》這本電子書也對(duì) Kubernetes 的監(jiān)控有一個(gè)比較全面的介紹。

最近兩年 Prometheus 的發(fā)展非常迅速,社區(qū)也非?;钴S,國內(nèi)研究 Prometheus 的人也越來越多。隨著微服務(wù),DevOps,云計(jì)算,云原生等概念的普及,越來越多的企業(yè)開始使用 Docker 和 Kubernetes 來構(gòu)建自己的系統(tǒng)和應(yīng)用,像 Nagios 和 Cacti 這樣的老牌監(jiān)控系統(tǒng)會(huì)變得越來越不適用,相信 Prometheus 最終會(huì)發(fā)展成一個(gè)最適合云環(huán)境的監(jiān)控系統(tǒng)。

附錄:什么是時(shí)序數(shù)據(jù)庫?

上文提到 Prometheus 是一款基于時(shí)序數(shù)據(jù)庫的監(jiān)控系統(tǒng),時(shí)序數(shù)據(jù)庫常簡(jiǎn)寫為 TSDB(Time Series Database)。很多流行的監(jiān)控系統(tǒng)都在使用時(shí)序數(shù)據(jù)庫來保存數(shù)據(jù),這是因?yàn)闀r(shí)序數(shù)據(jù)庫的特點(diǎn)和監(jiān)控系統(tǒng)不謀而合。

  • 增:需要頻繁的進(jìn)行寫操作,而且是按時(shí)間排序順序?qū)懭?/span>

  • 刪:不需要隨機(jī)刪除,一般情況下會(huì)直接刪除一個(gè)時(shí)間區(qū)塊的所有數(shù)據(jù)

  • 改:不需要對(duì)寫入的數(shù)據(jù)進(jìn)行更新

  • 查:需要支持高并發(fā)的讀操作,讀操作是按時(shí)間順序升序或降序讀,數(shù)據(jù)量非常大,緩存不起作用

DB-Engines 上有一個(gè)關(guān)于時(shí)序數(shù)據(jù)庫的排名,下面是排名靠前的幾個(gè)(2018年10月):

  • InfluxDB:https://influxdata.com/

  • Kdb+:http://kx.com/

  • Graphite:http://graphiteapp.org/

  • RRDtool:http://oss.oetiker.ch/rrdtool/

  • OpenTSDB:http://opentsdb.net/

  • Prometheus:https://prometheus.io/

  • Druid:http://druid.io/

另外,liubin 在他的博客上寫了一個(gè)關(guān)于時(shí)序數(shù)據(jù)庫的系列文章:時(shí)序列數(shù)據(jù)庫武斗大會(huì),推薦。

參考

  • Prometheus 官方文檔【英文】

  • Prometheus 官方文檔【中文】

  • The History of Prometheus at SoundCloud

  • Prometheus: Monitoring at SoundCloud

  • Google And Friends Add Prometheus To Kubernetes Platform

  • 云原生架構(gòu)概述

  • 還不了解 CNCF?關(guān)于 CNCF 的三問三答!

  • 時(shí)序列數(shù)據(jù)庫武斗大會(huì)之什么是TSDB

  • 時(shí)序列數(shù)據(jù)庫武斗大會(huì)之TSDB名錄 Part 1

  • Prometheus 入門

  • Prometheus 初探

  • 監(jiān)控利器之 Prometheus

  • 使用Prometheus+Grafana監(jiān)控MySQL實(shí)踐

  • 使用Prometheus+grafana打造高逼格監(jiān)控平臺(tái)

  • 初試 Prometheus + Grafana 監(jiān)控系統(tǒng)搭建并監(jiān)控 Mysql

  • 使用Prometheus和Grafana監(jiān)控Mysql服務(wù)器性能

  • 使用Prometheus監(jiān)控服務(wù)器

  • Prometheus 入門與實(shí)踐

  • 基于Prometheus的分布式在線服務(wù)監(jiān)控實(shí)踐

  • grafana+ prometheus+php 監(jiān)控系統(tǒng)實(shí)踐

  • Grafana+prometheus+php 自動(dòng)創(chuàng)建監(jiān)控圖

  • Prometheus+Grafana監(jiān)控部署實(shí)踐

  • How To Install Prometheus using Docker on Ubuntu 14.04

(感謝閱讀,希望對(duì)你所有幫助)
來源:aneasystone.com/archives/2018/11/prometheus-in-action.html

推薦閱讀

深入淺出 Prometheus

Prometheus 如何做到“活學(xué)活用”,大??偨Y(jié)的避坑指南

Docker環(huán)境部署Prometheus+Grafana監(jiān)控系統(tǒng)

性能監(jiān)控工具之 Grafana + Prometheus + Exporters

GitHub 熱榜:適合初學(xué)者學(xué)習(xí)的 Prometheus 監(jiān)控系統(tǒng)

IT運(yùn)維面試問題總結(jié)-數(shù)據(jù)庫、監(jiān)控、網(wǎng)絡(luò)管理(NoSQL、MongoDB、MySQL、Prometheus、Zabbix)

Grafana 中文入門教程 | 構(gòu)建你的第一個(gè)儀表盤

杰哥另一個(gè)公眾號(hào),主要分享個(gè)人成長經(jīng)歷的那點(diǎn)事,歡迎您的關(guān)注。

瀏覽 42
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 亚洲天堂无码a| 狠狠色婷婷| 日韩欧美第一页| 亚洲天堂日本| 亚洲AV无码乱码精| 欧美一级黄色电影| 九九九九精品| 91一区| 一级成人片| 国产激情自拍| 日屄免费视频| 国色天香一区二区| jizz免费视频| 天天射日| 欧美日韩人妻| 北条麻妃在线中文字幕| 亚洲AV无码一区| 嫩BBB嗓BBBB榛BBBB| 国产无遮挡又黄又爽在线观看| 丁香伊人| 欧美一级免费A片| 日本乱伦网站| 亚洲无码视频专区| 大鸡吧视频在线观看| 欧洲一区二区| 中文字幕第4页| 黄色成人网站在线观看| 欧美一级片免费看| 亚洲少妇性爱视频| 亚洲91网站| 一级在线播放| 人妻操| av在线免费播放| 亚洲国产精品视频| 无码一区二区三区免费| 久久久18禁一区二区三区精品| 男人的天堂av网站| 国产日本在线视频| a日韩| 男人的天堂视频在线| 天天操天天操天天| 午夜性福利| 外国成人视频| 一本到免费视频| 色婷婷基地| 国产激情小视频| 欧美无人区码suv| 中文字幕在线成人| 成人精品在线视频| 婷婷少妇激情| 777777国产7777777| 午夜av影院| 午夜精品久久久久久久久久久久| 亚洲AV成人一区二区三区不卡| 7799精品视频天天看| 黄片无码在线观看| 人人色人人操人人干| 一区二区三区成人电影| 91青青草| 欧美成人三级在线播放| 青青AV| 伊人99| 日韩二级片| 影音先锋国产在线| 91精品人妻一区二区三区蜜桃欧美 | 97人妻无码| 国产理论电影在线观看| 国产毛片18水真多18精品| 久久99国产乱子伦...| 天天操夜夜爽| 国产无码AV成在线| 黄色高清无码| 成人激情片| av一级| 人妻人人操| 91精品久久久久久综合五月天 | 中文有码在线观看| 強姧伦一区二区三区在线播放| 伊人日韩| 俺来俺也去www色在线观看| 午夜黄色视频| 成人网中文字幕| 亚洲中文字幕视频在线观看| 五月天丁香成人| a一级黄片| 91久久国产| 91久久精品一区二区三区| 久草手机视频在线观看| 强奸乱伦制服丝袜| 最好看的2019中文在线大全电影| 狠狠操一区| 免费人成视频在线播放| 91亚洲国产成人精品一区| av在线无码| 在线观看不卡av| 一级黄色性爱视频| 七十路の高齢熟妇无码| 久热精品视频| 杨幂操逼视频| 男人的天堂手机在线| 欧美香蕉| 亚洲精品国产精品国自产观看| 国产精品尤物| 久久涩| 婷婷伊人綜合中文字幕小说| 婷婷三级| 成人无码视频在线观看| 懂色中文字幕| 日韩日逼网站| 麻豆午夜成人无码电影| 欧美日韩国产尤物主播精品| 亚洲AV无码成人精品区www| 久久综合久| 婷婷国产亚洲精品网站| 国产叼嘿视频| 国产成人免费看| 美女黄网站| 99国产高清| 午夜成人AV| 招土一级黄色片| 成人性爱视频网| 久操视频免费观看| 欧美性猛交XXXX乱大交| 成人无码区免费A片在线软件| 这里只有精品视频| 欧美亚洲国产视频| 日韩成人综合| 亚洲视频大全| 人人干人人干| 国产性生活视频| 蜜桃Av噜噜一区二区三| 黄网站在线观看| 五月婷婷视频在线观看| 久久久无码视频| 午夜成人福利在线观看| 超碰在线天天干| 国产熟妇码视频黑料| 亚洲国产欧美日韩在线| 精品乱子伦一区二区三区,亚洲国产成| 中文字幕第23页| 国产乱视频| 成人精品秘久久久按摩下载| av高清| 江苏妇搡BBBB搡BBBB-百度| 高清视频一区二区| 高清色视频| 亚洲免费黄色视频| 午夜黄色| 粉嫩99精品99久久久久久特污兔 | 亚洲第一成年人网站| 成人片在线| 久久久无码电影| 久久久久成人片免费观看蜜芽| 波多野结衣与黑人| 日韩高清无码一区| 久久大屌| 亚洲va欧美va天堂v国产综合| 亚洲国产黄色视频| 日逼片| 伊人77| 在线成年人视频| 久久国产免费| 国产精品码ls字幕影视| 精品乱伦| 欧美亚洲自拍偷拍| 午夜免费无码视频| 婷婷五月花| 性欧美欧美巨大69| 一区二区三区成人| 久久久久久久久久久成人| 加勒比综合无码| 在线你懂得| 波多野结衣Av在线| 老妇槡BBBB槡BBBB槡| 亚洲国产精品自| 91超碰在线免费观看| 久久五月天综合| 午夜无码福利| 亚洲丁香网| 日韩一区二区三区在线视频| 在线免费看av| 日韩欧美精品一区二区| 无码精品一区二区三区在线观看| 中文字幕第二页| 国内毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 一区在线观看视频| 国产精品无码免费视频| 午夜亚洲精品| 黄色视频在线观看| 波多野结衣网| 老熟女痒到不行-ThePorn| 激情六月丁香| 免费视频在线观看一区| 超碰人人干人人操| 91麻豆视频| 国产激情网| 日韩中文字幕网| 国产精品偷拍视频| 姐弟乱伦性爱| 欧美精品一级片| 免费无码在线观看| 亚洲欧美日韩综合| 久草毛片| 免费黄色视频网站大全| 国产精品嫩草久久久久yw193| 免费亚洲婷婷| 俺来也俺就去www色情网| 91久久国产综合久久91精品网站 | 成人激情久久| 蜜桃在线一区| 国产毛片久久久久久国产毛片| 一级A片在线观看| 色欲插插| 学生妹一级片| 毛片中文字幕| 免费看黄色视频的网站| 免费一级婬片AAA片毛片A级| 无码午夜| 91久久久久久久| 亚洲中文字幕高清| 欧美AAA在线观看| 人人澡人人摸| TokyoKot大交乱无码| 中文字幕视频一区日日骚| 免费看一区二区三区A片| 在线一级片| 日韩成人在线观看视频| 国产V视频| 亚洲AV无码永久精品| 免费的一级片| 日韩精品一区二区三区在线观看免费| 日本色情视频网站| 青青草视频免费看| 小H片在线观看| 日韩一区二区视频| 一区二区三区无码在线| 免费在线观看黄色| 青青AV| 久久一道| 亚洲AⅤ无码一区二区波多野按摩| 中文字幕无码乱伦| 奇米影视亚洲春色| 中文在线观看视频| 日韩中文字幕免费| 国内精品久久久久久久久久变脸| 国产人成视频免费观看| 精品一二三区| 日韩电影免费在线观看中文字幕| 热热av| 无码理论片| 午夜亚洲福利| 在线免费中文字幕| 999久久久精品| 日韩AA视频| 操逼视频在线| 成人精品免费视频| 在线免费A片| 欧美成人三级| 影音先锋成人资源网| 五月婷久久| 亚洲无码免费播放| 久操免费在线观看| 国产美女激情视频| 丁香五月天色婷婷| www.蜜桃| 日韩人妻精品中文字幕| 中文字幕人妻互换av久久| aaaaaa在线观看免费高清| 国产成人无码一区二区在线观看| 午夜爱爱免费视频| 大香蕉精品一区| 亚洲精品一区二区三区四区高清 | 少妇熟女一区| 麻豆av在线观看| 日产无码久久久久久| 欧美三级欧美成人高清| 北条麻妃人妻中文无码| 婷婷五月在线观看| 国产精品秘麻豆免费版现看视频| 白嫩外女BBWBBWBBW| 成人AV免费在线观看| 老熟女痒到不行-ThePorn| 久久免费视频精品| 特级西西444WWW视频| 国产精品婷婷久久久| 第一页在线观看| 日韩成人免费观看| 欧美久久久久久| 国产精品不卡在线| 天堂a√在线8| 日韩在线视频一区二区三区 | 亚洲精品一区二区三区新线路| 蜜桃成人无码区免费视频网站| 中文字幕+乱码+中文乱码视频在线观看| 成年人免费黄色视频| 婷婷丁香五月在线| 久久久久无码国产精品一区| 高清人妻无码| 蜜桃在线一区| 337P大胆粉嫩银噜噜噜| 成人精品二区| TheAV精尽人亡av| 日日摸日日添日日躁AV| 男人的天堂久久| 日韩av第一页| 天天精品视频| 蜜桃av秘无码一区三| 无码人妻熟妇| 国产夫妻AV| 中文字幕国产AV| 亚洲一区二区在线视频| av高清| 91人妻人人操人人爽| 国产激情欧洲在线观看一区二区三区| 国产又爽又黄视频| 亚洲AV无码国产精品二区| 肏逼在线观看| 黄页网站视频| 蜜桃视频app| 性九九九九九九| 成人小视频18| 国产精品免费人成人网站酒店| 人人操人人干人人妻| 国产精品天天AVJ精麻传媒| 色94色.欧美.setu| 91大神在线资源观看无广告| 男人的天堂婷婷| 荫蒂添到高潮免费视频| 日日夜夜超碰| 视频一区中文字幕| 国产美女在线播放| 中文字幕在线视频免费观看| 日韩操逼网站| 国产黄片免费观看| 最近中文字幕在线视频| 色婷婷7777| 99精品视频在线免费观看| 精品国产久久久久久| 国产一级婬片A片免费无成人黑豆 国产真实露脸乱子伦对白高清视频 | 91人人草| 青娱乐亚洲领先| 黑人无码| 国产污视频| 91久久午夜无码鲁丝片久久人妻| 国产成人精品麻豆| 色图欧美色图| 91青青草| 亚洲wwwwww| 亚洲三级黄片| xxxxx日韩| www.亚洲天堂| 99色亚洲| 日韩毛片在线看| 羞羞视频com.入口| 99久久爱re热6在播放| 亚洲成人AAAAA| 日本爱爱网站| 丁香激情视频| 久久久精品欧美| 国产精品久久久久野外| 精品久草| 青青青草视频在线观看| 三级丁香在线| 欧美自拍第一页| 婷婷激情久久| 国产精品无码久久久久成人app| 亚洲.无码.制服.日韩.中文字幕| 成人无码中文字幕| 国产精品视频久久久久| 麻豆一区在线观看| 色猫AV| 中文无码毛片| www.狠狠干| 在线观看av网站中文字幕| 蜜桃传媒在线| 亚洲高清无码免费观看| 超碰免费在线观看| 五月少妇| 国产成人AV一区二区三区在线观看 | 午夜大香蕉| 成人大香蕉视频| 日本爱爱视频免费| 人妻三级| 91精品国产一区二区| yw尤物| 国产成人精品a视频一区| 91污| 少妇在线观看| 国产美女在线播放| 制服.丝袜.亚洲.中文豆花| 欧美激情国产精品| 国产一区二区无码| 色色色色AV| 东京热国产| 俺也来俺也去WWW色| 亚洲视频网站在线观看| 亚洲黄色在线| 国产一区二区不卡亚洲涩情| 国产啊啊啊啊| 欧美国产日韩欧美亚洲国产| 亚洲日韩在线中文字幕| 午夜伊人| 成人免费A片在线观看直播96| 无码电影网| 黄色小说在线看| 日本一级片在线观看| 久操久操久操| 欧美黑吊大战白妞欧美大片| Www.黄色| 亚洲艹逼| 杨幂操逼视频| 国产青青| 久久久久久大香蕉| 中文字幕专区| 亚洲黄色视频在线观看网站| 俺来也俺就去www色情网| 败火老熟女ThePorn视频| 神马影院午夜福利| 中文字幕自拍偷拍| 日韩欧美视频在线| 逼特逼视频在线观看| 国产区在线观看| 亚洲熟妇在线观看一区二区| 国产精品久久久久久亚洲影视| 亚洲有码人妻| 北条麻妃AV在线播放| 亚洲成人AV在线| 午夜老司机福利一二三区| 无码视频网| 99精品999| 日本草逼视频| 成av人片一区二区三区久久| 日本无码视频在线观看| 奇米狠狠777| 日韩中文字幕高清| 操逼色| 麻豆久久久久| 亚洲成人大香蕉视频| 亚洲欧美网站| 午夜av在线播放| 成人片无码| 国产熟女一区二区三区五月婷| 成人AV中文字幕| 夜夜网站| 亚洲中文字幕影院| 伊人综合久久| 第九色| 四色五月婷婷| 热久久精品| 丝瓜视频污APP| 无码久| 精品一二三区| 激情爱爱网| 免费爱爱视频| 最新国产精品| 奶大丰满一乱一视频一区二区三区在 | 免费做爱网站| 午夜一本道| 操逼一级| 高清视频一区| 一级黄色A片| 爆乳一区二区三区| 青青草黄色片| 高清无码在线观看免费| 中文字幕精品三区无码| 人人操人| 欧美一级欧美三级在线观看| 日韩无码视频二区| 1000部毛片A片免费视频| 无码少妇| 这里只有精品久久| 免看一级a一片| 亚洲人BBwBBwBBWBBw| 日B视频在线观看| 日都一级A片| 欧美熟妇精品黑人巨大一二三区| 少妇高潮日韩| 亚洲福利| 亚洲国产爱| 国产黄色片在线免费观看| 怡红院成人网| 亚洲午夜精品成人毛片| 久久久亚洲AV| 婷婷99狠狠躁天天躁| 免费性片| 日韩中文无码一级A片| 日韩美女视频19| 国产一区二三区| 国产激情欧洲在线观看一区二区三区| 久久一级视频| 五月天婷婷网站| 色秘乱码一区二区三区| 成人毛片在线播放| 综合网操笔| 91AV视频| 自拍偷拍中文字幕| 真人无码| 日韩免费在线观看| 伊人网视频在线观看| 麻豆自拍偷拍| 亚洲成人在线免费| 伊人久久大综合中文无码| 国产黄片网站| 五月婷婷激情五月| 九九美女视频| 99视频免费在线观看| wwwa片| 97伊人大香蕉| 国产色秘乱码一区二区三区| 老熟女痒到不行-ThePorn| 黄色操屄视频| 88在线无码精品秘入口九色| 国产操P| 好吊视频一区二区三区四区| 久久久亚洲熟妇熟女| 色吧久久| 久久香视频| 亚洲视频日韩在线观看| 亚洲加勒比在线| 久草视频在线免费看| 久久久久久成人无码| 日韩无码中文字幕| 三级网站视频| 天堂中文在线a| 乱伦无码高清麻豆视频一区二区| 亚洲三级片在线视频| 国产香蕉av| 草久在线观看| 日本欧美久久久久免费播放网| 久久一级视频| 日韩黄色在线视频| 国产第七页| 18+免费网站| 中文字幕亚洲在线| 免费av大全| www.男人天堂| 欧美五月激情| 安徽妇搡BBBB搡BBBB按摩| 91三级片在线播放| 国产中文人人国际| av免费网站| 日韩人妻无码中文字幕| 新妺妺窝窝777777野外| 婷婷午夜精品久久久久久性色| 亚洲无码黄色片| 国产精品AV网站| 国产激情视频在线| 欧美黄色性爱视频| 91啪啪视频| 无码不卡在线| 7799综合| www.欧美视频| 免费涩涩无遮挡18国产| 免费无码一区二区三区四区五区| 成人aaa| 人人射人人| 一区二区三区四区免费观看| A片在线观看免费| 麻豆视频免费观看| 翔田千里中文字幕无码| 91丨九色丨蝌蚪丨对白| 特一级黄色电影| Av天堂图片在线| 无码人妻丰满熟妇bbbb| 国产精品96久久久| 国产精品高清无码| 大香蕉青娱乐| 亚洲熟妇在线观看一区二区| 中国老少配BBwBBwBBW| 久久黄色| 91久久国产| 亚洲无码成人网站| 婷婷久久久久| 亚洲香蕉在线观看| 性无码一区二区三区无码免费 | 一级看片免费视频| 成人av免费观看| 婷婷五月天丁香网| 大鸡巴久久久久久| 美日韩无码视频| 日韩性爱片| 天堂在线8| 午夜综合网| 在线观看老湿视频福利| 人人射网站| 久草国产在线视频| 国产精品永久久久久久久久久| 性爱AV天堂| 亚洲中文字幕观看| 一区二区三区四区在线播放| 激情无码国产| 免费三级网站| 亚洲三级在线播放| 亚洲日本欧美| 日本色综合| 久草视频免费在线观看| 色玉米地熟妇| 欧美精品久久久久久久久爆乳| 吴梦梦《女教师时间暂停》| 胖老板办公室沙发无套爆秘书 | 青春草在线观看国产| 亚洲香蕉在线视频| 夜夜嗨AV一区二区三区| 操逼视频免费在线观看| 在线无码免费观看| 国产在线成人| 国内自拍第一页| 黄色片网站在线观看| 午夜一区二区三区| 国产91综合一区在线观看| 国产成人三级在线播放| 玖玖色资源| 亚洲色图网站| 国产理论片在线观看| 色婷婷视频网站| 免费操逼网| 亚洲91精品| 免费无码高清视频| 久久国产精品视频| 国产乱国产乱老熟300视频 | 日本无码在线播放| 国产一区二区不卡| 激情av在线观看| 日批网站在线| 日韩不卡视频在线| 91久久香蕉囯产熟女线看蜜桃| 成人性爱在线观看| 亚洲中文字幕人妻。| 日韩黄色激情| 激情伊人五月天| 丰满熟妇人妻中文字幕| 亚洲欧美一区二区三区在线| 91探花足浴店少妇在线| 99偷拍| 日本操鸡小视频| 亚洲码AV波多野| 人人夜夜人人| 色婷婷一区二区三区久久午夜| 无码一区三区| 亚洲视频在线观看免费| 亚欧在线视频| 婷婷六月色| 午夜成人鲁丝片午夜精品| 熟女一区二区| 色色色无码| 人妻少妇精品视频一区二区三区| 91熟女偷情| 影音先锋av资源在线| 久久久久久久性爱| 欧美黄色小说| 欧美精品操逼| 国产成人精品无码片子的价格| 中文字幕在线电影| www.黄色片| 69成人无码| 日韩综合一区| 成人国产AV网站| 曰曰操| 97人人精品| 一区二区三区无码在线观看| 日韩本色一区| 久久久久久久久成人| 色哟哟在线观看| 99热99在线| 三级丁香在线| 性性性性性XXXXX| 欧美后门菊门交3p| 亚洲中文在线播放| 自拍视频在线| 18禁一区二区| 成人h在线观看| 国产成人A片| 91精品国产成人www| 一级a一级a免费观看免免黄‘/| 亚洲精品一二| 91小宝寻花一区二区三区三级 | 无码一区视频| 亚洲无码影片| 久操伊人大香蕉| 在线h网站| 久热草| 国产精品国产精品国产专区不片| 欧美精品久久久久久久久爆乳| www.黄色大片| 天天做天天爱夜夜爽| 俺操也| 日本不卡一区| 超碰91免费在线观看| 91香蕉视频免费在线观看| 亚洲欧美一区二区三区在线| 在线天堂v| 免费无码在线播放| 亚洲天堂一区| 一区二区高清无码视频| 亚洲秘av无码一区二区| 免费V片| 午夜黄电影| 99热这里只有精品999| 日本AⅤ在线观看| 胖老板办公室沙发无套爆秘书 | 色婷婷一区二区| 国产精品三级在线| 成人精品一区二区区别解析| 五月在线| 北条麻纪视频| 人人澡超碰碰| 豆花视频成人精品视频| 无码不卡视频在线| 成人无码日韩精品| 国产一级在线| 一级内射片在线网站观看| 国产免费看片| 久久亚洲视频| 大鸡巴久久久久久| 亚洲视频免费在线| 国产一区二区三区成人| 蜜臀av在线免费观看| 亚洲高清视频在线| 亚洲国产精品尤物yw在线观看| 91日日夜夜| 亚洲无码免费视频| 亚洲欧美视频一区| 欧美成人黄色电影| 欧美深夜福利视频| 免费的毛片| 亚洲欧美手机在线| 国产三级片精品| 翔田千里无码在线观看| 天天操电影| 99视频在线| 91干干| 日韩成人电影| 亚洲男人的天堂网| 水蜜桃视频网站| 久爱无码| 韩国无码一区二区三区| 久久久久久久久久久久久久久久久久免费精品分类视频 | 人妻av无码| 91成人在线视频| 国产口爆视频| 国产高清精品软件丝瓜软件| 国产一级特黄大片| 黑人操白人| 午夜精品18视频国产| 日本A片免费看| 亚洲无码一区二区三| 老熟女-ThePorn| 国产人妻中文字幕| 北条麻妃无码精品AV| 蜜乳AV一区二区三区| 女人操逼| 日韩欧美性爱视频| www.bbbb| 色色五月天网站| 91狠狠综合| 精品国产毛片| 免费射精一二三区| 久久理论| 国产精品色婷婷99久久精品| 久久久WWW成人免费精品| 老司机福利在线视频| 国产三级av在线| 国产女人高潮的AV毛片| 亚洲日本欧美| 一区二区三区四区| 亚洲视频免费| 日本一区二区三区在线播放| 囯产伦精一区二区三区四区| 亚洲免费一区二区| 色琪琪在线视频| 亚洲一级二级| 北条麻妃人妻中文字幕91影视 | 欧美AAA视频| 久久久国产一区二区三区| 五月丁香免费视频| 久久综合婷婷| 国产精品成人AV片| 一级黄色片网站| 人妻少妇av中文字幕乱码牛牛 | 不卡无码免费| 色综合一区二区三区| 2018天天日天天操| 日韩三级毛片| 无码成人精品| 网站av| 亚洲欧美国产精品专区久久| 人人澡视频| 色天使青青草| 成人在线欧美| 激情五月天开心网| 久久成人精品| 另类视频在线| 97色情| 91在线无码| 欧美三级无码| www.zaixianshipin| 在线中文字幕av| 91天天爽| 精品蜜桃秘一区二区三区观看| 免费在线观看黄色视频| sm在线观看| 国产精品九九视频| 国产黄色自拍视频| 欧美综合亚洲| 校园春色成人| 91久久婷婷| 国产精品免费观看久久久久久久久 | 亚洲高清国产欧美综合s8| 蜜臀精品| 亚洲高清视频免费| 久艹久| 色婷婷精品| 在线观看网址你懂的| www.豆花社区成人| 大吊无码| 久久久久久亚洲Av无码精品专口| 97超级碰| 亚洲三级黄片| 欧美精品久久久久久久久爆乳| 亲子乱AⅤ一区二区三区| 久久精品黄色| 日日骚亚洲| 日韩成人无码全裸视频| 久久少妇视频| 免费欧美性爱| 91精品国产综合久久久久久久| 麻豆天美传媒AV果冻传媒| 亚洲免费小视频| 国产乱伦免费视频| 色色色91| 久久久精品| 四虎一区二区| 大香蕉啪啪视频| 操逼123首页| 大香蕉第一页| 亚洲三级视频| 中文字幕在线日韩| 可以在线观看的av| 日本a在线免费观看| 亚洲成人性爱在线| 火淫玖玖免费精品| 久操精品| 加勒比在线| 欧美黄色成人网站| 国产精品美女毛片j酒店| 探花在线播放| 亚洲欧洲在线播放| 久久黄色| 免费无码视频在线观看| 免费无码AV| 色综合加勒比| 国产成人综合电影| 777偷窥盗摄00000| 久久午夜无码鲁丝片午夜精品偷窥| 中国老女人操逼| 五月丁香天堂网| 极品久久| 国产男人天堂| 欧美一区二区三区系列电影| r四虎18| 无码高清视频| 98色色| 午夜AV影院| 91欧美在线| 91啦丨露脸丨熟女色啦| 2019国产精品| 蜜臀久久99精品| 4388亚洲最大| 色婷婷AV在线观看| 先锋影音亚洲AV每日资源网站| 亚欧无码| 大香蕉操逼视频| 中文字幕亞洲高清手機版第617| 日韩另类视频| 日本A级毛片| 十八禁无码网站在线观看| 老太色HD色老太HD-百度| 国产乱子伦精品久久| 91亚洲影院| 国产乱子伦一区二区三区视频| 亚洲无码伊人| 3D精品啪啪一区二区免费| 四季AV一区二区凹凸懂色桃花| 亚洲欧美日韩在线| 国产区在线观看| 欧美一区二区三区视频| 亚洲色五月| 欧美日韩国产高清| 俄女兵一级婬片A片| 伊人久久爱| 欧美一级网站| 91欧美在线| 成人视频在线观看免费| 国产无码Av| 逼特逼视频在线观看| 日韩精品成人无码免费| 欧美在线视频一区| 91精品人妻少妇无码影院| 豆花天天吃最新视频| 狠狠操免费视频|