精华内容
下载资源
问答
  • 常用函数的函数表达式是什么
    千次阅读
    2021-01-08 09:22:37

     

    Prometheus强大的地方就在于可以使用很多计算公式去获取自己需要的数据。正因为涉及到了计算公式,这也是它的难点所在,比如在Zabbix中要获取CPU使用率是一件很简单的事情,而在Prometheus中却需要使用计算公式来完成。

    比如要统计CPU使用率:node_exporter会抓取CPU常用的8种状态的累计工作时间,然后再用(所有非空闲状态的CPU时间总和)/(所有状态的CPU时间总和)= CPU使用率。而如果想要获取中间某一分钟的CPU平均时间还需要用到Counter数据类型。由于Counter的数据一直是增量,所以需要截取其中一段增量值,然后再拿这个数值去套用公式进行计算。

     

    Prometheus为不同的数据类型提供了非常多的计算函数,有个小技巧就是遇到counter数据类型,在做任何操作之前,先套上一个rate()或者increase()函数。下面介绍一些比较常用的函数帮助理解:

    rate()函数:这是一个非常重要的函数,专门配合counter类型数据,取counter在这个时间段中的平均每秒增量。比如监控网络接受字节数的情况,在9:10到9:20期间累计量增加了1000bytes,加入rate([1m])函数后就会使用1000除以60秒,计算出数据大约为16bytes。

    1rate(  node_network_receive_bytes[1m] )  #获取1分钟内每秒的增量

     

    increase函数:和rate()函数一样也是配合Counter使用。区别就是它是取其中一段时间的增量而不是平均值,比如

    1increase(node_cpu[1m])  #获取CPU总使用时间1分钟的增量

     

    sum函数:在实际工作中CPU大多是多核的,而node_cpu会将每个核的数据都单独显示出来,我们其实不会关注每个核的单独情况,而是关心总的CPU情况。使用sum()函数进行求和后可以得出一条总的数据,但sum()是将所有机器的数据都进行了求和,所以还要再使用by (instance)或者by (cluster_name)就可以取出单个服务器或者一组服务器的CPU数据。上面的公式可以进化为:

    1sum( increase(node_cpu[1m]) )

     

    count函数:该函数用于进行一些模糊判断,比如有100台服务器在监控,想实现当CPU使用率大于80%的机器达到N台就进行报警就可以使用它

    1count(count_netstat_wait_connections > 200)

     

    topk函数:该函数可以从大量数据中取出排行前N的数值,N可以自定义。比如监控了100台服务器的320个CPU,用这个函数就可以查看当前负载较高的那几个,用于报警

    1topk(3,count_netstat_wait_connections)  #Gauge类型

     

    2topk(3,,rate(node_network_receive_bytes[20m]))  #Counter类型

     

    absent()

    absent(v instant-vector) 如果传递给它的向量具有任何元素,则返回空向量;如果传递给它的向量没有元素,则返回值为1的1元素向量。

    这对于在给定度量标准名称和标签组合不存在时间序列时发出警报非常有用。

    absent(nonexistent{job="myjob"})
    # => {job="myjob"}
    absent(nonexistent{job="myjob",instance=~".*"})
    # => {job="myjob"}
    absent(sum(nonexistent{job="myjob"}))
    # => {}

    在第二个示例中,absent()尝试从输入向量中导出1元素输出向量的标签。

    delta()函数

    delta(v range-vector)计算范围向量v中每个时间系列元素的第一个和最后一个值之间的差值,返回具有给定增量和等效标签的即时向量。 delta被外推以覆盖范围向量选择器中指定的全时间范围,因此即使样本值都是整数,也可以获得非整数结果。

    以下示例表达式返回现在和2小时之前CPU温度的差异:

    delta(cpu_temp_celsius{host="zeus"}[2h])

    delta应仅用于仪表。

     

    changes()函数

    changes(v range-vector) 输入一个区间向量, 返回这个区间向量内每个样本数据值变化的次数(瞬时向量)。例如

    # 如果样本数据值没有发生变化,则返回结果为 1changes(node_load5{instance="192.168.1.75:9100"}[1m]) # 结果为 1

     

    predict_linear函数:对曲线变化速率进行计算,起到一定的预测作用。比如当前这1个小时的磁盘可用率急剧下降,这种情况可能导致磁盘很快被写满,这时可以使用该函数,用当前1小时的数据去预测未来几个小时的状态,实现提前告警

    1predict_linear( node_filesystem_free_bytes{mountpoint="/"}[1h],4*3600 ) < 0   #如果未来4小时后磁盘使用率为负数就会报警

     

    了解清楚流程之后进行一个CPU使用率的拆分解析:

    1、先把key找出来,比如是为了查看CPU的使用率,那么就应该使用node_cpu这个key

    2、在node_cpu这个key的基础上把idle的CPU时间和全部CPU时间过滤出来,使用{}做过滤,如下:

    1node_cpu{ mode='idle' }  #找出空闲CPU的值
    2node_cpu  #不写其他参数代表ALL

     

    3、使用increase()函数把1分钟的数据抓取出来,这个时候取出来的是每个CPU的数据

    1increase(node_cpu{mode='idle'}[1m])

     

    4、使用sum()函数求和每个CPU的数据,得到单独一个数据

    1sum( increase(node_cpu{mode='idle'}[1m]) )

     

    5、sum()函数虽然把每个CPU的数据进行了求和,但是还把每台服务器也进行了求和,所有服务器的CPU数据都相同了,还需要进行一次处理。这里又引出了一个新函数 by (instance)。它会把sum求和到一起的数值按照指定方式进行拆分,instance代表的是机器名。如果不写by (instance)的话就需要在{}中写明需要哪个实例的数据。

    1sum( increase(node_cpu{mode='idle'}[1m]) ) by (instance)  #空闲CPU一分钟增量

     

    6、最终计算出CPU使用率

    11-( sum( increase(node_cpu{mode='idle'}[1m]) ) by (instance) / sum(increase(node_cpu[1m])) by (instance) ) *100

     

     

    附上三个常用的计算公式:

    查看源码打印?

    1#CPU使用率
    2100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100)
    3#内存使用率
    4(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100
    5#空闲内存剩余率
    6100 - (node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100
    7#磁盘使用率
    8100 - (node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs"} / node_filesystem_size_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100)

     

    更多相关内容
  • 一、js正则表达式之replace函数用法: 函数功能:replace函数返回根据正则表达式进行文字替换后的字符串的复制。 函数格式:stringObj.replace(rgExp, replaceText) 参数:字符串stringObj,rgExp正则表达式,...
  • 本文实例总结了Python正则表达式常用函数。分享给大家供大家参考,具体如下: re.match() 函数原型: match(pattern, string, flags=0)  Try to apply the pattern at the start of the string,  returning a ...
  • 主要介绍了PostgreSQL 正则表达式 常用函数的总结的相关资料,对那些需要进行复杂数据处理的程序来说,正则表达式无疑是一个非常有用的工具,这里就介绍下如何使用,需要的朋友可以参考下
  •  在ECMAScript中,有两个最常用的创建函数对象的方法,即使用函数表达式或者使用函数声明。对此,ECMAScript规范明确了一点,即是,即函数声明 必须始终带有一个标识符(Identifier),也就是我们所说的函数名,而...
  • 在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称),而函数表达式则可以...
  • preg_match ()函数在$content字符串中搜索与$pattern给出的正则表达式相匹配的内容。如果提供了$matches,则将匹配结果放入其 中。$matches[0]将包含与整个模式匹配的文本,$matches[1]将包含第一个捕获的与括号中的...
  • 在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称),而函数表达式则可以...
  • 主要介绍了Python常用的正则表达式处理函数,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • Hive常用函数大全 正则表达式大全

     

    Hive函数大全

    1数学函数

    ceil 向上取整数
    floor 向下取整数
    abs 绝对值函数
    bin  二进制函数
    hex 十六进制函数
    bround(DOUBLE a, INT d) 银行家舍入法,保留d位小数
    rand ()随机值
    round() 保留d位小数
    ​

    2.日期函数

    from_unixtime  时间戳转日期
    unix_timestamp 获取时间戳
    current_date 当前日期
    to_date   转日期
    datediff(string enddate, string startdate) 返回结束日期减去开始日期的天数 返回天数
    year 获取年
    date_format(current_date(),‘MM.dd’) 按指定格式返回时间date 如:date_format(“2016-06-22”,“MM-dd”)=06-22

    3.条件函数

    if (>,1,2)
    case  (>,when 1 then 2)
    isnull  返回boolean
    isnotnull 返回boolean
    nvl (null,1) ===1   

    4.字符函数

    regexp_extract  正则表达式解析函数
    regexp_replace(‘hello,world’,‘o|l’,‘e’); 正则表达式替换
    substr,substring 字符串截取
    reverse  字符串翻转函数
    trim 去空格
    split 分割字符串函数
    instr(xx,x) 返回数字 没有返回0

    5.聚合函数

    max  最大值
    min 最小值
    count 数字
    sum  求和
    avg 平均

    6.表生成函数

    explode(ARRAY) 每行对应数组中的一个元素

    七.类型转换函数

    cast(expr as) 将expr转换成type类型 如:cast(“1” as BIGINT) 将字符串1转换成了BIGINT类型,如果转换失败将返回NULL
    binary 转换成二进制

    八、集合函数

    size(Array)         获取集合数量
    map_keys(Map<K.V>) 返回map中的所有key
    array_contains(Array, value) 如该数组Array包含value返回true。否则返回false
    sort_array(Array) 排序函数

    数据清洗

    组重置

    kafka-consumer-groups.sh --bootstrap-server 192.168.64.128:9092 --group cm --reset-offsets --all-topics --to-earliest

    浏览器看yarn

    http://192.168.64.128:8088/cluster#/

    行转列

    max(case when then  else end)  group by

    列转行

    max( as ) group by union all

     

    正则表达式大全

     

     

     

    展开全文
  • 主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 学习php正则的朋友不得不了解的一些函数,大家看了下面的文章就知道了php下正则表达式的调用方法。
  • 之前一篇已经带领大家认识了一下正则表达式常用函数最基本的功能及使用方法。本文再带领大家一起应用正则表达式,深入学习正则表达式中常用的方法及对象,例如:test、exec、match、replace、search等等,需要的朋友...
  • 正则表达式作为一种匹配处理字符串的利器在很多语言中都得到了广泛实现和应用.这篇文章主要介绍了JavaScript正则表达式函数总结,需要的朋友可以参考下
  • maxwell常用函数.txt

    2020-12-09 11:12:15
    函数名称 功能描述 表达式用法 abs 绝对值函数 abs(x) 6 sin 正弦函数 sin(x) cos 余弦函数 cos(x) tan 正切函数 tan(x) asin 反正弦函数 asin(x) acos 反余弦函数 acos(x) atan 反正切函数 atan(x) atan2 ...
  • JavaScript 常用函数

    2021-01-19 19:25:24
    javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ... (4)eval函数:计算表达式的结果。 (5)isNaN函数:测试是(true)否(false)不是一个数字。 (6)parseFloat函数:将字符串转换成符点数字形式。 (7)pa
  • 1.封装常用正则表达式函数 2.直接可用,方便快捷
  • 函数声明与函数表达式

    千次阅读 2020-03-21 12:17:20
    定义一个函数的方法主要有三种 函数声明、函数表达式、new Function构造函数,函数声明与函数表达式定义的函数较为常用,构造函数的方式可以将字符串定义为函数 函数声明 函数声明会将声明与赋值都提前,也就是整个...

    函数声明与函数表达式

    定义一个函数的方法主要有三种 函数声明、函数表达式、new Function构造函数,函数声明与函数表达式定义的函数较为常用,构造函数的方式可以将字符串定义为函数。

    函数声明

    函数声明会将声明与赋值都提前,也就是整个函数体都会被提升到作用域顶部。

    s(); // 1
    function s(){
        console.log(1);
    }
    

    也就是说,在某个作用域中定义的函数可以在这个作用域的任意位置调用,整个函数体都将被提前,当然也有不一样的情况:

    console.log(s); // undefined // 函数的声明提升但是并未赋值函数体
    console.log(ss); // Uncaught ReferenceError: ss is not defined // 打印未定义的ss是为了对比说明函数的声明提升
    s(); // Uncaught TypeError: s is not a function
    if(1){
        function s(){
            console.log(1);
        }
    }
    

    此处可以看到函数的声明被提升,但是函数体并未被提升,JS只有函数作用域与全局作用域以及ES6引入的letconst块级作用域,此处if不存在作用域的问题,为同一作用域,但是由于解释器在预处理期无法确定if里面的内容,所以只对函数声明的变量进行了提升,而并未将函数体赋值。

    函数表达式

    函数表达式只会提升变量的声明,本质上是变量提升并将一个匿名函数对象赋值给变量。

    console.log(s); // undefined
    var s = function s(){
        console.log(1);
    }
    console.log(s);  // f s(){console.log(1);}
    

    由此来看,直接进行函数声明与函数表达式声明的函数之间就存在一个优先级关系。

    var s = function(){
        console.log(0);
    }
    function s(){
        console.log(1);
    }
    s(); // 0
    

    JS中函数是第一等公民,在《你不知道的JavaScript》(上卷)一书的第40页中写到,函数会首先被提升,然后才是变量。也就是说,同一作用域下提升,函数会在更前面。即在JS引擎的执行的优先级是函数声明、变量声明、变量赋值。

    function s(){ //函数声明
        console.log(1);
    }
    
    var s; // 变量声明
    
    // 函数已声明`a` 相同的变量名`var`声明会被直接忽略
    console.log(s); // f s(){...}  
    
    s = function(){ // 变量赋值
        console.log(0);
    }
    
    s(); // 0
    

    new Function

    new Function的方式可以将字符串解析为函数。

    var s = new Function("a","b","console.log(a,b);");
    s(1,2); // 1,2
    console.log(s.__proto__ === Function.prototype); //true
    function ss(){} // 声明的函数都是Function的一个实例
    console.log(ss.constructor === Function); // true
    console.log(ss.__proto__ === Function.prototype); // true
    

    new Functioneval也有所不同,其对解析内容的运行环境的判定有所不同。

    // eval中的代码执行时的作用域为当前作用域,它可以访问到函数中的局部变量,并沿着作用域链向上查找。
    // new Function中的代码执行时的作用域为全局作用域,无法访问函数内的局部变量。
    var a = 'Global Scope';
    (function b(){
        var a = 'Local Scope';
        eval("console.log(a)"); //Local Scope
        (new Function("console.log(a)"))() //Global Scope
    })();
    

    每日一题

    https://github.com/WindrunnerMax/EveryDay
    

    参考

    https://www.cnblogs.com/echolun/p/7612142.html
    https://www.cnblogs.com/miacara94/p/9173843.html
    https://blog.csdn.net/qq_41893551/article/details/83011752
    
    展开全文
  • MySQL正则表达式常用函数 一、正则表达式 正则表达式(Regular Expression)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。 MySQL有哪些正则表达式? 正则表达式如何使用在SQL中? 示例...

    MySQL正则表达式及常用函数

    一、正则表达式

    正则表达式(Regular Expression)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。

    • MySQL有哪些正则表达式?
      在这里插入图片描述
    • 正则表达式如何使用在SQL中?
      示例:
    select * from emp where name regexp '^T'; % 查询name以T开头的行
    select * from emp where name regexp '2$'; % 查询name以2结尾的行
    select * from emp where name regexp '[uvw]'; % 查询name中包含u或v或w的行
    

    二、MySQL常用函数

    1. 数字函数

    在这里插入图片描述

    2. 字符串函数

    在这里插入图片描述

    3. 日期函数

    在这里插入图片描述

    4.聚合函数

    在这里插入图片描述

    展开全文
  • 正则表达式常用函数

    千次阅读 2018-06-06 10:52:48
    re库中常用的六个函数分别是match、compile、sub、split、search、findall,这些函数的用法基本都是相同的,只是目的不一样。假设method是re库中的函数re.method(pattern, string)pattern:正则表达式string:文本意义...
  • 函数表达式

    千次阅读 2019-08-02 01:34:27
    函数 定义函数的方式有三种: 1.函数声明: function 函数名称 (参数:可选) { 函数体 } 2.函数表达式: var express= function 函数名称:可...最常用的是函数声明和函数表达式。 二, 函数表达式 从上面的定义可...
  • 常用闭包的同学肯定很清楚下面一段代码: //通常的闭包写法 (function () { ... }()) 那么我们的问题来了,为什么要在 function ()...所以在直接执行 function () {…}() 时候会报语法错误,原因就是函数表达式被尝试
  • JavaScript中定义函数最常用的方式是函数声明和函数表达式。这两种技术非常相似,有时甚至难以区分,但在后续章节中可以看到,它们之间还是存在着微妙的区别。 JavaScript定义函数最基本方式是函数声明,如下图:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 385,541
精华内容 154,216
热门标签
关键字:

常用函数的函数表达式是什么