精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

【夜鶯監(jiān)控】從日志中提取指標(biāo)的瑞士軍刀

運(yùn)維
夜鶯的Categraf對(duì)日志指標(biāo)的收集也是采用的 Mtail,不過做了一些優(yōu)化,具體優(yōu)化了什么我們慢慢道來。

mtail是谷歌開源的一款從應(yīng)用日志提取 metrics 的工具,它會(huì)實(shí)時(shí)讀取應(yīng)用程序的日志,然后通過自己編寫的腳本分析日志,最終生成時(shí)間序列的指標(biāo),項(xiàng)目地址是:https://github.com/google/mtail。

夜鶯的Categraf對(duì)日志指標(biāo)的收集也是采用的 mtail,不過做了一些優(yōu)化,具體優(yōu)化了什么我們慢慢道來。

現(xiàn)在,我們先從谷歌的mtail開始聊起,再慢慢聊到夜鶯的 mtail 插件。

mtail 的安裝

前面已經(jīng)對(duì)mtail做了簡(jiǎn)短的介紹,其實(shí)那就是全部。

所以,我們直接從安裝開始。

從https://github.com/google/mtail/releases下載需要的版本,操作如下:

# 下載
$ wget https://github.com/google/mtail/releases/download/v3.0.0-rc51/mtail_3.0.0-rc51_Linux_x86_64.tar.gz
$ tar xf mtail_3.0.0-rc51_Linux_x86_64.tar.gz
$ cp mtail /usr/local/bin

# 查看mtail版本
$ mtail --version
mtail version 3.0.0-rc51 git revision 6fdbf8ec96a63c674c53148eeb9ec96043a2ec9c go version go1.19.4 go arch amd64 go os linux

# mtail后臺(tái)啟動(dòng)
$ nohup mtail -port 3903 -logtostderr -progs test.mtail -logs test.log &

# 默認(rèn)端口是3903
$ nohup ./mtail -progs test.mtail -logs test.log &

# 查看是否啟動(dòng)成功
$ ps -ef | grep mtail

# 查看mtail的幫助文檔
$ mtail -h

mtail 參數(shù)詳解

安裝完mtail之后,如果對(duì)mtail的參數(shù)一無所知的話,也就不知道如何下手了,本小節(jié)就帶大家來了解一下 mtail 有哪些參數(shù)。

我們可以通過mtail -h來查看mtail支持的參數(shù)列表,下面我對(duì)這些參數(shù)加一些中文注釋,應(yīng)該能夠幫助你了解它們的意思了。

$ mtail -h
mtail version 3.0.0-rc51 git revision 6fdbf8ec96a63c674c53148eeb9ec96043a2ec9c go version go1.19.4 go arch amd64 go os linux

