ruby conllter中怎么定义表数据求和方法

Python014

ruby conllter中怎么定义表数据求和方法,第1张

描述的不够具体,这样别人无法给出具体的公式。

假如是一个工作簿的不同表格,但求和的单元格范围相同,如:

=SUM(Sheet1:Sheet2!B3:B20)

如果各表求和的单元格范围不相同,如:

=SUM(B3:B20,Sheet2!C3:C20)

意大利黑手党,仍然是当今世界上最大的犯罪组织。

意大利波旁王朝时代的帮会组织,发展成为今天的跨国犯罪集团,它经历了一百多年的罪恶史。

一百多年来,黑手党敲诈勒索、走私贩毒、恐吓凶杀、控股投机以致设赌局、开妓院,几乎是无所不为;一百多年来,它不断向政界、军界、企业、股市和金融业渗透,不断地垄断经济、操纵政府、干扰时局、制造灾难,从而成为超级犯罪集团。

它承袭了“马菲亚”的幽魂,集中了人类所有的罪恶;它由意大利西西里岛向全球辐射,蔓延世界绝大部分地区,成为全球黑道社会的“教父”。

在一次又一次的打击下,一百多年来,虽然它的组织一个个被破获,它的头目一个个倒下,但是时至今日,黑手党不仅没有绝种,反而穷凶极恶,正一步步地向高科技领域“开拓”,利用现代高科技手段进行“智力犯罪”,依然干扰和破坏人类社会的正常生活秩序。

《光明日报》16日刊载一篇题为《西西里黑手党改头换面》的文章说,意大利西西里岛黑手党经过10多年的“改革”,组织体系、成员机构、行动战略都发生了巨大改变,已经成为一个更隐蔽、更具野心和更难对付的犯罪组织。现将文章摘发如下:

1993年之前,意大利黑手党曾一度实行“挑战政权

”、同国家正面对抗的战略,一大批代表国家意志的正直官员被黑手党残酷杀害,其中包括有被誉为“反黑手党的旗帜”和“活的黑手党资料库”的意大利著名大法官法尔科内,西西里大区主席马塔莱拉,前宪兵司令、西西里省督基耶萨将军等人。

黑手党猖狂肆虐,激起天怒人怨。意大利政府颁布了一系列紧急法令,成立全国反黑机构,调集军队开进西西里,对黑手党展开全线反击。到了1993年1月,凶残暴戾的黑手党元凶里纳被抓获,黑手党自古相沿的“奥梅塔”(一种攻守同盟的帮规)崩溃,其最高领导机构“库波拉”的绝大多数成员和数千名党徒落入法网,黑手党陷入它有史以来的最深重危机。

此时,曾长期躲在幕后襄助里纳、现年71岁的普洛文扎诺成为黑手党一号首领,并对西西里黑手党的组织体系、战略和策略进行了重大调整和“改革”。 根据警方掌握的情况,目前黑手党沿循半个世纪之久的金字塔式结构已不复存在。其基层辖区进行了重新划分,由家族首领选举的区长职位和省级委员会被取消了,“库波拉”也被一个类似政府的领导机制所取代。新的组织结构分为三个层次:第一层次由普洛文扎诺和绝对效忠他的6名“顾问”组成,这些顾问是黑手党内的“专家”,分别主管毒品走私、工程承包、财务及武装力量;第二层次是巴勒莫、阿格里琴托、卡塔尼塞塔等西部三省的黑手党强势家族的重量级人物;第三层次是西西里的所有黑手党家族。

经过一场“大反思”,黑手党放弃了“挑战政权”的一切行动,转而实行“无声战略”。新的战略要点是:避免内讧和相互争斗;向国家机构迂回渗透;集中精力攫取财富和权力。

黑手党现在直接或间接地控制着很多企业,部分黑手党家族又重操20多年前的旧业,进行大规模国际贩毒。

