使用 ELK 查看 Ceph 读写速度(二)

上一篇 使用 ELK 查看 Ceph 读写速度(一) 里,我们通过 ceph monit api 接口,抓取到了需要的数据。接下来,我们就要把这些数据图形化展示出来了。

首先我们使用还在实验阶段的 Visual Builder 建立一个曲线图。进入 Visualize 页面,点击 + 号新建一个 Visual Builder。
使用 ELK 查看 Ceph 读写速度(二)

然后按照下图所示,分 3 部分填写。你就能得到最上面的曲线图了。
使用 ELK 查看 Ceph 读写速度(二)

使用 ELK 查看 Ceph 读写速度(二)

使用 ELK 查看 Ceph 读写速度(二)

然后保存这个 visual 面板。接着新建一个 Dashboard,把建好的 visual 面板加入。观察效果,发现有断流现象。

使用 ELK 查看 Ceph 读写速度(二)

通过查看我们上一篇里建立的 search,我发现了有数据为空的记录。再通过查看日志原文,发现原来是因为 ceph 接口返回的数据里,read 单位值有 kB/s、B/s 和 MB/s 三种。我的 logstash filter 只对应了其中一种,自然就匹配缺失了。所以,我们改进一下 filter。

filter {
  if "ceph-pg-stat" in [tags] {
  
    grok {
      match => {
        "message" => [
          "%{GREEDYDATA}avail; %{INT:[ceph][cluster][read]} kB\/s rd, %{INT:[ceph][cluster][write]} kB\/s wr, %{INT:[ceph][cluster][op]} op\/s"
        ]
      }
      remove_field => "message"
    }
    
    grok {
      match => {
        "message" => [
          "%{GREEDYDATA}avail; %{INT:[ceph][cluster][read]} B\/s rd, %{INT:[ceph][cluster][write]} kB\/s wr, %{INT:[ceph][cluster][op]} op\/s"
        ]
      }
      add_tag => ["low_speed"]
      remove_field => "message"
    }
    # Convert B/s to kB/s
    if "low_speed" in [tags] {
      ruby {
        code => "event['ceph.cluster.read'] = Integer(event['ceph.cluster.read'].gsub(',','') / 1024)"
        remove_tag => ["low_speed"]
      }
    }
    
    grok {
      match => {
        "message" => [
          "%{GREEDYDATA}avail; %{INT:[ceph][cluster][read]} MB\/s rd, %{INT:[ceph][cluster][write]} kB\/s wr, %{INT:[ceph][cluster][op]} op\/s"
        ]
      }
      add_tag => ["high_speed"]
      remove_field => "message"
    }
    # Convert MB/s to kB/s
    if "high_speed" in [tags] {
      ruby {
        code => "event['ceph.cluster.read'] = Integer(event['ceph.cluster.read'].gsub(',','') * 1024)"
        remove_tag => ["high_speed"]
      }
    }
    mutate {
      convert => { "[ceph][cluster][read]" => "integer" }
      convert => { "[ceph][cluster][write]" => "integer" }
      convert => { "[ceph][cluster][op]" => "integer" }
    }
    
  }
}

问题就解决啦。大家举一反三,可以做出以下这样的 dashboard。
使用 ELK 查看 Ceph 读写速度(二)

上一篇:阿里云服务器公有与私有的区别


下一篇:证书过期,网站崩了! 原来,74%的企业都经历过!