裡,我們通過 ceph monit api 接口,抓取到了需要的資料。接下來,我們就要把這些資料圖形化展示出來了。
首先我們使用還在實驗階段的 Visual Builder 建立一個曲線圖。進入 Visualize 頁面,點選 + 号建立一個 Visual Builder。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLmJDMkdjNwEmMhdDOwMzNilzNiBDMhJDMlJjYxMzNzEWZyQTZ2UGNx8CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
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。