总的说来,目前黑手党已与里纳时代有很大不同。在西西里生存演化已逾4个世纪的这颗毒瘤,在可预见的将来还难以除掉。(

黑手党(Mafia)起源於今日意大利的西西里岛及法国的科西嘉岛,指当地秘密结社的犯罪组织。今时今日,这些犯罪组织不单只活跃於意大利本土,百多年来(主要在20世纪初)更随著意大利裔移民而散布於世界各地,特别是美国东岸。他们在美国的势力於经济大萧条时期兴起,到20世纪中期达至最强盛,直至1970年代至1980年代联邦调查局的一连串调查瓦解了他们的势力。他们的行动,包括了暗杀、非法买卖、妨碍司法公正虽然他们的势力已大不如前,但他们仍然影响著美国的潮流文化。不少电影、电视剧,甚至广告都与他们的形象或生活有关。

时至今日,“黑手党”这个名词不单单指这些意大利裔的犯罪份子。受该组织的影响,在世界其他国家,也出现了类似的名为黑手党的社团组织,如:俄罗斯黑手党、日本的Yakuza、中国的三合会等。这些份子有时也被称之为当地的黑手党,但日常所指的黑手党,仍然指这一班美国的西西里裔犯罪份子。另一方面,同样是意大利人,但位於拿波里的犯罪组织并不叫黑手党,而是另外有一个叫“Camorra”的名称。

起源与历史

黑手党的英文“Mafia”源自阿拉伯语,意思是指“逃难”。这个名词被借用来指一班在西西里岛居住的中年男子的松散组合。当时的西西里岛被突厥人及诺曼人占领,他们组织起来,原先是要保护家人,免受这些侵略者的骚扰。后来,这班人演变成一班为了复仇而私自执行法律的人,并进而演变成犯罪组织。在当地,成为黑手党的成员是一种光荣,会被称为“mafioso”,意思就是“man of honour”(君子)。他们会黑手党的起源并不算长久:他们与中世纪时的秘密组织无关。事实上,黑手党的兴起与19世纪后期意大利的统一有著密切的关系。他们主要聚集於西西里当地富翁人家集中的深绿海岸地带。在以巴勒莫郊外那些田园牧歌般的柑橘林与柠檬林为基础的,现代化的资本主义出口企业之间。

巴勒莫是这座有些世风日下的岛屿的核心(在意大利统治阶级看来),它的权力和资本都集中在此处,并且正是在这些橘林间,在这片土地上,黑手党发展了它的手段:有偿保护,谋杀,领地统治以及帮派合作。所以,循序渐进地,黑手党开始宣称其作为地方政府施政工具的地位。合作关系与有偿保护在黑手党和土地所有者之间是普遍存在的。黑手党需要土地所有者,但是同样地,土地所有者也需要黑手党。地方政府也常常串通在这种关系之间。黑手党如同雇主,支配着在这片土地上为其工作的人们,因此,他们的势力,连同那些源自柑橘园的国际贸易,便蒸蒸日上地成长起来了。

黑手党的起源

一项有趣的语源学研究指出,「黑手党(mafia)」 一词曾经是一个形容词-「mafioso」,其使用可追溯至十八世纪,原意指「美丽、优秀、完美」。就像许多字词一样,这一个字眼最终演变为不同的意思。亨纳尔·赫斯(Henner Hess),《黑手党及其成员(Mafia and Mafiosi)》(ISBN 0347010083)的作者,说到“最终‘mafia’这个词被主要用作有组织的犯罪,直到搜索枯肠的记者,意大利北部困惑的法理学家以及外国作家将它解释为一种组织的名称。于是,黑手党一词的显现与这一秘密社会的显现就联系起来,从而引发了许多奇幻的思索。”

赫斯进一步引用了“Morte alla Francia Italia anela(意大利为法国人之死而泣)!”这个口号作为Mafia可能的词源。其他略显牵强的缩写有“Mazzini autorizza furti, incendi, avvelenamenti(马志尼准许偷窃、纵火及投毒).”以及“mothers and fathers Italian association(父亲与母亲们的意大利人社团).”终于,他发现“将最卓著的古代风俗对比现今社会的理论暗示,Mafia是阿拉伯语 mu afah堕落的结果,其中mu表示诸如神圣、力量、气魄、庇护之类的含义,afah意味着保护。Mu afah因而成为保卫其成员安全的联盟。”

昔日美国,暴徒之首约瑟夫·邦伦洛(Joseph Bonanno)提供了一种由来,这令人困惑地涉及到了西西里晚祷事件。在1828年,一次由西西里爱国者组织的,对抗法国的起义爆发。邦伦洛声称法国士兵曾经亵渎了一位西西里少女,她发狂的母亲飞奔在巴勒莫的大街小巷,哭喊着“ma fia(我的女儿)”,导致巴勒莫的青年杀害当地的法国人以报仇雪恨。

意大利的黑手党

在意大利像黑手党样的组织已经存在了几个世纪,它们区别于在不同的地区。直到20世纪50年代,意大利黑手党还主要集中在田园乡下,但自那以后便传播到了城市(例如巴勒莫)且随后变为集中了毒品、卖淫的更具国际性的组织。意大利黑手党以家庭为单位,主要以西西里为代表。在其他地区也有其他类似的组织,如那不勒斯的克莫拉等。

其他地区存有类似的组织:卡拉布里亚(Calabria)的Ndrangheta,阿普利亚(Apulia)的Sacra corona unita,那不勒斯(Naples)的Camorra。

在意大利法西斯专政期间,巴勒莫的区长切萨雷·莫里(Cesare Mori)利用种种特殊势力抵制黑手党的活动。许多黑手党人在他的压制之下锒铛入狱,另有不少不得不越洋渡海,远走他乡。但是事实上,西西里黑手党中的最关键的几个党魁都是法西斯组织MVSN中的成员。在MORI的行动中受到牵连的只是一些低层的犯罪嫌疑人而已。主要是出于宣传的需要。然而也有其他人称 这不过是美国的宣传为了在二战中拉近美国政府和黑手党的关系合作的又一种说法罢了 很多逃脱了追捕的黑手党党徒流亡到了美国。他们当中有后来最终统领黑手党美国支部的约瑟夫博纳诺,昵称乔香蕉。在1943年进攻意大利的过程中,美国人利用当时的综合形势以及美国黑手党与西西里的联系。当时正在美国服刑的卢西阿诺(Lucky Luciano)以及黑手党的其他成员突然间变成了参加美国抗击法西斯战斗的可贵的爱国者。作为一个新美国公民,卢西阿诺接受了政府的道歉后,在1946年得以返回西西里,继续他的活动。

直到意大利在二战中投降后,黑手党的势力才得以壮大。然而在20世纪80、90年代,一系列的黑手党党派间的“帮派大战”中,不少声名显赫的黑手党党徒被谋杀。而新生代黑手党成员中,许多人倾向于将工作的重点置于高智商犯罪,而对传统的敲诈勒索不屑一顾。作为对此进展的反应,意大利新闻界惯用“La Cosa Nuova(新事物)”指代经过如上整建的组织。

执法与黑手党

特别是在意大利,黑手党暗杀警方公诉人和法官可谓由来已久,目的是挫败警察机关的旺盛精力。在美国,针对国家权威的谋杀却十分罕见,这主要是因为害怕造成激烈的反抗情绪。

据说暴徒达基·舒尔兹(Dutch Schultz)被他的同党杀害,便是因为后者担心他会执行针对纽约市检察官托马斯·杜威(Thomas Dewey)的暗杀。

在美国,黑手党的势力于20世纪70年代末和80年代初急转直下,这是因为《反犯罪组织侵蚀合法组织法(RICO Act)》及类似法律的出台,将从属于执行非法活动的组织定为犯罪,并且政府规划了证人保护计划。与此同时,死亡、联姻、意大利赴美移民短缺和文化同化,导致了美籍意裔黑手党团体日趋消亡。所有上述因素结合,令美国的黑手党走向衰败。

20世纪中叶,黑手党号称已经渗透了美国的许多工会组织,其中包括运输工人工会,该工会失踪的会长吉米·霍法(Jimmy Hoffa)被相信是遭黑手党暗杀了。在20世纪80年代,美国联邦政府下定决心,成功地移除了黑手党在工会组织中的势力。

有证据显示,在意大利,通过更健全的法律与“缄默法则(code of silence)”的崩解,强硬执法似乎最终对黑手党团体占据了优势。在与黑手党军事力量交锋的过程中,许多所谓的Pentiti(接受了宽大处理的脱离黑手党的成员)为政府立下了汗马功劳,例如多玛索·布吉亚达(Tommaso Buscetta)。据说黑手党保留了强大的金融影响力。因此,新近的调查经常会研究可疑分子的经济活动。

在最近几十年,据推测,一个与黑手党有关系的最著名人物之一的Toto Riina命令谋杀了法官Giovanni Falcone 和 Paolo Borsellino.

最近,前意大利总理朱利奥·安德莱奥蒂(Giulio Andreotti),意大利天主教民主党成员,被控与黑手党结有联系,但是他最终被判无罪,因为审判涉及行为已超出追诉期限。

组织结构

美国的黑手党最初在纽约地区取得势力, 再逐渐地由小规模邻域业务发展至全市性甚至国际性的组织. 由五个以早期卓越的成员的名字命名的家族统治(布亚诺家族,科洛博家族,甘比诺家族,杰诺维塞家族及卢切斯家族)。

每个家族根本上被一个“堂(Don)”所控制,堂与帮派的具体行动之间被亲信层层隔离。根据流行的说法,堂最接近并最信任的顾问叫做Consigliere(意大利语中的“法律顾问”)。事实上,Consigliere类似于负责调解家族内部纠纷的“倾听官(Hearing Officer)”,也许同时还是“二把手”。黑手党内部还有为数众多的“军团(Regime)”,由数量不尽相同的“士兵(Soldier)”组成,用以领导具体行动。

各军团均由一位“司令”领导,司令直接对堂负责。每当堂做出一项决议,他决不会直接向负责执行的士兵传达命令,而是由一系列的军团司令代之传递指示。如此,当下级成员被司法部门俘获,上级成员便可金蝉脱壳,免受法律制裁。这般结构在《教父》中得到了不朽的艺术描写。

入会仪式密不可宣,且继承自口述传统,传言包括点燃一张绘有圣像的卡片,尔后相互抛掷传递燃烧的碎片。入会者被称作“亡命徒(Made Man)或好汉”,并接受其家族的庇护。

亡命徒的暗杀行动必须经过家族首领的核准,否则私人的报复行为,可能触发一场战争。在战争的情形中,家族成员将会前去“床垫(Mattresses)”——租赁空敞的公寓,并让士兵们轮流在公寓地板上的床垫休息,其余值班的人守在窗旁,时刻准备向射程内的敌对家族成员开火。

西西里岛的黑手党

Salvatore 'Toto' Riina

Tommaso Buscetta

Bernardo Provenzano

Luciano Leggio

Giovanni Brusca

纽约的五大黑手党家族

Bonanno family(布亚诺家族)

Joseph Bonanno

Carmine Galante

Alphonse "Sonny Red" Indelicato

Salvatore Maranzano

Dominick "Sonny Black" Napolitano

Joe Pistone, "Donnie Brasco", 隐蔽的联邦调查局特工

Rusty Rastelli

Benjamin "Lefty Guns" Ruggiero

Joe Massino, “最后的堂”,在2006年七月被判有诈骗罪与谋杀罪

Colombo family(科洛博家族)

Joe Colombo

Carmine Persico

Joe Profaci

Gambino family(甘比诺家族)

Albert Anastasia

Crazy Joe Gallo

Roy Demeo

Carlo Gambino

Paul Castellano

John Gotti

Sammy "The Bull" Gravano

Al Mineo

Genovese family(杰诺维塞家族)

Frank Costello

Frank "Funzi" Tieri

Vito Genovese

Vincent "The Chin" Gigante

Lucky Luciano

Giuseppe "Joe The Boss" Masseria

Fat Tony Salerno

Joe Valachi, 第一位公开背叛"omertà"的黑手党成员

Lucchese family(卢切斯家族)

Tommy Gagliano

Tommy Lucchese

Tom Reina

Joe Ionno

James Jippens

其他已知黑手党成员及相关人士

Meyer Lansky

Nicodemo Scarfo

Jack Ruby

Bugsy Siegel

Jimmy Hoffa

Albert Anastasia

斯克兰顿/匹茨顿/东北宾夕法尼亚

William "Big Billy" D'Elia

Russel Bufalino

Santo Volpe

Frank Sheeran

芝加哥

Tony Accardo

Joseph Aiuppa

Al Capone

James Colosimo

Vincent Drucci

Bugs Moran

Jack McGurn

Frank Nitti

Dean O'Banion

Paul Ricca

John Roselli

Anthony Spilotro

Michael Spilotro

Johnny Torrio

Hymie Weiss

Frankie Yale

佛罗里达

Santo Trafficante, Sr.

Santo Trafficante, Jr.

怀疑有黑手党活动的国家

下列的国家怀疑、或曾有记录过有自己的黑手党组织。通常黑手党为求生计,都会与其他国家的黑手党联系。这些外国的黑手党通常都与意大利本土的黑手党有联络。

阿尔巴尼亚

澳大利亚

巴西

波利维亚

加拿大

中国大陆

哥伦比亚

多美尼加共和国

法国

海地

爱尔兰

以色列

意大利

牙买加

日本

科威特

墨西哥

秘鲁 (参见Aeroperu)

波兰

俄罗斯

塞尔维亚与黑山

西班牙

斯洛伐克

泰国

英国

美国 (包括波多黎各)

越南

黑手党的党规

入会仪式

加入黑手党的仪式严格而神圣,除了必须有“推荐者”之外,还必须宣誓并进行肉体上的考验。通常,仪式开始时,入会者要先用匕首将自己的10处手指逐个扎破,让血液滴在圣像上,再点燃圣像,置于两手之间,以便考察入会者忍受圣像灼烤手指的痛苦的能力。这道程序过后,入会者当众宣誓,宣读如下誓词:

我宣誓:

我永远忠于我的兄弟们。在任何时候,我都不会欺骗和出卖他们。我一定会竭尽全力保护他们。在非常时刻,我一定会咬紧牙关,绝对保守秘密;只有见了上帝后,我才算脱离他们。这张画正在化为灰烬,我的食指正在滴血,如果我不遵守誓言,我的肉体就会像刚才的圣像一样化为灰烬。

圣像通常是用蜡制作的,但也有的是画在纸或羊皮上的,燃烧的时间可能长短不一,但无论多长时间,入会者都必须坚持到底。宣誓完毕,入会者就要与当场所有的人拥抱和亲吻,以表示他已经与所有的黑手党成员是一家人了。如果条件允许,他们还会朝圣像的灰烬上开枪,以渲染入会仪式的气氛。

新成员在通过入会仪式后,在很长的时间内通常都无法见到比自己高一级的头领,除非他有非常杰出的贡献。这样做的目的,除了保持其组织上的神秘性之外,更重要的目的在于组织的保密需要,防止外人打入黑手党内部。

黑手党语言

为了保持成员之间联络的严密性,防止泄密,黑手党经过上百年的演化,已经拥有了一套自己的完整语言,这些语言包括暗语、黑话、图形和密码等,有的语言甚至是以身体动作来完成的,如用手、头、肩、脚、腰甚至舌头来完成。在这些语言中,暗语是黑手党最主要的内部语言。需要说明的是,黑手党的语言与一般的土匪强盗完全不同,因而不能与其他任何犯罪团伙通用。

意大利黑手党问题专家克莱·潘达莱奥内经过多年的研究以及对黑手党成员口供进行总结,已经破译了大量的黑手党暗语,例如:

开罗猫、下水道盖子——巡警队

关灯——杀人

关灯的人——杀人犯

骑马的人——带枪的人

安乐椅——富翁

修道院长——女性死尸

白点儿——来人没带武器

煤块——神甫

捡烟头的——贼

干货——被干掉的人

落水者——被宪兵抓走的人

弹琴的人——被警察抓走的人

带毛鸡——宪兵

仓库里的老鼠——狱警

吉卜赛人——执勤的宪兵

黑樱桃——漂亮的女人

丝绒——情妇、妓女

公寓——监狱

朋友——黑手党的律师

朋友的朋友——为黑手党出力的政客,即“戴黄手套的人”

矿山——妻子

公牛——非黑手党匪帮头目

围巾——女佣人

鞋跟——保镖

假的——生人

柳条——军用步枪

仓库——警营、兵营

白菜——左轮手枪

吹气的——小口径步枪

胆大的人——执行谋杀任务的人

胳膊肘——不肯帮忙的人

有经验——逃往国外

脏东西——黄金

鸟嘴——黑手党收取的保护费

弄湿鸟嘴——给黑手党送钱

搬开石头——执行复仇任务

噤声律令

你必须学会沉默,学会遵守秘密规定;

没有武器就不能生存;

不与任何司法部门合作,违者必死;

只有到地狱中才能打破沉默;

只把他杀死而别人却不知道他为什么而死,就等于他还活着;

死者的血会窃窃私语;

你必须学会忍耐,谁夺了你的面包,你就要夺了他的性命;

我死了有人埋,我活着就杀你;

南瓜南瓜,谁敢说话,死于地下;

不达目的誓不罢休,为了达到目的可以使用任何手段。

黑手党10条党纲

1. 黑手党高于一切,高于妻子、儿女、国家和宗教信仰。

2. 无条件服从命令,包括谋杀。

3. 不与任何法律实施者进行任何有害于黑手党的合作。

4. 不向外人提供组织内部的任何事情。

5. 成员间相互尊重,不允许互相伤害、侮辱和盗窃。

6. 欠债必还。禁止与其他任何成员的妻子、姐妹、女儿有任何关系,除非有某种光荣的使命。

7. 成员间必须相互帮助,用鲜血为一切屈辱雪耻。

8. 必须尽一切可能保护和营救处于险境中的同胞。

9. 根据上级的愿望,成员有权通过自己的努力和劳动,来获得他应得的财产分配。

10. 必须保守秘密。对于违反者,本组织有权将其处死

荣誉者

每个家族由数十名甚至成百上千名“荣誉者(Uomod’onore)组成。这些荣誉者又可以分为若干个行动小组,其活动由各梯次的分层头目负责。

荣誉者是黑手党的组织细胞,他们必须遵循三个原则:暗示、信息和沉默。为了保密的需要,他们之间的联系和交流必须以暗语进行;为了行动的快捷与准确,他们之间必须及时沟通信息;而沉默则是黑手党人永远遵守的法则,无论在什么情况下,都不允许成员出卖自己的同伙,否则,他们就会想尽一切办法除掉这个泄露秘密的人。

每个荣誉者都有自己特定的联系人,一般不与上一层的头目打交道,除非他有“非常突出的表现”。黑手党规定,荣誉者之间不能相互辱骂,尤其是不能辱骂对方是“警棍”或“恶魔”,因为他们总是把自己看成是正义的执行者。

家 族

家族是黑手党组织的基本纽带,他们的行动大都是以家族为单位展开的;他们的组织之所以比很多政府组织更加严密和高效,其秘密就在于严密的家族体制。

黑手党选举各级头目非常慎重,家族头目也叫家族代表或族长,只有本家族中的成员才有资格成为族长。他们必须至少符合三个方面的条件,才有资格成为候选人,即具有一定的资历和工作经验;忠诚于他们自己的事业;能够维护整个家族的利益。荣誉者一旦被推选为某一层次的头目后,就意味着他已经具备了这样一些权力:制定本组织内部的规矩和自行处罚那些变节的人;对一些重大的问题做出决定;以及有权力解决本组织内部发生的一切争端。

族 长

族长是本家族最高权力的执行者,他们有权力处置本家族内部的一切事务。在意大利,各家族之间相互联合,成立了“库波拉(Cupola)”,即“黑手党省委”,它负责仲裁家族间的纠纷和矛盾。而在美国,30年代成立的“美国黑手党全国委员会”,也具有相同的作用。

http://lz.book.sohu.com/serialize.php?id=88

Prometheus有4大指标类型(Metrics Type),分别是Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)和Summary(摘要)。

