異常檢測(cè)

異常檢測(cè)

說說我認(rèn)為的異常

身處在每天調(diào)用量很大的業(yè)務(wù)系統(tǒng)的團(tuán)隊(duì)中庆杜,開發(fā)同學(xué)常常要關(guān)注于系統(tǒng)是否正常。說的簡(jiǎn)單點(diǎn)碟摆,就是當(dāng)前調(diào)用是否正常晃财,機(jī)器有沒有Down機(jī),又或者是用戶是否可以正常的進(jìn)行交易典蜕。

而以上說的這些就是我認(rèn)為的異常断盛。

檢測(cè)異常最好的方式

檢測(cè)異常最好的方式,我認(rèn)為是每個(gè)開發(fā)同學(xué)直接盯著自己的一個(gè)接口看愉舔,TP99钢猛,TP999,錯(cuò)誤率等等指標(biāo)在每分鐘轩缤,或者每秒鐘是否正常命迈,有沒有陡然升高的情況,人的判斷是比較準(zhǔn)確地典奉,但是受限于工作年限躺翻,線上處理異常的經(jīng)驗(yàn)。并且最重要的卫玖,人還是需要休息嘛公你!所以需要機(jī)器替代人做這件事情。讓機(jī)器幫助人做這件事情假瞬。

數(shù)據(jù)的分類

說到異常檢測(cè)陕靠,就要了解我們需要對(duì)什么來檢測(cè)異常迂尝,當(dāng)然這句話是廢話啦,身處于業(yè)務(wù)系統(tǒng)中剪芥。我們就要對(duì)業(yè)務(wù)數(shù)據(jù)做一些異常檢測(cè)垄开,那就必須將業(yè)務(wù)數(shù)據(jù)分為幾類,目前我們接觸到的業(yè)務(wù)數(shù)據(jù)有如下幾種:
機(jī)器指標(biāo)數(shù)據(jù)(CPU税肪,Memory等)溉躲、接口性能數(shù)據(jù)(AVG,TP99等)益兄、業(yè)務(wù)數(shù)據(jù)(下單量锻梳,交易成功數(shù)等)、

機(jī)器指標(biāo)數(shù)據(jù)

機(jī)器指標(biāo)顧名思義就是净捅,關(guān)于機(jī)器的一些指標(biāo)數(shù)據(jù)疑枯,例如CPU占用、MEMORY占用蛔六、網(wǎng)絡(luò)帶寬占用荆永,因?yàn)槲覀兊姆?wù)肯定是部署在某臺(tái)機(jī)器上的,這些機(jī)器的相關(guān)指標(biāo)国章,會(huì)直接影響到我們服務(wù)運(yùn)行的狀況具钥。

性能數(shù)據(jù)

性能數(shù)據(jù)顧名思義,就是業(yè)務(wù)系統(tǒng)的吞吐量相關(guān)的數(shù)據(jù)捉腥,例如我們常常說的QPS(每秒請(qǐng)求數(shù))氓拼,AVG(平均響應(yīng)時(shí)間),失敗率(分鐘失敗率)抵碟,MAX(分鐘最大請(qǐng)求時(shí)間),TP90坏匪,TP95拟逮,TP99,TP999等适滓。

業(yè)務(wù)數(shù)據(jù)

業(yè)務(wù)數(shù)據(jù)敦迄,顧名思義就是反應(yīng)業(yè)務(wù)上面的一些指標(biāo)了,對(duì)于一個(gè)交易系統(tǒng)來說凭迹,分鐘交易數(shù)罚屋。對(duì)于一個(gè)訂單系統(tǒng)來說,訂單交易數(shù)嗅绸。都是一個(gè)業(yè)務(wù)數(shù)據(jù)脾猛,在一個(gè)訪問量均勻的系統(tǒng)來說(每天訪問系統(tǒng)的用戶基本上是有規(guī)律的)這些數(shù)據(jù)也是有規(guī)律的,這些數(shù)據(jù)可以反映出來系統(tǒng)的健康狀況鱼鸠。

數(shù)據(jù)分類與異常檢測(cè)方式分析

數(shù)據(jù)分為性能數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)猛拴,當(dāng)然針對(duì)不同的數(shù)據(jù)羹铅,檢測(cè)異常的方式肯定也不是特別的相同了。 下面就為大家分析一下不同的數(shù)據(jù)如何檢測(cè)他的異常愉昆。

