我比較懶,能用簡單的辦法搞定,就不喜歡習慣用開源的東西,因為覺得自己學習的也比較慢,但是不得不說這種快速上手乙個陌生產品的能力很重要,我很缺乏這種能力。
我們提供乙個長連線服務,占用埠8080
,我最初的方式通過 shell 指令碼做乙個簡單的監控,資料都直接寫在了日誌檔案裡。
while
:;
do
sleep
1;
netstat
-lanp|
grep
8080|
grep
established|
awk
''
|
awk
-f
':'
''
|
sort
|
uniq
|
wc
-l|
awk
'begin'
>> access_num.log;
done
比較簡陋,不過用起來我覺得還是蠻輕便的。
同事說,你這個太 low 了,現在比較流行grafana
+telegraf
+influxdb
來搭建。
grafana 負責 ui 介面的展示我馬上搜這些關鍵字,全是英文呢,視覺化效果真不錯,github star 也上千。怎麼安裝了就不說了,直接上官網就有。telegraf 做資料的收集,比如伺服器集群的效能監控
influxdb 是現在流行的時間序列資料庫
influxdb
資料庫的定義比較新穎,下面就說說它了。
influxdb
資料庫裡series
對應的是我們常規認識的表,而表裡面的一行資料一般都來表示乙個物件,而series
裡面一行資料則是描述的乙個point
。(沒錯,就是座標系裡的乙個真實的點,所以這個資料庫的業務場景就是專門針對這種時間線的資料監控而創作的。)
那麼這個點有哪些屬性來描述它呢?
timestamp,point的時間戳,以乙個具體的例子來說,現在需要監控1伺服器的負載,那麼負載(measurement,可以理解為表名,
field,以1~n個
key-value
來表示,point的值,tags,以0~n個
key-value
來表示,point 的屬性。
load
)就是measurement
,此刻的負載值,就是field
,該伺服器的 ip 就可以作為中的乙個,也可以不記 ip,因為此時我們的需求只是記錄一台伺服器而已。
那麼命令列如何插入一條資料呢?下面是其寫入協議。適用於influxdb
的命令列和 api 介面
[,=...] =[,=...] [unix-nano-timestamp]
以你老司機多年的經驗,一看上面的表示式便知,裡面的內容表示可選,所以插入資料庫的時候,可以不用帶時間戳,預設為當前時間戳。
官方的例子送給大家
cpu,host=servera,region=us_west value=0.64
payment,device=mobile,product=notepad,method=credit billed=33,licenses=3i 1434067467100293230
stock,symbol=aapl bid=127.46,ask=127.48
temperature,machine=unit42,
type
=assembly external=25,internal=37 1434067467000000000
nice,看到了麼,還可以用在交易記錄喲。
說了這麼多,下面加快速度一條路,快上車,帶你迅速解決戰鬥。
假設 influxdbbin 檔案路徑是:
/usr/local/bin/influx
繫結的 ip:101.241.254.176
授權賬號:mengkang
密碼:123456
# 進入命令列
/usr/local/bin/influx
-host 101.241.254.176 -username mengkang -password 123456
# 建立資料庫
create database mydb
# 進入 mydb
use mydb
insert websocket,ip=101.241.254.134 num=100
那麼資料怎麼查詢呢?這才是它的強大之處,不然就是資料庫了。
比如官方的這個例子
select mean(
"water_level"
) from
"h2o_feet"
where
time
> now() - 2w group by
"location"
,
time
(6h)
查詢過去兩周各個地方的每6小時的水平平均值變化情況,是不是功能很強大呢?
支援的查詢語句在使用
telegraf
,感覺配置檔案太複雜啦,我同事在用,我太笨了研究了半天玩不轉。
而influxdb
提供了 api 介面,我就直接通過shell
往influxdb
寫資料了。
curl -i -xpost -u username:password
""
--data-binary
'websocket,host=10.24.254.134 value=120'
這樣就能進入資料庫了。
一起來學習Ant Design
當然,都屬於webpack中的基礎知識,但是套上了atool build這樣乙個殼子,又有點小懵。還好不是很難,嘗試後,很快搞定了,順手也總結一下吧!一 安裝ant init 1 npm install antd init g 二 建立目錄 1 mkdir antd demo cd antd dem...
一起來存方法
1.在動態渲染元素的時候,需要邏輯判斷 在迴圈渲染dom元素時,迴圈遍歷中需要邏輯操作,如果不使用模板 1 var addlist function 7 if 條件2 10lists.push list 11 12 id html lists.join 13 這是在看一同事 時,發現她用push和j...
一起來挑戰Google code jam 一
給你兩個陣列va和vb,兩個陣列的元素對應相乘,然後求和,要求和最小,在陣列元素順序可以調整的時候。這裡主要用到乙個不等式,x和y兩個公升序的陣列,那麼sum x i y i sum x i y n i void fun printf d n res 題意是給你一排p個牢房,最初的時候每個牢房中有乙...