这是在Prometheus客户端(目前主要有Go、Java、Python、Ruby等语言版本)中提供的4种核心指标类型,但是Prometheus的服务端并不区分指标类型,而是简单地把这些指标统一视为无类型的时间序列。

注意:

<font color=red>上面这句话应该这么理解,四个指标类型,实际上就是客户端采集数据的四个维度,采集这四个维度的指标数据,但是最终汇总到服务端那里,则是对这四个维度无感的,只是简单的作为时间序列存储起来。</font>

 计数器表示一种单调递增的指标,除非发生重置的情况下下只增不减,其样本值应该是不断增大的。例如,可以使用Counter类型的指标来表示服务的请求数、已完成的任务数、错误发生的次数等。

 但是,计数器计算的总数对用户来说大多没有什么用,大家千万不要将计数器类型应用于样本数据非单调递增的指标上,比如当前运行的进程数量、当前登录的用户数量等应该使用仪表盘类型。

为了能够更直观地表示样本数据的变化情况,往往需要计算样本的增长速率,这时候通常使用PromQL的rate、topk、increase和irate等函数,如下所示:

如上所示,速率的输出rate(v range-vector)也应该用仪表盘来承接结果。

在上面的案例中,如果有一个标签是Device,那么在统计每台机器每秒接受的HTTP请求数时,可以用如下的例子进行操作。

