以 Riemann 0.2.13 安裝為例:
在 CentOS 6 安裝 Riemann
- 下載
wget https://github.com/riemann/riemann/releases/download/0.2.13/riemann-0.2.13-1.noarch.rpm
- 安裝
yum install riemann-0.2.13-1.noarch.rpm
在 Ubuntu 安裝 Riemann
下載
wget https://github.com/riemann/riemann/releases/download/0.2.13/riemann_0.2.13_all.deb
安裝
sudo apt-get install gdebi-core sudo gdebi ./riemann_0.2.14_all.deb
config 檔的位置
/etc/riemann/riemann.config
動態重新載入新的 config 檔
service riemann reload
安裝 Riemann client 端程式
Riemann 的 client 端程式主要有兩大類選項:
各種語言的 library ,可以用來使用各式的程式語言將監控項送入 Riemann 裡。以 riemann python client 為例,它就是 python 寫的 client side library。這一類的 library 只處理通訊協定 (google protobuf) 和「監控項格式化」的部分。「週期性資料採集」的邏輯並沒有實現。
使用 riemann-tools 來採集監控項。
範例: 以 riemann-client 將監控項送入 Riemann
riemann-client send -s "net.if.in.bits" -m 1000 -h AA -t tag1 -t tag2 -l 60 -d "ddd"
像這樣子的指令,就是說,送一個 Riemann 的監控項進去。監控項長成這樣:
欄位名稱 | 值 |
---|---|
service | net.if.in.bits |
metric | 1000 |
host | AA |
tags | ["tag1", "tag2"] |
ttl | 60 |
description | ddd |
state | nil |
範例:以 riemann-net 採集網卡的流量送入 Riemann
在命令列,下 riemann-net 指令。只選擇其中兩張網卡介面:
eth0
,eth1
來採集監控項。riemann-net -n eth0 eth1
在 Riemann 的設定檔
riemann.config
設定,對於 service 欄位含有bytes
,packets
這兩個關鍵字的監控項,列印出來。(streams (where* (fn [e] (re-matches #".*(bytes|packets)" (:service e))) prn))
Sample logs
#riemann.codec.Event{:host "owl-docker", :service "eth0 rx bytes", :state "ok", :description nil, :metric 96.0, :tags nil, :time 1497866517, :ttl 10.0} #riemann.codec.Event{:host "owl-docker", :service "eth0 rx packets", :state "ok", :description nil, :metric 1.6, :tags nil, :time 1497866517, :ttl 10.0} #riemann.codec.Event{:host "owl-docker", :service "eth0 tx bytes", :state "ok", :description nil, :metric 148.8, :tags nil, :time 1497866517, :ttl 10.0} #riemann.codec.Event{:host "owl-docker", :service "eth0 tx packets", :state "ok", :description nil, :metric 1.6, :tags nil, :time 1497866517, :ttl 10.0} #riemann.codec.Event{:host "owl-docker", :service "eth1 rx bytes", :state "ok", :description nil, :metric 0.0, :tags nil, :time 1497866517, :ttl 10.0} #riemann.codec.Event{:host "owl-docker", :service "eth1 rx packets", :state "ok", :description nil, :metric 0.0, :tags nil, :time 1497866517, :ttl 10.0} #riemann.codec.Event{:host "owl-docker", :service "eth1 tx bytes", :state "ok", :description nil, :metric 0.0, :tags nil, :time 1497866517, :ttl 10.0} #riemann.codec.Event{:host "owl-docker", :service "eth1 tx packets", :state "ok", :description nil, :metric 0.0, :tags nil, :time 1497866517, :ttl 10.0}