Usage:
  -address string # 綁定HTTP監(jiān)聽器的主機(jī)或者IP地址
  -alsologtostderr # 記錄標(biāo)準(zhǔn)錯(cuò)誤和文件
  -block_profile_rate int # 報(bào)告goroutine阻塞事件之前的阻塞時(shí)間的納秒數(shù)。0表示關(guān)閉。
  -collectd_prefix string # 發(fā)送給collectd的指標(biāo)前綴
  -collectd_socketpath string # collectd socket路徑,用于向其寫入metrics
  -compile_only # 僅禪師編譯mtail腳本程序,不執(zhí)行
  -disable_fsnotify # 是否禁用文件動(dòng)態(tài)發(fā)現(xiàn)機(jī)制。為true時(shí),不會(huì)監(jiān)聽動(dòng)態(tài)加載發(fā)現(xiàn)的新文件,只會(huì)監(jiān)聽程序啟動(dòng)時(shí)的文件。
  -dump_ast # 解析后dump程序的AST(默認(rèn)到/tmp/mtail.INFO)
  -dump_ast_types # 在類型檢查之后dump帶有類型注釋的程序的AST(默認(rèn)到/tmp/mtail.INFO)
  -dump_bytecode # dump程序字節(jié)碼
  -emit_metric_timestamp # 發(fā)出metric的記錄時(shí)間戳。如果禁用(默認(rèn)設(shè)置),則不會(huì)向收集器發(fā)送顯式時(shí)間戳。
  -emit_prog_label # 在導(dǎo)出的變量里面展示prog對(duì)應(yīng)的標(biāo)簽。默認(rèn)為true
  -expired_metrics_gc_interval duration # metric的垃圾收集器運(yùn)行間隔(默認(rèn)為1h0m0s)
  -graphite_host_port string # graphite carbon服務(wù)器地址,格式Host:port。用于向graphite carbon服務(wù)器寫入metrics
  -graphite_prefix string # 發(fā)送給graphite指標(biāo)的metrics前綴
  -http_debugging_endpoint # 是否開啟調(diào)式接口(/debug/*),默認(rèn)開啟
  -http_info_endpoint # 是否開始info接口(/progz,/varz),默認(rèn)開啟
  -ignore_filename_regex_pattern string # 需要忽略的日志文件名字,支持正則表達(dá)式。使用場(chǎng)景:當(dāng)-logs參數(shù)指定的為一個(gè)目錄時(shí),可以使用ignore_filename_regex_pattern 參數(shù)來忽略一部分文件
  -jaeger_endpoint string # 如果設(shè)為true,可以將跟蹤導(dǎo)出到Jaeger跟蹤收集器。使用–jaeger_endpoint標(biāo)志指定Jaeger端點(diǎn)URL
  -log_backtrace_at value # 當(dāng)日志記錄命中設(shè)置的行N時(shí),發(fā)出堆棧跟蹤
  -log_dir string # mtail程序的日志文件的目錄,與logtostderr作用類似,如果同時(shí)配置了logtostderr參數(shù),則log_dir參數(shù)無效
  -logs value # 監(jiān)控的日志文件列表,可以使用,分隔多個(gè)文件,也可以多次使用-logs參數(shù),也可以指定一個(gè)文件目錄,支持通配符*,指定文件目錄時(shí)需要對(duì)目錄使用單引號(hào)。
  -logtostderr # 直接輸出標(biāo)準(zhǔn)錯(cuò)誤信息,編譯問題也直接輸出
  -max_recursion_depth int # 以解析的標(biāo)記來衡量mtail語(yǔ)句的最大長(zhǎng)度。過長(zhǎng)的mtail表達(dá)式可能會(huì)導(dǎo)致編譯和運(yùn)行時(shí)的性能問題。(默認(rèn)為100)
  -max_regexp_length int # 一個(gè)mtail regexp表達(dá)式的最大長(zhǎng)度。過長(zhǎng)的模式可能會(huì)導(dǎo)致編譯和運(yùn)行時(shí)的性能問題。(默認(rèn)為1024)
  -metric_push_interval duration # metric推送時(shí)間間隔,單位:秒,默認(rèn)60秒
  -metric_push_interval_seconds int # 棄用,用--metric_push_interval代替
  -metric_push_write_deadline duration # 在出現(xiàn)錯(cuò)誤退出之前等待推送成功的時(shí)間。(默認(rèn)10s)
  -mtailDebug int # 設(shè)置解析器debug級(jí)別
  -mutex_profile_fraction int # 報(bào)告的互斥爭(zhēng)奪事件的比例。 0將關(guān)閉
  -one_shot # 此參數(shù)將編譯并運(yùn)行mtail程序,然后從指定的文件開頭開始讀取日志(從頭開始讀取日志,不是實(shí)時(shí)tail),然后將收集的所有metrics打印到日志中。此參數(shù)用于驗(yàn)證mtail程序是否有預(yù)期輸出,不用于生產(chǎn)環(huán)境。
  -one_shot_format string # 與-one_shot一起使用的格式。這只是一個(gè)調(diào)試標(biāo)志,不適合生產(chǎn)使用。支持的格式: json, prometheus. (默認(rèn)為 "json")
  -override_timezone string # 設(shè)置時(shí)區(qū),如果使用此參數(shù),將在時(shí)間戳轉(zhuǎn)換中使用指定的時(shí)區(qū)來替代UTC
  -poll_interval duration # 設(shè)置輪詢所有日志文件以獲取數(shù)據(jù)的間隔;必須為正,如果為零將禁用輪詢。使用輪詢模式,將僅輪詢?cè)趍tail啟動(dòng)時(shí)找到的文件
  -poll_log_interval duration # 設(shè)置找到所有匹配的日志文件進(jìn)行輪詢的時(shí)間間隔;必須是正數(shù),或者是0來禁用輪詢。 在輪詢模式下,只有在mtail啟動(dòng)時(shí)發(fā)現(xiàn)的文件會(huì)被輪詢。(默認(rèn)250ms)
  -port string # 監(jiān)聽的http端口,默認(rèn)3903
  -progs string # mtail腳本程序所在路徑
  -stale_log_gc_interval duration # stale的垃圾收集器運(yùn)行間隔(默認(rèn)為1h0m0s)
  -statsd_hostport string # statsd地址,格式Host:port。用于向statsd寫入metrics
  -statsd_prefix string # 發(fā)送給statsd指標(biāo)的metrics前綴
  -stderrthreshold value # 嚴(yán)重性級(jí)別達(dá)到閾值以上的日志信息除了寫入日志文件以外,還要輸出到stderr。各嚴(yán)重性級(jí)別對(duì)應(yīng)的數(shù)值:INFO—0,WARNING—1,ERROR—2,F(xiàn)ATAL—3,默認(rèn)值為2.
  -syslog_use_current_year # 如果時(shí)間戳沒有年份,則用當(dāng)前年替代。(默認(rèn)為true)
  -trace_sample_period int # 用于設(shè)置跟蹤的采樣頻率和發(fā)送到收集器的頻率。將其設(shè)置為100,則100條收集一條追蹤。
  -unix_socket string # socket監(jiān)控地址
  -v value # v日志的日志級(jí)別,該設(shè)置可能被 vmodule標(biāo)志給覆蓋.默認(rèn)為0.
  -version # 打印mtail版本
  -vm_logs_runtime_errors # 啟用運(yùn)行時(shí)錯(cuò)誤的記錄到標(biāo)準(zhǔn)日志。 如果設(shè)置為false,則只將錯(cuò)誤打印到HTTP控制臺(tái)。(默認(rèn)為true)
  -vmodule value # 按文件或模塊來設(shè)置日志級(jí)別,如:-vmodule=mapreduce=2,file=1,gfs*=3

