Docker監控方案(TIG)的研究與實踐之Influxdb

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

前言:

Influxdb也是有influxdata公司(www.influxdata.com )開發的用于數據存儲的時間序列數據庫.可用于數據的時間排列。在整個TIG(Telegraf+influxdb+grafana)方案中,influxdb可算作一個中間件,主要負責原始數據的存儲,并按照時間序列進行索引構建以提供時間序列查詢接口。在整個TIG方案中,應該先構建的就是Influxdb。

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 "h2o_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語句的一些使用技巧,聚合函數的使用,子查詢等等)

?

注意:原創著作,轉載請聯系作者!

轉載于:https://my.oschina.net/xxbAndy/blog/751329

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397625.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS-生成隨機數

有時候我們需要在程序中生成隨機數&#xff0c;但是在Objective-c中并沒有提供相應的函數&#xff0c;好在C中提供了rand()、srand()、random()、arc4random()幾個函數。那么怎么使用呢&#xff1f;下面將簡單介紹&#xff1a; 1、 獲取一個隨機整數范圍在&#xff1a;[0,100)…

劍指offer 面試32題

面試32題&#xff1a; 題目&#xff1a;從上到下打印二叉樹 題&#xff1a;不分行從上到下打印二叉樹 解題代碼&#xff1a; # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val x # self.left None # self.right …

crc算法java_c語言的crc16算法轉java