补充

 这背后与rate()的实现方式有关,rate()在设计上假定对应的指标是一个计数器,也就是只有<font color=red>incr(增加)和reset(归零)</font>两种行为。而执行了sum()或其他聚合操作之后,得到的就不再是一个计数器了。举个例子,比如sum()的计算对象中有一个归零了,那整体的和会下降,而不是归零,这会影响rate()中判断reset(归零)的逻辑,从而导致错误的结果。

 increase(v range-vector)函数传递的参数是一个区间向量,increase函数获取区间向量中的第一个和最后一个样本并返回其增长量。下面的例子可以查询Counter类型指标的增长速率,可以获取http_requests_total在最近5分钟内的平均样本,其中300代表300秒。

 rate和increase函数计算的增长速率容易陷入<font color=red>长尾效应中</font>。比如在 某一个由于访问量或者其他问题导致CPU占用100%的情况中,通过计算在时间窗口内的平均增长速率是无法反映出该问题的

 为什么监控和性能测试中,我们更关注p95/p99位?就是因为长尾效应。由于个别请求的响应时间需要1秒或者更久,<font color=red>传统的响应时间的平均值就体现不出响应时间中的尖刺了</font>,去尖刺也是数据采集中一个很重要的工序,这就是所谓的长尾效应。p95/p99就是长尾效应的分割线,如表示99%的请求在XXX范围内,或者是1%的请求在XXX范围之外。99%是一个范围,意思是99%的请求在某一延迟内,剩下的1%就在延迟之外了。只是正推与逆推而已,是一种概念的两种不同描述。

 irate(v range-vector)是PromQL针对长尾效应专门提供的灵敏度更高的函数。irate同样用于计算区间向量的增长速率,但是其反映出的是瞬时增长速率。irate函数是通过区间向量中最后两个样本数据来计算区间向量的增长速率的。这种方式可以避免在时间窗口范围内的“长尾问题”,并且体现出更好的灵敏度。通过irate函数绘制的图标能够更好地反映样本数据的瞬时变化状态。irate的调用命令如下所示。

 irate函数相比于rate函数提供了更高的灵敏度,不过分析长期趋势时或者在告警规则中,irate的这种灵敏度反而容易造成干扰。因此,在长期趋势分析或者告警中更推荐使用rate函数。

 仪表盘类型代表一种<font color=red>样本数据可以任意变化的指标,即可增可减</font>。它可以理解为状态的快照,Gauge通常用于表示温度或者内存使用率这种指标数据,也可以表示能随时增加或减少的“总数”,例如当前并发请求的数量node_memory_MemFree(主机当前空闲的内容大小)、node_memory_MemAvailable(可用内存大小)等。在使用Gauge时,用户往往希望使用它们<font color=red>求和、取平均值、最小值、最大值</font>等。

 以Prometheus经典的Node Exporter的指标node_filesystem_size_bytes为例,它可以报告从node_filesystem_size_bytes采集来的文件系统大小,包含device、fstype和mountpoint等标签。如果想要对每一台机器上的总文件系统大小求和(sum),可以使用如下PromQL语句。

 without可以让sum指令根据相同的标签进行求和,但是忽略without涵盖的标签。如果在实际工作中需要忽略更多标签,可以根据实际情况在without里传递更多指标。