配置參數(shù)非常多,一般情況下我們使用的也就那幾個(gè),如下:

nohup ./mtail -progs test.mtail -logs test.log &

指定 mtail 腳本以及日志目錄即可。

mtail 腳本語(yǔ)法

在https://github.com/google/mtail/blob/main/docs/Programming-Guide.md處對(duì)腳本語(yǔ)法有相應(yīng)的介紹,這里做一個(gè)簡(jiǎn)單的介紹。

腳本標(biāo)準(zhǔn)的格式如下:

COND {
  ACTION
}

其中COND是一個(gè)條件表達(dá)式,可以是正則表達(dá)式,也可以是 boolean 類型的條件語(yǔ)句,如下:

/foo/ {
  ACTION1
}

variable > 0{
  ACTION2
}

/foo/ && variable > 0{
  ACTION3
}

COND表達(dá)式可用的運(yùn)算符如下:

  1. 關(guān)系運(yùn)算符:< , <= , > , >= , == , != , =~ , !~ , || , && , !
  2. 算術(shù)運(yùn)算符:| , & , ^ , + , - , * , /, << , >> , **

另外,ACTION是具體的操作,如下表示從日志中匹配到 foo 字段,就給相應(yīng)的指標(biāo) foo_total 的值就加 1:

counter foo_total

/foo/ {
   foo_total++
}

對(duì)于指標(biāo),可以用= , += , ++ , –等運(yùn)算符進(jìn)行操作。

mtail的目的是從日志中提取信息并將其傳遞到監(jiān)控系統(tǒng)。因此,必須導(dǎo)出指標(biāo)變量并命名,命名可以使用counter、histogram、gauge指標(biāo)類型,并且命名的變量必須在COND腳本之前。

  1. Counter(計(jì)數(shù)器):用于記錄單調(diào)遞增的值,例如請(qǐng)求數(shù)、錯(cuò)誤數(shù)等。
  2. Gauge(儀表):用于記錄可增可減的值,例如 CPU 使用率、內(nèi)存使用量等。
  3. Histogram(直方圖):用于記錄數(shù)據(jù)的分布情況,例如請(qǐng)求延遲、響應(yīng)大小等。

我們知道,拿 Prometheus 來說,除了上面的三種指標(biāo)類型之外還有一個(gè)Summary的指標(biāo)類型,為什么 mtail 沒有呢?

因?yàn)樵?Prometheus 中,summary 指標(biāo)類型用于記錄數(shù)據(jù)的分布情況,并計(jì)算出更多的統(tǒng)計(jì)信息,例如平均值、中位數(shù)、標(biāo)準(zhǔn)差等。但是,由于 mtail 是從日志文件中提取指標(biāo),而不是直接從應(yīng)用程序中提取指標(biāo),因此沒有必要使用 summary 指標(biāo)類型。

高階用法

變量定義

對(duì)于在一個(gè)腳本中需要重復(fù)使用的表達(dá)式,可以將其定義為一個(gè)變量,后續(xù)可以直接使用變量。

counter duplicate_lease
const IP /\d+(\.\d+){3}/
const MATCH_IP /(?P<ip>/ + IP + /)/

/uid lease / + MATCH_IP + / for client .* is duplicate on / {
   duplicate_lease++
}

這是開發(fā)中常用的手段。

解析時(shí)間戳

mtail 會(huì)為每一個(gè)日志事件都賦予一個(gè)時(shí)間戳,如果日志里沒有時(shí)間戳,mtail 會(huì)為本次日志事件賦予一個(gè)當(dāng)前的日志時(shí)間。

除此之外,如果日志里的時(shí)間戳不是標(biāo)準(zhǔn)時(shí)間或者其他情況,可以使用 strptime 對(duì)其進(jìn)行解析,如下:

/^/ +
/(?P<date>\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}) / +
/.*/ +
/$/ {
    strptime($date, "2006/01/02 15:04:05")
}

條件判斷

/pattern/ { action }是 mtail 程序中正常的條件控制流結(jié)構(gòu)。

