日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

用 impeccable 給日志立規(guī)矩:從源頭提升可觀測性與代碼質(zhì)量

用 impeccable 給日志立規(guī)矩:從源頭提升可觀測性與代碼質(zhì)量 1. 為什么日志也需要一把尺子impeccable 的誕生背景與定位日志大概是所有后端項(xiàng)目里最“隨緣”的部分。功能代碼有單元測試、有 Code Review接口有契約測試但日志往往是誰順手就怎么寫。有人用字符串拼接有人塞一堆占位符有人把手機(jī)號、token 直接打出來還有人一個方法里連打十幾條 debug。平時看著沒毛病線上出了故障要查鏈路的時候才發(fā)現(xiàn)這些日志根本沒法用。我自己也踩過這種坑。某次線上接口超時排查時翻日志發(fā)現(xiàn)關(guān)鍵路徑上既有l(wèi)og.info(result: JSON.toJSONString(resp))這種寫法也有l(wèi)og.info(requestId:{} userId:{}, requestId, userId)這種寫法。同一個服務(wù)里格式五花八門想要 grep 某個關(guān)鍵字段還得先猜它是用冒號、等號還是橫線拼接的。更糟的是有同事把完整請求體打到了 info 級別日志系統(tǒng)直接爆量那天整個團(tuán)隊(duì)的排查效率低到令人崩潰。后來我們項(xiàng)目組內(nèi)部做了一個叫 impeccable 的輕量級日志規(guī)范檢查工具專門掃描代碼倉庫里的日志語句按照預(yù)置或自定義的規(guī)則自動判斷每條日志是否“得體”。它解決的是那個長期被忽視的問題日志質(zhì)量沒有自動化手段來把關(guān)。無論你用的是哪門語言、哪種日志框架impeccable 都會用同一套標(biāo)準(zhǔn)去約束日志寫法把原先靠人 review 才能發(fā)現(xiàn)的日志問題提前到提交代碼的那一刻就攔住。這篇文章我會從工具定位、環(huán)境配置、規(guī)則體系、CI 接入、真實(shí)踩坑排錯這幾個維度把我實(shí)際使用和參與維護(hù) impeccable 過程中的經(jīng)驗(yàn)完整記錄下來。對于正在被日志問題困擾或者想在團(tuán)隊(duì)里推日志規(guī)范但不知道怎么落地的同學(xué)應(yīng)該會有些參考價值。1.1 一團(tuán)亂麻的日志到底坑了誰很多團(tuán)隊(duì)對日志規(guī)范的第一反應(yīng)是“差不多就行”。但當(dāng)你真正需要依賴日志解決問題的時候混亂日志的代價會立刻暴露出來。首先是檢索困難字段分隔符不統(tǒng)一想用 grep 把某筆訂單的所有日志撈出來幾乎不可能其次是信息缺失關(guān)鍵參數(shù)沒打全出了問題還要去猜當(dāng)時的入?yún)⒃儆芯褪前踩[患敏感信息被打進(jìn)日志輕則違反內(nèi)部安全要求重則引發(fā)數(shù)據(jù)泄露最后是成本問題無意義的日志鋪太多日志存儲和檢索的開銷會被白白浪費(fèi)。舉個很簡單的對比。下面兩種寫法表達(dá)的是同一個意思// 混亂版本 log.info(user login success, user_id userId , login_time loginTime); // 規(guī)范版本 log.info(user login success, userId{}, loginTime{}, userId, loginTime);表面上看只是風(fēng)格差異但實(shí)際差別很大。規(guī)范版本用了占位符既避免了字符串拼接帶來的性能損耗又讓日志字段變成了結(jié)構(gòu)化的鍵值對。配合日志采集端做解析時規(guī)范版本可以直接提取 userId 和 loginTime 作為檢索字段混亂版本則只能靠正則硬摳還容易摳錯。impeccable 想做的事情就是把這些“一眼能看出來不規(guī)范”的問題自動化。它不要求你靠自覺而是在你寫代碼的那一刻就提醒你哪里不合格。這個定位聽起來簡單做起來卻牽扯到不少設(shè)計(jì)取舍后面我會詳細(xì)展開。1.2 現(xiàn)成工具為什么管不住日志你可能會問代碼風(fēng)格檢查工具不是已經(jīng)能管格式了嗎為什么還要專門做一個日志檢查工具因?yàn)槲覀冊囘^效果很差。普通的風(fēng)格檢查工具主要關(guān)注代碼格式、命名、復(fù)雜度它不會理解“日志語句里出現(xiàn)了字符串拼接”是性能問題還是可讀性問題。更別說判斷“這條日志里有沒有敏感字段”“這個日志級別是否合理”“占位符數(shù)量和參數(shù)數(shù)量是否匹配”這類語義問題了。日志檢查比風(fēng)格檢查難在幾個地方。第一日志語句往往散落在業(yè)務(wù)代碼里不像命名規(guī)范那樣有一個唯一的“名”第二不同語言的日志框架 API 差異很大有的用占位符{}有的用百分號%s還有的直接支持 lambda 延遲計(jì)算第三日志本身還涉及級別、上下文、敏感信息等多個維度這些很難用一套固定的語法規(guī)則覆蓋。所以我們早期的方案是寫腳本、寫正則在 CI 里跑一遍哪里有拼接、哪里沒有級別就報哪里。但腳本越寫越多規(guī)則之間互相沖突維護(hù)成本很快就失控了。這也是我們決定把 impeccable 獨(dú)立出來做成一個真正可配置工具的原因。它想走的路子是像風(fēng)格檢查工具一樣提供規(guī)則框架但規(guī)則的具體定義交給使用者同時把日志場景里常見的檢查邏輯都內(nèi)置好。1.3 從內(nèi)部小工具到可復(fù)用的檢查器impeccable 最開始只是我們倉庫里一個幾十行的檢查腳本后來逐步演變成了一個命令行工具。它的定位非常明確不侵入業(yè)務(wù)代碼、不要求改日志框架、不需要 server 端部署只要在 CI 階段跑起來輸出一份報告就夠了。設(shè)計(jì)上我們定了幾個原則第一默認(rèn)規(guī)則要能直接覆蓋最常見的臟日志問題讓用戶開箱即用第二規(guī)則必須可配置、可關(guān)閉因?yàn)椴煌瑘F(tuán)隊(duì)的日志規(guī)范確實(shí)不一樣第三檢查結(jié)果要能做到增量輸出方便大倉庫在 CI 里只做改動文件的檢查。整篇文章后面的內(nèi)容都是圍繞這幾個原則展開的。接下來先從環(huán)境準(zhǔn)備和最小配置說起因?yàn)槲以诮o團(tuán)隊(duì)推廣它的過程中發(fā)現(xiàn)很多問題其實(shí)在安裝和配置階段就已經(jīng)開始了。2. 運(yùn)行環(huán)境與最小配置動手前先規(guī)避這些坑2.1 安裝方式和版本選擇impeccable 本身是一個命令行工具不需要額外的守護(hù)進(jìn)程這讓我們在 CI 上接入時省了很多事。安裝方式主要有兩種一種是直接用包管理器安裝發(fā)布版適合大多數(shù)使用者另一種是從源碼構(gòu)建適合需要二次開發(fā)、自定義插件的場景。無論用哪種方式建議都在 CI 配置里鎖定版本號避免新版本發(fā)布后規(guī)則行為變化導(dǎo)致檢查結(jié)果漂移。實(shí)際執(zhí)行時工具會讀取配置文件然后掃描代碼目錄最終輸出檢查報告。以我們團(tuán)隊(duì)的實(shí)踐經(jīng)驗(yàn)首次接入時不要一上來就用最嚴(yán)格的全量規(guī)則否則存量代碼會產(chǎn)生海量違規(guī)開發(fā)人員一看報告就失去信心了。正確的做法是先跑一遍默認(rèn)配置看看倉庫里主要有哪些問題類型再根據(jù)實(shí)際情況調(diào)整規(guī)則開關(guān)和級別。我曾經(jīng)見過一個其他團(tuán)隊(duì)的同學(xué)把全部規(guī)則都開到 error 級別結(jié)果整個倉庫掃出來上千條違規(guī)CI 徹底沒法跑。后來我們建議他從 warning 級別開始先只把增量代碼納入檢查存量問題放到每周的整改任務(wù)里慢慢消化。這個節(jié)奏很重要后面我還會再提。2.2 一份夠用的初始配置impeccable 的配置文件采用常見的 YAML 格式核心結(jié)構(gòu)分為掃描范圍和規(guī)則列表兩部分。下面這份配置是我們項(xiàng)目里比較典型的一個初始版本可以直接拿來改著用scan: include: - src/**/*.py - src/**/*.java - src/**/*.js exclude: - **/test/** - **/third_party/** follow-symlinks: false incremental: true rules: no-string-concat: enabled: true level: error placeholder-args-matched: enabled: true level: error sensitive-info: enabled: true level: error extra-keywords: - idcard - password - secret log-level-required: enabled: true level: warning allowed-levels: - debug - info - warn - error這些字段的含義很直接include指定掃描哪些文件exclude排除掉測試代碼和第三方目錄follow-symlinks控制是否追蹤符號鏈接incremental表示是否只檢查改動文件。規(guī)則部分每個規(guī)則有獨(dú)立的開關(guān)和錯誤級別。no-string-concat就是檢查日志里的字符串拼接問題placeholder-args-matched檢查占位符和參數(shù)數(shù)量是否一致sensitive-info負(fù)責(zé)掃描敏感關(guān)鍵字log-level-required檢查日志是否顯式指定了級別。這里我想多說一句為什么incremental要默認(rèn)打開。大倉庫全量掃描一次可能要好幾分鐘而 CI 里每次提交通常只改了幾十個文件。增量模式通過計(jì)算文件哈希只掃描發(fā)生變化的文件讓檢查時間降到秒級。要注意的是增量模式依賴 git 工作區(qū)的狀態(tài)所以它只適合在 git 倉庫內(nèi)使用打包成 tar 的源碼目錄是跑不了增量檢查的。2.3 掃描范圍與排除規(guī)則的正確寫法掃描范圍這塊比很多人想象中更容易出錯。最常見的問題是把構(gòu)建產(chǎn)物目錄也包含進(jìn)去比如target、dist、node_modules這類目錄里往往有大量生成代碼甚至包含第三方依賴的源碼掃進(jìn)去只會產(chǎn)生一堆無意義的報錯。另一個問題是 glob 寫法不對導(dǎo)致規(guī)則匹配不到任何文件工具靜默通過給人一種“項(xiàng)目很干凈”的錯覺。我用一個真實(shí)案例說明一下。項(xiàng)目組有位同事配置的是scan: include: - src/*.java結(jié)果工具運(yùn)行了掃描耗時 0 秒報告為空他還以為項(xiàng)目日志質(zhì)量特別好。后來我們排查才發(fā)現(xiàn)src/*.java只匹配 src 目錄下直接存放的 Java 文件并沒有匹配src/main/java/...下的深層文件。正確的寫法應(yīng)該是scan: include: - src/**/*.java在配置掃描范圍時建議寫完配置后先加一條臨時的“全文件匹配”規(guī)則比如用log-level-required去跑一個已知有問題的目錄確認(rèn)工具真的能發(fā)現(xiàn)違規(guī)再繼續(xù)調(diào)其他規(guī)則。這樣可以避免“配置脫靶”遲遲沒被發(fā)現(xiàn)。3. 規(guī)則體系拆解impeccable 如何判定一條日志是否得體3.1 內(nèi)置規(guī)則的五個維度impeccable 的內(nèi)置規(guī)則雖然看起來數(shù)量不少但歸類下來其實(shí)覆蓋五個維度格式類、占位符類、敏感信息類、級別類、上下文類。格式類規(guī)則用于統(tǒng)一日志里的時間格式、字段分隔符、大小寫習(xí)慣。比如時間戳統(tǒng)一用yyyy-MM-dd HH:mm:ss而不是混用yyyy/MM/dd占位符統(tǒng)一用{}而不是%s。這類規(guī)則看起來最“表面”但對日志檢索幫助最大。字段格式一旦統(tǒng)一采集端做解析時規(guī)則就能寫得很簡單。占位符類規(guī)則檢查兩個方面數(shù)量和類型。數(shù)量方面logger.info(a{}, b{}, a)這種參數(shù)缺失是典型的 bug運(yùn)行時會輸出axxx, b{}排查問題的人看到這個占位符就知道代碼有問題。類型方面{}對應(yīng)的參數(shù)如果是集合日志框架默認(rèn)會調(diào) toString對于復(fù)雜對象可能輸出一大段無意義內(nèi)容這類問題有時候也值得提示。敏感信息類規(guī)則是我們重點(diǎn)投入的部分。它通過內(nèi)置關(guān)鍵字、正則表達(dá)式和自定義擴(kuò)展來識別可能泄露的數(shù)據(jù)比如身份證、手機(jī)號、token、密碼等。最有價值的是它還能識別“變量名暗示敏感信息”的情況比如變量叫userPassword哪怕值是脫敏后的字符串也會被標(biāo)記為可疑讓開發(fā)者確認(rèn)后再提交。這個思路對有安全合規(guī)要求的服務(wù)特別有用。級別類規(guī)則主要檢查兩件事第一日志有沒有顯式指定級別避免裸調(diào)用第二級別和內(nèi)容是否匹配比如把每次心跳請求都打成一個 error 日志這明顯不合理。上下文類規(guī)則則檢查日志里是否包含了必要的關(guān)聯(lián)字段比如 traceId、requestId、userId沒有這些關(guān)聯(lián)信息分布式排障會非常痛苦。3.2 正則規(guī)則與自定義規(guī)則的落地方式內(nèi)置規(guī)則覆蓋的是通用場景但不同團(tuán)隊(duì)的日志規(guī)范差異很大所以 impeccable 支持通過配置文件新增自定義規(guī)則。自定義規(guī)則本質(zhì)上就是一個作用在日志語句上的正則匹配器命中就報對應(yīng)級別的違規(guī)。比如某個團(tuán)隊(duì)要求所有日志必須包含module前綴否則不予通過。那就可以在配置里加一條rules: module-prefix-required: enabled: true level: error pattern: logger\\.[a-z]\\([^)]*\\bmodule\\b看這條規(guī)則時你需要理解它匹配的是logger.之后的小寫方法名后面括號內(nèi)必須出現(xiàn)module關(guān)鍵字。如果沒匹配到就說明這條日志缺了module。正則規(guī)則的好處是輕量、不依賴語言環(huán)境但壞處也很明顯正則容易匹配錯而且日志語句一旦跨行或者里面有復(fù)雜的引號正則會漏報甚至誤報。因此當(dāng)規(guī)則復(fù)雜到一定程度時我們推薦使用插件方式。impeccable 允許以 Python 文件的形式注冊自定義檢查函數(shù)每個函數(shù)接收日志語句的 AST 節(jié)點(diǎn)返回違規(guī)列表。這比純正則可靠得多代價是要寫代碼。我們內(nèi)部的“占位符數(shù)量和參數(shù)數(shù)量匹配”這條規(guī)則最初就是用正則寫的跨行時總出問題后來改成 AST 分析才徹底解決。3.3 錯誤級別、基線文件與存量違規(guī)處理錯誤級別的設(shè)計(jì)直接決定工具在 CI 里是“建議”還是“強(qiáng)制”。impeccable 支持三個級別error表示必須修復(fù)會直接導(dǎo)致構(gòu)建失敗warning表示建議修復(fù)但不會阻塞info表示提示通常用于記錄數(shù)據(jù)或生成報告。存量違規(guī)的處理是推廣過程中最棘手的一環(huán)。如果直接把所有舊日志都修好再上線往往要占用大量排期但直接放開 error 又會讓新代碼繼續(xù)踩坑。我們的解法是引入基線文件機(jī)制。第一次全量掃描時把歷史違規(guī)記錄存成 baseline 文件之后每次檢查只報告“新增的”違規(guī)。這樣存量問題不會一直刷屏新人寫的新日志又必須合規(guī)團(tuán)隊(duì)可以按優(yōu)先級慢慢消化舊債。實(shí)際使用中基線文件必須提交到版本管理里并且建議在 Code Review 時一起審查。因?yàn)榛€文件本質(zhì)上是“歷史遺留問題清單”如果某次改動悄悄刪掉了一條歷史違規(guī)記錄那和“文物保護(hù)”沒什么區(qū)別反而掩蓋了問題。我們團(tuán)隊(duì)的做法是每個月安排一次“降債”專項(xiàng)把 baseline 里的條目一條條清掉清掉后從基線文件里刪掉CI 里如果再次出現(xiàn)同樣的違規(guī)就會直接報 error。4. 接入CI流水線把檢查變成發(fā)布前置關(guān)卡4.1 本地提交前的預(yù)檢查pre-commit 配置把 impeccable 接進(jìn) CI 之前建議先在本地提交前跑一遍。這樣開發(fā)者不用等流水線跑完才知道代碼不合格體驗(yàn)會好很多。我們用 pre-commit 鉤子做本地檢查配置很簡單- id: impeccable name: impeccable-log-check entry: impeccable scan ./src --config ./impeccable.yml --level error language: system types: [python, java, javascript]這里有兩個細(xì)節(jié)值得注意。第一是--level error含義是本地只攔截 error 級別的問題warning 留到 CI 階段再看。如果本地連 warning 都攔開發(fā)節(jié)奏會被打亂鉤子反而容易被跳過。第二是 types 字段它決定哪些文件類型變更時觸發(fā)檢查不要把它設(shè)成空或 all否則每次提交哪怕只改了一個 README 都要跑一次掃描。實(shí)際跑下來pre-commit 鉤子最大的價值不是“攔住了多少問題”而是“讓開發(fā)者建立了日志意識”。一個開發(fā)者第一次被鉤子攔住時可能會覺得煩但看到報錯信息里明確指出“這條日志缺了 traceId”之后下次寫日志就會下意識帶上上下文。我經(jīng)常說工具短期是門禁長期是教練就是這個道理。4.2 流水線檢查任務(wù)與阻塞策略CI 里的接入方式建議作為流水線的一個獨(dú)立檢查任務(wù)在單元測試前后都可以。我傾向于放在單元測試之前原因很簡單檢查速度快如果日志格式有問題可以盡早失敗避免浪費(fèi)后面測試的算力。任務(wù)是腳本式的#!/bin/bash set -e impeccable scan ./src \ --config ./impeccable.yml \ --level error \ --baseline ./impeccable-baseline.json \ --output ./reports/impeccable.json這里加了--baseline參數(shù)用于指定存量違規(guī)基線文件。實(shí)際跑的時候有兩種模式可以選阻塞模式和非阻塞模式。阻塞模式就是檢查到 error 直接讓流水線失敗非阻塞模式只生成報告所有問題匯總后發(fā)通知由團(tuán)隊(duì)決定何時修復(fù)。我們團(tuán)隊(duì)用了兩個月的非阻塞模式效果并不理想。因?yàn)榉亲枞J较麻_發(fā)者很容易忽視報告最終還是要靠人工去盯。后來我們改成error 級別阻塞warning 級別不阻塞但必須在合并前處理完。這個策略比較平衡既守住了最關(guān)鍵的問題又沒有把開發(fā)流程變得過于僵硬。另一個容易踩的坑是CI 里的工作區(qū)可能是干凈的 checkout沒有 git 歷史上下文這時候增量模式會失效必須用全量掃描。所以 CI 任務(wù)里不要默認(rèn)開incremental否則可能會漏掉本應(yīng)該被檢查的改動。我們內(nèi)部的處理方式是CI 階段始終全量掃描本地提交預(yù)檢才開啟增量。全量掃描耗時也就多幾十秒換來的確定性是值得的。4.3 報告輸出與違規(guī)定位的完整鏈路impeccable 支持多種報告格式純文本、JSON、HTML 都有。我們在 CI 里主要用 JSON因?yàn)楹罄m(xù)可以對接內(nèi)部平臺做趨勢分析和告警。JSON 報告里每條違規(guī)包含文件路徑、行號、規(guī)則名、違規(guī)級別、原始日志片段和修復(fù)建議定位起來非常方便。有一次項(xiàng)目組里有人反饋說“流水線報錯了但我不知道改哪里”。我讓他把 CI 日志展開看其實(shí) impeccable 已經(jīng)把具體行號打在報告里了。問題是默認(rèn)輸出格式是密密麻麻的一長串 JSON人眼根本看不下去。后來我們在 CI 腳本里加了一步把 JSON 轉(zhuǎn)成人讀的摘要impeccable report --format md --input ./reports/impeccable.json --output ./reports/impeccable.md然后在流水線頁面直接展示 Markdown 摘要每個違規(guī)變成了類似下面這樣的條目文件src/main/java/com/example/OrderService.java 第 42 行 規(guī)則sensitive-info 級別error 說明日志中檢測到疑似敏感字段 userPassword請確認(rèn)是否需要脫敏這個改動之后開發(fā)者的反饋從“不知道錯在哪”變成“照著改就行”。工具的最終體驗(yàn)很大程度取決于報告好不好讀這一點(diǎn)常常被忽略。5. 實(shí)戰(zhàn)踩坑錄誤報、性能與繞過規(guī)則的真實(shí)排查過程5.1 多行日志引發(fā)的誤報與規(guī)則修正用正則做日志檢查最先碰到的就是多行問題。很多人寫日志喜歡格式化一條日志寫成三行l(wèi)og.info(order created, orderId{}, amount{}, userId, amount);如果規(guī)則里的正則非常簡單比如只匹配單行內(nèi)的模式這種寫法會直接被漏掉導(dǎo)致日志里的拼接問題逃過檢查。我們一開始也這樣后來發(fā)現(xiàn)倉庫里大量“貌似規(guī)范”的日志其實(shí)都是跨行拼接出來的。處理辦法是讓 impeccable 在掃描時對日志語句做合并后再匹配把括號內(nèi)直到閉合的代碼塊作為一個整體分析。這需要對代碼做輕量級詞法分析不能只靠正則。我們實(shí)現(xiàn)了“括號配對”邏輯之后多行誤報基本消失了但新的問題又出現(xiàn)了字符串里包含閉合括號時配對會找錯位置一度把正常的代碼誤報成違規(guī)。那次排查花了不少時間。最后我把所有誤報案例匯總發(fā)現(xiàn)共同點(diǎn)是日志語句里嵌入了 JSON 字符串比如log.info(payload: {}, getPayload())getPayload 返回的內(nèi)容里有大量花括號。如果只做括號配對就會把 getPayload() 內(nèi)部的 JSON 花括號當(dāng)成語句結(jié)束。最終我們調(diào)整了策略合并日志語句時跳過字符串內(nèi)的花括號。從那以后誤報率才真正降到可接受范圍。5.2 大倉庫掃描慢的根因分析與優(yōu)化性能問題是在一個較大規(guī)模倉庫里暴露出來的。那個倉庫代碼量不小加上構(gòu)建產(chǎn)物和緩存文件一次性全量掃描要跑接近四分鐘CI 排隊(duì)嚴(yán)重時能拖垮整個發(fā)布流程。最開始我以為是正則匹配太慢后來通過 profile 發(fā)現(xiàn)大量時間花在文件讀取和 glob 匹配上。每次掃描都會把配置文件里的 include 模式重新解析一遍然后遍歷整個目錄樹做匹配而目錄里三分之二的文件根本不需要掃描。優(yōu)化思路分三步走。第一步是優(yōu)化 exclude 配置把構(gòu)建目錄、緩存目錄、依賴目錄全部排除掉。這一步就減掉了絕大部分無效文件。第二步是啟用基于 git 的文件過濾只掃描被跟蹤的代碼文件而不是目錄樹里的所有文件。第三步是把 glob 匹配編譯后的結(jié)果緩存起來避免每次都重復(fù)解析。三步做完全量掃描時間從四分鐘降到了五十秒左右。這個優(yōu)化再次說明工具的瓶頸往往不在規(guī)則本身而在文件系統(tǒng)層面的笨重操作。5.3 轉(zhuǎn)義技巧與Unicode繞過怎么見招拆招有意思的是規(guī)則的約束越嚴(yán)就越有人試圖繞過它。我們曾經(jīng)遇到過兩個比較典型的繞過手法。第一種是轉(zhuǎn)義拼接比如檢查器不允許日志字符串里出現(xiàn)有人就把加號拼進(jìn)字符串里寫成log.info(a b)但因?yàn)樽址锾崆傲袅丝崭窕蛞枌?dǎo)致正則沒匹配上第二種是使用 Unicode 全角字符替代半角標(biāo)點(diǎn)比如把:換成全角冒號規(guī)則里只匹配了半角冒號于是一整段“看著像正常日志”的語句就繞過了檢查。不能說這些手法是惡意的更多是因?yàn)橥掠X得規(guī)則太煩、想快點(diǎn)提交代碼。但從檢查工具的角度看這就是一場持續(xù)的攻防戰(zhàn)。我們的應(yīng)對方式是分層規(guī)則第一層用正則做快速篩查第二層用詞法分析識別字符串拼接語義第三層用信息熵算法識別“可疑的 Unicode 偽裝”把全角標(biāo)點(diǎn)統(tǒng)一降維成半角后再做一次匹配。三層規(guī)則疊加之后繞過難度高了非常多?,F(xiàn)在項(xiàng)目里很少再有人為了繞過規(guī)則去搞這些花活因?yàn)楸话l(fā)現(xiàn)后要改回來時間成本遠(yuǎn)比老實(shí)寫日志高得多。5.4 一次發(fā)布阻塞的完整排錯復(fù)盤有一次版本發(fā)布前CI 突然紅了報錯的規(guī)則叫placeholder-args-matched指向某服務(wù)的一行日志。報錯內(nèi)容是占位符有 3 個但參數(shù)只傳了 2 個。我當(dāng)時第一反應(yīng)是有人在改動里改漏了參數(shù)改回去重試就行。但奇怪的是回滾到上上次通過檢查的提交流水線依然報同樣的錯這就說明問題不在代碼改動而是規(guī)則本身出了問題。我開始手動復(fù)現(xiàn)。在本地跑同樣的命令同樣的文件結(jié)果沒有報錯。這就更蹊蹺了同一個配置文件、同一份代碼為什么本地不報、CI 報最后花了大半個小時排查才確認(rèn)根因CI 上那臺機(jī)器初始化環(huán)境時把 impeccable 升級到了新版本而新版本對占位符規(guī)則的處理邏輯發(fā)生了變化。舊版本只匹配{}形式的占位符新版本把日志框架內(nèi)置的{}、%s、%d全部算作占位符于是原本合法的代碼變成了“參數(shù)數(shù)量不匹配”。這次經(jīng)歷之后我們立刻在 CI 腳本里鎖定了版本號同時把本地環(huán)境、CI 環(huán)境整理了對比確認(rèn)兩邊跑的是同一個版本。工具版本漂移帶來的問題比規(guī)則本身的問題隱蔽得多。如果你也在 CI 里接類似工具務(wù)必在配置里固定版本并且定期做一次升級評估而不是讓 CI 環(huán)境自動拉到 latest。6. 上線后的效果與進(jìn)階擴(kuò)展讓規(guī)范從“工具”變成“共識”6.1 量化數(shù)據(jù)與團(tuán)隊(duì)感受impeccable 在我們內(nèi)部跑了大半年從數(shù)據(jù)上看效果非常明顯。第一次全量掃描時存量日志的違規(guī)數(shù)量是四位數(shù)其中占比最大的是占位符參數(shù)不匹配和字符串拼接。到后來新提交代碼里的 error 級違規(guī)數(shù)量已經(jīng)降到了個位數(shù)緩存下來的基線文件也從最初的幾百條縮減到幾十條。更直觀的改善在排查效率上。以前線上出問題查看日志要來回猜格式、猜字段現(xiàn)在日志格式統(tǒng)一、字段名固定檢索鏈路的時間大幅縮短。這種收益很難用一個數(shù)字精確描述但經(jīng)歷過“日志一查就有”和“日志查了半天”的人都能感受到差異到底有多大。團(tuán)隊(duì)層面的感受變化也很有意思。一開始大家對檢查工具普遍抵觸覺得是“找麻煩”到后來新同事入職第一天Code Review 時被機(jī)器人自動提醒“日志缺了 requestId”反而覺得這套機(jī)制很專業(yè)。工具帶來的規(guī)范會逐漸沉淀成團(tuán)隊(duì)默認(rèn)的做事方式。6.2 規(guī)則調(diào)優(yōu)節(jié)奏與團(tuán)隊(duì)協(xié)作機(jī)制規(guī)則體系不是一成不變的。我們每季度都會做一次規(guī)則評審收集開發(fā)者的反饋看哪些規(guī)則是誤報重災(zāi)區(qū)、哪些規(guī)則價值不大、哪些場景完全沒有覆蓋。評審后規(guī)則變更先以 warning 級別灰度一兩個迭代確認(rèn)誤報率和體驗(yàn)沒問題后再升成 error 級?;叶葯C(jī)制非常重要。我們曾經(jīng)跳過灰度直接上線一條新規(guī)則結(jié)果因?yàn)檫m配沒做全大量合法代碼被誤報開發(fā)者的口碑一下子跌到谷底。后來凡是新規(guī)則一律先跑兩周 warning收集報告里的命中情況人工抽檢命中是否合理再決定提升級別。這個流程會讓規(guī)則本身也進(jìn)入“持續(xù)集成”而不是一次性拍腦袋定死。除了規(guī)則評審我們還建立了兩個配套機(jī)制。第一是“日志案例庫”把線上因?yàn)槿罩静灰?guī)范導(dǎo)致的真實(shí)事故整理成案例發(fā)給團(tuán)隊(duì)學(xué)習(xí)第二是“最佳實(shí)踐模板”把 impeccable 推薦的日志寫法做成標(biāo)準(zhǔn)模板放進(jìn)項(xiàng)目腳手架里。工具管住了底線模板和案例管住了上限。6.3 后續(xù)可以繼續(xù)做的幾個方向impeccable 目前已經(jīng)能覆蓋大多數(shù)日常場景但我們也看到了幾個值得繼續(xù)探索的方向。第一個方向是增強(qiáng) AST 分析能力?,F(xiàn)在很多規(guī)則已經(jīng)基于 AST但遇到動態(tài)方法調(diào)用、反射等寫法時仍然只能靠正則兜底準(zhǔn)確率有瓶頸。如果能把常見日志框架的 API 調(diào)用鏈建模得更完整就能識別更多隱性問題。第二個方向是增加對日志采集端的聯(lián)動。日志規(guī)范最終是為了讓采集端能解析那不如直接把規(guī)范輸出成采集端的解析配置讓“怎么打日志”和“怎么解析日志”保持同步從源頭消掉對接成本。第三個方向是結(jié)合大模型做更智能的判斷。比如判斷“這條日志的內(nèi)容是否冗余”“級別是否合理”“上下文是否足夠”這些語義性很強(qiáng)的檢查目前靠規(guī)則很難覆蓋。我們已經(jīng)在做一些小范圍的嘗試讓模型對疑似問題做二次排序把最有價值的幾條提醒放到最前面。最后再分享一個小技巧如果你也想在團(tuán)隊(duì)里推日志規(guī)范我建議別急著鋪開所有規(guī)則。先挑兩三條最痛的點(diǎn)比如字符串拼接和敏感信息開成 error跑一段時間讓大家養(yǎng)成習(xí)慣再逐步增加規(guī)則。我見過不少團(tuán)隊(duì)一上來就希望“一步到位”結(jié)果規(guī)則列表越來越長誤報越來越多工具最后被默默卸載。我在實(shí)際使用中最后一個心得是把 impeccable 的版本和基線文件都固定好。版本固定保證行為可預(yù)期基線文件保證存量梳理可控。這兩件事做好了工具才能真正在團(tuán)隊(duì)里長期跑下去而不是熱鬧一兩個星期就沉寂。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月丁香久久| 国产精品人妻无码久久久互動交流 | 久久久久久9999| 新婚人妻扶着粗大强行坐下| 亚州性色| 精品一区二区2| 男人的天堂在线2| 国产成人综合在线播放| 女人久久久| 亚洲性少妇| 夜夜天天噜狠狠爱2021| 偷拍综合网| 天天拍天| 亚洲人妻熟妇三十三区| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 丁香7月婷婷| 又黄又爽在线观看视频 | 精品性爱无码在线播放| α√在线| 亚洲αv一区二区三区| 欧美综合亚洲综合| 亚洲黄色视频在线观看视频| 2019亚洲男人天堂| 亚洲色图伊人网| 久久久久久性爱视频| 性爱av在线免费观看| 中文字幕人妻资源在线| 日本不卡一区| 亚洲a色| 天天热精品| 99视频只有精品| 国产亚洲精品美女久久久久久2021| 久久久免费高清中文视频| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 边做饭边操逼逼| 狠狠超| 久九九九九九九九热| 性九九九九九九| 少妇三P| 欧美日韩国产传媒在线精品| AA丁香综合激情| 日韩午夜精品一区二区三区电影| 国产精品亚洲一级av第二区| 亚洲成aⅴ人片不卡无码| 97狠狠| 欧美色97| 精品国产一区二区三区在线播出| 激情网色| 婷婷99| 男人的天堂啪啪啪啪啪蜜桃不卡| 欧美操逼一二三区| 人妻加勒比东京热| 黄色成品网站| 亚洲高清在线se| 后入式视频国产自| 超碰色大香蕉| 97亚洲精品超碰| 中国AAAAAA黄色片| 亚洲av国产av综合av卡| 在线精品福利免费播放| 五月丁香拍拍激情综合三级| 亚洲国产av中文字幕久久| 久久无码一区二区二三区性色| 久久系列| 亚洲日本激情| 国产成人www免费人成看片| 香蕉婷婷| 少妇毛片久久| 操曰本熟女| 好好的日:com久久九九| 伊人四虎综合| 亚洲三级。日韩三级| 天美传媒精品一区二区| 又粗又长又爽在线观看| 婷婷中文字幕| 色一射色一射| 青草香蕉网| 性欧美| se..亚洲欧美| 亚乱色| 五月天婷婷小说| 不卡人妻少妇精品毛片一区23区视频| 偷拍片久久| 国产人妻久久精品一区二区三区| 久久久久国产精品久久久| 91精品无码久久久久久久| 中文字幕人成乱码熟女香港| 五月天大香蕉| 中文字幕超碰CAO| 日韩久射综合| 黄片色区软件| 国产精品播放| 99色热国产视频精品| 九九成人视频| 熟女熟妇伦久久影院毛片一区二区| 美女9118禁| 亚欧性爱无码| 熟女丝袜视频| 夜夜春夜夜操| 99热思思| 另类天堂| 大香网伊人久久综合| 中文字幕日韩人妻视频一区二区三区交换夫妻| 啪啪啪男女亚洲中文字幕99| 性久久久| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 717影院理论午夜伦八戒| 亚 欧 美 综合| 97超碰精品成| 日韩美女啪啪一区| 91 丝袜在线| 乱伦强奸区日韩| 亚洲精品视频在线播放| 强奸熟女一区二区三区| 日韩性爱视频在线免费观看| 超碰亚洲欧美日韩无| 97在线视频网站| 午夜电影在线观看无码专区| 亚洲久9| 精品人妻一区二区三区鲁大师| 99热精品国产| 九热大香蕉| 欧美高清第一页| 精品国产无码中文| 99re在线视频国产| a级理论午夜日本| 熟女中出视频| 中文字幕日韩精品久久| 青青爽| 久久精品店| 精品国产丝袜一区二区三区乱码| 91nbbbbbb| 久草视频观看视频在线| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 蜜臀无码一区二区| 丰满人妻一区二区三区大胸懂色| 啊啊啊啊啊好舒服视频| 国产超碰在线| 美女骚尻视频| 色五月激情综合网| 98久久超碰| 蜜臀久久99精品久久综合| 亚欧操逼片在线观看 | 欧美亚洲性爱一区二区| 12一15性XXXX粉嫩国产| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 日日狠狠久久偷偷色综合免费| 五十路熟女在线不卡观看一区二区| 国产av强奸美女| 亚州久久9| www.久久制服糖| 亚熟hd视频在线| 国模私拍一区二区三区神乳| 日韩中文9| 国产精品色| 亚洲日韩美女丝袜美腿人妻视频| 五月天伊人| 秋霞久久亚洲精品成人| av天堂加勒比| 国产免费大片| 五月婷婷激情综合| 91免费看一区二区三区| 亚洲国产丝袜在线观看| 激情五月婷| 在线观看中文字幕| 台湾肥佬网一区二区三区| 免费看黄视频亚洲网站| 啊啊啊免费| 国产25页| 91粉芽高清在线一区二区| 老熟女91| 欧美在线第五页| 日本免费专区| 亚洲交性| 91 丝袜在线观看| 91大神电影天堂| 日韩国产欧美伦理在线| 亚洲黄色| 2019午夜福利视频| 嗯嗯啊啊亚欧精品| 六月丁丁香| αⅴ天堂| 丰满人妻被猛烈进入中| 精品九九九九九| 欧美体内射精| 国产自产91区13区| 天天插天天插| japan日本高清乱xxxx| 国产熟女无套内射| 欧美日韩天堂| 夜夜操天天肏| 日韩草久视频| 精品中文字幕一区二区| 欧美亚洲综合高清在线| 夜夜国自区| 久久久久密臀一区二区| 91超级碰| 久久久精品电影| 欧美78P| 天天情欲宗合网| 熟妇人妻一区二区三区| 毛片电影一区二区三区| 午夜精品久久久久久久99蜜桃一| 久久69| 国产久久男人天堂| 午夜后入| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 超碰吊日色| 中文字幕精品人妻丝袜| 99re不伦| 久久综合日韩亚洲欧美| 欧美有码激情视频一区二区三区| 中文字幕亚韩| 色官网在线| 不卡九肏| 久久超碰亚洲人| 国产精品久久发布| 91精品黄在线观看| 丰满欧美少妇| 五月开心网| 日本免费亚洲欧美| 午夜福利免费福利视频| 免费a在线播放v| 97国产成人精品免费视频| 中文字幕高清精品一区| 激情小说图片亚洲首页| 91色人妻| 最新三级网址| 啪一啪免费视频| 亚欧性爱ab| 91精品无码人妻系列| 日本人人操人人操| 日韩黄色成人性爱| 免费视频a级毛片免费视频| 国产精品无码在线| 天天欧美色| 99999精品视频| 无码免费一区二区三区啪啪| 99999无码| 午夜啊啊啊| 青青欧洲黑| 国产少妇高潮| av 模特一区了| 亚洲女人毛茸茸91| 大香蕉人妻久久| 亚洲另类春色| 囯产操逼片| 大香网伊人久久综合| 国产91美女高潮| 日本人妻一区二区| 日日夜夜骑| 91操操操操| 免费人成在线观看网站品爱网| 懂色av色欲av蜜臀av| 天天操天天舔| 久久国产视频专区一二三| 刺激精品视频| 中文字幕一区二区无码成人| 26UUU欧美日本| 国产精品岛国片在线观看| 欧美国产日韩清纯唯美| 九九99久久| 天天弄天天操| 超碰在线人妻不卡| 91美女精品| 天天射天天| 国产乱码精品一区二区三区四川| 丝袜性亚洲| 亚洲欧美视| 亚洲国产精品无码AV久久久| 再深点灬舒服灬太大了好硬好爽| 麻豆久久视频在线地址| 嗯嗯啊啊好疼| 丰满人妻-区二区三区免费看| 极品欧美一区二区三区| 67914亚洲精品| 嗯嗯啊好大| 欧美亚洲首页| 亚洲高清在线| 久久久久久久久久精| 久久夜夜| 亚欧Av| 精品无码一区二区| 久热热| 美国aaaaa一级黄片| 97色在线观看| 日韩成人高清一区二区| 国产黄片精品在线| 成人色女网| 亚洲中文字幕熟女少妇一区二区| 精品毛片久久久精品毛片| 67194无码不卡| 九九热三级片| 日本岛国黄色网址| 亚洲欧美激情小说| 久久久久亚洲Aⅴ无码| 夜夜嗨AV蜜臀av| 花花AV导航| 成人在线视频网| 美女骚尻视频| 97福利视频| 九九这里只有精品| 日本精品高清一二区一本到| 精彩久久中文| 自拍偷拍2025在线观看| 久久成人东京热人妻| 岛国大片在线观看网站入口| 丝袜无码a片| 以及麻豆国产入口在线观看免费| 日韩一区二区精品视频| 国产精品白丝| 日韩精品一二三四| 综合欧美亚洲| 久久成人午夜精品影院 | 97jingpin| 性在久久久久久| 冬京热男人的天堂| 91美女小视频| 99精品网| 中文字幕蜜乳av| 亚洲天天艹| 一区二区三区免费视频入口| 欧美精品偷拍| 乱伦系列一区二区| 亚洲人妻色图| 青娱乐亚洲热| h无码动漫在线观看| 色九九九综合| 九月丁香综合网| 理论久久婷婷网8| 亚洲精品一区中文字幕乱码| 黄片免费日韩| 欧洲亚洲人妻无码久久三区四区| 欧美性爱五月天| 精品免费一区| 高清不卡国产| blacked精品一区国产| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 日韩啪啪啪视频| 欧美人妻久久精品二区三区| 91熟女丨91老女人| 色九月综合| 日韩少妇一区二区三区| 搡老女人老91妇女老熟女| 激情六月天| 国产无吗在线播放| 中文字幕一品色图| 超碰性爱97| 嫩草影院在线观看精品| 色图综合网| 亚洲怡春院| 99中出在线| 波多野结衣先锋影音| 少妇天堂| 亚洲一区二区三区麻豆传媒| 超碰在线人妻中文字幕| 久久久久久久91| 久热色情精品| 91狠狠综合久久| 无码高清少妇久久| 亚洲天天综合| 另类小说欧美激情校园春色| 男人的亚洲天堂| 色噜噜综合在线| 美國A片| 成全动漫视频观看免费下载| 欧美97网| 国产免费一区| 欧美中文狠| 亚洲中文字幕噜噜噜久久久| 黄色欧美性爱视频| 欧美日韩午夜精品一区二区三区| 欧美在线大香999| 大香蕉啪啪啪啪在线| 国产成人亚洲精品自产在线| 久久亚洲精品成人av| 一级成人性爱| 国内外内射高清视频| 东京热毛片调教| 日日做夜狠狠爱欧美黑人| 精品夜夜澡人妻无码| 秋霞一级视频在线观看免费| 午夜超爽| 亚洲精品国产无码高清| 国产乱伦搜索结果91P| 亚91网| 国产久9| 女上位精品在线| 美女裸体麻豆天美蜜桃91| 91欧美| 717影院理论午夜伦八戒| 欧美人黑A片无码免视费| 亚洲电影91| 91久久久视| 中美日韩毛片| 天天看综合网| 婷婷综合在线| 亚洲色鬼| 中文字幕少妇色 | 欧美色蜜桃97| 蜜臀久久久99久久久久 | 欧美色图小说综合| 国产精品农村妇女| 中文字幕av亚洲精品| 久草精品国产99| 欧美一级美片在线观看免费| 国产在线强奸视频| 午夜福利在线合集| 亚洲五月婷婷| 欧美亚州手机在线| 99热 按摩 日韩| 风骚少妇视频中文字幕| 日韩精品-原创伙伴| 97色碰| 高潮的A片激情扒开一区| 欧美黄片免费在线观看视频| 综合激情五月天| 丰满欧美少妇| 在线色资源| 91第一页| 一区二区三区 日韩欧美| 亚洲熟女av日韩熟女| 天天综合~91入口| 97超碰色屌| 97精品一区| 欧美性爱第一页久久| 欧美日韩国产高清在线一二三区 | 天天天天干| 色999偷自拍拍| 欧亚日本情色| 乱伦日本中文自拍| 婷婷香蕉| 久久久禁| 亚洲精品一区二区日本| 人妻精品一区二区在线| 中文字幕丝袜人妻| 久久人人爽av亚洲精品天堂桃色 | 日本三级大片| 国产精品熟妇一区二区三| 国产又粗又长又大的视频| 中文操逼字幕| 天天摸,夜夜摸| 香蕉免费一区二区三区不读| 女人天堂av在线播放| 少妇人妻好深太紧了vr91| 涩五月婷婷| 日韩精品大香蕉伊人在线| 啪啪综合网| 91操人| 99热导航| 国产精品久久久久久久久久久久久久吹 | 啊啊啊轻点在线观看| 私人尤物在线精品不卡| 中文字幕老熟妇黄色视频| 欧美大片天天看| 亚洲综合射| 天堂岛av| 九九成人精品| 亚洲激情在线| 久久草在线综合视频| 人妻在线中出视频| 91综合网| 丝袜人妻av一区二区| 成人久久久精品| 欧美激情一区| 人妻天天夜夜爽一区二区| 女人香蕉久久毛毛片精品| 午夜超爽| 97天天在线| A片A5445444| 成人影 天天操 亚洲| 97视频播放| a在线视频免费观看| 校园春色宗合网| 郑州宾馆老熟女露脸啪啪| 亚洲欧美国产中文字幕| 日韩在线一区高清在线| 久久偷拍人| 国产成人亚洲精品无码最新在线| 爆乳免费黄网站| 色97综合中文字幕| 国产高清精品福利| 加勒比色99999| www狠狠| 青青草色AV| 1024日韩| 操b在线观看| 久久国产对白激情浪潮| 日本操逼视频导航| 久欲AV| 日本 欧美 亚中文字幕| 精品国产一区探花在线观看| 亚洲综合另类欧美久久久| 天天躁日日躁AAAAXXXX国产| 亚洲欧美在线综合| 五月丁香婷婷色| 大香蕉综合网| 无码男人天堂| 国产亚洲综合欧美一区| 试看60秒 爽| 台湾肥佬网一区二区三区| 啪啪啪精品| 九九九久| 亚洲欧美综合图片| 久久精品亚洲东京热色播| 一级婬片120分钟试看| 欧美白嫩女HD| 超碰99在线观看| 91青青草| 福利天天都操| 旡码电影特区| 涩涩涩综合| chaopen97久久| 一区二区三区四区五区高清无码永久视频 | 欧美综合传媒| 日韩99999色| 亚洲无码久久久久久久| 97视频在线看| 夜夜国自区| 日本三级人妻a人妻一在线| 人人人人插| 黑人性欧美| 精品一国2| 一本道综合色图| 99国产在线 精品 视频| 白丝一区| 91中出在线| 亚洲91网站| 丰满人妻一区二区三区| 91操人| 欧美激情激情xxxx欧美专区| 东京热av影院| 99999精品视频| 亚洲无码99| 国产午夜激片Av毛片不卡| 精品十八在线观看| 午夜后入| 精品久久久久黄少妇| 熟女六十路| 中文字幕日韩电影人妻| 日韩无码一区二区三区| 后入式999| 亚洲AV无码久久精品蜜桃小说| 国产丝袜视频| 激情五月天网站| 日韩一区二区高清在线观看的| 欧美 精品国产制服第一页| 成人区人妻精品一| 欧美,日韩,中文,另类| 日韩ab网 | 精品人妻一区二区乱码一区二区| 嗯啊啊啊轻点视频| 中文字幕一区二区三区视频播放| 性爱乱伦网址| 国产福利av精彩对白| 黄色av网站在线播放| WWW.操逼.COM| 亚洲国产成人精品女人久久久| 欧美黑人与女人91| 91精品国| 天堂成人网| 九九九九九精品视频| 国产超碰97| 中文字幕一二三av| 九九九不卡| 国产精品一区二区三区在线| 九九这里只有精品| www.男人的天堂| 高清孕妇孕交 交| 亚洲 日本 不卡| 夜夜爽夜夜操| 天堂无码| 91精品久久久| 国产福利小视频高清在线观看| 欧美日韩操逼动图| 狠狠色综合网| 超碰97起碰| 久久九七| h色99999| 欧美 亚洲精品首页| 欧美性91| 北约熟女超碰| 99精品久久久久久久婷婷蜜桃| 多乙久久久久久| 狠狠爱综合网| 好湿好紧好爽 视频| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 国产h片在线观看视频| 家庭乱伦性爱av| 六月婷婷色综合| 黑操B| 色老牛| 男人天堂毛片| 国产精品 久久久精品一牛| 亚洲 国产 精品一区| 免费一级视频特黄色大片| 日韩97超碰中文字幕| 岛国AV一区二区电影| 精品妇操一区二区三区| 日韩美女久久一区二区三区| 色麻豆AV| 人妻天天爽天天爽三区| 国产A v无码专区| 麻豆国产尤物AV| 禁十八久久| 亚洲色图日韩丝袜制服一区二区五月在线| 精品视频在线观看精品| 国产精品色片一区二区| 四虎影库国产精品免费| 日本天堂在线播放| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 国产色综合亚洲色综合吹潮| 日韩av一级黄片| AND人妻系列| 性高潮久久久| 老外又粗又长一晚做五次| 涩五月婷婷| 91激情网| 亚洲春色一区二区三区| 日韩免费在线视频观看| 中文字幕黑人大片| 中国91AV| 欧美日韩一区二区三区四区蜜桃| 天天干2区3区| 亚洲精品国产拍免费91在线| 性色av网站| 91熟女综合| 美女91在线| 韩国女主播青草在线| 色综合 加勒比| 青青伊人这里只有精品| 伊人久久大香蕉线AV五月天| 五十路熟女人妻一区二区在线观看 | 日本潮催一卡操| 超碰久久中文| 欧美高清16| 中文字幕一区日韩精| 9长久久精品| 人妻无一区二区三区| 久久日韩毛| 天天狂操夜夜狂日| 97人妻碰碰中文无码久热丝袜| 欧美 亚洲 另类 综合| 人人模人人看| 欧美亚男人的天堂| 亚洲av青草久久一区二区| 天天爽天天操| 欧美少妇高潮视频| 日本99久久| 中文有码9| 蜜乳AV色欲AVAV无码| 国产又长又大又粗的视频| 国产中文精品一区二区在线观看| 91中文精品日韩欧美在线| 欧美不卡在线一区二区| 嗯啊啊啊轻点视频 | 国产1769在线| 亚洲A曰本VA欧美VA视频| 97精品国产97久久久久久户外免费| 18精品一二区| 久久久一级| 超碰97中文| 国产又黄又猛又粗又爽的网站| 色噜噜国产精品视频一区二区| 亚洲成av人片色午夜乱码| 91久热| 97综合在线| 精品免费一区| 99亚洲人人| 欧美偷拍区| 色悠久久久av| 欧美性爱另类综合| 97在线视频网站| 91女神在线视频| 操逼逼一区视频| 激情视频一二三| 久久精品店| 久久久久白虎| 伊人久久国产免费观看视频| 无码 黑人一区二区三区| 成人精品水蜜桃久久久久久久| 黄片免费看的| 少妇天堂| 精品人妻一区二区乱码一区二区| 乱伦1色页| 九久精品| 欧插网站| 青青伊人这里只有精品| 婷婷国产精品一区二区| 日本精品88888888| 亚洲最大的综合性av| 男人在线天堂| 天天舔天天日天天射| 午夜免费视频1000| 欧美一区二区三区互相| 在线播放欧洲免费av| 人人爱夜夜爱| 五月婷婷丁香中文字幕| 日韩三级在线观看网站| 欧美在线中M| 精品妇女一区二区三区| 久久五十路熟女人妻| 日韩本不卡视频在线观看| 吉田爱美AV在线| 人人人人插| 乱伦日本中文自拍| 99久久99九九99九九九| 成人A片男人的天堂| 天天日天天色| 不卡啪啪视频| 在线观看一级α片刺激高潮视频| 中文字幕福利视频一区二区三区在线观看| 亚州成人A√| 婷婷伊人| 无码免费精品高清| 91久久久亚洲| 欧美天天干| 一区二区精品更新提醒| 欧美男人一区| 99熟女| 天天搞在线综合网| 国产不良强奸视频免费看| 精品视频一二三中文| 国产精彩女在线观看视频| 日韩人妻网站| 人妻丝袜无 码视频专区| 黄色一级视| 亚洲暴力强奸AV| 天天干天天舔| 国产黄色剧情影片麻豆免费播放| 丰满人妻一区二区三区免费| 欧美极品色| 1000午夜黄色| 久久最新视频免费观看| 人人污日韩一区二区| 91久久精品国产| 无码99| 日韩有码一区三区| av大香蕉| 婷婷九月| 920日本午夜免费| 色色婷婷丁香| 欧美亚洲日韩人妻在线观看| 99这里有精品视频| 日本岛国黄色网址| 色五月婷婷中文字幕| 超碰人人干| 91GD.COM| 水澄无码AV| 久久精品美女一区| 综合欧美日本三级| 国产99热| 亚洲高潮少妇| 在线人妻熟女一区二区三区四区五区| 99re6久热只有精品6在线直播| 久久综合婷婷| 日本 情色 1区| 国产精品播放| 国产h小视频在线观看免费| 97超碰护士| 欧美性爱超碰97| 亚洲男人天堂AV| 久久国产在线一区二区| 午夜人人操| 日韩卡一卡二卡三在线| 99热这里只有精品地址| 日韩成人免费电影| 久都青青视频| 91爱看| WWW美腿丝袜香蕉中文| 97操B| 91模特在线观看| 欧美人妻少妇| 91精品国产日韩欧美综合| 亚洲 日韩 丝袜 熟女 变态| 99热网站| 蜜桃在线观看一区二区三区 | 欧洲精品人妻| 97伊人超碰| 翔田千里无码一区| 久久久久亚洲AV无码专区少妇| 黄色性爱网网| 九一亚洲国产免费| 精品久久九| 国产精品久久久久久久久久久久| 99国产精品视频尤物| 国产亚洲国产超碰| 少妇同性| 欧美东京热青青草| 中文字幕美女91| 日本岛国黄色网址| 白 大 人妻 区 在线| 超碰欧美97资源| 久久婷婷电影网| 人妻中文字幕日韩电影| 天美国产精品| 青青草AV色| 韩国免费播放一级毛片| 一级A片女人高潮叫床| 嗯嗯啊啊操死我| 日本天堂在线播放| 成全动漫视频观看免费下载| 狠狠色婷婷7777久| 狠狠干精品一二三四五六2022| 日韩综合第八区国产精品| 在线观看不卡一区二区三区| 六月婷婷综合| 大香蕉在线视频重口味毛片在线| 欧美亚洲首页| 高跟丝袜AV专区国产| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 日韩成人午夜精品久久高潮| 青青草这里只有精品| 亚洲天堂中文字| 欧中日成人免费影视| 一本久道久久综合狠狠爱一密臀精| 草莓精品视频在线免费观看| 久久久久无码| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 91综合天天| 亚州AV无码国产精品| 91成人国产综合久久精品蜜月| 亚洲熟女诱惑| 97人人草| 亚洲 欧美 日本 国内 首页| 四虎国产精品永久地址入口| 国产一区麻豆免费观看| 麻豆三极片| 99热这里只有精品8| 97精品人妻一二三四| 日本操BAV| 欧美后入视频| 国产精品女生av| 日韩精品人妻中文字幕久久久| 国产久久久久久| 九九九九久久久| 91麻豆天美传媒在线| 国模吧 一区二区三区| 肉丝中文无码高清| 青娱乐久久艹| 91男同| 国产精品自拍欧美在线| 九九亚洲色在线观看| 国产特级毛片AAAAAA高潮流水 | 中文字幕丝袜国产第一页不卡| 超碰在线人妻不卡| 亚洲,日韩,欧美,成人播放| 亚洲永久永久永久永久一级一级一级精品 | 久久久久久久久国产| 免费在线观看国内色片网站网址| 日韩丨制服丨中文|在线| 日韩乱中文| 国产精品69久久久久孕妇欧美| 国产在线视视频有精品| 骚日日av| 东京热男人的天堂网| 免费精品无码一级毛片牛牛影视 | 欧美日本中字另类在线| 欧美激色| 人妻精品视频一区二区| 96麻豆精品一区二区三区| 男人的天堂2019AV| 97在线观看| 久久內射| 久久精品色欧美aⅴ一区二区| 女上位精品在线| 开心五月激情网| av网站国产主播在线| 亚洲精品欧美专业| 亚洲色 国产 欧美 日韩| 97操B| 色穴精品| 亚洲一级特黄大片在线播放91| 国产后入清纯| 日本三级大片| 人人妻人人爽 97人人看碰人免费公开视频 | 日韩八十路老熟女| 防屏蔽在线视频| se吧提供国产乱老熟视频胖女人| 久久久不卡区一区二区三区久久久| 91快色色色色色| 久久女人| 无码视频一区二区| 97人人草| 一级特黄aaa大片在线观看成人一级片在线观看 | 日韩性爱播放| 国内毛片热久久思思热| 青青草好吊| 欧美乱色| 操逼逼无码| 思思久热在线精品66| 天天日天天屌天天操| 男人的天堂 在线一区| 精品无码人妻一区二区免费蜜桃| 日韩人妻一区二区精品| 操逼视频国产无套| 97中文字幕九区| 久草毛片电影怡| 日韩有码一区三区| 午夜电影在线观看无码专区| 欧美se综合| 亚洲伊人久久精品影院| 99青草| 欧美不卡二区| 亚洲美女av无码| 久久婷婷一区| 制服诱惑亚洲一区二区三区在线观看| 91精品综合久久久久久五月丁香| se吧提供国产乱老熟视频胖女人| 91精品91久久久中77777| 东京热不卡视频| 亚洲欧洲精品成人| 亚州宗合另类| 国产成人精品亚洲日本| 国产精品自拍xxxx| www.99色| 夫妻天天操岛国视频| 综合熟妇一区二区三区| 91国精产品| 曰本熟女视频| 色婷婷综合久久久久中文一区二区| 伊人激情| 91在线精品| 美女写真| 欧美强奸乱能| 欧美 亚洲 偷拍自拍| 亚洲国产ⅴ高清在线观看| 国产精品不卡高清在线观看| 少妇熟女一区二区三区| 无码人妻毛片丰满熟妇精品区| 97公开久久| 亚州色图欧美| 嗯啊不要啊啊在线观看视频| 九九热免费国产视频婷婷伊人 | 天天操天天7| 亚洲日韩XXX| 天天看高清麻豆| 97色视频在线| 99黄页网站| 后入式视频国产自| 免费亚洲国产精品久久一区| 青娱乐大香蕉| 亚洲诱惑| 嗯~啊~快点 死我视频免费看网站| 日日干夜夜操视频h| 啊啊啊好舒服好爽啊啊啊视频| 中文字幕加勒比海高清无码免费视频| 志村玲子视频一区二区| 亚洲色图91欧美日韩| 国产日本熟女顶级一区二区三区视频| 精品性爱一区二区| 全免费a敌肛交毛片免费| 伊欧美综合视频| 91Chinese在线| 欧美操人| 精品国产一区二区久久| 欧美五区| 97天天操天天干| 97超碰超欧美。| 亚洲色欧| 啊啊啊好想要| 精品久久久av无码免费| AV天堂国产| 午夜福利免费精品视频| 蜜臀操逼黄色视频操的好爽| 色噜噜综合网| 欧美综合骚| 97久久免费| 欧美色图在线视频少妇| 97人人夜| 亚洲精品免费中文字幕| 国产操伦| 极品白嫩美女白浆成人福利在线看| 97在线精品| 青青草久久一区网| 国产亚洲日本| 黑人在线91| 亚洲av无码国产精品字幕| www亚洲免费| 久热婷婷| 久久鲁夜| 青青草这里只有精品| 狠狠操使劲操| 日韩AV无码中文一区二区| 男人兔费天堂| 91在线丝袜视频| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 青青草无码视频| 日韩9区| 久操凹凸视频| 青草视频在线看看看看看看看看看| 大香蕉在线86| 亚州欧美在线| 国产成人超碰在线| 国产高潮AA片免费看| 中文字日本乱码| 激情文学小说一区二区 | 国产天天骚| 超碰色美女| 91这里只有精品| 国产女人91精品嗷嗷嗷嗷| 91丝袜美腿网站| 蜜桃精品视频一区二区三区| 中文字幕蜜乳av| 福利在线黄片| 10000部十八禁看电影| 日韩无码服务区| se吧提供国产乱老熟视频胖女人 | 啊啊啊啊啊啊啊好爽不要| 日韩大香蕉AV影片| 强奸乱伦资源| 色综合中文字幕不卡| 色路综合| 国产精品无码在线| 成人女人国产| 久久东京热久久| 亚洲精品美女久久久久久久久| 国产精品网站免费| 精品九区| 99色婷婷| 97综合久第一页| 日韩A优精品在线观看| 啊啊啊啊啊在线观看网址| 密臀在线视频| 激情看片网站| 嫩草 我啊~嗯~在线| 综合伊人网12色| 欧美激情总合网| 96精品久久| ..日韩av毛片精品久久久| 免费人人搞97| 天天看精品动漫视频一区| 999在线电影香蕉| 亚洲国产97在线精品一区| 天天干人人干天天日97| 久久人妻四季| 丝袜亚洲综合| 开心五月深爱五月| 亚洲中字慕不卡| 粉嫩粉嫩一区性色AV片| 久久久久一本一区二区青青蜜月| 九九久久久| 日韩欧美视频青青| 一起草在线视频| 丝袜内射| 摸奶性爱视频网站在线免费播放| 日本不卡卡一区| 乱操乱伦AV| 男生女生啊啊啊啊| 97这里有精品| 2020视频1区2区3区| 男人的天堂网页| 9热9热综合网| 亚洲无码国产探花在线观看| 欲色影视综合吧| 操逼片国产| 天天热精品| 中文字幕亚洲在线一区| 懂色AV网| 亚洲国产精品久久久久婷婷青年| A级国产欧美激情在线| 99久久无色码| 97在线精品观看视频| 亚洲偷91色| 99免费在线视频| 91青青草| 大香蕉欧美日韩| 国产精品视频精品一二| 97综合国产| 老熟女91av| 欧美色视频在线| 91热热色| av午夜玫瑰| 国产高清在线观看欧美| 国产suv一区二区三区6| 草b在线| 欧亚性爱啪啪| 欧美草草高清日韩视频| 内射中出日韩在线观看视频| 爽极品影院| 精品日日人妻| 激情图片伦理国产一区二区日韩| 亚洲色图欧美色图日韩色图| 99在线精品观看视频中文| 四虎影视在线| 黄色片,com| 操一对老熟妇爽上天视频| 强奸乱伦动态污图免费| 国内一级精品| 闷骚老熟女15P| 99热超碰在线| 久久精品中文字幕观看| 精品九区| 97久久久精品| 欧美成人9797| 福利在线黄片| 国产传媒日本欧美专区| 天天干18禁| 欧美色乱| 91久久堂| 91狠婷| 国产久久天堂资源| 日本女厕偷拍| 和协无码影院| 91精品人妻一区二区三区蜜桃臀 | 中文字幕熟女人妻丝袜丝| Aa东京男人的天堂| 国桃视频产巨乳精品一区二区在线| 夜夜嗷嗷一区二区| 黄色欧美性爱视频| 欧美性爱视频免费一区一A | 日日骚精品视频| 日韩图区| 9999久久久久| 久欲AV| 大屁股国产在线视频| 青青草久草AV| 亚洲AV不卡在线观看| 天天综合网亚洲综合网| 欧美精品欧美精品系列| 射丝袜大香蕉| 超碰偷拍| 欧美做爰无码A片视频| 久久AV无码网址| 日本人人操人人操| 激情综合婷婷| 欧美嫩性色| 国产男女无套97| 久草毛片电影怡| 蜜屁Av| 人妻喷水| 亚洲综合伊人无码久久| 91综合色噜噜| 明星性猛交ⅹxxx乱大交| 丁香色狠狠色综合久久小说| 日韩欧美亚洲自拍偷拍| 岛国在线国产| 日操粉逼逼| 国产精品久久久三级无码| 久久99热这里只频精品6学生| 午夜精品99久久久久传媒| 69人妻人人揉人人躁人人精品| 色好看av| 亚洲诱惑天堂 | 午夜精品久久久久久久| 蜜臀久久99精品久久久久久成人小说 | 亚洲激情AV| 有码人妻系列| 91精品久久久久久77777| 午夜九九| 亚洲无码偷拍| 啪一啪免费视频| 伊色综合天堂色97| 天天综合网1| 超碰97人人乐| 日本乱人伦片中文三区| 人妻系列无码专区中文有码| Julia在线播放亚洲久久| 东北女人| 亚洲风情综合网|