补充

node_filesystem_size_bytes指标查询

device, fstype, mountpoint都是他的标签。

sum without(device, fstype, mountpoint)(node_filesystem_size_bytes)查询

 如果要根据Node Exporter的指标node_filesystem_size_bytes计算每台机器上最大的文件安装系统大小,只需要将上述案例中的sum函数改为max函数,如下所示。

 除了求和、求最大值等,利用Gauge的函数求最小值和平均值等原理是类似的。除了基本的操作外,Gauge经常结合PromQL的predict_linear和delta函数使用。

 predict_linear(v range-vector,t scalar)函数可以预测时间序列v在t秒后的值,就是使用线性回归的方式,预测样本数据的Gauge变化趋势。例如,基于2小时的样本数据,预测未来24小时内磁盘是否会满,如下所示:

PromQL还有一个内置函数delta(),它可以获取样本在一段时间内的变化情况,也通常作用于Gauge。例如,计算磁盘空间在2小时内的差异,如下所示。

Histogram是一个对数据分布情况的图形表示,由一系列高度不等的长条图(bar)或线段表示,用于展示单个测度得知的分布。

[图片上传失败...(image-3e55f2-1622153155462)]

上边界、样本值总和、样本总数

例子

这三个查询一起看

所有样本值的总和,命名为<basename>_sum。

prometheus_http_request_duration_seconds_sum{handler="/targets",instance="192.168.16.134:9090",job="prometheus"}0.405075955 表示12 次http请求的总响应时间是0.405075955

命名为<basename>_count,其值和<basename>_bucket{le="+Inf"}相同(所有)。

prometheus_http_request_duration_seconds_count{handler="/targets",instance="192.168.16.134:9090",job="prometheus"}12 表示总共发生了12次请求

 sum函数和count函数相除,可以得到一些平均值,比如Prometheus一天内的平均压缩时间,可由查询结果除以instance标签数量得到,如下所示。

 除了Prometheus内置的压缩时间,prometheus_local_storage_series_chunks_persisted表示Prometheus中每个时序需要存储的chunk数量,也可以用于计算待持久化的数据的分位数。

 Histogram可以用于观察样本数据的分布情况。Histogram的分位数计算需要通过histogram_quantile(φfloat,b instant-vector)函数进行计算,但是histogram_quantile计算所得并非精确值。其中,φ(0<φ<1)表示需要计算的分位数(这个值主要是通过prometheus_http_request_duration_seconds_bucket和prometheus_http_request_duration_seconds_sum两个指标得到的,是一个近似值)。

例子如下。

 与Histogram类型类似,摘要用于表示一段时间内的数据采样的结果(通常是请求持续时间或响应大小等),但它直接存储了分位数(通过客户端计算,然后展示出来),而非通过区间来计算(Histogram的分位数需要通过histogram_quantile(φfloat,b instant-vector)函数计算得到)。因此,对于分位数的计算,Summary在通过PromQL进行查询时有更好的性能表现,而Histogram则会消耗更多的资源。反之,对于客户端而言,Histogram消耗的资源更少。在选择这两种方式时,用户应该根据自己的实际场景选择。