如果模式匹配,那么該塊中的動(dòng)作就會(huì)被執(zhí)行。如果模式不匹配,則跳過該塊。

else關(guān)鍵字允許程序在模式不匹配的情況下執(zhí)行動(dòng)作。

/pattern/ {
  action
} else {
  alternative
}

除此之外,還可以使用 otherwise 來處理沒有匹配到的規(guī)則,如下:

{
/pattern1/ { _action1_ }
/pattern2/ { _action2_ }
otherwise { _action3_ }
}

這種語(yǔ)法類似于switch case default語(yǔ)法。

精準(zhǔn)匹配

上面的/pattern/ { _action_ }形式隱含地匹配了當(dāng)前的輸入日志行。

如果想與另一個(gè)字符串變量匹配,可以使用=~操作符,或者用!~來否定匹配,像這樣:

$1 =~ /GET/ {
    ...
  }

解析非數(shù)字類型的數(shù)字字段

有時(shí)候遇到的日志里輸出的數(shù)字是字符串,而非數(shù)字,mtail 可以對(duì)其進(jìn)行解析,如下:

counter total

/^[a-z]+ ((?P<response_size>\d+)|-)$/ {
  $1 != "-" {
    total = $response_size
  }
}

解析帶有額外字符的數(shù)字

一些日志包含除了包含數(shù)字,還包含分隔符,我們可以用 subst 函數(shù)刪除它們:

/sent (?P<sent>[\d,]+) bytes  received (?P<received>[\d,]+) bytes/ {
    # Sum total bytes across all sessions for this process
    bytes_total["sent"] += int(subst(",", "", $sent))
    bytes_total["received"] += int(subst(",", "", $received))
}

過濾操作

如果你想過濾一些不必要的日志被mtail采集,你可以使用stop,如下:

getfilename() !~ /apache.access.?log/ {
  stop
}

重寫操作

一些日志,如網(wǎng)絡(luò)服務(wù)器日志,描述了一些常見的元素,其中有獨(dú)特的標(biāo)識(shí)符,如果不加處理,會(huì)導(dǎo)致大量的度量衡鍵,而沒有有用的計(jì)數(shù)。要重寫這些捕獲組,可以使用 subst(),將模式作為第一個(gè)參數(shù):

hidden text route
counter http_requests_total by method, route

/(?P<method\S+) (?P<url>\S+)/ {
  route = subst(/\/d+/, "/:num", $url)
  http_requests_total[method][route]++
}

這里我們把$url中/后面的任何數(shù)字部分替換為字面字符串/:num,所以我們最終只計(jì)算 URL 路由的靜態(tài)部分。

mtail 實(shí)操

說一千,道一萬,不如真正來一遍。

當(dāng)然,我這里也不會(huì)把上面說的都來一次。

為了方便闡述,我把本次操作的腳本都放到~/Desktop/mtail目錄中。

單日志采集

# 創(chuàng)建prog1,里面用于保存日志處理的規(guī)則腳本
$ mkdir prog1

# 在prog1里創(chuàng)建prog1.mtail文件并寫入以下內(nèi)容
$ cat prog1.mtail
counter foo_count
/foo/{
  foo_count++
}

# 創(chuàng)建log1目錄
$ mkdir log1

# 在log1中創(chuàng)建a.log文件
¥ touch a.log

# 啟動(dòng)mtail
$ mtail -progs ~/Desktop/mtail/prog1 -logs ~/Desktop/mtail/log1/a.log

# 向a.log中寫入foo
$ echo "foo" > ~/Desktop/mtail/log1/a.log

# 查看指標(biāo)明細(xì)
$ curl 127.0.0.1:3903/metrics
# HELP foo_count defined at prog1.mtail:1:9-17
# TYPE foo_count counter
foo_count{prog="prog1.mtail"} 1 # 可以看到foo_count指標(biāo)數(shù)為1了

多日志采集

如果多日志在同一個(gè)文件夾里,這時(shí)候采集的指標(biāo)就可能混淆。

# 在log1目錄中創(chuàng)建b.log
$ touch b.log

# 然后為b.log重新創(chuàng)建一個(gè)指標(biāo)腳本
$ cat prog1/prog2.mtail
counter bar_count
/bar/{
  bar_count++
}

# 啟動(dòng)mtail
$ mtail -progs ~/Desktop/mtail/prog1 -logs ~/Desktop/mtail/log1/a.log -logs ~/Desktop/mtail/log1/b.log

# 向b.log寫入日志
$ echo "bar" >>  ~/Desktop/mtail/log1/b.log

# 查看指標(biāo)
$ curl 127.0.0.1:3903/metrics
# HELP bar_count defined at prog2.mtail:1:9-17
# TYPE bar_count counter
bar_count{prog="prog2.mtail"} 2
# HELP foo_count defined at prog1.mtail:1:9-17
# TYPE foo_count counter
foo_count{prog="prog1.mtail"} 0