我們首先分析一下三種數(shù)據(jù)的特性:

  • 機(jī)器指標(biāo)數(shù)據(jù)
    針對(duì)于機(jī)器指標(biāo)數(shù)據(jù)职员,例如CPU.BUSY、網(wǎng)絡(luò)流量等跛溉,我們一般的操作是設(shè)置指定的閾值焊切,例如如果超過多少值就直接進(jìn)行報(bào)警,例如Memory或者硬盤占用芳室,Swap占用专肪,超過一個(gè)指定值的時(shí)候就要進(jìn)行預(yù)警了。都是可以用數(shù)值進(jìn)行衡量的渤愁。

  • 性能數(shù)據(jù)
    性能數(shù)據(jù)的話牵祟,包括AVG,失敗率抖格,MAX诺苹,TP系列的指標(biāo)當(dāng)然是越小越好了,一般這些數(shù)據(jù)都是穩(wěn)定的雹拄,例如平均接口的響應(yīng)時(shí)間收奔,在調(diào)用量正常的情況下是穩(wěn)定的,TP系列的數(shù)據(jù)也是相對(duì)穩(wěn)定的滓玖,失敗率正常是維持在0左右坪哄。
    如果接口或者某段代碼執(zhí)行的流程出現(xiàn)問題后,這些數(shù)據(jù)就會(huì)猛然提升势篡,例如失敗率一直是0翩肌,突然程序發(fā)生問題,那么失敗率一定是會(huì)陡然升高的禁悠。AVG和TP系列的指標(biāo)也是相同的效果念祭。

  • 業(yè)務(wù)數(shù)據(jù)
    業(yè)務(wù)數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)常常是和業(yè)務(wù)場(chǎng)景綁定的碍侦,例如團(tuán)購相關(guān)的業(yè)務(wù)粱坤,周末肯定數(shù)量會(huì)比平時(shí)多很多。例如導(dǎo)航相關(guān)的業(yè)務(wù)瓷产,可能周末也會(huì)升高站玄。外賣相關(guān)的業(yè)務(wù)會(huì)在中午和晚上兩個(gè)吃飯的點(diǎn)數(shù)量偏高。
    這些業(yè)務(wù)數(shù)據(jù)濒旦,會(huì)和一定的現(xiàn)實(shí)情況綁定株旷,有升有降,沒有一個(gè)簡(jiǎn)單的辦法去判斷業(yè)務(wù)是否異常疤估。
    例如一種簡(jiǎn)單的情況灾常,一個(gè)電商系統(tǒng)霎冯,會(huì)有很多的折扣活動(dòng),每一種活動(dòng)在后臺(tái)的業(yè)務(wù)系統(tǒng)對(duì)應(yīng)不同的規(guī)則钞瀑,如果系統(tǒng)異常的時(shí)候沈撞,可能只會(huì)導(dǎo)致某些折扣活動(dòng)發(fā)生異常,而不會(huì)一下全部影響所有的業(yè)務(wù)數(shù)據(jù)雕什。這種就是業(yè)務(wù)數(shù)據(jù)異常檢測(cè)的一個(gè)難點(diǎn)了缠俺。

異常檢測(cè)方式

上面一節(jié)已經(jīng)分析了異常的數(shù)據(jù),下面介紹一下針對(duì)于不同的異常數(shù)據(jù)贷岸,對(duì)應(yīng)的檢測(cè)方式壹士。

機(jī)器指標(biāo)數(shù)據(jù)

像文章之前提到的機(jī)器指標(biāo)的數(shù)據(jù)一般可以直接使用閾值進(jìn)行異常檢測(cè),

閾值判斷

需要檢測(cè)的指標(biāo) > 指定的閾值

滿足上面的公式則認(rèn)為是異常點(diǎn)偿警。

性能數(shù)據(jù)

針對(duì)性能數(shù)據(jù)轰绵,這種陡然升高的數(shù)據(jù)我們就可以認(rèn)為就是異常數(shù)據(jù)堕油。
例如某個(gè)時(shí)間點(diǎn)纯陨,失敗率陡然上升了艇劫,這個(gè)時(shí)候就要引發(fā)我們的注意,了解一下是網(wǎng)絡(luò)抖動(dòng)(基本上沒見過啥因?yàn)榫W(wǎng)絡(luò)抖動(dòng)產(chǎn)生的異常)還是依賴服務(wù)(DB七嫌,MQ)導(dǎo)致的異常少办。

