Docker监控方案(TIG)的研究与实践之Influxdb
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
前言:
Influxdb也是有influxdata公司(www.influxdata.com )開發(fā)的用于數(shù)據(jù)存儲的時間序列數(shù)據(jù)庫.可用于數(shù)據(jù)的時間排列。在整個TIG(Telegraf+influxdb+grafana)方案中,influxdb可算作一個中間件,主要負(fù)責(zé)原始數(shù)據(jù)的存儲,并按照時間序列進(jìn)行索引構(gòu)建以提供時間序列查詢接口。在整個TIG方案中,應(yīng)該先構(gòu)建的就是Influxdb。
Influxdb研究與實踐:
influxdb介紹:
使用TSM(Time Structured Merge)存儲引擎,允許高攝取速度和數(shù)據(jù)壓縮;?
使用go編寫,無需其他依賴;?
簡單,高性能寫查詢httpAPI接口;?
支持其他數(shù)據(jù)獲取協(xié)議的插件,比如graphite,collected,OpenTSDB;?
使用relay構(gòu)建高可用https://docs.influxdata.com/influxdb/v1.0/high_availability/relay/;
擴展的類sql語言,很容易查詢匯總數(shù)據(jù);?
tag的支持,可用讓查詢變的更加高效和快速;?
保留策略有效地自動淘汰過期的數(shù)據(jù);?
持續(xù)所產(chǎn)生的自動計算的數(shù)據(jù)會使得頻繁的查詢更加高效;?
web管理頁面的支持
下載安裝:
github:https://github.com/influxdata/influxdb?源碼編譯?
官網(wǎng)下載:?
Centos系列:wgethttps://dl.influxdata.com/influxdb/releases/influxdb-1.0.0.x86_64.rpm?&& sudo yum localinstall influxdb-1.0.0.x86_64.rpm?
源碼包系列:wgethttps://dl.influxdata.com/influxdb/releases/influxdb-1.0.0_linux_amd64.tar.gz?&& tar xvfz influxdb-1.0.0_linux_amd64.tar.gz?
docker系列:docker pull influxdb?
安裝手冊:https://docs.influxdata.com/influxdb/v0.9/introduction/installation/
配置:
#cat /etc/influxdb/influxdb.conf reporting-disabled = false [registration] [meta] dir = "/var/lib/influxdb/meta" hostname = "10.0.0.2" #此hostname必須寫本機,否則無法連接到數(shù)據(jù)操作的API bind-address = ":8088" retention-autocreate = true election-timeout = "1s" heartbeat-timeout = "1s" leader-lease-timeout = "500ms" commit-timeout = "50ms" cluster-tracing = false [data] dir = "/var/lib/influxdb/data" max-wal-size = 104857600 # Maximum size the WAL can reach before a flush. Defaults to 100MB. wal-flush-interval = "10m" # Maximum time data can sit in WAL before a flush. wal-partition-flush-delay = "2s" # The delay time between each WAL partition being flushed. wal-dir = "/var/lib/influxdb/wal" wal-logging-enabled = true [hinted-handoff] enabled = true dir = "/var/lib/influxdb/hh" max-size = 1073741824 max-age = "168h" retry-rate-limit = 0 retry-interval = "1s" retry-max-interval = "1m" purge-interval = "1h" [admin] enabled = true bind-address = ":8083" https-enabled = false https-certificate = "/etc/ssl/influxdb.pem" [http] enabled = true bind-address = ":8086" auth-enabled = false log-enabled = true write-tracing = false pprof-enabled = false https-enabled = false https-certificate = "/etc/ssl/influxdb.pem" [opentsdb] enabled = false [collectd] enabled = false注意:influxdb服務(wù)會啟動三個端口:8086為服務(wù)的默認(rèn)數(shù)據(jù)處理端口,主要用來influxdb數(shù)據(jù)庫的相關(guān)操作,可提供相關(guān)的API;8083為管理員提供了一個可視化的web界面,用來為用戶提供友好的可視化查詢與數(shù)據(jù)管理;8088主要為了元數(shù)據(jù)的管理。需要注意的是,influxdb默認(rèn)是需要influxdb用戶啟動,且數(shù)據(jù)存放在/var/lib/influxdb/下面,生產(chǎn)環(huán)境需要注意這個。
啟動:
和telegraf啟動方式一樣,可以使用init.d或者systemd進(jìn)行管理influxdb?
注意,啟動之后需要查看相關(guān)的端口是否正在監(jiān)聽,并檢查日志確保服務(wù)正常啟動
使用:
如果說使用telegraf最核心的部分在配置,那么influxdb最核心的就是SQL語言的使用了。influxdb默認(rèn)支持三種操作方式:?
登錄influxdb的shell中操作:
使用API進(jìn)行操作數(shù)據(jù):
創(chuàng)建數(shù)據(jù)庫: curl -G "http://localhost:8086/query" --data-urlencode "q=create database mydb" 插入數(shù)據(jù): curl -XPOST 'http://localhost:8086/write?db=mydb' -d 'biaoge,name=xxbandy,xingqu=coding age=2' curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000' curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server02 value=0.67 cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257 cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257' 將sql語句寫入文件,并通過api插入: #cat sql.txt cpu_load_short,host=server02 value=0.67 cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257 cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257 #curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary @cpu_data.txt查詢數(shù)據(jù):(--data-urlencode "epoch=s" 指定時間序列 "chunk_size=20000" 指定查詢塊大小) # curl -G http://localhost:8086/query?pretty=true --data-urlencode "db=ydb" --data-urlencode "q=select * from biaoge where xingqu='coding'" 數(shù)據(jù)分析: #curl -G http://localhost:8086/query?pretty=true --data-urlencode "db=mydb" --data-urlencode "q=select mean(load) from cpu" #curl -G http://localhost:8086/query?pretty=true --data-urlencode "db=mydb" --data-urlencode "q=select load from cpu" 可以看到load的值分別是42 78 15.4;用mean(load)求出來的值為45,13 curl -G http://localhost:8086/query?pretty=true --data-urlencode "db=ydb" --data-urlencode "q=select mean(load) from cpu where host='server01'"使用influxdb提供的web界面進(jìn)行操作:
這里只是簡單的介紹了influxdb的使用,后期如果想在grafana中匯聚并完美地展示數(shù)據(jù),可能需要熟悉influxdb的各種查詢語法。(其實就是sql語句的一些使用技巧,聚合函數(shù)的使用,子查詢等等)
?
注意:原創(chuàng)著作,轉(zhuǎn)載請聯(lián)系作者!
轉(zhuǎn)載于:https://my.oschina.net/xxbAndy/blog/751329
總結(jié)
以上是生活随笔為你收集整理的Docker监控方案(TIG)的研究与实践之Influxdb的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到的是真的吗
- 下一篇: 梦到把指甲剪短什么意思