您好,登錄后才能下訂單哦!
這篇文章主要介紹“Docker中的Influxdb研究與實踐”,在日常操作中,相信很多人在Docker中的Influxdb研究與實踐問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Docker中的Influxdb研究與實踐”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
influxdb介紹:
使用TSM(Time Structured Merge)存儲引擎,允許高攝取速度和數據壓縮;
使用go編寫,無需其他依賴;
簡單,高性能寫查詢httpAPI接口;
支持其他數據獲取協議的插件,比如graphite,collected,OpenTSDB;
使用relay構建高可用https://docs.influxdata.com/influxdb/v1.0/high_availability/relay/;
擴展的類sql語言,很容易查詢匯總數據;
tag的支持,可用讓查詢變的更加高效和快速;
保留策略有效地自動淘汰過期的數據;
持續所產生的自動計算的數據會使得頻繁的查詢更加高效;
web管理頁面的支持
下載安裝:
github:https://github.com/influxdata/influxdb 源碼編譯
官網下載:
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必須寫本機,否則無法連接到數據操作的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服務會啟動三個端口:8086為服務的默認數據處理端口,主要用來influxdb數據庫的相關操作,可提供相關的API;8083為管理員提供了一個可視化的web界面,用來為用戶提供友好的可視化查詢與數據管理;8088主要為了元數據的管理。需要注意的是,influxdb默認是需要influxdb用戶啟動,且數據存放在/var/lib/influxdb/下面,生產環境需要注意這個。
啟動:
和telegraf啟動方式一樣,可以使用init.d或者systemd進行管理influxdb
注意,啟動之后需要查看相關的端口是否正在監聽,并檢查日志確保服務正常啟動
使用:
如果說使用telegraf最核心的部分在配置,那么influxdb最核心的就是SQL語言的使用了。influxdb默認支持三種操作方式:
登錄influxdb的shell中操作:
創建數據庫: create database mydb 創建用戶: create user "bigdata" with password 'bigdata' with all privileges 查看數據庫: show databases; 數據插入: insert bigdata,host=server001,regin=HC load=88 切換數據庫: use mydb 查看數據庫中有哪些measurement(類似數據庫中的表): show measurements 查詢: select * from cpu limit 2 查詢一小時前開始到現在結束的: #select load from cpu where time > now() - 1h 查詢從歷史紀元開始到1000天之間: #select load from cpu where time < now() + 1000d 查找一個時間區間: #select load from cpu where time > '2016-08-18' and time < '2016-09-19' 查詢一個小時間區間的數據,比如在September 18, 2016 21:24:00:后的6分鐘: #select load from cpu where time > '2016-09-18T21:24:00Z' +6m 使用正則查詢所有measurement的數據: #select * from /.*/ limit 1 #select * from /^docker/ limit 3 #select * from /.*mem.*/ limit 3 正則匹配加指定tag:(=~ !~) #select * from cpu where "host" !~ /.*HC.*/ limit 4 #SELECT * FROM "h3o_feet" WHERE ("location" =~ /.*y.*/ OR "location" =~ /.*m.*/) AND "water_level" > 0 LIMIT 4 排序:group by的用法必須得是在復合函數中進行使用 #select count(type) from events group by time(10s) #select count(type) from events group by time(10s),type 給查詢字段做tag: #select count(type) as number_of_types group by time(10m) #select count(type) from events group by time(1h) where time > now() - 3h 使用fill字段: #select count(type) from events group by time(1h) fill(0)/fill(-1)/fill(null) where time > now() - 3h 數據聚合: select count(type) from user_events merge admin_events group by time(10m)
使用API進行操作數據:
創建數據庫: curl -G "http://localhost:8086/query" --data-urlencode "q=create database mydb" 插入數據: 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 查詢數據:(--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'" 數據分析: #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界面進行操作:
這里只是簡單的介紹了influxdb的使用,后期如果想在grafana中匯聚并完美地展示數據,可能需要熟悉influxdb的各種查詢語法。(其實就是sql語句的一些使用技巧,聚合函數的使用,子查詢等等)
到此,關于“Docker中的Influxdb研究與實踐”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。