四分位檢測(cè)

針對(duì)于此類異常,一般使用四分位檢測(cè)算法诵原。簡(jiǎn)要說明一下四分位算法英妓,四分位算法主要依賴于4分位數(shù),
根據(jù)四分位查來判斷數(shù)據(jù)是否異常绍赛。

IQR(四分位查也叫四分位距) = Q75% - Q25%

一般通過幾倍的四分位距判斷數(shù)據(jù)是否異常蔓纠,例如一個(gè)數(shù)據(jù)已經(jīng)大于3倍IQR + Q25% 則可以認(rèn)定他是一個(gè)異常點(diǎn)。

具體操作方法吗蚌,會(huì)在后期的系列文章中體現(xiàn)贺纲。

孤立森林-Ioslation Forest

使用孤立森林進(jìn)行異常檢測(cè),孤立森林的檢測(cè)方式褪测。
簡(jiǎn)單說明下:主要在于在少量數(shù)據(jù)的情況下,構(gòu)建一顆樹型結(jié)構(gòu)潦刃,按照數(shù)據(jù)大小侮措,進(jìn)行樹的左右分布,直到數(shù)據(jù)分布到子節(jié)點(diǎn)乖杠。異常點(diǎn)的數(shù)據(jù)因?yàn)榇嬖诘奶貏e少量分扎,所以會(huì)被快速的分配到葉子節(jié)點(diǎn),只要找出小于平均葉子幾點(diǎn)路徑的可以認(rèn)為就是異常點(diǎn)了胧洒。

孤立森林

s(x,n)就是記錄x在由n個(gè)樣本的訓(xùn)練數(shù)據(jù)構(gòu)成的iTree的異常指數(shù)畏吓,s(x,n)取值范圍為[0,1]墨状。歐拉常數(shù)值為0.5772156649。

對(duì)于s(x,n):
如果分?jǐn)?shù)越接近1菲饼,其是異常點(diǎn)的可能性越高肾砂;
如果分?jǐn)?shù)都比0.5要小,那么基本可以確定為正常數(shù)據(jù)宏悦;
如果所有分?jǐn)?shù)都在0.5附近镐确,那么數(shù)據(jù)不包含明顯的異常樣本。

具體的操作方法饼煞,會(huì)在后期的系列文章中體現(xiàn)源葫。

業(yè)務(wù)數(shù)據(jù)

業(yè)務(wù)數(shù)據(jù)相對(duì)于機(jī)器指標(biāo)數(shù)據(jù)和性能數(shù)據(jù),檢測(cè)異常的方式比較復(fù)雜砖瞧,不只是一個(gè)固定的指標(biāo)就可以衡量數(shù)據(jù)是否正常息堂。而且數(shù)據(jù)基于不同的業(yè)務(wù)場(chǎng)景,例如團(tuán)購是周末單量的块促,例如電商荣堰,可能是晚上單量比較高,例如直播系統(tǒng)也是晚上的觀看用戶比較高褂乍,數(shù)據(jù)是分時(shí)段的持隧,而且有明顯的業(yè)務(wù)高低峰。在不同的時(shí)間可能有不同的閾值逃片。并且可能在節(jié)假日的時(shí)候有明顯的流量區(qū)別屡拨。

根據(jù)業(yè)務(wù)數(shù)據(jù),我們需要采用不同的異常檢測(cè)算法褥实。

首先我們要有一個(gè)前提:

業(yè)務(wù)數(shù)據(jù)是按照時(shí)間順序記錄的一組數(shù)據(jù)呀狼,其中觀察的時(shí)間可以是年份、季度损离、月份或其他任何時(shí)間形式哥艇。

我們要想檢測(cè)業(yè)務(wù)數(shù)據(jù)的異常狀況,就需要對(duì)未來的業(yè)務(wù)數(shù)據(jù)做出一個(gè)預(yù)測(cè)僻澎,通過判斷預(yù)測(cè)值與實(shí)際值是否相符的(上下浮動(dòng)多少)的方式來進(jìn)行檢測(cè)異常貌踏。

常用的預(yù)測(cè)方法:

  • 簡(jiǎn)單算術(shù)平均值
  • 雙指數(shù)平滑(Holt-Linear)
  • 三指數(shù)(Holt-Winters)

基于指數(shù)平滑的異常檢測(cè)

通過使用多個(gè)具有相同特性的時(shí)間段,通過雙指數(shù)或三指數(shù)的預(yù)測(cè)算法預(yù)測(cè)下一個(gè)周期的數(shù)據(jù)窟勃。計(jì)算數(shù)據(jù)的方差祖乳,通過K-Sigma的算法判斷下一個(gè)周期的數(shù)據(jù)是否在K-Sigma之內(nèi),從而判斷是否為異常

預(yù)測(cè)數(shù)據(jù) - 真實(shí)數(shù)據(jù) <=> K-Sigma 

后期有系列文章

基于移動(dòng)均值的方式的異常檢測(cè)

移動(dòng)均值的檢測(cè)方式秉氧,主要應(yīng)用于在1:N眷昆,這種場(chǎng)景,例如我們有用戶的入口數(shù)據(jù),用戶請(qǐng)求APP的數(shù)據(jù)亚斋,系統(tǒng)的轉(zhuǎn)化率基本上是一個(gè)不怎么變化的值(如果是穩(wěn)定系統(tǒng))作媚,那么我們可以通過,請(qǐng)求數(shù)*轉(zhuǎn)化率帅刊,來判斷用戶下單數(shù)纸泡。如果某些場(chǎng)景下,部分業(yè)務(wù)系統(tǒng)有問題了厚掷,某些優(yōu)惠活動(dòng)出現(xiàn)系統(tǒng)BUG弟灼,無法計(jì)算優(yōu)惠。這樣請(qǐng)求數(shù)不會(huì)改變冒黑,但是單量就會(huì)改變田绑,此時(shí)請(qǐng)求轉(zhuǎn)化率會(huì)降低很多。通過降低的數(shù)值我們可以判斷異常抡爹。

請(qǐng)求量 * 轉(zhuǎn)化率 - 真實(shí)數(shù)據(jù) = 差值

差值采用K-Sigma算法進(jìn)行異常檢測(cè)掩驱。

后期有系列文章

基于相關(guān)度的方式進(jìn)行異常檢測(cè)

對(duì)于有指定轉(zhuǎn)化率的方式可以使用移動(dòng)均值的方式,但是在不同時(shí)間段轉(zhuǎn)化率不同的情況下冬竟,則不能使用移動(dòng)均值的方式進(jìn)行異常檢測(cè)了欧穴,這個(gè)時(shí)候就需要使用,相關(guān)度的方式泵殴。主要是看兩條曲線的相關(guān)度分?jǐn)?shù)涮帘。

使用相關(guān)度公式:


image.png

根據(jù)相關(guān)度的分?jǐn)?shù)進(jìn)行異常檢測(cè)。

后期有系列文章

基于角度的異常檢測(cè)

如果兩條曲線強(qiáng)相關(guān)笑诅,例如用戶訪問某個(gè)接口直接轉(zhuǎn)換為用戶單量调缨,則我們只需要進(jìn)行兩個(gè)數(shù)據(jù)的角度偏移就可以判斷數(shù)據(jù)是否異常了

image.png

這樣如果一個(gè)數(shù)據(jù)上升一個(gè)數(shù)據(jù)下降則夾角會(huì)非常大,可以快速了解到數(shù)據(jù)是否正常吆你∠乙叮可以通過tan等數(shù)據(jù)進(jìn)行異常判斷

此處只是一個(gè)想法

變點(diǎn)檢測(cè)

變點(diǎn)檢測(cè),主要應(yīng)用于與基于角度的異常檢測(cè)類似妇多,主要也是使用角度的方式來進(jìn)行異常判斷伤哺,只不過不需要另外一條參考線,變點(diǎn)檢測(cè)主要是看單條曲線上的角度變化(只適用于平滑者祖,數(shù)據(jù)量大的)情況立莉。

image.png

三種曲線的曲線夾角不同,當(dāng)夾角越小的時(shí)候說明變化抖動(dòng)越加的明顯七问。

基于STL的異常檢測(cè)

一個(gè)基于時(shí)間序列的數(shù)據(jù)可以被分解為:

