• grafana接入OpenTSDB设置大盘语法


    1、filter过滤语法

    在这里插入图片描述

    1.1 精准匹配

    • literal_or : tagv的过滤规则: 精确匹配多项迭代值,多项迭代值以’|'分隔,大小写敏感

    • iliteral_or: tagv的过滤规则: 精确匹配多项迭代值,多项迭代值以’|'分隔,忽略大小写

    1.2 正则匹配

    • regexp: tagv的过滤规则: 正则表达式匹配
    • OpenTSDB的正则表达式语法可能与其他数据库不同

    1)匹配出以 XX开头

    例如,要过滤出字符串以"ab_123"开头的数据,如下:

    {
    	"type": "regexp",
    	"tagk": "<标签键>",
    	"filter": "^(str_pre)",
    	"groupBy": false
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    {
    	"type": "regexp",
    	"tagk": "app_id",
    	"filter": "^(ab_123)",
    	"groupBy": false
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    <标签键>是过滤的标签键,正则表达式,^(ab_123)使用了负向前瞻断言(ab_123),表示以"ab_123"开头的字符串。

    1. 匹配出 以XX开头 或以YY开头

    例如,要过滤出字符串以"ab_123"开头或以"ab_666"的数据,如下:

    {
    	"type": "regexp",
    	"tagk": "<标签键>",
    	"filter": "^(str_pre)",
    	"groupBy": false
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    {
    	"type": "regexp",
    	"tagk": "app_id",
    	"filter": "^(ab_123|ab_666)",
    	"groupBy": false
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    <标签键>是过滤的标签键,正则表达式,^(ab_123|ab_666)使用了括号和管道符合,表示以"ab_123"或"ab_666"开头的字符串

    3)匹配出 不以 XX开头

    例如,要过滤出字符串不以"ab_123"或"ab_666"开头的数据,如下:

    {
    	"type": "regexp",
    	"tagk": "<标签键>",
    	"filter": "^(?!str_pre)",
    	"groupBy": false
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    {
    	"type": "regexp",
    	"tagk": "app_id",
    	"filter": "^(?!ab_123|ab_666)",
    	"groupBy": false
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    <标签键>是过滤的标签键,正则表达式,^(?!ab_123|ab_666)使用了负向前瞻断言(?!ab_123|ab_666),表示不以"ab_123"或""ab_666"开头的字符串。

    1.3 通配符匹配

    • wildcard: tagv的过滤规则: 通配符匹配,大小写敏感
    • iwildcard: tagv的过滤规则: 通配符匹配,忽略大小写
    • not_literal_or: tagv的过滤规则: 通配符取非匹配,大小写敏感
    • not_iliteral_or: tagv的过滤规则: 通配符取非匹配,忽略大小写

    完整示例

    1、 展示应用app的CPU利用率监控

    $app_id 为变量,可以写静态,也可以动态

    {
      "time": {
        "aggregator": "sum",
        "granularity": "20s"
      },
      "filters": [
        {
          "tags": [
            {
              "type": "iliteral_or",
              "tagk": "app_id",
              "filter": "$app_id",
              "groupBy": false
            },
            {
              "type": "iliteral_or",
              "tagk": "priority",
              "filter": "Product",
              "groupBy": false
            }
          ],
          "id": "app_info_i"
        }
      ],
      "metrics": [
        {
          "id": "app_used",
          "metric": "docker.cpu.used",
          "filter": "app_info_i"
        },
        {
          "id": "app_quota",
          "metric": "docker.cpu.quota",
          "filter": "app_info_i"
        }
      ],
      "expressions": [
        {
          "id": "app_cpu_rate",
          "expr": "(app_used/app_quota)*100"
        }
      ],
      "outputs": [
        {
          "id": "app_cpu_rate",
          "alias": "XXXCPU利用率"
        }
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    2)展示应用app的在线核数

    {
      "time": {
        "aggregator": "sum",
        "granularity": "1m"
      },
      "limit": "avg:top:500",
      "filters": [
        {
          "tags": [
            {
              "type": "iliteral_or",
              "tagk": "app_id",
              "filter": "$app_id",
              "groupBy": false
            },
            {
              "type": "iliteral_or",
              "tagk": "priority",
              "filter": "Product",
              "groupBy": false
            }
          ],
          "id": "app_info_i"
        }
      ],
      "metrics": [
        {
          "id": "app_quota",
          "metric": "docker.cpu.quota",
          "filter": "app_info_i"
        }
      ],
      "expressions": [
        {
          "id": "quota_e",
          "expr": "app_quota/100"
        }
      ],
      "outputs": [
        {
          "id": "quota_e",
          "alias": "cpu(core)"
        }
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
  • 相关阅读:
    二十、MySQL多表关系
    网络编程面试题
    071:vue+openlayers轨迹路线动画(示例代码)
    Python列表基础与高级应用详解
    vue后台开发第一步
    视频m4v如何转换成mp4
    java17 linux 环境配置
    聊聊linux的文件缓存
    【C++面向对象侯捷】10.扩展补充:类模板,函数模板,及其他
    带你了解树的全家桶(BST树到AVL树到B树到B+树)
  • 原文地址:https://blog.csdn.net/Sunny_Future/article/details/133801115