Histogram是在服务端计算的,Summary是在客户端计算的。

 安装并启动Prometheus后,在访问 http://localhost:9090/metrics 时可以看到Prometheus自带的一些Summary信息,这些信息和Histogram一样在注释中(#HELP和#TYPE)也会显示,如下所示。

 在上述例子中,可以看到基于Go语言编写的Prometheus的gc总次数是1907,耗时0.193642882s,其中中位数(quantile=0.5)计算的耗时为4.8366e-05s,代表1907次中50%的次数是小于4.8366e-05s的。

Summary类型的样本也会提供3种指标,假设指标名称为<basename>。

Summary和Histogram的异同

Summary的强大之处就是可以利用除法去计算时间的平均值。如果要从Histogram和Summary中计算最近5分钟内的平均请求持续时间http_request_duration_seconds,可以用如下表达式进行。

count本质上是一个计数器,sum通常情况下也会像计数器那样工作。但是<font color=red>Summary和Histogram可能观察到负值,比如温度(-20℃),这种情况下会导致观察的总量下降,无法再使用rate函数</font>。

比如下面的例子就可以计算过去5分钟内每次响应中返回的平均字节数。

关于这个例子,我们需要注意几点。

·因为http_response_size_bytes_count和http_response_size_bytes_sum是计数器类型,所以必须在计算前先使用rate等函数。

·因为Prometheus的API会有很多handler,所以可以使用without过滤掉handler的返回值。

·PromQL要先执行rate()再执行sum(),不能先执行sum()再执行rate()。

·在统计学上,尤其是计算平均值时,要先进行sum等求和运算再做除法。对一个平均值再求平均是不正确的,如下所示。

count的例子

案例一:计算所有的实例CPU核心数。

count by (instance) ( count by (instance,cpu) (node_cpu_seconds_total{mode=

"system"}) )

案例二:计算单个实例192.168.1.1的CPU核心数。

count by (instance) ( count by (instance,cpu) (node_cpu_seconds_total{mode="system",

instance="192.168.1.1"})