加法模型(季節(jié)性變化不明顯):

時(shí)間序列(Time Series) = 季節(jié)數(shù)據(jù)(Seasonal) + 趨勢(shì)數(shù)據(jù)(Trend) + 噪點(diǎn)數(shù)據(jù)(Random | noise)

乘法模型(季節(jié)性變化明顯):

時(shí)間序列(Time Series) = 季節(jié)數(shù)據(jù)(Seasonal) * 趨勢(shì)數(shù)據(jù)(Trend) * 噪點(diǎn)數(shù)據(jù)(Random | noise)

將公式轉(zhuǎn)換:

噪點(diǎn)數(shù)據(jù) = 時(shí)間序列(Time Series) - 季節(jié)數(shù)據(jù)(Seasonal)(可得) - 趨勢(shì)數(shù)據(jù)(Trend)(可預(yù)測(cè))桃序;

這樣我們只要判斷噪點(diǎn)數(shù)據(jù)是否在可以接受的范圍之內(nèi)就可以判斷數(shù)據(jù)是否異常了。

后期有系列文章

需要注意

缺點(diǎn)補(bǔ)全

對(duì)于異常點(diǎn)的數(shù)據(jù)烂瘫,我們需要進(jìn)行去除,防止在下次計(jì)算中,異常點(diǎn)的數(shù)據(jù)對(duì)我們的數(shù)據(jù)有影響坟比。

而去除后芦鳍,需要對(duì)數(shù)據(jù)進(jìn)行補(bǔ)全處理,這個(gè)時(shí)候就需要運(yùn)用缺失值處理了

采用:插值法葛账,均值法或中位數(shù)進(jìn)行缺點(diǎn)補(bǔ)全柠衅。

人工反饋

有些異常情況,例如某些情況下的數(shù)據(jù)籍琳,肯定會(huì)有異常的情況菲宴,例如我去外賣上面買東西,但是那個(gè)時(shí)間點(diǎn)外賣店鋪關(guān)門了趋急,這個(gè)時(shí)候是由于既定實(shí)時(shí)導(dǎo)致的單量下降喝峦,此時(shí)需要把這個(gè)點(diǎn)的數(shù)值進(jìn)行人工反饋。由人工來進(jìn)行判斷是否需要報(bào)警呜达。

寫在最后

以上是目前的一些個(gè)人在工作中的總結(jié)和一些個(gè)人的想法谣蠢,接觸異常檢測(cè)方面的時(shí)間較少,有些專業(yè)名詞可能不是很對(duì)查近,希望同學(xué)可以指正眉踱。

后續(xù)有時(shí)間的時(shí)候會(huì)繼續(xù)把上面的相關(guān)算法計(jì)算方式補(bǔ)全。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末霜威,一起剝皮案震驚了整個(gè)濱河市谈喳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌戈泼,老刑警劉巖婿禽,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異矮冬,居然都是意外死亡谈宛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門胎署,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吆录,“玉大人,你說我怎么就攤上這事琼牧』煮荩” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵巨坊,是天一觀的道長(zhǎng)撬槽。 經(jīng)常有香客問我,道長(zhǎng)趾撵,這世上最難降的妖魔是什么侄柔? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任共啃,我火速辦了婚禮,結(jié)果婚禮上暂题,老公的妹妹穿的比我還像新娘移剪。我一直安慰自己,他們只是感情好薪者,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布纵苛。 她就那樣靜靜地躺著,像睡著了一般言津。 火紅的嫁衣襯著肌膚如雪攻人。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天悬槽,我揣著相機(jī)與錄音怀吻,去河邊找鬼。 笑死陷谱,一個(gè)胖子當(dāng)著我的面吹牛烙博,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烟逊,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼渣窜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了宪躯?” 一聲冷哼從身側(cè)響起乔宿,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎访雪,沒想到半個(gè)月后详瑞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡臣缀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年坝橡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片精置。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡计寇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脂倦,到底是詐尸還是另有隱情番宁,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布赖阻,位于F島的核電站蝶押,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏火欧。R本人自食惡果不足惜棋电,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一茎截、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧离陶,春花似錦稼虎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哀军。三九已至沉眶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杉适,已是汗流浹背谎倔。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猿推,地道東北人片习。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蹬叭,于是被迫代替她去往敵國(guó)和親藕咏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容