可以看到能正常收集指標(biāo),但是如果我們向 a.log 也寫入 bar 日志,指標(biāo)會(huì)增加嗎?

# 向a.log寫入日志
$ echo "bar" >>  ~/Desktop/mtail/log1/a.log

# 查看指標(biāo)
$ curl 127.0.0.1:3903/metrics
# HELP bar_count defined at prog2.mtail:1:9-17
# TYPE bar_count counter
bar_count{prog="prog2.mtail"} 3
# HELP foo_count defined at prog1.mtail:1:9-17
# TYPE foo_count counter
foo_count{prog="prog1.mtail"} 0

可以看到指標(biāo)依然會(huì)增加。其實(shí)我們的期望是prog1.mtail只收集a.log的日志指標(biāo),prog2.mtail只收集b.log的指標(biāo),不要相互影響。

如果要解決這個(gè)問題,就需要啟動(dòng)不同的mtail才行。換句話說有多少日志文件,如果想分開收集,則要啟動(dòng)多少個(gè)mtail,可以想想這是一個(gè)非常恐怖的事情。

鑒于此,Categraf 對(duì) mtail 插件做了一些優(yōu)化,優(yōu)化后的 mtail 插件可以做到一個(gè) Categraf 進(jìn)程同時(shí)解析多個(gè)服務(wù)的日志,改造后的示例圖如下:

圖片

Categraf 操作

在前面的夜鶯監(jiān)控系列中,對(duì) Categraf 基本都有一個(gè)印象。默認(rèn)情況下它的配置都在 conf 目錄下,其中插件都在以 input 開頭的文件夾里。

我們進(jìn)入input.mtail文件夾,編輯mtail.toml并增加如下配置:

[[instances]]
progs = "/home/jokerbai/Desktop/categraf-v0.2.38-linux-amd64/conf/input.mtail/prog1"
logs = ["/home/jokerbai/Desktop/categraf-v0.2.38-linux-amd64/conf/input.mtail/log1/a.log"]
# override_timezone = "Asia/Shanghai"
# emit_metric_timestamp = "true" #string type

[[instances]]
progs = "/home/jokerbai/Desktop/categraf-v0.2.38-linux-amd64/conf/input.mtail/prog2"
logs = ["/home/jokerbai/Desktop/categraf-v0.2.38-linux-amd64/conf/input.mtail/log1/b.log"]
# override_timezone = "Asia/Shanghai"
# emit_metric_timestamp = "true" # string type

然后添加需要的目錄以及腳本:

# 創(chuàng)建文件夾
$ mkdir {prog1,prog2,log1}

# 增加規(guī)則文件
$ cat prog1/a.mtail
counter foo_count
/foo/ {
  foo_count++
}

$ cat prog2/b.mtail
counter bar_count
/bar/ {
  bar_count++
}

# 增加日志文件
$ touch {log1/a.log,log1/b.log}

啟動(dòng) categraf:

# 使用測(cè)試模式啟動(dòng)
$ ./categraf -test -inputs mtail

然后往a.log寫入foo日志。

echo "foo" >> log1/a.log

然后看到指標(biāo)增加了:

圖片

再往b.log寫入bar日志。

echo "bar" >> log1/b.log

bar_count的指標(biāo)也相應(yīng)增加了。

圖片

那如果我們向a.log增加bar的日志,bar_count會(huì)增加么?我們來測(cè)試一下:

echo "bar" >> log1/a.log

通過觀察bar_count指標(biāo)不會(huì)增加。

圖片

Categraf 就完美解決了不同日志指標(biāo)錯(cuò)亂的問題。

除了正常的處理指標(biāo),如果想給不同的instance指定label,也是可以的,如下:

[[instances]]
progs = "/home/jokerbai/Desktop/categraf-v0.2.38-linux-amd64/conf/input.mtail/prog1"
logs = ["/home/jokerbai/Desktop/categraf-v0.2.38-linux-amd64/conf/input.mtail/log1/a.log"]
labels = {"app"= "foo"}
# override_timezone = "Asia/Shanghai"
# emit_metric_timestamp = "true" #string type

[[instances]]
progs = "/home/jokerbai/Desktop/categraf-v0.2.38-linux-amd64/conf/input.mtail/prog2"
logs = ["/home/jokerbai/Desktop/categraf-v0.2.38-linux-amd64/conf/input.mtail/log1/b.log"]
labels = {"app"= "bar"}
# override_timezone = "Asia/Shanghai"
# emit_metric_timestamp = "true" # string type

重啟 Categraf 就可以看到指標(biāo)多了一個(gè) label。

圖片

其他的腳本語(yǔ)法和原生的 mtail 一致,這里不再追溯了。

總結(jié)

相比于谷歌的mtail,categraf對(duì)mtail做了一些優(yōu)化,可以更好的處理多日志的問題。而且 categraf 本身集成了很多插件,都可以統(tǒng)一使用它實(shí)現(xiàn)。

另外,還是相同的問題,假設(shè)插件開啟比較多,categraf 的具體性能如何以及會(huì)不會(huì)影響主機(jī)的整體性能,這還有待研究。

責(zé)任編輯:姜華 來源: 運(yùn)維開發(fā)故事
相關(guān)推薦

2014-09-26 14:30:41

2010-12-01 12:31:23

NetCat掃描端口

2017-05-03 14:45:45

MySQL數(shù)據(jù)恢復(fù)

2013-06-08 10:36:47

Linux命令行

2020-07-02 09:21:40

Java 緩存開發(fā)

2013-04-11 10:51:27

2011-10-18 14:11:17

Web開發(fā)

2009-07-21 14:16:18

Scalafor表達(dá)式

2014-05-29 14:44:06

瑞士軍刀綜合征開發(fā)者

2022-02-15 10:15:13

Web網(wǎng)絡(luò)程序員

2021-09-05 18:30:59

Alpine容器Busybox

2019-06-24 09:57:39

網(wǎng)絡(luò)工具調(diào)試

2011-08-01 09:43:08

PhoneGap 1.PhoneGap

2023-12-25 12:03:42

2017-04-21 09:42:18

4G5G物聯(lián)網(wǎng)

2015-09-28 09:46:31

ZooKeeper分布式系統(tǒng)瑞士軍刀

2019-06-27 17:00:09

nc命令 Linux

2023-05-11 07:08:07

Kubernetes監(jiān)控

2009-09-09 12:10:40

2025-02-17 15:06:07

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩中文理论片| 欧美色视频日本高清在线观看| 国产区精品视频| 在线免费观看亚洲视频| 国产一区二区三区不卡av| 欧美午夜女人视频在线| 亚洲国产另类久久久精品极度| 国产精品视频一二区| 狠狠入ady亚洲精品| 亚洲免费视频网站| 手机免费看av网站| 国产直播在线| 国产精品久久久久永久免费观看| 91免费在线视频| 日本免费在线观看视频| 亚洲高清影视| 亚洲人午夜精品免费| 初高中福利视频网站| 欧美羞羞视频| 亚洲一区二区三区四区五区黄 | 国产成人无码精品久久久久| 国产一区二区三区电影在线观看 | 人妻无码视频一区二区三区| 国产在线观看a| 91视频国产资源| 92裸体在线视频网站| 中文字幕在线欧美| 影音先锋一区| 久久九九精品99国产精品| 无套内谢大学处破女www小说| 日韩黄色在线| 一本大道久久a久久精品综合| 玖玖精品在线视频| av播放在线| 久久久久久免费毛片精品| 国产精品区一区二区三含羞草| 91精品国产乱码久久| 久久婷婷激情| 26uuu久久噜噜噜噜| 欧美日韩黄色网| 日韩一级毛片| 尤物九九久久国产精品的分类| 国产国语性生话播放| 日本在线一区二区三区| 欧美精品自拍偷拍| 黄色三级视频在线| 成人精品三级| 91久久人澡人人添人人爽欧美| 大陆极品少妇内射aaaaa| 久久av色综合| 亚洲一区二区三区在线| 91.com在线| 欧美性爽视频| 亚洲综合一区二区| 久久av高潮av| 超清av在线| 亚洲国产aⅴ天堂久久| 台湾无码一区二区| 国产丝袜在线播放| 天天操天天色综合| 免费无遮挡无码永久视频| jizzjizz中国精品麻豆| 亚洲福利视频导航| 欧美在线一区视频| 超碰在线公开| 一本色道久久综合亚洲91| 日本一本二本在线观看| 唐人社导航福利精品| 色哟哟亚洲精品| www.欧美日本| 美女久久久久久| 91.com在线观看| 性色av浪潮av| 91精品短视频| 国产婷婷色综合av蜜臀av | 国产精品久久久久7777按摩| 亚洲精品高清视频| 黄色国产网站在线播放| 亚洲精品视频自拍| 色欲色香天天天综合网www| ****av在线网毛片| 色婷婷综合久久久久中文一区二区| 欧美aⅴ在线观看| 成人福利片在线| 日韩三区在线观看| 一级特黄a大片免费| 国产麻豆精品久久| 日韩在线观看精品| 黄色小视频在线免费看| 欧美在线综合| 国产精品99一区| 中文字幕自拍偷拍| 国产+成+人+亚洲欧洲自线| 久久久久久国产精品免费免费| 亚洲AV成人无码一二三区在线| 国产亚洲综合在线| 蜜桃视频一区二区在线观看| 午夜欧美激情| 欧美日韩大陆一区二区| 日本一区二区在线观看视频| 欧美日韩一二三四| 久久久久久免费精品| 日韩一级片中文字幕| 国产激情视频一区二区在线观看| 九九九九精品| 巨大荫蒂视频欧美大片| 精品久久久香蕉免费精品视频| 天天干天天综合| 免费成人蒂法| 久久综合伊人77777| 成人免费区一区二区三区| 捆绑调教一区二区三区| 久久久影院一区二区三区| 国产剧情在线| 91福利资源站| 欧洲熟妇的性久久久久久| 欧美在线色图| 91sao在线观看国产| 国产免费av观看| 国产校园另类小说区| 日本人体一区二区| 国产精品成人**免费视频| 亚洲图片在区色| 91蜜桃视频在线观看| 国产一区二区三区美女| 涩涩涩999| 忘忧草在线日韩www影院| 日韩视频在线永久播放| 91视频免费看片| 日韩中文字幕1| 国产综合av一区二区三区| 性欧美videos高清hd4k| 欧美精选在线播放| 一级片黄色录像| 老司机免费视频久久| 精品久久久久久亚洲| 免费在线看电影| 欧美一区二区三区视频免费播放| 国产精品理论在线| 日本va欧美va欧美va精品| 欧美日韩电影一区二区三区| 国产v日韩v欧美v| 欧美va亚洲va在线观看蝴蝶网| 日韩在线不卡av| 精品一区二区三区在线播放视频| 日产国产精品精品a∨| 中文日产幕无线码一区二区| 日韩av网址在线观看| 国产精品.www| 成人黄色大片在线观看| 国产美女主播在线| 国产精品jk白丝蜜臀av小说| 久久久久国产精品一区| 日韩中文字幕免费在线观看| 一区二区三区蜜桃| 在线观看免费视频国产| 亚洲国产精品第一区二区三区| 不卡一卡2卡3卡4卡精品在| 婷婷色在线资源| 精品国产免费久久 | 日韩欧美视频一区二区三区| 无码人妻aⅴ一区二区三区| 国产精品美女| 欧美性天天影院| 99riav视频一区二区| 日韩小视频在线| 国产成人久久精品77777综合 | 久久久午夜影院| 91小视频免费观看| 99草草国产熟女视频在线| 成人黄色小视频| 成人黄色av网站| 四季久久免费一区二区三区四区| 欧美videofree性高清杂交| 欧美福利视频一区二区| 久久精品水蜜桃av综合天堂| 香蕉视频网站入口| 欧美一区视频| 激情欧美一区二区三区中文字幕| 桃花岛成人影院| 久青草国产97香蕉在线视频| 农村少妇久久久久久久| 色噜噜狠狠成人中文综合| 亚洲女人久久久| 成人精品小蝌蚪| 久久精品99国产| 98精品久久久久久久| 成人免费看片网址| 欧美性猛交xxx高清大费中文| 俺也去精品视频在线观看| 人妻无码一区二区三区久久99| 91国内精品野花午夜精品| 黄色片网站在线播放| 成人免费av网站| 一级在线免费视频| 激情欧美一区二区三区| 日韩精品久久一区| 深夜福利一区| 国产成人精品一区| 性欧美video高清bbw| 亚洲天堂第二页| 亚洲第一视频在线| 在线观看三级视频欧美| 青青草手机在线视频| 久久精品一区二区三区不卡| 久久无码人妻一区二区三区| 亚洲一区视频| 国产a级黄色大片| 日韩精品免费一区二区在线观看 | 国产一区二区三区不卡av| 国产精品久久久久7777婷婷| 国产桃色电影在线播放| 久久精品国产欧美亚洲人人爽| 性插视频在线观看| 日韩一级免费观看| 亚洲香蕉在线视频| 色网综合在线观看| 日韩免费av片| 亚洲欧美日韩中文字幕一区二区三区 | 久久综合图片| 国产精品12345| 中文字幕人成人乱码| 亚州欧美一区三区三区在线| 日本欧美三级| 动漫3d精品一区二区三区| 国产精品麻豆| 国产欧美日韩专区发布| 制服诱惑亚洲| 欧美孕妇毛茸茸xxxx| 成人女同在线观看| 精品中文字幕在线2019| 黄页视频在线播放| 色婷婷**av毛片一区| 黄色毛片在线看| 亚洲美女久久久| 亚洲欧美日本在线观看| 亚洲国产99精品国自产| 精品人妻少妇嫩草av无码专区| 欧美日韩情趣电影| 中国女人一级一次看片| 日本韩国一区二区三区视频| 免费在线不卡视频| 精品欧美激情精品一区| 日韩精品乱码久久久久久| 亚洲午夜在线视频| 免费在线一区二区三区| 亚洲免费在线视频| 中文字幕五月天| 亚洲免费视频中文字幕| 男人天堂资源网| 国产精品美女一区二区三区| 山东少妇露脸刺激对白在线| 欧美国产欧美亚州国产日韩mv天天看完整| 免费观看av网站| 久久免费美女视频| 免费看污片网站| 国产欧美精品区一区二区三区 | 精品自拍偷拍| 精品久久精品久久| 久久爱www成人| 色一情一乱一伦一区二区三欧美| 日韩精品久久| 丰满人妻一区二区三区53号| 国产精品黄色| 欧美日韩精品在线一区二区| 亚洲一区不卡| 婷婷丁香激情网| 狠狠狠色丁香婷婷综合激情| 午夜av中文字幕| 成人午夜视频福利| 成人免费av片| 国产精品久久久久毛片软件| 国产成人av免费在线观看| 亚洲一区在线观看免费观看电影高清| 国产中文字幕免费| 色哟哟国产精品| 一卡二卡三卡在线观看| 精品国产91亚洲一区二区三区婷婷| 日批视频在线播放| 中文字幕在线视频日韩| 亚洲精品白浆| 日本韩国在线不卡| 亚洲午夜剧场| 国产精品视频免费一区| 国产乱码精品一区二区三区四区 | 影音先锋人妻啪啪av资源网站| 91婷婷韩国欧美一区二区| 久久午夜精品视频| 亚洲综合在线第一页| 国产suv精品一区二区33| 欧美高清视频在线高清观看mv色露露十八 | 91午夜理伦私人影院| 国内精品偷拍| 午夜精品美女久久久久av福利| 欧美日韩视频一区二区三区| 日本成年人网址| 国产在线一区观看| 毛茸茸多毛bbb毛多视频| 一区精品在线播放| 亚洲日本韩国在线| 91麻豆精品国产| 欧美新色视频| 欧美成人小视频| 99re久久| 裸模一区二区三区免费| 91精品秘密在线观看| 久久久久人妻精品一区三寸| 国产在线播放一区二区三区| 色婷婷在线影院| 亚洲一区二区三区四区不卡 | 欧美一区二区免费观在线| 久久精品国产亚洲a∨麻豆| 欧美精品一区二区三区国产精品| 超碰超碰人人人人精品| 成人免费看片网址| 亚洲精品va| 久久精品影视大全| 久久午夜色播影院免费高清 | 日韩欧美主播在线| 伊人网av在线| 亚洲全黄一级网站| 精精国产xxxx视频在线播放| 亚洲一区二区免费| 色婷婷一区二区三区| 国内外免费激情视频| 成人aa视频在线观看| 2025国产精品自拍| 欧美欧美欧美欧美| caoporn国产精品免费视频| 91干在线观看| 美女午夜精品| 精品无码一区二区三区爱欲| 国产一区二区伦理片| 日本美女黄色一级片| 欧美性一二三区| 国产小视频在线| 日韩美女在线观看| 宅男在线一区| koreanbj精品视频一区| 不卡在线视频中文字幕| www.天天色| 亚洲爱爱爱爱爱| 爱草tv视频在线观看992| 国产福利久久精品| 欧美啪啪一区| av在线天堂网| 性做久久久久久久久| 日本韩国免费观看| 午夜精品三级视频福利| 国产伦精品一区二区三区在线播放 | 亚洲黄色片在线观看| jlzzjlzzjlzz亚洲人| 久久97精品久久久久久久不卡| 久久伊人精品| 国产免费一区二区视频| 丁香六月久久综合狠狠色| 麻豆亚洲av成人无码久久精品| 日韩欧美国产综合一区 | 国产亚洲精品美女久久久久久久久久| www.com毛片| 久久精品一区八戒影视| 福利网址在线观看| 夜夜嗨av一区二区三区四区| 日韩成人亚洲| 天天操天天干天天玩| 国产69精品久久久久毛片| 日本黄色片视频| 亚洲图片在线综合| 国产日韩欧美中文在线| 400部精品国偷自产在线观看 | 91传媒视频免费| 亚洲国产精品第一区二区三区| 久久国产精品无码一级毛片| 欧美日韩中文字幕| 8888四色奇米在线观看| 91嫩草在线| 国产精品女主播一区二区三区| 色一情一交一乱一区二区三区 | 99久久久无码国产精品免费| 欧美大荫蒂xxx| 亚洲人挤奶视频| 中文字幕66页| 亚洲成人自拍偷拍| www 日韩| 国产精品麻豆免费版| 三级不卡在线观看| 妺妺窝人体色www聚色窝仙踪| 日韩精品免费在线视频观看| 亚洲精品一区三区三区在线观看| 大桥未久一区二区三区| 99国产精品99久久久久久| 亚洲视频在线观看一区二区| 欧美激情欧美激情| 国内黄色精品| 白丝校花扒腿让我c| 欧洲亚洲国产日韩| 欧美日韩在线视频免费观看| 日本在线视频不卡| 成人精品高清在线| 在线观看免费中文字幕|