精品欧美一区二区三区在线观看 _久久久久国色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| 99国产精品久久久久久久成人热 | 欧美激情视频一区二区| 99久久人妻无码中文字幕系列| 成人黄色在线| 亚洲大片精品永久免费| 欧美日本韩国在线| 国产美女免费视频| 久久成人国产| 欧美激情xxxx性bbbb| 全黄一级裸体片| 亚洲精品a区| 欧美自拍偷拍一区| www.日本少妇| 18+激情视频在线| 久久久久国产一区二区三区四区| 92国产精品久久久久首页| 伊人中文字幕在线观看| 国产精品theporn| 日韩在线观看你懂的| 青青草福利视频| aiss精品大尺度系列| 欧美群妇大交群中文字幕| av免费在线播放网站| 麻豆福利在线观看| 亚洲欧美在线高清| 日韩欧美手机在线| 免费福利在线视频| a亚洲天堂av| 99re6热在线精品视频播放速度| 自拍偷拍第八页| 欧美亚洲一区二区三区| 久久久久免费视频| 亚洲成人生活片| 91综合网人人| 综合国产在线观看| 中字幕一区二区三区乱码| 日韩精品福利一区二区三区| 精品福利视频一区二区三区| 在线成人免费av| 久久久久久久久成人| 正在播放亚洲一区| 亚洲av无日韩毛片久久| 成人在线免费av| 欧美日韩中文字幕精品| 在线观看av日韩| 成人免费福利| 欧美无人高清视频在线观看| 欧美少妇性生活视频| 国模冰冰炮一区二区| 日韩欧亚中文在线| 国产麻花豆剧传媒精品mv在线| 色多多在线观看| 色网综合在线观看| 男女啪啪网站视频| 高清亚洲高清| 911国产精品| 精品人妻一区二区三区免费| 欧美日韩国产一区二区在线观看| 日韩一区二区三| 国产a√精品区二区三区四区| 超碰成人97| 亚洲高清一区二| 亚洲国产无码精品| 国产精品羞羞答答在线观看 | www在线观看免费视频| 久操国产精品| 色久欧美在线视频观看| 成人高潮免费视频| 国产精品va| 欧美在线视频在线播放完整版免费观看| 国产www在线| 麻豆久久久久久久| 亚洲影视九九影院在线观看| 韩国av永久免费| 久久一留热品黄| 亚洲视频在线观看日本a| a免费在线观看| 精品动漫一区二区三区| 在线视频日韩一区 | 日韩免费观看高清完整版| 免费看黄色片的网站| 一区二区三区日本久久久| 有码中文亚洲精品| 亚洲 欧美 变态 另类 综合| 伊人影院久久| 国产精品久久久久久久av大片| 国产乱色精品成人免费视频| 北条麻妃一区二区三区| 欧美一区二区三区四区五区六区| 日韩在线观看www| 亚洲一区二区三区中文字幕 | 五月天综合在线| 久久久国产亚洲精品| 成人免费淫片aa视频免费| 欧美一级淫片aaaaaa| 中文字幕va一区二区三区| av中文字幕av| 欧美日韩五码| 亚洲精品一区二区三区福利 | 亚洲电影一级黄| 15—17女人毛片| 久久悠悠精品综合网| 色妞色视频一区二区三区四区| 国产亚洲自拍av| 美国一区二区三区在线播放 | 黄色av网站在线看| 亚洲最新在线观看| 国产又黄又猛又粗又爽的视频| 51精品国产| 色噜噜狠狠狠综合曰曰曰| 国产亚洲美女久久| 欧美大片免费播放器| 婷婷亚洲五月色综合| 538国产精品一区二区在线| 国产手机视频在线| 国产嫩草影院久久久久| www.av蜜桃| 国产亚洲久久| 综合欧美国产视频二区| 国产伦精品一区二区三区视频网站| 国产精品乡下勾搭老头1| 亚洲一区三区| 户外露出一区二区三区| 亚洲男女自偷自拍图片另类| 久久久久久天堂| 国产一区福利在线| 少妇精品久久久久久久久久| av电影一区| 亚洲激情 国产| 欧美日韩中文视频| 国产成人精品一区二区三区四区 | 免费看毛片的网站| 欧美va天堂在线| 91精品综合视频| 中文日本在线观看| 欧美探花视频资源| 国产jjizz一区二区三区视频| aa级大片欧美三级| 国产精品有限公司| 国产探花在线观看| 精品乱人伦小说| 久久久精品国产sm调教| 国产精品1区二区.| 91传媒免费视频| 精品一区二区三区视频在线播放 | 爱搞国产精品| 亚洲国语精品自产拍在线观看| 欧美黄色一区二区三区| 国产一区二区不卡在线| 性生活免费观看视频| 日韩欧美久久| 性欧美办公室18xxxxhd| 手机福利在线| 欧美日韩性视频在线| www.久久国产| 日本午夜精品视频在线观看 | 手机av免费在线| 精品欧美乱码久久久久久| 免费网站观看www在线观| 国产成人免费视频一区| 黄页免费在线观看视频| 欧美性生活一级片| 国产成人精品最新| 午夜视频在线看| 欧美一级高清大全免费观看| 九九九国产视频| 久久亚洲一区二区三区四区| 亚洲欧美另类动漫| 香蕉国产精品| 国产欧美韩日| 欧美性片在线观看| 久久夜色精品国产亚洲aⅴ| 亚洲精品网站在线| 色综合久久综合网| 中文字幕第20页| 国产又黄又大久久| 91好吊色国产欧美日韩在线| 国产欧美日韩免费观看| 91视频免费在线| 色戒汤唯在线| 精品国产一区二区三区久久| 亚洲精品中文字幕成人片| 欧美性高潮床叫视频| 激情高潮到大叫狂喷水| www.欧美.com| 污污网站免费看| 影音先锋亚洲电影| 亚洲激情啪啪| 久久九九热re6这里有精品 | 51vv免费精品视频一区二区 | 午夜久久av| 国产成人精品最新| 精灵使的剑舞无删减版在线观看| 亚洲精选中文字幕| 国产高清免费在线观看| 一本到不卡精品视频在线观看| 希岛爱理中文字幕| 久久久五月婷婷| 国产免费无码一区二区| 日韩电影在线一区二区| 国产夫妻自拍一区| 日韩av大片| 久久精品一区二区三区不卡免费视频| 日韩城人网站| 日本高清+成人网在线观看| 国产激情视频在线| 国产一区二区三区精品久久久 | 亚洲欧美激情四射在线日| 国产熟女精品视频| 欧美羞羞免费网站| 久草国产精品视频| 一区二区三区中文字幕电影 | 亚洲一区二区免费视频| 黄色片网站在线播放| 久久亚洲二区三区| 欧产日产国产精品98| 国产综合色精品一区二区三区| 中文字幕无码不卡免费视频| 中文欧美日韩| 免费拍拍拍网站| 欧美三区不卡| 一级全黄肉体裸体全过程| 欧美日韩精品一区二区视频| 久久久久一区二区三区| 成人影院中文字幕| 波多野结衣久草一区| av在线国产精品| 国产日韩欧美一二三区| 成人亚洲网站| 国产精品爽爽爽| 亚洲精品一区三区三区在线观看| 欧美一区二区视频97| 国产传媒在线观看| 97视频网站入口| 99riav视频在线观看| 久久频这里精品99香蕉| 成人超碰在线| 欧美精品国产精品日韩精品| 91福利国产在线观看菠萝蜜| 久久久国产精彩视频美女艺术照福利| 3p在线观看| 久久精品99久久香蕉国产色戒| 日本不卡不卡| 日韩亚洲成人av在线| 黄色网页在线观看| 久久中国妇女中文字幕| 91精品久久久久久粉嫩| 欧美成人精品一区二区三区| av网址在线看| 欧美激情xxxxx| 川上优av中文字幕一区二区| 性色av一区二区三区红粉影视| 91福利在线免费| 欧美亚洲国产日本| 国产私拍福利精品视频二区| 国产精品亚洲аv天堂网| 日韩成人综合网| 99在线看视频| 日韩三区视频| 视频一区二区综合| 888久久久| 国产 日韩 欧美在线| 亚洲欧美日韩国产综合精品二区| 久久综合久久色| 国产一区二区三区免费看| 国产精品91av| 久久久久88色偷偷免费| 国产一二三av| 亚洲国产一区在线观看| 国产又大又黄视频| 欧美日韩在线一区二区| av中文字幕在线免费观看| 亚洲缚视频在线观看| seseavlu视频在线| 欧美裸体男粗大视频在线观看 | 国产精品狼人色视频一区| 亚洲色图综合| 精品久久久久久亚洲| 不卡中文字幕| 天堂8在线天堂资源bt| 久久性色av| 国产乱叫456| 久久综合五月天婷婷伊人| 国产一区在线观看免费| 亚洲成人av一区二区| 狠狠躁夜夜躁人人爽视频| 日韩视频免费观看高清完整版在线观看| 黄色小视频免费观看| 国产一区二区三区三区在线观看 | 69亚洲乱人伦| 中文字幕免费不卡| 国产精品成人aaaa在线| 欧美撒尿777hd撒尿| 天天干在线观看| 久久亚洲春色中文字幕| 澳门成人av网| 国产精品v欧美精品∨日韩| 欧美精选视频在线观看| 日韩伦理在线免费观看| 精品在线观看视频| 国产精品成人一区二区三区电影毛片| 国产精品久久久久久久久免费桃花| 中文字幕一区二区三区精品| 6080日韩午夜伦伦午夜伦| 男女网站在线观看| 午夜精品久久久久久久白皮肤| 91视频亚洲| 午夜精品福利一区二区| 亚洲免费网站| 国产成人av无码精品| 亚洲日穴在线视频| 一本色道久久综合精品婷婷| 亚洲精品99久久久久| 色yeye免费人成网站在线观看| 国产精品免费久久久| 国产91精品对白在线播放| 妞干网在线视频观看| 成人综合激情网| 综合五月激情网| 欧美另类z0zxhd电影| а天堂8中文最新版在线官网| 8050国产精品久久久久久| a看欧美黄色女同性恋| 国产日产欧美一区二区| 久久成人免费电影| 国产免费嫩草影院| 欧美性视频一区二区三区| 国产精品99999| 国产91亚洲精品| 亚洲欧洲av| 一本大道熟女人妻中文字幕在线| 成人精品视频一区二区三区| 久久免费少妇高潮99精品| 日韩欧美的一区二区| 在线观看h网| caoporen国产精品| 欧美国产专区| 国产无套精品一区二区三区| 一区二区三区精密机械公司| www.麻豆av| 欧美精品电影免费在线观看| theporn国产在线精品| 亚洲 欧美 综合 另类 中字| 不卡的av电影| av大片免费观看| 亚洲欧美日韩精品久久| 成人啊v在线| 亚洲人成网站在线播放2019| 久久爱www久久做| 91在线播放观看| 精品国产乱码久久久久久图片 | 99久久免费看精品国产一区| 婷婷一区二区三区| 日本免费不卡| 国产精品女主播| 欧美大片专区| 中国一级特黄录像播放| 色综合久久88色综合天天6| 九色在线播放| 国产这里只有精品| 欧美在线亚洲综合一区| 制服丝袜av在线| 欧美特级www| 日韩毛片久久久| 岛国一区二区三区高清视频| 国产精品女主播一区二区三区| 国产一二三四五区| 欧美久久高跟鞋激| 国产在线拍揄自揄拍视频| 麻豆成人av| 九九精品视频在线看| 精品无码av在线| 亚洲热线99精品视频| 亚洲日日夜夜| 国产免费观看高清视频| 中文成人综合网| 男人的天堂a在线| 国产精品免费电影| 影音先锋国产精品| 久久久免费看片| 精品少妇一区二区三区在线视频| 在线观看特色大片免费视频| 尤物国产精品| 99视频精品在线| 6—12呦国产精品| 欧美一级淫片videoshd| 天天天综合网| 波多野结衣av在线免费观看| 日韩一区二区在线看片| 婷婷综合六月| 人人妻人人做人人爽| 国产精品国产三级国产三级人妇| 少妇无码一区二区三区| 91亚洲精品一区|