一、c語言uint16_t crc_chk(uint8_t *data, uint8_t len){uint8_t i;uint16_t reg_crc 0xffff;while(len--) {reg_crc ^ *data;for(i 0; i < 8; i) {if(reg_crc & 0x01) {reg_crc (reg_crc >> 1) ^ 0xA001;} else {reg_crc reg_crc >> 1;}}}return reg_…

Java第三階段學習(三、字符流、轉換流)

一、字節流讀取中文時出現的問題&#xff1a; 文件中有中文時&#xff0c;用字節流讀取會出現亂碼的問題&#xff0c;因為一個中文為兩個字節。 二、字符編碼表 編碼表&#xff1a;其實就是生活中字符和計算機二進制的對應關系表。 1、ascii&#xff1a; 一個字節中的7位就可以…

windows下OpenSSL加密證書安裝步驟與使用方法

OpenSSL加密證書一般用于簽名認證&#xff0c;含私鑰和公鑰。在Linux系統中&#xff0c;OpenSSL一般是已經安裝好了&#xff0c;可以直接使用。而在Windows系統中&#xff0c;是需要安裝使用的。 最近在使用支付平臺時&#xff0c;用到了OpenSSL&#xff0c;鑒于此分享給大家&a…

linux運維(五)

頭有點大&#xff0c;也浪費了一些時間。明天過后緩沖一下1、存儲過程與觸發器的區別&#xff1f;答&#xff1a;&#xff08;1&#xff09;觸發器主要是通過事件執行觸發而被執行的&#xff0c;而存儲過程可以通過存儲過程名稱而直接調用。&#xff08;call/execute&#xff0…

django web 自定義通用權限控制

需求&#xff1a;web系統有包含以下5個url&#xff0c;分別對于不同資源&#xff1b; 1、stu/add_stu/ 2、stu/upload_homework/ 3、stu/query_homework/ 4、stu/add_record/ ----------------------------------------------------------------------------------------------…

java源碼影視源碼搭建教程_新版千月影視app源碼+搭建教程

使用notepad批量替換URL【http://】為你的域名(被替換的域名訪問有成品不能發布 需要修改的到前臺confing里面查詢)&#xff0c;替換名稱【鯨鷹影視】為你的應用名稱&#xff1b;服務端&#xff1a;1.將替換好的后端源碼打包上傳至站點根目錄后解壓&#xff1b;2.配置網站偽靜態…

git學習相關的博客地址

Git分支管理策略&#xff1a; http://www.ruanyifeng.com/blog/2012/07/git.html Git 使用規范流程&#xff1a; http://www.ruanyifeng.com/blog/2015/08/git-use-process.html 基于git的源代碼管理模型——git flow&#xff1a; http://www.ituring.com.cn/article/56870 Git…

Django框架基礎學習

Django安裝python下載地址 http://www.python.org/download/releases/3.3.4/Django的下載地址&#xff1a;https://www.djangoproject.com/download/1&#xff09;安裝&#xff08;進到解壓目錄&#xff09;python setup.py install2、配置環境變量&#xff08;PATH&#xff09…

Uboot USB模式(RK3288變磚頭的解決辦法)

RK3288啟動后有三種模式&#xff0c;可以分別進行操作。 第一種是normal也就是正常的啟動模式。這個模式無法刷固件。一般板子通電就是這個模式 第二種是loader模式。就是刷固件模式。這個模式可以刷各種image。按住recover按鍵再通電&#xff0c;通過uboot的檢測進入這個模式 …

java郵件實例_java郵件小實例

新建一個包&#xff0c;名為mail第一個類&#xff1a;MailSenderInfo.java###########################################package com.util.mail;/*** 發送郵件需要使用的基本信息*author by wangfunhttp://www.5a520.cn 小說520*/import java.util.Properties;public class Mai…

DEV GridView嵌套

/// <summary> /// 綁定主表和明顯表到GridView /// </summary> /// <param name"machineProduct">主表</param> /// <param name"configureData">字表</param> private void Mas…

局域網大型文件分發的可能解決方案

客戶原來的做法是把文件上傳到服務器&#xff0c;然后后形成一個普通的HTTP地址下入網站后臺系統&#xff0c;然后客戶端用戶看到后&#xff0c;則下載下來。但是隨著文件越來越大&#xff0c;客戶端下載量增加&#xff0c;在局域內網環境中這種文件分發方式的弊端立現。服務器…

android——獲取ImageView上面顯示的圖片bitmap對象

獲取的函數方法為&#xff1a;Bitmap bitmapimageView.getDrawingCache(); 但是如果只是這樣寫我們得到的bitmap對象可能為null值&#xff0c;正確的方式為&#xff1a; imageView.setDrawingCacheEnabled(true);Bitmap bitmapimageView.getDrawingCache();imageView.setDrawin…

java監聽com口_簡單了解Java接口+事件監聽機制

1.接口&#xff1a;定義方法&#xff1a;public interface interName //extends interName2, interName3...可繼承多個接口在接口里只能定義常量和抽象方法。public static final String Name;public abstract void method(String Name);//這里不能用大括號&#xff0c;不然就不…

例子:好友列表選中效果

<style type"text/css"> *{ margin:0px auto; padding:0px; font-family:微軟雅黑; font-size:16px;} .f{ width:200px; height:30px; background-color:#63C; color:white; text-align:center; line-height:30px; vertical-align:middle; margin-top:3px} .f:…

sublime 常用插件

AutoFileName 文件提示路徑&#xff0c;在img,script的[src]屬性。link,a的[href]屬性&#xff0c;background 的[url]屬性后提示文件的路徑 CSS Format css格式化工具 Pretty JSON json格式化工具轉載于:https://www.cnblogs.com/zhangtao1990/p/9231608.html

有一句說一千句,是作家....

有一句說一千句&#xff0c;是作家&#xff0c;這叫文采&#xff1b;有一句說一百句&#xff0c;是演說家&#xff0c;這叫口才&#xff1b;有一句說十句&#xff0c;是教授&#xff0c;這叫學問&#xff1b;有一句說一句&#xff0c;是律師&#xff0c;這叫嚴謹&#xff1b;說…

java jsoup爬取動態網頁_java通過Jsoup爬取網頁(入門教程)

一&#xff0c;導入依賴org.jsoupjsoup1.10.3org.apache.httpcomponentshttpclient二&#xff0c;編寫demo類注意不要導錯包了,是org.jsoup.nodes下面的package com.taotao.entity;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResp…