InfluxDB get started (#4628)
* WIP new influxdb get started * WIP get started tutorial * WIP get started * persist tab selection when navigating tutorials * WIP wrapped up query get-started * WIP small updated to query get-started * WIP influxdb get started * Apply suggestions from code review Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * minor updates to get started started docs * Apply suggestions from code review Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * fixed truncate behavior * centralize get-started credential storing * add suggestions from PR review * Get started processing and visualizing data (#4648) * remove draft from process and visualize * WIP get started processing data * updated get started processing data with PR feedback * add get started visualizing data content * udpated vis get started with PR feedback * added clockface v4 * last updates from PR review * ported get started content to 2.5 Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>pull/4651/head
parent
71fdf4d34e
commit
4dcb7dfe6f
|
|
@ -527,6 +527,7 @@ The shortcode has the following parameters:
|
|||
- **next:** path of the next document _(optional)_
|
||||
- **prevText:** override the button text linking to the previous document _(optional)_
|
||||
- **nextText:** override the button text linking to the next document _(optional)_
|
||||
- **keepTab:** include the currently selected tab in the button link _(optional)_
|
||||
|
||||
The shortcode generates buttons that link to both the previous and next documents.
|
||||
By default, the shortcode uses either the `list_title` or the `title` of the linked
|
||||
|
|
@ -539,6 +540,10 @@ document, but you can use `prevText` and `nextText` to override button text.
|
|||
<!-- Override button text -->
|
||||
{{ page-nav prev="/path/to/prev/" prevText="Previous" next="/path/to/next" nextText="Next" >}}
|
||||
|
||||
<!-- Add currently selected tab to button link -->
|
||||
{{ page-nav prev="/path/to/prev/" next="/path/to/next" keepTab=true>}}
|
||||
```
|
||||
|
||||
### Keybinds
|
||||
Use the `{{< keybind >}}` shortcode to include OS-specific keybindings/hotkeys.
|
||||
The following parameters are available:
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ headingElements.each(function() {
|
|||
var elementWhiteList = [
|
||||
".tabs p a",
|
||||
".code-tabs p a",
|
||||
".truncate-toggle",
|
||||
".children-links a",
|
||||
".list-links a",
|
||||
"a.url-trigger",
|
||||
|
|
@ -75,91 +74,21 @@ $('#contents-toggle-btn').click(function(e) {
|
|||
$('#nav-tree').toggleClass('open');
|
||||
})
|
||||
|
||||
//////////////////////////////// Tabbed Content ////////////////////////////////
|
||||
|
||||
function tabbedContent(container, tab, content) {
|
||||
|
||||
// Add the active class to the first tab in each tab group,
|
||||
// in case it wasn't already set in the markup.
|
||||
$(container).each(function () {
|
||||
$(tab, this).removeClass('is-active');
|
||||
$(tab + ':first', this).addClass('is-active');
|
||||
});
|
||||
|
||||
$(tab).on('click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
// Make sure the tab being clicked is marked as active, and make the rest inactive.
|
||||
$(this).addClass('is-active').siblings().removeClass('is-active');
|
||||
|
||||
// Render the correct tab content based on the position of the tab being clicked.
|
||||
const activeIndex = $(tab).index(this);
|
||||
$(content).each(function(i) {
|
||||
if (i === activeIndex) {
|
||||
$(this).show();
|
||||
$(this).siblings(content).hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
tabbedContent('.code-tabs-wrapper', '.code-tabs p a', '.code-tab-content');
|
||||
tabbedContent('.tabs-wrapper', '.tabs p a', '.tab-content');
|
||||
|
||||
// Retrieve the user's programming language (client library) preference.
|
||||
function getApiLibPreference() {
|
||||
return Cookies.get('influx-docs-api-lib') || '';
|
||||
}
|
||||
|
||||
function getTabQueryParam() {
|
||||
const queryParams = new URLSearchParams(window.location.search);
|
||||
return $('<textarea />').html(queryParams.get('t')).text();
|
||||
}
|
||||
|
||||
function activateTabs(selector, tab) {
|
||||
const anchor = window.location.hash;
|
||||
if (tab !== "") {
|
||||
let targetTab = $(`${selector} a:contains("${tab}")`);
|
||||
if(!targetTab.length) {
|
||||
targetTab = Array.from(document.querySelectorAll(`${selector} a`))
|
||||
.find(function(el) {
|
||||
let targetText = el.text &&
|
||||
el.text.toLowerCase().replace(/[^a-z0-9]/, '')
|
||||
return targetText && tab.includes(targetText);
|
||||
})
|
||||
}
|
||||
if(targetTab) {
|
||||
$(targetTab).click();
|
||||
scrollToAnchor(anchor);
|
||||
}
|
||||
}
|
||||
|
||||
const queryParams = new URLSearchParams(window.location.search);
|
||||
$(`${selector} p a`).click(function() {
|
||||
if ($(this).is(':not(":first-child")')) {
|
||||
queryParams.set('t', $(this).html())
|
||||
window.history.replaceState({}, '', `${location.pathname}?${queryParams}${anchor}`);
|
||||
} else {
|
||||
queryParams.delete('t')
|
||||
window.history.replaceState({}, '', `${location.pathname}${anchor}`);
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
//////////////////// Activate Tab with Cookie or Query Param ///////////////////
|
||||
/**
|
||||
* Activate code-tabs based on the cookie then override with query param.
|
||||
**/
|
||||
var tab = getApiLibPreference();
|
||||
(['.code-tabs']).forEach(selector => activateTabs(selector, tab));
|
||||
tab = getTabQueryParam();
|
||||
(['.tabs', '.code-tabs']).forEach(selector => activateTabs(selector, tab));
|
||||
|
||||
/////////////////////////////// Truncate Content ///////////////////////////////
|
||||
|
||||
$(".truncate-toggle").click(function(e) {
|
||||
e.preventDefault()
|
||||
$(this).closest('.truncate').toggleClass('closed');
|
||||
var truncateParent = $(this).closest('.truncate')
|
||||
var truncateParentID = $(this).closest('.truncate')[0].id
|
||||
|
||||
if (truncateParent.hasClass('closed')) {
|
||||
$(this)[0].href = `#${truncateParentID}`
|
||||
} else {
|
||||
$(this)[0].href = "#"
|
||||
}
|
||||
|
||||
truncateParent.toggleClass('closed')
|
||||
truncateParent.find('.truncate-content').toggleClass('closed')
|
||||
})
|
||||
|
||||
////////////////////////////// Expand Accordions ///////////////////////////////
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ function buildTable(inputData) {
|
|||
return value
|
||||
}
|
||||
}
|
||||
var groupKeyString = "Group key = [" + (groupKey.map(column => column + ": " + wrapString(column, (inputData[0])[column])) ).join(", ") + "]";
|
||||
var groupKeyString = "Group key instance = [" + (groupKey.map(column => column + ": " + wrapString(column, (inputData[0])[column])) ).join(", ") + "]";
|
||||
var groupKeyLabel = document.createElement("p");
|
||||
groupKeyLabel.className = "table-group-key"
|
||||
groupKeyLabel.innerHTML = groupKeyString
|
||||
|
|
|
|||
|
|
@ -0,0 +1,101 @@
|
|||
//////////////////////////////// Tabbed Content ////////////////////////////////
|
||||
|
||||
/**
|
||||
* NOTE: Tab <a> elements are whitelisted elements that do not trigger
|
||||
* smoothscroll when clicked. The whitelist is defined in content-interactions.js.
|
||||
**/
|
||||
|
||||
function tabbedContent(container, tab, content) {
|
||||
|
||||
// Add the active class to the first tab in each tab group,
|
||||
// in case it wasn't already set in the markup.
|
||||
$(container).each(function () {
|
||||
$(tab, this).removeClass('is-active');
|
||||
$(tab + ':first', this).addClass('is-active');
|
||||
});
|
||||
|
||||
$(tab).on('click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
// Make sure the tab being clicked is marked as active, and make the rest inactive.
|
||||
$(this).addClass('is-active').siblings().removeClass('is-active');
|
||||
|
||||
// Render the correct tab content based on the position of the tab being clicked.
|
||||
const activeIndex = $(tab).index(this);
|
||||
$(content).each(function(i) {
|
||||
if (i === activeIndex) {
|
||||
$(this).show();
|
||||
$(this).siblings(content).hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
tabbedContent('.code-tabs-wrapper', '.code-tabs p a', '.code-tab-content');
|
||||
tabbedContent('.tabs-wrapper', '.tabs p a', '.tab-content');
|
||||
|
||||
// Retrieve the user's programming language (client library) preference.
|
||||
function getApiLibPreference() {
|
||||
return Cookies.get('influx-docs-api-lib') || '';
|
||||
}
|
||||
|
||||
function getTabQueryParam() {
|
||||
const queryParams = new URLSearchParams(window.location.search);
|
||||
return $('<textarea />').html(queryParams.get('t')).text();
|
||||
}
|
||||
|
||||
// Add query param to .keep-tab paginated navigation buttons to persist tab
|
||||
// selection when navigating between the pages.
|
||||
function updateBtnURLs(tabId, op="update") {
|
||||
$('a.keep-tab').each(function () {
|
||||
var link = $(this)[0].href
|
||||
var tabStr = tabId.replace(/ /, '+')
|
||||
|
||||
if (op === "delete") {
|
||||
$(this)[0].href=link.replace(/\?t.*$/, '')
|
||||
} else {
|
||||
$(this)[0].href=link.replace(/($)|(\?t=.*$)/, `?t=${tabStr}`)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function activateTabs(selector, tab) {
|
||||
const anchor = window.location.hash;
|
||||
if (tab !== "") {
|
||||
let targetTab = $(`${selector} a:contains("${tab}")`);
|
||||
if(!targetTab.length) {
|
||||
targetTab = Array.from(document.querySelectorAll(`${selector} a`))
|
||||
.find(function(el) {
|
||||
let targetText = el.text &&
|
||||
el.text.toLowerCase().replace(/[^a-z0-9]/, '')
|
||||
return targetText && tab.includes(targetText);
|
||||
})
|
||||
}
|
||||
if(targetTab) {
|
||||
$(targetTab).click();
|
||||
scrollToAnchor(anchor);
|
||||
}
|
||||
}
|
||||
|
||||
const queryParams = new URLSearchParams(window.location.search);
|
||||
$(`${selector} p a`).click(function() {
|
||||
if ($(this).is(':not(":first-child")')) {
|
||||
queryParams.set('t', $(this).html())
|
||||
window.history.replaceState({}, '', `${location.pathname}?${queryParams}${anchor}`);
|
||||
updateBtnURLs($(this).html())
|
||||
} else {
|
||||
queryParams.delete('t')
|
||||
window.history.replaceState({}, '', `${location.pathname}${anchor}`);
|
||||
updateBtnURLs($(this).html(), "delete")
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
//////////////////// Activate Tab with Cookie or Query Param ///////////////////
|
||||
/**
|
||||
* Activate code-tabs based on the cookie then override with query param.
|
||||
**/
|
||||
var tab = getApiLibPreference();
|
||||
(['.code-tabs']).forEach(selector => activateTabs(selector, tab), updateBtnURLs(tab));
|
||||
tab = getTabQueryParam();
|
||||
(['.tabs', '.code-tabs']).forEach(selector => activateTabs(selector, tab), updateBtnURLs(tab));
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
padding-left: .29rem;
|
||||
line-height: 1.25rem;
|
||||
|
||||
&.v3 {
|
||||
&.v3, &.v4 {
|
||||
position: relative;
|
||||
background: $g5-pepper;
|
||||
width: 18px;
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
.circle {left: 4px;}
|
||||
}
|
||||
|
||||
&.v3 {
|
||||
&.v3, &.v4 {
|
||||
width: 26px;
|
||||
.circle {
|
||||
height: 12px;
|
||||
|
|
@ -244,12 +244,14 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////// CLOCKFACE V3 /////////////////////////////////
|
||||
}
|
||||
|
||||
.nav-items-v3 {
|
||||
.nav-item-v3 {
|
||||
////////////////////////////// CLOCKFACE V3 & v4 ///////////////////////////////
|
||||
|
||||
.nav-items-v3,
|
||||
.nav-items-v4 {
|
||||
.nav-item-v3,
|
||||
.nav-item-v4 {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
margin: 0 1rem 1.25rem 0;
|
||||
|
|
@ -262,13 +264,15 @@
|
|||
&.account {
|
||||
padding: 8px;
|
||||
|
||||
.acct-inner-v3 {
|
||||
.acct-inner-v3,
|
||||
.acct-inner-v4 {
|
||||
display: flex;
|
||||
background-color: #f1f1f30d;
|
||||
border-radius: $radius;
|
||||
}
|
||||
|
||||
.acct-icon-v3 {
|
||||
.acct-icon-v3,
|
||||
.acct-icon-v4 {
|
||||
display: flex;
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
|
|
@ -283,7 +287,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
.acct-label-v3 {
|
||||
.acct-label-v3,
|
||||
.acct-label-v4 {
|
||||
display: inline-block;
|
||||
padding: 8px 0px 0px 8px;
|
||||
width: 165px;
|
||||
|
|
@ -303,7 +308,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
.nav-icon-v3 {
|
||||
.nav-icon-v3,
|
||||
.nav-icon-v4 {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
|
@ -312,7 +318,8 @@
|
|||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
p.nav-label-v3 {
|
||||
p.nav-label-v3,
|
||||
p.nav-label-v4 {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
|
@ -326,6 +333,9 @@
|
|||
.cf-icon {
|
||||
display: inline-block;
|
||||
font-size: 1.35rem;
|
||||
|
||||
&.v3 {font-family: 'icomoon-v3'}
|
||||
&.v4 {font-family: 'icomoon-v4'}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -338,4 +348,5 @@
|
|||
@include media(small) {
|
||||
.article--content.nav-item:nth-child(2) {display: none;}
|
||||
.article--content.nav-item-v3:nth-child(2) {display: none;}
|
||||
.article--content.nav-item-v4:nth-child(2) {display: none;}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,6 +133,133 @@
|
|||
}
|
||||
}
|
||||
|
||||
///////////////// Data model table in InfluxDB 2.4+ get started ////////////////
|
||||
|
||||
#series-diagram {
|
||||
display: flex;
|
||||
width: fit-content;
|
||||
max-width: 100%;
|
||||
margin: 1rem 3.25rem 1.75rem 0;
|
||||
padding-right: 1.5rem;
|
||||
border-right: 2px solid $tooltip-bg;
|
||||
|
||||
table {margin: 0;}
|
||||
|
||||
&:after {
|
||||
content: "series";
|
||||
top: 4rem;
|
||||
right: -3.4rem;
|
||||
}
|
||||
|
||||
& + #series-diagram {margin-bottom: 3rem;}
|
||||
|
||||
}
|
||||
|
||||
table tr.point{
|
||||
border: 2px solid $tooltip-bg;
|
||||
|
||||
&:after {
|
||||
content: "point";
|
||||
bottom: -.8rem;
|
||||
left: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
#series-diagram, table tr.point {
|
||||
position: relative;
|
||||
&:after {
|
||||
color: $tooltip-text;
|
||||
background: $tooltip-bg;
|
||||
border-radius: $radius;
|
||||
position: absolute;
|
||||
font-size: .9rem;
|
||||
font-weight: $medium;
|
||||
padding: .2rem .5rem;
|
||||
line-height: .9rem;
|
||||
}
|
||||
}
|
||||
|
||||
////////////// Line protocol anatomy in InfluxDB 2.4+ get started //////////////
|
||||
|
||||
#line-protocol-anatomy {
|
||||
overflow: scroll;
|
||||
margin: 3rem 0 2.5rem;
|
||||
|
||||
p {
|
||||
padding: 3rem 0 2rem;
|
||||
white-space: nowrap;
|
||||
font-family: $code;
|
||||
overflow: visible;
|
||||
text-align: center;
|
||||
|
||||
span{
|
||||
padding: .75rem 0 .75rem;
|
||||
&.el {
|
||||
position: relative;
|
||||
border-top: 2px solid $tooltip-bg;
|
||||
|
||||
&:before{
|
||||
display: block;
|
||||
position: absolute;
|
||||
font-family: $proxima;
|
||||
font-size: .95rem;
|
||||
color: $tooltip-bg;
|
||||
font-weight: $medium;
|
||||
top: -2.75rem;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
&:after{
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
height: 1rem;
|
||||
width: 2px;
|
||||
top: -1rem;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
background: $tooltip-bg;
|
||||
}
|
||||
&.measurement:before{content: "measurement"}
|
||||
&.tagset:before{content: "tag set"}
|
||||
&.fieldset:before{content: "field set"}
|
||||
&.timestamp:before{content: "timestamp"}
|
||||
}
|
||||
|
||||
&.whitespace, &.comma{
|
||||
position: relative;
|
||||
border-bottom: 2px solid $tooltip-bg;
|
||||
|
||||
&:before{
|
||||
white-space: nowrap;
|
||||
display: block;
|
||||
position: absolute;
|
||||
font-family: $proxima;
|
||||
font-size: .95rem;
|
||||
color: $tooltip-bg;
|
||||
font-weight: $medium;
|
||||
bottom: -2.75rem;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
&:after{
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
height: 1rem;
|
||||
width: 2px;
|
||||
bottom: -1rem;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
background: $tooltip-bg;
|
||||
}
|
||||
&.whitespace:before{content: attr(data-whitespace) " whitespace";}
|
||||
&.comma:before{content: attr(data-whitespace) "1st comma";}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////// MEDIA QUERIES ////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -158,4 +285,8 @@
|
|||
.shard-group { margin: .25rem 0;}
|
||||
}
|
||||
}
|
||||
|
||||
#series-diagram {
|
||||
width: auto;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -59,6 +59,25 @@
|
|||
flex-grow: unset;
|
||||
padding: .35rem 1rem;
|
||||
}
|
||||
|
||||
.tab-view-output {
|
||||
padding: .5rem .5rem 0;
|
||||
font-size: .9rem;
|
||||
opacity: .65;
|
||||
font-style: italic;
|
||||
transition: opacity .2s;
|
||||
|
||||
&:before {
|
||||
content: "\e97a";
|
||||
margin-right: 0.25em;
|
||||
font-family: 'icomoon';
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
|
||||
a.is-active + .tab-view-output {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
// Style suggested for tabs that have uneven button widths because of wrapping.
|
||||
&.even-wrap a {
|
||||
|
|
@ -106,6 +125,8 @@
|
|||
width: 100%;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
& table:last-child { margin-bottom: 0; }
|
||||
}
|
||||
|
||||
.tab-content:not(:first-of-type) { display: none; }
|
||||
|
|
|
|||
|
|
@ -77,6 +77,10 @@ p.table-group-key {
|
|||
font-size: .95rem;
|
||||
}
|
||||
|
||||
table + .table-group-key {
|
||||
margin-top: -2rem;
|
||||
}
|
||||
|
||||
// Reverse the order of InfluxDB version rows in Flux versions table
|
||||
// Hugo doesn't support sorting maps (objects) by keys
|
||||
table.flux-influxdb-versions tbody {
|
||||
|
|
|
|||
|
|
@ -4,11 +4,22 @@
|
|||
position: relative;
|
||||
margin-bottom: 3.5rem;
|
||||
|
||||
.truncate-content {
|
||||
overflow: hidden;
|
||||
max-height: 9999px;
|
||||
transition: max-height .4s;
|
||||
|
||||
&.closed {
|
||||
min-height: 250px;
|
||||
max-height: 25vh;
|
||||
}
|
||||
}
|
||||
|
||||
.truncate-bottom {
|
||||
position: absolute;
|
||||
bottom: -30px;
|
||||
width: 100%;
|
||||
z-index: 100%;
|
||||
z-index: 100;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
|
|
@ -31,12 +42,8 @@
|
|||
color: $article-link;
|
||||
}
|
||||
}
|
||||
&.closed {
|
||||
min-height: 200px;
|
||||
max-height: 25vh;
|
||||
overflow: hidden;
|
||||
margin-top: -1.5rem;
|
||||
|
||||
&.closed {
|
||||
|
||||
.truncate-bottom {
|
||||
bottom: 0;
|
||||
background-image: linear-gradient(to bottom, rgba($article-bg, 0), rgba($article-bg, 1));
|
||||
|
|
|
|||
|
|
@ -35,4 +35,8 @@ body {
|
|||
}
|
||||
|
||||
@import "tools/icon-fonts/icomoon-v2";
|
||||
@import "tools/icon-fonts/icon";
|
||||
@import "tools/icon-fonts/icon-v3";
|
||||
@import "tools/icon-fonts/icon-v4";
|
||||
|
||||
.v3 {font-family: 'icomoon-v3'}
|
||||
.v4 {font-family: 'icomoon-v4'}
|
||||
|
|
@ -8,7 +8,7 @@ $bold: 700;
|
|||
|
||||
.tooltip {
|
||||
position: relative;
|
||||
display: inline;
|
||||
display: block;
|
||||
font-weight: $medium;
|
||||
color: $tooltip-color;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,19 +6,19 @@
|
|||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: 'icomoon';
|
||||
src: url('fonts/icomoon.eot') format('embedded-opentype');
|
||||
src: url('fonts/icomoon.eot') format('embedded-opentype'),
|
||||
url('fonts/icomoon.woff2') format('woff2'),
|
||||
url('fonts/icomoon.ttf') format('truetype'),
|
||||
url('fonts/icomoon.woff') format('woff'),
|
||||
url('fonts/icomoon.svg') format('svg');
|
||||
font-family: 'icomoon-v3';
|
||||
src: url('fonts/icomoon-v3.eot') format('embedded-opentype');
|
||||
src: url('fonts/icomoon-v3.eot') format('embedded-opentype'),
|
||||
url('fonts/icomoon-v3.woff2') format('woff2'),
|
||||
url('fonts/icomoon-v3.ttf') format('truetype'),
|
||||
url('fonts/icomoon-v3.woff') format('woff'),
|
||||
url('fonts/icomoon-v3.svg') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.cf-icon {
|
||||
font-family: 'icomoon' !important;
|
||||
font-family: 'icomoon-v3';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
|
|
@ -0,0 +1,295 @@
|
|||
/*
|
||||
Icon Font
|
||||
-----------------------------------------------------------------------------
|
||||
Created using a tool called IcoMoon
|
||||
See more at http://icomoon.io
|
||||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: 'icomoon-v4';
|
||||
src: url('fonts/icomoon-v4.eot') format('embedded-opentype');
|
||||
src: url('fonts/icomoon-v4.eot') format('embedded-opentype'),
|
||||
url('fonts/icomoon-v4.woff2') format('woff2'),
|
||||
url('fonts/icomoon-v4.ttf') format('truetype'),
|
||||
url('fonts/icomoon-v4.woff') format('woff'),
|
||||
url('fonts/icomoon-v4.svg') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.cf-icon {
|
||||
font-family: 'icomoon-v4';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
|
||||
// Better Font Rendering
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
&.FolderOpen:before {
|
||||
content: '\e956';
|
||||
}
|
||||
&.Bill:before {
|
||||
content: '\e954';
|
||||
}
|
||||
&.Logout:before {
|
||||
content: '\e950';
|
||||
}
|
||||
&.PieChart:before {
|
||||
content: '\e957';
|
||||
}
|
||||
&.CurrencyDollar:before {
|
||||
content: '\e952';
|
||||
}
|
||||
&.Sync:before {
|
||||
content: '\e955';
|
||||
}
|
||||
&.Subtract:before {
|
||||
content: '\e953';
|
||||
}
|
||||
&.Timer:before {
|
||||
content: '\e94f';
|
||||
}
|
||||
&.CaretOutlineRight:before {
|
||||
content: '\e94b';
|
||||
}
|
||||
&.CollapseLeft:before {
|
||||
content: '\e94c';
|
||||
}
|
||||
&.CollapseRight:before {
|
||||
content: '\e94d';
|
||||
}
|
||||
&.DoubleCaretVertical:before {
|
||||
content: '\e94e';
|
||||
}
|
||||
&.QuestionMark_Outline:before {
|
||||
content: '\e94a';
|
||||
}
|
||||
&.Info_New:before {
|
||||
content: '\e949';
|
||||
}
|
||||
&.SidebarClose:before {
|
||||
content: '\e947';
|
||||
}
|
||||
&.SidebarOpen:before {
|
||||
content: '\e948';
|
||||
}
|
||||
&.CaretDown_New:before {
|
||||
content: '\e912';
|
||||
}
|
||||
&.CaretLeft_New:before {
|
||||
content: '\e913';
|
||||
}
|
||||
&.CaretRight_New:before {
|
||||
content: '\e914';
|
||||
}
|
||||
&.CaretUp_New:before {
|
||||
content: '\e915';
|
||||
}
|
||||
&.Play:before {
|
||||
content: '\e900';
|
||||
}
|
||||
&.Pause:before {
|
||||
content: '\e901';
|
||||
}
|
||||
&.EyeOpen:before {
|
||||
content: '\e902';
|
||||
}
|
||||
&.Flask:before {
|
||||
content: '\e903';
|
||||
}
|
||||
&.AddCell_New:before {
|
||||
content: '\e904';
|
||||
}
|
||||
&.QuestionMark:before {
|
||||
content: '\e905';
|
||||
}
|
||||
&.AlertTriangle:before {
|
||||
content: '\e906';
|
||||
}
|
||||
&.Annotate_New:before {
|
||||
content: '\e907';
|
||||
}
|
||||
&.ArrowDown_New:before {
|
||||
content: '\e908';
|
||||
}
|
||||
&.ArrowLeft_New:before {
|
||||
content: '\e909';
|
||||
}
|
||||
&.ArrowRight_New:before {
|
||||
content: '\e90a';
|
||||
}
|
||||
&.BarChart_New:before {
|
||||
content: '\e90b';
|
||||
}
|
||||
&.Bell:before {
|
||||
content: '\e90c';
|
||||
}
|
||||
&.BookCode:before {
|
||||
content: '\e90d';
|
||||
}
|
||||
&.BookOutline:before {
|
||||
content: '\e90e';
|
||||
}
|
||||
&.Braces:before {
|
||||
content: '\e90f';
|
||||
}
|
||||
&.BucketSolid:before {
|
||||
content: '\e910';
|
||||
}
|
||||
&.Calendar:before {
|
||||
content: '\e911';
|
||||
}
|
||||
&.Chat:before {
|
||||
content: '\e916';
|
||||
}
|
||||
&.Checkmark_New:before {
|
||||
content: '\e917';
|
||||
}
|
||||
&.CircleThick:before {
|
||||
content: '\e918';
|
||||
}
|
||||
&.Clipboard_New:before {
|
||||
content: '\e919';
|
||||
}
|
||||
&.Clock_New:before {
|
||||
content: '\e91a';
|
||||
}
|
||||
&.Cloud:before {
|
||||
content: '\e91b';
|
||||
}
|
||||
&.CogOutline_New:before {
|
||||
content: '\e91c';
|
||||
}
|
||||
&.CogSolid_New:before {
|
||||
content: '\e91d';
|
||||
}
|
||||
&.Coppercoin:before {
|
||||
content: '\e91e';
|
||||
}
|
||||
&.CrownSolid_New:before {
|
||||
content: '\e91f';
|
||||
}
|
||||
&.Cube:before {
|
||||
content: '\e920';
|
||||
}
|
||||
&.CuboSolid:before {
|
||||
content: '\e921';
|
||||
}
|
||||
&.Cubouniform:before {
|
||||
content: '\e922';
|
||||
}
|
||||
&.Darkmode_New:before {
|
||||
content: '\e923';
|
||||
}
|
||||
&.DashH:before {
|
||||
content: '\e924';
|
||||
}
|
||||
&.Download_New:before {
|
||||
content: '\e925';
|
||||
}
|
||||
&.ExpandB:before {
|
||||
content: '\e926';
|
||||
}
|
||||
&.Export_New:before {
|
||||
content: '\e927';
|
||||
}
|
||||
&.EyeClosed:before {
|
||||
content: '\e928';
|
||||
}
|
||||
&.FunnelSolid:before {
|
||||
content: '\e929';
|
||||
}
|
||||
&.GraphLine_New:before {
|
||||
content: '\e92a';
|
||||
}
|
||||
&.Group:before {
|
||||
content: '\e92b';
|
||||
}
|
||||
&.History:before {
|
||||
content: '\e92c';
|
||||
}
|
||||
&.Duplicate_New:before {
|
||||
content: '\e92d';
|
||||
}
|
||||
&.Install:before {
|
||||
content: '\e92e';
|
||||
}
|
||||
&.Layers:before {
|
||||
content: '\e92f';
|
||||
}
|
||||
&.Lightmode_New:before {
|
||||
content: '\e930';
|
||||
}
|
||||
&.Link:before {
|
||||
content: '\e931';
|
||||
}
|
||||
&.Lock:before {
|
||||
content: '\e932';
|
||||
}
|
||||
&.More:before {
|
||||
content: '\e933';
|
||||
}
|
||||
&.Pencil:before {
|
||||
content: '\e934';
|
||||
}
|
||||
&.Plus_New:before {
|
||||
content: '\e935';
|
||||
}
|
||||
&.Refresh_New:before {
|
||||
content: '\e936';
|
||||
}
|
||||
&.Remove_New:before {
|
||||
content: '\e937';
|
||||
}
|
||||
&.Save:before {
|
||||
content: '\e938';
|
||||
}
|
||||
&.SaveOutline:before {
|
||||
content: '\e951';
|
||||
}
|
||||
&.Search_New:before {
|
||||
content: '\e939';
|
||||
}
|
||||
&.Share:before {
|
||||
content: '\e93a';
|
||||
}
|
||||
&.Shield:before {
|
||||
content: '\e93b';
|
||||
}
|
||||
&.Star:before {
|
||||
content: '\e93c';
|
||||
}
|
||||
&.StarSmile:before {
|
||||
content: '\e93d';
|
||||
}
|
||||
&.Subscribe:before {
|
||||
content: '\e93e';
|
||||
}
|
||||
&.Switch_New:before {
|
||||
content: '\e93f';
|
||||
}
|
||||
&.Text_New:before {
|
||||
content: '\e940';
|
||||
}
|
||||
&.Trash_New:before {
|
||||
content: '\e941';
|
||||
}
|
||||
&.Undo:before {
|
||||
content: '\e942';
|
||||
}
|
||||
&.Upload_New:before {
|
||||
content: '\e943';
|
||||
}
|
||||
&.Upload_Outline:before {
|
||||
content: '\e944';
|
||||
}
|
||||
&.User:before {
|
||||
content: '\e945';
|
||||
}
|
||||
&.Zap:before {
|
||||
content: '\e946';
|
||||
}
|
||||
}
|
||||
|
|
@ -18,6 +18,8 @@ This is a paragraph. Lorem ipsum dolor ({{< icon "trash" "v2" >}}) sit amet, con
|
|||
|
||||
This is **bold** text. This is _italic_ text. This is _**bold and italic**_.
|
||||
|
||||
### Clockface 3.x icons
|
||||
|
||||
{{< nav-icon "account" "v2" >}}
|
||||
{{< nav-icon "data" "v2" >}}
|
||||
{{< nav-icon "explore" "v2" >}}
|
||||
|
|
@ -92,6 +94,89 @@ This is **bold** text. This is _italic_ text. This is _**bold and italic**_.
|
|||
{{< icon "x" "v2" >}} x
|
||||
|
||||
### Clockface 3.x icons
|
||||
|
||||
{{< nav-icon "account" "v3" >}}
|
||||
{{< nav-icon "data" "v3" >}}
|
||||
{{< nav-icon "explore" "v3" >}}
|
||||
{{< nav-icon "boards" "v3" >}}
|
||||
{{< nav-icon "tasks" "v3" >}}
|
||||
{{< nav-icon "alerts" "v3" >}}
|
||||
{{< nav-icon "settings" "v3" >}}
|
||||
{{< nav-icon "notebooks" "v3" >}}
|
||||
|
||||
{{< icon "add-cell" "v3" >}} add-cell
|
||||
{{< icon "add-label" "v3" >}} add-label
|
||||
{{< icon "alert" "v3" >}} alert
|
||||
{{< icon "annotate" "v3" >}} annotate
|
||||
{{< icon "bar-chart" "v3" >}} bar-chart
|
||||
{{< icon "bar-graph" "v3" >}} bar-graph
|
||||
{{< icon "calendar" "v3" >}} calendar
|
||||
{{< icon "chat" "v3" >}} chat
|
||||
{{< icon "checkmark" "v3" >}} checkmark
|
||||
{{< icon "clock" "v3" >}} clock
|
||||
{{< icon "clone" "v3" >}} clone
|
||||
{{< icon "cloud" "v3" >}} cloud
|
||||
{{< icon "cog" "v3" >}} cog
|
||||
{{< icon "config" "v3" >}} config
|
||||
{{< icon "copy" "v3" >}} copy
|
||||
{{< icon "crown" "v3" >}} crown
|
||||
{{< icon "dashboard" "v3" >}} dashboard
|
||||
{{< icon "dashboards" "v3" >}} dashboards
|
||||
{{< icon "data-explorer" "v3" >}} data-explorer
|
||||
{{< icon "delete" "v3" >}} delete
|
||||
{{< icon "download" "v3" >}} download
|
||||
{{< icon "duplicate" "v3" >}} duplicate
|
||||
{{< icon "edit" "v3" >}} edit
|
||||
{{< icon "expand" "v3" >}} expand
|
||||
{{< icon "export" "v3" >}} export
|
||||
{{< icon "eye" "v3" >}} eye
|
||||
{{< icon "eye-closed" "v3" >}} eye-closed
|
||||
{{< icon "eye-open" "v3" >}} eye-open
|
||||
{{< icon "feedback" "v3" >}} feedback
|
||||
{{< icon "fullscreen" "v3" >}} fullscreen
|
||||
{{< icon "gear" "v3" >}} gear
|
||||
{{< icon "graph" "v3" >}} graph
|
||||
{{< icon "handle" "v3" >}} handle
|
||||
{{< icon "hide" "v3" >}} hide
|
||||
{{< icon "influx" "v3" >}} influx
|
||||
{{< icon "influx-icon" "v3" >}} influx-icon
|
||||
{{< icon "move" "v3" >}} move
|
||||
{{< icon "move-cell" "v3" >}} move-cell
|
||||
{{< icon "nav-admin" "v3" >}} nav-admin
|
||||
{{< icon "nav-config" "v3" >}} nav-config
|
||||
{{< icon "nav-configuration" "v3" >}} nav-configuration
|
||||
{{< icon "nav-dashboards" "v3" >}} nav-dashboards
|
||||
{{< icon "nav-data-explorer" "v3" >}} nav-data-explorer
|
||||
{{< icon "nav-organizations" "v3" >}} nav-organizations
|
||||
{{< icon "nav-orgs" "v3" >}} nav-orgs
|
||||
{{< icon "nav-tasks" "v3" >}} nav-tasks
|
||||
{{< icon "note" "v3" >}} note
|
||||
{{< icon "notebook" "v3" >}} notebook
|
||||
{{< icon "notebooks" "v3" >}} notebooks
|
||||
{{< icon "org" "v3" >}} org
|
||||
{{< icon "orgs" "v3" >}} orgs
|
||||
{{< icon "pause" "v3" >}} pause
|
||||
{{< icon "pencil" "v3" >}} pencil
|
||||
{{< icon "pin" "v3" >}} pin
|
||||
{{< icon "play" "v3" >}} play
|
||||
{{< icon "plus" "v3" >}} plus
|
||||
{{< icon "refresh" "v3" >}} refresh
|
||||
{{< icon "remove" "v3" >}} remove
|
||||
{{< icon "replay" "v3" >}} replay
|
||||
{{< icon "save-as" "v3" >}} save-as
|
||||
{{< icon "search" "v3" >}} search
|
||||
{{< icon "settings" "v3" >}} settings
|
||||
{{< icon "tasks" "v3" >}} tasks
|
||||
{{< icon "toggle" "v3" >}} toggle
|
||||
{{< icon "trash" "v3" >}} trash
|
||||
{{< icon "trashcan" "v3" >}} trashcan
|
||||
{{< icon "triangle" "v3" >}} triangle
|
||||
{{< icon "view" "v3" >}} view
|
||||
{{< icon "wrench" "v3" >}} wrench
|
||||
{{< icon "x" "v3" >}} x
|
||||
|
||||
### Clockface 4.x icons
|
||||
|
||||
{{< nav-icon "account" >}}
|
||||
{{< nav-icon "data" >}}
|
||||
{{< nav-icon "explore" >}}
|
||||
|
|
@ -140,8 +225,6 @@ This is **bold** text. This is _italic_ text. This is _**bold and italic**_.
|
|||
{{< icon "move" >}} move
|
||||
{{< icon "move-cell" >}} move-cell
|
||||
{{< icon "nav-admin" >}} nav-admin
|
||||
{{< icon "nav-config" >}} nav-config
|
||||
{{< icon "nav-configuration" >}} nav-configuration
|
||||
{{< icon "nav-dashboards" >}} nav-dashboards
|
||||
{{< icon "nav-data-explorer" >}} nav-data-explorer
|
||||
{{< icon "nav-organizations" >}} nav-organizations
|
||||
|
|
@ -167,9 +250,7 @@ This is **bold** text. This is _italic_ text. This is _**bold and italic**_.
|
|||
{{< icon "toggle" >}} toggle
|
||||
{{< icon "trash" >}} trash
|
||||
{{< icon "trashcan" >}} trashcan
|
||||
{{< icon "triangle" >}} triangle
|
||||
{{< icon "view" >}} view
|
||||
{{< icon "wrench" >}} wrench
|
||||
{{< icon "x" >}} x
|
||||
|
||||
## h2 This is a header2
|
||||
|
|
|
|||
|
|
@ -1,71 +0,0 @@
|
|||
---
|
||||
title: Get started with InfluxDB
|
||||
description: >
|
||||
Start collecting, processing, and visualizing data in InfluxDB OSS.
|
||||
menu:
|
||||
influxdb_2_4:
|
||||
name: Get started
|
||||
weight: 3
|
||||
influxdb/v2.4/tags: [get-started]
|
||||
aliases:
|
||||
- /influxdb/v2.4/introduction/get-started/
|
||||
---
|
||||
|
||||
After you've [installed InfluxDB OSS](/influxdb/v2.4/install/), you're ready to get started. Explore the following ways to work with your data:
|
||||
|
||||
- [Collect and write data](#collect-and-write-data)
|
||||
- [Query data](#query-data)
|
||||
- [Process data](#process-data)
|
||||
- [Visualize data](#visualize-data)
|
||||
- [Monitor and alert](#monitor-and-alert)
|
||||
|
||||
*Note:** To run InfluxDB, start the `influxd` daemon ([InfluxDB service](/influxdb/v2.4/reference/cli/influxd/)) using the [InfluxDB command line interface](/influxdb/v2.4/reference/cli/influx/). Once you've started the `influxd` daemon, use `localhost:8086` to log in to your InfluxDB instance.
|
||||
|
||||
To start InfluxDB, do the following:
|
||||
1. Open a terminal.
|
||||
2. Type `influxd` in the command line.
|
||||
|
||||
```sh
|
||||
influxd
|
||||
```
|
||||
|
||||
### Collect and write data
|
||||
|
||||
Collect and write data to InfluxDB using the Telegraf plugins, the InfluxDB v2 API, the `influx` command line interface (CLI), the InfluxDB UI (the user interface for InfluxDB 2.4), or the InfluxDB v2 API client libraries.
|
||||
|
||||
#### Use Telegraf
|
||||
|
||||
Use Telegraf to quickly write data to {{< cloud-name >}}.
|
||||
Create new Telegraf configurations automatically in the InfluxDB UI, or manually update an existing Telegraf configuration to send data to your {{< cloud-name "short" >}} instance.
|
||||
|
||||
For details, see [Automatically configure Telegraf](/influxdb/v2.4/write-data/no-code/use-telegraf/auto-config/)
|
||||
and [Manually update Telegraf configurations](/influxdb/v2.4/write-data/no-code/use-telegraf/manual-config/).
|
||||
|
||||
#### Scrape data
|
||||
|
||||
**InfluxDB OSS** lets you scrape Prometheus-formatted metrics from HTTP endpoints. For details, see [Scrape data](/influxdb/v2.4/write-data/no-code/scrape-data/).
|
||||
|
||||
#### API, CLI, and client libraries
|
||||
|
||||
For information about using the InfluxDB v2 API, `influx` CLI, and client libraries to write data, see [Write data to InfluxDB](/influxdb/v2.4/write-data/).
|
||||
|
||||
### Query data
|
||||
|
||||
Query data using Flux, the UI, and the `influx` command line interface.
|
||||
See [Query data](/influxdb/v2.4/query-data/).
|
||||
|
||||
### Process data
|
||||
|
||||
Use InfluxDB tasks to process and downsample data. See [Process data](/influxdb/v2.4/process-data/).
|
||||
|
||||
### Visualize data
|
||||
|
||||
Build custom dashboards to visualize your data.
|
||||
See [Visualize data](/influxdb/v2.4/visualize-data/).
|
||||
|
||||
### Monitor and alert
|
||||
|
||||
Monitor your data and sends alerts based on specified logic.
|
||||
See [Monitor and alert](/influxdb/v2.4/monitor-alert/).
|
||||
|
||||
{{< influxdbu "influxdb-101" >}}
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
---
|
||||
title: Get started with InfluxDB
|
||||
list_title: Get started
|
||||
description: >
|
||||
Start collecting, querying, processing, and visualizing data in InfluxDB OSS.
|
||||
menu:
|
||||
influxdb_2_4:
|
||||
name: Get started
|
||||
weight: 3
|
||||
influxdb/v2.4/tags: [get-started]
|
||||
aliases:
|
||||
- /influxdb/v2.4/introduction/get-started/
|
||||
---
|
||||
|
||||
InfluxDB {{< current-version >}} is the platform purpose-built to collect, store,
|
||||
process and visualize time series data.
|
||||
**Time series data** is a sequence of data points indexed in time order.
|
||||
Data points typically consist of successive measurements made from the same
|
||||
source and are used to track changes over time.
|
||||
Examples of time series data include:
|
||||
|
||||
- Industrial sensor data
|
||||
- Server performance metrics
|
||||
- Heartbeats per minute
|
||||
- Electrical activity in the brain
|
||||
- Rainfall measurements
|
||||
- Stock prices
|
||||
|
||||
This multi-part tutorial walks you through writing time series data to InfluxDB {{< current-version >}},
|
||||
querying that data, processing and alerting on the data, and then visualizing the data.
|
||||
|
||||
## Key concepts before you get started
|
||||
|
||||
Before you get started using InfluxDB, it's important to understand how time series
|
||||
data is organized and stored in InfluxDB and some key definitions that are used
|
||||
throughout this documentation.
|
||||
|
||||
### Data organization
|
||||
|
||||
The InfluxDB data model organizes time series data into buckets and measurements.
|
||||
A bucket can contain multiple measurements. Measurements contain multiple
|
||||
tags and fields.
|
||||
|
||||
- **Bucket**: Named location where time series data is stored.
|
||||
A bucket can contain multiple _measurements_.
|
||||
- **Measurement**: Logical grouping for time series data.
|
||||
All _points_ in a given measurement should have the same _tags_.
|
||||
A measurement contains multiple _tags_ and _fields_.
|
||||
- **Tags**: Key-value pairs with values that differ, but do not change often.
|
||||
Tags are meant for storing metadata for each point--for example,
|
||||
something to identify the source of the data like host, location, station, etc.
|
||||
- **Fields**: Key-value pairs with values that change over time--for example: temperature, pressure, stock price, etc.
|
||||
- **Timestamp**: Timestamp associated with the data.
|
||||
When stored on disk and queried, all data is ordered by time.
|
||||
|
||||
_For detailed information and examples of the InfluxDB data model, see
|
||||
[Data elements](/influxdb/v2.4/reference/key-concepts/data-elements/)._
|
||||
|
||||
### Important definitions
|
||||
|
||||
The following are important definitions to understand when using InfluxDB:
|
||||
|
||||
- **Point**: Single data record identified by its _measurement, tag keys, tag values, field key, and timestamp_.
|
||||
- **Series**: A group of points with the same
|
||||
{{% oss-only %}}_measurement, tag keys, and tag values_.{{% /oss-only %}}
|
||||
{{% cloud-only %}}_measurement, tag keys and values, and field key_.{{% /cloud-only %}}
|
||||
|
||||
##### Example InfluxDB query results
|
||||
|
||||
{{< influxdb/points-series >}}
|
||||
|
||||
## Tools to use
|
||||
|
||||
Throughout this tutorial, there are multiple tools you can use to interact with
|
||||
InfluxDB {{< current-version >}}. Examples are provided for each of the following:
|
||||
|
||||
- [InfluxDB user interface (UI)](#influxdb-user-interface-ui)
|
||||
- [`influx` CLI](#influx-cli)
|
||||
- [InfluxDB HTTP API](#influxdb-http-api)
|
||||
|
||||
### InfluxDB user interface (UI)
|
||||
|
||||
The InfluxDB UI provides a web-based visual interface for interacting with and managing InfluxDB.
|
||||
{{% oss-only %}}The UI is packaged with InfluxDB and runs as part of the InfluxDB service. To access the UI, with InfluxDB running, visit [localhost:8086](http://localhost:8086) in your browser.{{% /oss-only %}}
|
||||
{{% cloud-only %}}To access the InfluxDB Cloud UI, [log into your InfluxDB Cloud account](https://cloud2.influxdata.com).{{% /cloud-only %}}
|
||||
|
||||
### `influx` CLI
|
||||
|
||||
The `influx` CLI lets you interact with and manage InfluxDB {{< current-version >}} from a command line.
|
||||
{{% oss-only %}}The CLI is packaged separately from InfluxDB and must be downloaded and installed separately.{{% /oss-only %}}
|
||||
For detailed CLI installation instructions, see
|
||||
[Use the influx CLI](/influxdb/v2.4/tools/influx-cli/).
|
||||
|
||||
### InfluxDB HTTP API
|
||||
|
||||
The [InfluxDB API](/influxdb/v2.4/reference/api/) provides a simple way to
|
||||
interact with the InfluxDB {{< current-version >}} using HTTP(S) clients.
|
||||
Examples in this tutorial use cURL, but any HTTP(S) client will work.
|
||||
|
||||
{{% note %}}
|
||||
#### InfluxDB client libraries
|
||||
|
||||
[InfluxDB client libraries](/influxdb/v2.4/api-guide/client-libraries/) are
|
||||
language-specific clients that interact with the InfluxDB HTTP API.
|
||||
Examples for client libraries are not provided in this tutorial, but these can
|
||||
be used to perform all the actions outlined in this tutorial.
|
||||
{{% /note %}}
|
||||
|
||||
## Authorization
|
||||
|
||||
**InfluxDB {{< current-version >}} requires authentication** using [API tokens](/influxdb/v2.4/security/tokens/).
|
||||
Each API token is associated with a user and a specific set of permissions for InfluxDB resources.
|
||||
|
||||
{{< page-nav next="/influxdb/v2.4/get-started/setup/" >}}
|
||||
|
||||
---
|
||||
|
||||
{{< influxdbu "influxdb-101" >}}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,603 @@
|
|||
---
|
||||
title: Get started querying data
|
||||
seotitle: Query data | Get started with InfluxDB
|
||||
list_title: Query data
|
||||
description: >
|
||||
Get started querying data in InfluxDB by learning about Flux and InfluxQL and
|
||||
using tools like the InfluxDB UI, `influx` CLI, and InfluxDB API.
|
||||
menu:
|
||||
influxdb_2_4:
|
||||
name: Query data
|
||||
parent: Get started
|
||||
identifier: get-started-query-data
|
||||
weight: 102
|
||||
metadata: [3 / 5]
|
||||
related:
|
||||
- /influxdb/v2.4/query-data/
|
||||
---
|
||||
|
||||
InfluxDB supports many different tools for querying data, including:
|
||||
|
||||
- InfluxDB user interface (UI)
|
||||
- [InfluxDB HTTP API](/influxdb/v2.4/reference/api/)
|
||||
- [`influx` CLI](/influxdb/v2.4/tools/influx-cli/)
|
||||
- [Chronograf](/{{< latest "Chronograf" >}}/)
|
||||
- [Grafana](/influxdb/v2.4/tools/grafana/)
|
||||
- [InfluxDB client libraries](/influxdb/v2.4/api-guide/client-libraries/)
|
||||
|
||||
This tutorial walks you through the fundamentals of querying data in InfluxDB and
|
||||
focuses primarily on the two languages you can use to query your time series data:
|
||||
|
||||
- **Flux**: A functional scripting language designed to query and process data
|
||||
from InfluxDB and other data sources.
|
||||
- **InfluxQL**: A SQL-like query language designed to query time series data from
|
||||
InfluxDB.
|
||||
|
||||
{{% note %}}
|
||||
The examples in this section of the tutorial query the data from written in the
|
||||
[Get started writing data](/influxdb/v2.4/get-started/write/#write-line-protocol-to-influxdb) section.
|
||||
{{% /note %}}
|
||||
|
||||
###### On this page:
|
||||
- [Query data with Flux](#query-data-with-flux)
|
||||
- [Flux query basics](#flux-query-basics)
|
||||
- [Execute a Flux query](#execute-a-flux-query)
|
||||
- [Query data with InfluxQL](#query-data-with-influxql)
|
||||
- [InfluxQL query basics](#influxql-query-basics)
|
||||
- [Execute an InfluxQL query](#execute-an-influxql-query)
|
||||
|
||||
---
|
||||
|
||||
## Query data with Flux
|
||||
|
||||
Flux is a functional scripting language that lets you query and process data
|
||||
from InfluxDB and [other data sources](/flux/v0.x/query-data/).
|
||||
|
||||
{{% note %}}
|
||||
This is a brief introduction to writing Flux queries.
|
||||
For a more in-depth introduction, see [Get started with Flux](/{{< latest "flux" >}}/get-started/).
|
||||
{{% /note %}}
|
||||
|
||||
### Flux query basics
|
||||
|
||||
When querying InfluxDB with Flux, there are three primary functions you use:
|
||||
|
||||
- [from()](/{{< latest "flux" >}}/stdlib/influxdata/influxdb/from/):
|
||||
Queries data from an InfluxDB bucket.
|
||||
- [range()](/{{< latest "flux" >}}/stdlib/universe/range/):
|
||||
Filters data based on time bounds. Flux requires "bounded" queries—queries
|
||||
limited to a specific time range.
|
||||
- [filter()](/{{< latest "flux" >}}/stdlib/universe/filter/):
|
||||
Filters data based on column values. Each row is represented by `r`
|
||||
and each column is represented by a property of `r`.
|
||||
You can apply multiple subsequent filters.
|
||||
|
||||
To see how `from()` structures data into rows and tables when returned from InfluxDB,
|
||||
[view the data written in Get started writing to InfluxDB](/influxdb/v2.4/get-started/write/#view-the-written-data).
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "Learn more about how `filter()` works" %}}
|
||||
|
||||
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/) reads each row as a
|
||||
[record](/flux/v0.x/data-types/composite/record/) named `r`.
|
||||
In the `r` record, each key-value pair represents a column and its value.
|
||||
For example:
|
||||
|
||||
```js
|
||||
r = {
|
||||
_time: 2020-01-01T00:00:00Z,
|
||||
_measurement: "home",
|
||||
room: "Kitchen",
|
||||
_field: "temp",
|
||||
_value: 21.0,
|
||||
}
|
||||
```
|
||||
|
||||
To filter rows, use [predicate expressions](/flux/v0.x/get-started/syntax-basics/#predicate-expressions)
|
||||
to evaluate the values of columns. Given the row record above:
|
||||
|
||||
```javascript
|
||||
(r) => r._measurement == "home" // Returns true
|
||||
(r) => r.room == "Kitchen" // Returns true
|
||||
(r) => r._field == "co" // Returns false
|
||||
(r) => r._field == "co" or r._field == "temp" // Returns true
|
||||
(r) => r._value <= 20.0 // Returns false
|
||||
```
|
||||
|
||||
Rows that evaluate to `true` are included in the `filter()` output.
|
||||
Rows that evaluate to `false` are dropped from the `filter()` output.
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
#### Pipe-forward operator
|
||||
|
||||
Flux uses the pipe-forward operator (`|>`) to pipe the output of one function as
|
||||
input the next function as input.
|
||||
|
||||
#### Query the example data
|
||||
|
||||
The following Flux query returns the **co**, **hum**, and **temp** fields stored in
|
||||
the **home** measurement with timestamps **between 2022-01-01T08:00:00Z and 2022-01-01T20:00:01Z**.
|
||||
|
||||
```js
|
||||
from(bucket: "get-started")
|
||||
|> range(start: 2022-01-01T08:00:00Z, stop: 2022-01-01T20:00:01Z)
|
||||
|> filter(fn: (r) => r._measurement == "home")
|
||||
|> filter(fn: (r) => r._field== "co" or r._field == "hum" or r._field == "temp")
|
||||
```
|
||||
|
||||
### Execute a Flux query
|
||||
|
||||
Use the **InfluxDB UI**, **`influx` CLI**, or **InfluxDB API** to execute Flux queries.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!--------------------------- BEGIN FLUX UI CONTENT --------------------------->
|
||||
|
||||
1. Visit
|
||||
{{% oss-only %}}[localhost:8086](http://localhost:8086){{% /oss-only %}}
|
||||
{{% cloud-only %}}[cloud2.influxdata.com](https://cloud2.influxdata.com){{% /cloud-only %}}
|
||||
in a browser to log in and access the InfluxDB UI.
|
||||
|
||||
2. In the left navigation bar, click **Data Explorer**.
|
||||
|
||||
{{< nav-icon "data-explorer" "v4" >}}
|
||||
|
||||
3. The InfluxDB Data Explorer provides two options for querying data with Flux:
|
||||
|
||||
- [Query Builder](#query-builder) _(default)_:
|
||||
Visual query builder that lets you select the time range,
|
||||
measurement, tags, and fields to query.
|
||||
- [Script Editor](#script-editor):
|
||||
In-browser code editor for composing and running Flux scripts.
|
||||
|
||||
---
|
||||
|
||||
#### Query builder
|
||||
|
||||
**To build and execute a Flux query with the query builder**:
|
||||
|
||||
1. In the **{{% caps %}}FROM{{% /caps %}}** column, select the bucket to query. For this tutorial,
|
||||
select the **get-started** bucket.
|
||||
2. In the next **filter** column, select **_measurement** from the
|
||||
column dropdown menu, and then select the **home** measurement.
|
||||
3. _(Optional)_ To query a specific field or fields, in the next **filter**
|
||||
column, select **_field** from the column dropdown menu, and then
|
||||
select the fields to query. In this tutorial, there are three
|
||||
fields: **co**, **hum**, and **temp**.
|
||||
4. _(Optional)_ To query by specific tag values, in the next **filter**
|
||||
column, select then tag column from the column dropdown menu, and then
|
||||
select the tag values to filter by. In this tutorial, the tag only
|
||||
tag column is **room**.
|
||||
5. _(Optional)_ In the **{{% caps %}}Aggregate Function{{% /caps %}}** pane,
|
||||
select an aggregate or selector function to use to downsample the data.
|
||||
The default aggregate function is `mean`.
|
||||
6. In the time range dropdown menu, select **Custom Time Range**, and
|
||||
select the following dates from the date selectors:
|
||||
|
||||
- **Start**: 2022-01-01 08:00:00
|
||||
- **Stop**: 2022-01-01 20:00:01
|
||||
|
||||
_Note the addition of one second to the stop time. In Flux, stop
|
||||
times are exclusive and will exclude points with that timestamp.
|
||||
By adding one second, the query will include all points to
|
||||
2022-01-01 20:00:00_.
|
||||
|
||||
7. Click **{{% caps %}}Submit{{% /caps %}}** to execute the query with the
|
||||
selected filters and operations and display the result.
|
||||
|
||||
---
|
||||
|
||||
#### Script editor
|
||||
|
||||
**To write and execute a Flux query with the query builder**:
|
||||
|
||||
1. In the Data Explorer, click **{{% caps %}}Script Editor{{% /caps %}}**.
|
||||
2. Write your Flux query in the Script Editor text field.
|
||||
|
||||
_**Note**: You can either hand-write the functions or you can use the function list
|
||||
to the right of the script editor to search for and inject functions._
|
||||
|
||||
1. Use `from()` and specify the bucket to query with the `bucket` parameter.
|
||||
For this tutorial, query the **get-started** bucket.
|
||||
2. Use `range()` to specify the time range to query. The `start`
|
||||
parameter defines the earliest time to include in results.
|
||||
The `stop` parameter specifies the latest time (exclusively) to
|
||||
include in results.
|
||||
|
||||
- **start**: 2022-01-01T08:00:00Z
|
||||
- **stop**: 2022-01-01T20:00:01Z
|
||||
|
||||
_Note the addition of one second to the stop time. In Flux, stop
|
||||
times are exclusive and will exclude points with that timestamp.
|
||||
By adding one second, the query will include all points to
|
||||
2022-01-01 20:00:00_.
|
||||
|
||||
If you want to use the start and stop times selected in the time
|
||||
selection dropdown menu, use `v.timeRangeStart` and `v.timeRangeStop`
|
||||
as the values for the `start` and `stop` parameters.
|
||||
|
||||
3. Use `filter()` to filter results by the **home** measurement.
|
||||
4. _(Optional)_ Use `filter()` to filter results by a specific field.
|
||||
In this tutorial, there are three fields: **co**, **hum**, and **temp**.
|
||||
5. _(Optional)_ Use `filter()` to filter results by specific
|
||||
tag values. In this tutorial, there is one tag, **room**, with two
|
||||
potential values: **Living Room** or **Kitchen**.
|
||||
|
||||
```js
|
||||
from(bucket: from(bucket: "get-started")
|
||||
|> range(start: 2022-01-01T08:00:00Z, stop: 2022-01-01T20:00:01Z)
|
||||
|> filter(fn: (r) => r._measurement == "home")
|
||||
|> filter(fn: (r) => r._field== "co" or r._field == "hum" or r._field == "temp")
|
||||
```
|
||||
|
||||
3. Click **{{% caps %}}Submit{{% /caps %}}** to execute the query with the
|
||||
selected filters and operations and display the result.
|
||||
|
||||
<!---------------------------- END FLUX UI CONTENT ---------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!-------------------------- BEGIN FLUX CLI CONTENT --------------------------->
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.4/tools/influx-cli/).
|
||||
2. Use the [`influx query` command](/influxdb/v2.4/reference/cli/influx/query/)
|
||||
to query InfluxDB using Flux.
|
||||
|
||||
**Provide the following**:
|
||||
|
||||
- String-encoded Flux query.
|
||||
- [Connection and authentication credentials](/influxdb/v2.4/get-started/setup/?t=influx+CLI#configure-authentication-credentials)
|
||||
|
||||
```sh
|
||||
influx query '
|
||||
from(bucket: "get-started")
|
||||
|> range(start: 2022-01-01T08:00:00Z, stop: 2022-01-01T20:00:01Z)
|
||||
|> filter(fn: (r) => r._measurement == "home")
|
||||
|> filter(fn: (r) => r._field== "co" or r._field == "hum" or r._field == "temp")
|
||||
'
|
||||
```
|
||||
|
||||
<!--------------------------- END FLUX CLI CONTENT ---------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!-------------------------- BEGIN FLUX API CONTENT --------------------------->
|
||||
|
||||
To query data from InfluxDB using Flux and the InfluxDB HTTP API, send a request
|
||||
to the InfluxDB API [`/api/v2/query` endpoint](/influxdb/v2.4/api/#operation/PostQuery)
|
||||
using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/api/v2/query" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token <INFLUX_TOKEN>
|
||||
- **Content-Type**: application/vnd.flux
|
||||
- **Accept**: application/csv
|
||||
- _(Optional)_ **Accept-Encoding**: gzip
|
||||
- **Query parameters**:
|
||||
- **org**: InfluxDB organization name
|
||||
- **Request body**: Flux query as plain text
|
||||
|
||||
The following example uses cURL and the InfluxDB API to query data with Flux:
|
||||
|
||||
```sh
|
||||
curl --request POST \
|
||||
"$INFLUX_HOST/api/v2/query?org=$INFLUX_ORG&bucket=get-started" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--header "Content-Type: application/vnd.flux" \
|
||||
--header "Accept: application/csv" \
|
||||
--data 'from(bucket: "get-started")
|
||||
|> range(start: 2022-01-01T08:00:00Z, stop: 2022-01-01T20:00:01Z)
|
||||
|> filter(fn: (r) => r._measurement == "home")
|
||||
|> filter(fn: (r) => r._field== "co" or r._field == "hum" or r._field == "temp")
|
||||
'
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
The InfluxDB `/api/v2/query` endpoint returns query results in
|
||||
[annotated CSV](/influxdb/v2.4/reference/syntax/annotated-csv/).
|
||||
{{% /note %}}
|
||||
|
||||
<!--------------------------- END FLUX API CONTENT ---------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
### Flux query results
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "View Flux query results" %}}
|
||||
|
||||
{{% note %}}
|
||||
`_start` and `_stop` columns have been omitted.
|
||||
These columns, by default, represent the query time bounds and are added by `range()`.
|
||||
{{% /note %}}
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | co | 1 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | co | 1 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | co | 3 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | co | 7 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | co | 9 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | co | 18 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | co | 22 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | co | 26 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | hum | 35.9 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | hum | 36.2 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | hum | 36.1 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | hum | 36.5 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | hum | 36.3 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | hum | 36.2 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | hum | 36.9 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | hum | 36.6 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | hum | 36.5 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | temp | 21 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | temp | 23 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | temp | 22.4 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | temp | 22.5 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | temp | 22.8 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | temp | 22.8 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | temp | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | temp | 23.3 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | temp | 23.1 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | co | 1 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | co | 4 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | co | 5 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | co | 9 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | co | 14 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | co | 17 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | hum | 36.1 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | hum | 36.1 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | hum | 36.2 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | hum | 36.3 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | hum | 36.4 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | temp | 21.1 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | temp | 21.4 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | temp | 21.8 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | temp | 22.2 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | temp | 22.2 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | temp | 22.4 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | temp | 22.3 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | temp | 22.3 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | temp | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | temp | 22.6 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | temp | 22.8 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | temp | 22.5 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | temp | 22.2 |
|
||||
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
## Query data with InfluxQL
|
||||
|
||||
InfluxQL is a SQL-like query language similar to most SQL languages, but
|
||||
specifically designed to query time series data from InfluxDB 0.x and 1.x.
|
||||
|
||||
{{% note %}}
|
||||
#### Map databases and retention policies to buckets
|
||||
|
||||
Because InfluxQL was developed for earlier versions of InfluxDB, it depends on
|
||||
**databases and retention policies** (DBRP) which have been replaced by
|
||||
[buckets](/influxdb/v2.4/get-started/#data-organization) in InfluxDB {{< current-version >}}.
|
||||
To use InfluxQL with InfluxDB {{< current-version >}}, first
|
||||
[map database and retention policy (DBRP) combinations to an InfluxDB bucket](/influxdb/v2.4/query-data/influxql/dbrp/).
|
||||
{{% /note %}}
|
||||
|
||||
### InfluxQL query basics
|
||||
|
||||
When querying InfluxDB with InfluxQL, the most basic query includes the following
|
||||
statements and clauses:
|
||||
|
||||
- `SELECT`: Specify which fields and tags to query.
|
||||
- `FROM`: Specify the measurement to query.
|
||||
Use the measurement name or a fully-qualified measurement name which includes
|
||||
the database and retention policy. For example: `db.rp.measurement`.
|
||||
- `WHERE`: _(Optional)_ Filter data based on fields, tags, and time.
|
||||
|
||||
The following InfluxQL query returns the **co**, **hum**, and **temp** fields and
|
||||
the **room** tag stored in the **home** measurement with timestamps
|
||||
**between 2022-01-01T08:00:00Z and 2022-01-01T20:00:00Z**.
|
||||
|
||||
```sql
|
||||
SELECT co,hum,temp,room FROM "get-started".autogen.home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z'
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
These are just the fundamentals of the InfluxQL syntax.
|
||||
For more in-depth information, see the [InfluxQL documentation](/influxdb/v2.4/query-data/influxql/).
|
||||
{{% /note %}}
|
||||
|
||||
### Execute an InfluxQL query
|
||||
|
||||
Use the **`influx` CLI**, or **InfluxDB API** to execute InfluxQL queries.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------- BEGIN INFLUXQL UI CONTENT ------------------------->
|
||||
|
||||
{{% note %}}
|
||||
#### The InflxuDB UI does not support InfluxQL
|
||||
|
||||
The InfluxDB {{< current-version >}} UI does not provide a way to query data with InfluxQL.
|
||||
For a user interface that builds and executes InfluxQL queries, consider using
|
||||
[Chronograf](/influxdb/v2.4/tools/chronograf/) or
|
||||
[Grafana](/influxdb/v2.4/tools/grafana/) with InfluxDB {{< current-version >}}.
|
||||
{{% /note %}}
|
||||
|
||||
<!-------------------------- END INFLUXQL UI CONTENT -------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!------------------------ BEGIN INFLUXQL CLI CONTENT ------------------------->
|
||||
|
||||
{{< cli/influx-creds-note >}}
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.4/tools/influx-cli/).
|
||||
2. Use the [`influx v1 shell` command](/influxdb/v2.4/reference/cli/influx/v1/shell/)
|
||||
to start an InfluxQL shell and query InfluxDB using InfluxQL.
|
||||
Provide the following:
|
||||
|
||||
- [Connection and authentication credentials](/influxdb/v2.4/get-started/setup/?t=influx+CLI#configure-authentication-credentials)
|
||||
|
||||
```sh
|
||||
influx v1 shell
|
||||
```
|
||||
|
||||
3. Enter an InfluxQL query and press {{< keybind mac="return" other="Enter ↵" >}}.
|
||||
|
||||
```sql
|
||||
SELECT co,hum,temp,room FROM "get-started".autogen.home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z'
|
||||
```
|
||||
|
||||
<!------------------------- END INFLUXQL CLI CONTENT -------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!------------------------ BEGIN INFLUXQL API CONTENT ------------------------->
|
||||
|
||||
To query data from InfluxDB using InfluxQL and the InfluxDB HTTP API, send a request
|
||||
to the InfluxDB API [`/query` 1.X compatibility endpoint](/influxdb/v2.4/reference/api/influxdb-1x/query/)
|
||||
using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/query" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token <INFLUX_TOKEN>
|
||||
- **Accept**: application/json
|
||||
- _(Optional)_ **Accept-Encoding**: gzip
|
||||
- **Query parameters**:
|
||||
- **db**: Database to query.
|
||||
- **rp**: Retention policy to query data from.
|
||||
- **q**: InfluxQL query to execute.
|
||||
- **epoch**: _(Optional)_ Return results with
|
||||
[Unix timestamps](/influxdb/v2.4/reference/glossary/#unix-timestamp) of a
|
||||
specified precision instead of [RFC3339 timestamps](/influxdb/v2.4/reference/glossary/#rfc3339-timestamp). The following precisions are available:
|
||||
|
||||
- `ns` - nanoseconds
|
||||
- `u` or `µ` - microseconds
|
||||
- `ms` - milliseconds
|
||||
- `s` - seconds
|
||||
- `m` - minutes
|
||||
- `h` - hours
|
||||
|
||||
- **Request body**: Flux query as plain text
|
||||
|
||||
The following example uses cURL and the InfluxDB API to query data with InfluxQL:
|
||||
|
||||
```sh
|
||||
curl --get "$INFLUX_HOST/query?org=$INFLUX_ORG&bucket=get-started" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--data-urlencode "db=get-started" \
|
||||
--data-urlencode "rp=autogen" \
|
||||
--data-urlencode "q=SELECT co,hum,temp,room FROM home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z'"
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
The InfluxDB `/write` 1.x compatibility endpoint returns query results in JSON format.
|
||||
{{% /note %}}
|
||||
|
||||
<!------------------------- END INFLUXQL API CONTENT -------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
### InfluxQL query results
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "View InfluxQL query results" %}}
|
||||
|
||||
| time | room | co | hum | temp |
|
||||
| :------------------- | :---------- | --: | ---: | ---: |
|
||||
| 2022-01-01T08:00:00Z | Kitchen | 0 | 35.9 | 21 |
|
||||
| 2022-01-01T08:00:00Z | Living Room | 0 | 35.9 | 21.1 |
|
||||
| 2022-01-01T09:00:00Z | Kitchen | 0 | 36.2 | 23 |
|
||||
| 2022-01-01T09:00:00Z | Living Room | 0 | 35.9 | 21.4 |
|
||||
| 2022-01-01T10:00:00Z | Kitchen | 0 | 36.1 | 22.7 |
|
||||
| 2022-01-01T10:00:00Z | Living Room | 0 | 36 | 21.8 |
|
||||
| 2022-01-01T11:00:00Z | Kitchen | 0 | 36 | 22.4 |
|
||||
| 2022-01-01T11:00:00Z | Living Room | 0 | 36 | 22.2 |
|
||||
| 2022-01-01T12:00:00Z | Kitchen | 0 | 36 | 22.5 |
|
||||
| 2022-01-01T12:00:00Z | Living Room | 0 | 35.9 | 22.2 |
|
||||
| 2022-01-01T13:00:00Z | Kitchen | 1 | 36.5 | 22.8 |
|
||||
| 2022-01-01T13:00:00Z | Living Room | 0 | 36 | 22.4 |
|
||||
| 2022-01-01T14:00:00Z | Kitchen | 1 | 36.3 | 22.8 |
|
||||
| 2022-01-01T14:00:00Z | Living Room | 0 | 36.1 | 22.3 |
|
||||
| 2022-01-01T15:00:00Z | Kitchen | 3 | 36.2 | 22.7 |
|
||||
| 2022-01-01T15:00:00Z | Living Room | 1 | 36.1 | 22.3 |
|
||||
| 2022-01-01T16:00:00Z | Kitchen | 7 | 36 | 22.4 |
|
||||
| 2022-01-01T16:00:00Z | Living Room | 4 | 36 | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | Kitchen | 9 | 36 | 22.7 |
|
||||
| 2022-01-01T17:00:00Z | Living Room | 5 | 35.9 | 22.6 |
|
||||
| 2022-01-01T18:00:00Z | Kitchen | 18 | 36.9 | 23.3 |
|
||||
| 2022-01-01T18:00:00Z | Living Room | 9 | 36.2 | 22.8 |
|
||||
| 2022-01-01T19:00:00Z | Kitchen | 22 | 36.6 | 23.1 |
|
||||
| 2022-01-01T19:00:00Z | Living Room | 14 | 36.3 | 22.5 |
|
||||
| 2022-01-01T20:00:00Z | Kitchen | 26 | 36.5 | 22.7 |
|
||||
| 2022-01-01T20:00:00Z | Living Room | 17 | 36.4 | 22.2 |
|
||||
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
**Congratulations!** You've learned the basics of querying data in InfluxDB.
|
||||
For a deep dive into all the ways you can query InfluxDB, see the
|
||||
[Query data in InfluxDB](/influxdb/v2.4/query-data/) section of documentation.
|
||||
|
||||
Let's move on to more advanced data processing queries and automating queries
|
||||
with InfluxDB tasks.
|
||||
|
||||
{{< page-nav prev="/influxdb/v2.4/get-started/write/" next="/influxdb/v2.4/get-started/process/" keepTab=true >}}
|
||||
|
|
@ -0,0 +1,457 @@
|
|||
---
|
||||
title: Set up InfluxDB
|
||||
seotitle: Set up InfluxDB | Get started with InfluxDB
|
||||
list_title: Set up InfluxDB
|
||||
description: >
|
||||
Learn how to set up InfluxDB for the "Get started with InfluxDB" tutorial.
|
||||
menu:
|
||||
influxdb_2_4:
|
||||
name: Set up InfluxDB
|
||||
parent: Get started
|
||||
identifier: get-started-set-up
|
||||
weight: 101
|
||||
metadata: [1 / 5]
|
||||
related:
|
||||
- /influxdb/v2.4/install/
|
||||
- /influxdb/v2.4/reference/config-options/
|
||||
- /influxdb/v2.4/security/tokens/
|
||||
- /influxdb/v2.4/organizations/buckets/
|
||||
- /influxdb/v2.4/tools/influx-cli/
|
||||
- /influxdb/v2.4/reference/api/
|
||||
---
|
||||
|
||||
As you get started with this tutorial, do the following to make sure everything
|
||||
you need is in place.
|
||||
|
||||
1. If you haven't already, [download and install InfluxDB](/influxdb/v2.4/install/).
|
||||
|
||||
Installation instructions depend on your operating system.
|
||||
Be sure to go through the installation and initialization process fully.
|
||||
|
||||
2. **Start InfluxDB**.
|
||||
|
||||
Run the `influxd` daemon to start the InfluxDB service, HTTP API, and
|
||||
user interface (UI).
|
||||
|
||||
```sh
|
||||
influxd
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
#### Configure InfluxDB
|
||||
|
||||
There are multiple ways to custom-configure InfluxDB.
|
||||
For information about what configuration options are available and how to set them,
|
||||
see [InfluxDB configuration options](/influxdb/v2.4/reference/config-options/).
|
||||
{{% /note %}}
|
||||
|
||||
Once running, the InfluxDB UI is accessible at [localhost:8086](http://localhost:8086).
|
||||
|
||||
3. {{< req text="(Optional)" color="magenta" >}} **Download, install, and configure the `influx` CLI**.
|
||||
|
||||
The `influx` CLI provides a simple way to interact with InfluxDB from a
|
||||
command line. For detailed installation and setup instructions,
|
||||
see [Use the influx CLI](/influxdb/v2.4/tools/influx-cli/).
|
||||
|
||||
4. {{< req text="(Optional)" color="magenta" >}} **Create an All Access API token.**
|
||||
<span id="create-an-all-access-api-token"></span>
|
||||
|
||||
During the InfluxDB initialization process, you created a user and API token
|
||||
that has permissions to manage everything in your InfluxDB instance.
|
||||
This is known as an **Operator token**. While you can use your Operator token
|
||||
to interact with InfluxDB, we recommend creating an **all access token** that
|
||||
is scoped to an organization.
|
||||
|
||||
Use the **InfluxDB UI**, **`influx` CLI**, or **InfluxDB API** to create an
|
||||
all access token.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------------ BEGIN UI CONTENT ----------------------------->
|
||||
|
||||
1. Visit
|
||||
{{% oss-only %}}[localhost:8086](http://localhost:8086){{% /oss-only %}}
|
||||
{{% cloud-only %}}[cloud2.influxdata.com](https://cloud2.influxdata.com){{% /cloud-only %}}
|
||||
in a browser to log in and access the InfluxDB UI.
|
||||
|
||||
2. Navigate to **Load Data** > **API Tokens** using the left navigation bar.
|
||||
3. Click **+ {{% caps %}}Generate API token{{% /caps %}}** and select
|
||||
**All Access API Token**.
|
||||
4. Enter a description for the API token and click **{{< icon "check" >}} {{% caps %}}Save{{% /caps %}}**.
|
||||
5. Copy the generated token and store it for safe keeping.
|
||||
|
||||
<!------------------------------- END UI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!---------------------------- BEGIN CLI CONTENT ----------------------------->
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.4/tools/influx-cli/).
|
||||
2. Use the [`influx auth create` command](/influxdb/v2.4/reference/cli/influx/auth/create/)
|
||||
to create an all access token.
|
||||
|
||||
**Provide the following**:
|
||||
|
||||
- `--all-access` flag
|
||||
- `--host` flag with your [InfluxDB host URL](/influxdb/v2.4/reference/urls/)
|
||||
- `-o, --org` or `--org-id` flags with your InfluxDB organization name or
|
||||
[ID](/influxdb/v2.4/organizations/view-orgs/#view-your-organization-id)
|
||||
- `-t, --token` flag with your Operator token
|
||||
|
||||
```sh
|
||||
influx auth create \
|
||||
--all-access \
|
||||
--host http://localhost:8086 \
|
||||
--org <YOUR_INFLUXDB_ORG_NAME> \
|
||||
--token <YOUR_INFLUXDB_OPERATOR_TOKEN>
|
||||
```
|
||||
|
||||
3. Copy the generated token and store it for safe keeping.
|
||||
|
||||
<!------------------------------ END CLI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!----------------------------- BEGIN API CONTENT ----------------------------->
|
||||
|
||||
Send a request to the InfluxDB API `/api/v2/authorizations` endpoint using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/api/v2/authorizations" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token <INFLUX_OPERATOR_TOKEN>
|
||||
- **Content-Type**: application/json
|
||||
- **Request body**: JSON body with the following properties:
|
||||
- **status**: `"active"`
|
||||
- **description**: API token description
|
||||
- **orgID**: [InfluxDB organization ID](/influxdb/v2.4/organizations/view-orgs/#view-your-organization-id)
|
||||
- **permissions**: Array of objects where each object represents permissions
|
||||
for an InfluxDB resource type or a specific resource. Each permission contains the following properties:
|
||||
- **action**: "read" or "write"
|
||||
- **resource**: JSON object that represents the InfluxDB resource to grant
|
||||
permission to. Each resource contains at least the following properties:
|
||||
- **orgID**: [InfluxDB organization ID](/influxdb/v2.4/organizations/view-orgs/#view-your-organization-id)
|
||||
- **type**: Resource type.
|
||||
_For information about what InfluxDB resource types exist, use the
|
||||
[`/api/v2/resources` endpoint](/influxdb/v2.4/api/#operation/GetResources)._
|
||||
|
||||
The following example uses cURL and the InfluxDB API to generate an all access token:
|
||||
|
||||
{{% truncate %}}
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG_ID=<YOUR_INFLUXDB_ORG_ID>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_OPERATOR_TOKEN>
|
||||
|
||||
curl --request POST \
|
||||
"$INFLUX_HOST/api/v2/authorizations" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--header "Content-Type: text/plain; charset=utf-8" \
|
||||
--data '{
|
||||
"status": "active",
|
||||
"description": "All access token for get started tutorial",
|
||||
"orgID": "'"$INFLUX_ORG_ID"'",
|
||||
"permissions": [
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "authorizations"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "authorizations"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "buckets"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "buckets"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "dashboards"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "dashboards"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "orgs"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "orgs"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "sources"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "sources"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "tasks"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "tasks"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "telegrafs"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "telegrafs"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "users"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "users"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "variables"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "variables"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "scrapers"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "scrapers"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "secrets"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "secrets"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "labels"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "labels"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "views"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "views"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "documents"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "documents"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notificationRules"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notificationRules"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notificationEndpoints"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notificationEndpoints"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "checks"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "checks"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "dbrp"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "dbrp"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notebooks"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notebooks"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "annotations"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "annotations"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "remotes"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "remotes"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "replications"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "replications"}}
|
||||
]
|
||||
}
|
||||
'
|
||||
```
|
||||
{{% /truncate %}}
|
||||
|
||||
The response body contains a JSON object with the following properties:
|
||||
|
||||
- **id**: API Token ID
|
||||
- **token**: API Token ({{< req "Important" >}})
|
||||
- **status**: Token status
|
||||
- **description**: Token description
|
||||
- **orgID**: InfluxDB organization ID the token is associated with
|
||||
- **org**: InfluxDB organization name the token is associated with
|
||||
- **userID**: User ID the token is associated with
|
||||
- **user**: Username the token is associated with
|
||||
- **permissions**: List of permissions for organization resources
|
||||
|
||||
**Copy the generated `token` and store it for safe keeping.**
|
||||
|
||||
<!------------------------------ END API CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
{{% note %}}
|
||||
We recommend using a password manager or a secret store to securely store
|
||||
sensitive tokens.
|
||||
{{% /note %}}
|
||||
|
||||
5. **Configure authentication credentials**. <span id="configure-authentication-credentials"></span>
|
||||
|
||||
As you go through this tutorial, interactions with InfluxDB {{< current-version >}}
|
||||
require your InfluxDB **host**, **organization name or ID**, and your **API token**.
|
||||
There are different methods for providing these credentials depending on
|
||||
which client you use to interact with InfluxDB.
|
||||
|
||||
{{% note %}}
|
||||
When configuring your token, if you [created an all access token](#create-an-all-access-api-token),
|
||||
use that token to interact with InfluxDB. Otherwise, use your operator token.
|
||||
{{% /note %}}
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------------ BEGIN UI CONTENT ----------------------------->
|
||||
|
||||
When managing InfluxDB through the InfluxDB UI, authentication credentials are
|
||||
provided automatically using credentials associated with the user you log in with.
|
||||
|
||||
<!------------------------------- END UI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!---------------------------- BEGIN CLI CONTENT ----------------------------->
|
||||
|
||||
There are three ways to provided authentication credentials to the `influx` CLI:
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "CLI connection configurations <em>(<span class=\"req\">Recommended</span>)</em>" %}}
|
||||
|
||||
The `influx` CLI lets you specify connection configuration presets that let
|
||||
you store and quickly switch between multiple sets of InfluxDB connection
|
||||
credentials. Use the [`influx config create` command](/influxdb/v2.4/reference/cli/influx/config/create/)
|
||||
to create a new CLI connection configuration. Include the following flags:
|
||||
|
||||
- `-n, --config-name`: Connection configuration name. This examples uses `get-started`.
|
||||
- `-u, --host-url`: [InfluxDB host URL](/influxdb/v2.4/reference/urls/).
|
||||
- `-o, --org`: InfluxDB organization name.
|
||||
- `-t, --token`: InfluxDB API token.
|
||||
|
||||
```sh
|
||||
influx config create \
|
||||
--name get-started
|
||||
--host-url http://localhost:8086
|
||||
--org <YOUR_INFLUXDB_ORG_NAME>
|
||||
--token <YOUR_INFLUXDB_API_TOKEN>
|
||||
```
|
||||
|
||||
_For more information about CLI connection configurations, see
|
||||
[Install and use the `influx` CLI](/influxdb/v2.4/tools/influx-cli/#set-up-the-influx-cli)._
|
||||
|
||||
{{% /expand %}}
|
||||
|
||||
{{% expand "Environment variables" %}}
|
||||
|
||||
The `influx` CLI checks for specific environment variables and, if present,
|
||||
uses those environment variables to populate authentication credentials.
|
||||
Set the following environment variables in your command line session:
|
||||
|
||||
- `INFLUX_HOST`: [InfluxDB host URL](/influxdb/v2.4/reference/urls/).
|
||||
- `INFLUX_ORG`: InfluxDB organization name.
|
||||
- `INFLUX_ORG_ID`: InfluxDB [organization ID](/influxdb/v2.4/organizations/view-orgs/#view-your-organization-id).
|
||||
- `INFLUX_TOKEN`: InfluxDB API token.
|
||||
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG=<YOUR_INFLUXDB_ORG_NAME>
|
||||
export INFLUX_ORG_ID=<YOUR_INFLUXDB_ORG_ID>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_API_TOKEN>
|
||||
```
|
||||
|
||||
{{% /expand %}}
|
||||
|
||||
{{% expand "Command flags" %}}
|
||||
|
||||
Use the following `influx` CLI flags to provide required credentials to commands:
|
||||
|
||||
- `--host`: [InfluxDB host URL](/influxdb/v2.4/reference/urls/).
|
||||
- `-o`, `--org` or `--org-id`: InfluxDB organization name or
|
||||
[ID](/influxdb/v2.4/organizations/view-orgs/#view-your-organization-id).
|
||||
- `-t`, `--token`: InfluxDB API token.
|
||||
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
{{% note %}}
|
||||
All `influx` CLI examples in this getting started tutorial assume your InfluxDB
|
||||
**host**, **organization**, and **token** are provided by either the
|
||||
[active `influx` CLI configuration](/influxdb/v2.4/reference/cli/influx/#provide-required-authentication-credentials)
|
||||
or by environment variables.
|
||||
{{% /note %}}
|
||||
|
||||
<!------------------------------ END CLI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!----------------------------- BEGIN API CONTENT ----------------------------->
|
||||
|
||||
When using the InfluxDB API, provide the required connection credentials in the
|
||||
following ways:
|
||||
|
||||
- **InfluxDB host**: The domain and port to send HTTP(S) requests to.
|
||||
- **InfluxDB API Token**: Include an `Authorization` header that uses either
|
||||
`Bearer` or `Token` scheme and your InfluxDB API token. For example:
|
||||
`Authorization: Bearer 0xxx0o0XxXxx00Xxxx000xXXxoo0==`.
|
||||
- **InfluxDB organization name or ID**: Depending on the API endpoint used, pass
|
||||
this as part of the URL path, query string, or in the request body.
|
||||
|
||||
All API examples in this tutorial use **cURL** from a command line.
|
||||
To provide all the necessary credentials to the example cURL commands, set
|
||||
the following environment variables in your command line session.
|
||||
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG=<YOUR_INFLUXDB_ORG_NAME>
|
||||
export INFLUX_ORG_ID=<YOUR_INFLUXDB_ORG_ID>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_API_TOKEN>
|
||||
```
|
||||
<!------------------------------ END API CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
6. {{< req text="(Optional)" color="magenta" >}} **Create a bucket**.
|
||||
|
||||
In the InfluxDB initialization process, you created a bucket.
|
||||
You can use that bucket or create a new one specifically for this getting
|
||||
started tutorial. All examples in this tutorial assume a bucket named
|
||||
_get-started_.
|
||||
|
||||
Use the **InfluxDB UI**, **`influx` CLI**, or **InfluxDB API** to create a
|
||||
new bucket.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------------ BEGIN UI CONTENT ----------------------------->
|
||||
|
||||
1. Visit
|
||||
{{% oss-only %}}[localhost:8086](http://localhost:8086){{% /oss-only %}}
|
||||
{{% cloud-only %}}[cloud2.influxdata.com](https://cloud2.influxdata.com){{% /cloud-only %}}
|
||||
in a browser to log in and access the InfluxDB UI.
|
||||
|
||||
2. Navigate to **Load Data** > **Buckets** using the left navigation bar.
|
||||
3. Click **+ {{< caps >}}Create bucket{{< /caps >}}**.
|
||||
4. Provide a bucket name (get-started) and select {{% caps %}}Never{{% /caps %}}
|
||||
to create a bucket with an infinite [retention period](/influxdb/v2.4/reference/glossary/#retention-period).
|
||||
5. Click **{{< caps >}}Create{{< /caps >}}**.
|
||||
|
||||
<!------------------------------- END UI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!---------------------------- BEGIN CLI CONTENT ----------------------------->
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.4/tools/influx-cli/).
|
||||
2. Use the [`influx bucket create` command](/influxdb/v2.4/reference/cli/influx/bucket/create/)
|
||||
to create a new bucket.
|
||||
|
||||
**Provide the following**:
|
||||
|
||||
- `-n, --name` flag with the bucket name.
|
||||
- [Connection and authentication credentials](#configure-authentication-credentials)
|
||||
|
||||
```sh
|
||||
influx bucket create --name get-started
|
||||
```
|
||||
|
||||
<!------------------------------ END CLI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!----------------------------- BEGIN API CONTENT ----------------------------->
|
||||
|
||||
To create a bucket using the InfluxDB HTTP API, send a request to
|
||||
the InfluxDB API `/api/v2/buckets` endpoint using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/api/v2/buckets" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token `INFLUX_TOKEN`
|
||||
- **Content-Type**: `application/json`
|
||||
- **Request body**: JSON object with the following properties:
|
||||
- **org**: InfluxDB organization name
|
||||
- **name**: Bucket name
|
||||
- **retentionRules**: List of retention rule objects that define the bucket's retention period.
|
||||
Each retention rule object has the following properties:
|
||||
- **type**: `"expire"`
|
||||
- **everySeconds**: Retention period duration in seconds.
|
||||
`0` indicates the retention period is infinite.
|
||||
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG_ID=<YOUR_INFLUXDB_ORG_ID>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_API_TOKEN>
|
||||
|
||||
curl --request POST \
|
||||
"$INFLUX_HOST/api/v2/buckets" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--header "Content-Type: application/json" \
|
||||
--data '{
|
||||
"orgID": "'"$INFLUX_ORG_ID"'",
|
||||
"name": "get-started",
|
||||
"retentionRules": [
|
||||
{
|
||||
"type": "expire",
|
||||
"everySeconds": 0
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
<!------------------------------ END API CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
{{< page-nav prev="/influxdb/v2.4/get-started/" next="/influxdb/v2.4/get-started/write/" keepTab=true >}}
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
---
|
||||
title: Get started visualizing data
|
||||
seotitle: Visualize data | Get started with InfluxDB
|
||||
list_title: Visualize data
|
||||
description: >
|
||||
...
|
||||
menu:
|
||||
influxdb_2_4:
|
||||
name: Visualize data
|
||||
parent: Get started
|
||||
identifier: get-started-visualize-data
|
||||
weight: 104
|
||||
metadata: [5 / 5]
|
||||
related:
|
||||
- /influxdb/v2.4/visualize-data/
|
||||
- /influxdb/v2.4/visualize-data/visualization-types/
|
||||
- /influxdb/v2.4/tools/chronograf/
|
||||
- /influxdb/v2.4/tools/grafana/
|
||||
---
|
||||
|
||||
There are many tools you can use to visualize your time series data including the
|
||||
InfluxDB user interface (UI), [Chronograf](), and
|
||||
[Grafana](/influxdb/v2.4/tools/grafana/).
|
||||
This tutorial walks you through using the **InfluxDB UI** to create a simple dashboard.
|
||||
|
||||
Dashboards are a powerful way of displaying time series data and can help to
|
||||
identify trends and anomalies. A dashboard is comprised of one or more
|
||||
dashboard cells. A **dashboard cell** visualizes the results of a query using
|
||||
one of the available [visualization types](/influxdb/v2.4/visualize-data/visualization-types/).
|
||||
|
||||
- [Create a dashboard](#create-a-dashboard)
|
||||
- [Create dashboard cells](#create-dashboard-cells)
|
||||
- [Create and use dashboard variables](#create-and-use-dashboard-variables)
|
||||
- [Create a custom dashboard variable](#create-a-custom-dashboard-variable)
|
||||
- [Use a custom dashboard variable](#use-a-custom-dashboard-variable)
|
||||
|
||||
## Create a dashboard
|
||||
|
||||
1. With InfluxDB running, visit [localhost:8086](http://localhost:8086) in your
|
||||
browser to access the InfluxDB UI.
|
||||
2. Log in and select **Dashboards** in the left navigation bar.
|
||||
|
||||
{{< nav-icon "dashboards" >}}
|
||||
|
||||
3. Click **+ {{% caps %}}Create Dashboard{{% /caps %}}** and select **New Dashboard**.
|
||||
4. Click _**Name this Dashboard**_ and provide a name for the dashboard.
|
||||
For this tutorial, we'll use **"Getting Started Dashboard"**.
|
||||
|
||||
## Create dashboard cells
|
||||
|
||||
With your new dashboard created and named, add a new dashboard cell:
|
||||
|
||||
1. Click **{{< icon "add-cell" >}} {{% caps %}}Add Cell{{% /caps %}}**.
|
||||
2. Click _**Name this Cell**_ and provide a name for the cell.
|
||||
For this tutorial, we'll use **"Room temperature"**.
|
||||
3. _(Optional)_ Select the visualization type from the visualization drop-down menu.
|
||||
There are many different [visualization types](/influxdb/v2.4/visualize-data/visualization-types/)
|
||||
available.
|
||||
For this tutorial, use the default **Graph** visualization.
|
||||
4. Use the query time range selector to select an absolute time range that
|
||||
covers includes the time range of the
|
||||
[data written in "Get started writing to InfluxDB"](/influxdb/v2.4/get-started/write/#view-the-written-data):
|
||||
**2022-01-01T08:00:00Z** to **2022-01-01T20:00:01Z**.
|
||||
|
||||
1. The query time range selector defaults to querying data from the last hour
|
||||
(**{{< icon "clock" >}} Past 1h**).
|
||||
Click the time range selector drop-down menu and select **Custom Time Range**.
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "View time range selector" %}}
|
||||
{{< img-hd src="/img/influxdb/2-4-get-started-visualize-time-range.png" alt="InfluxDB time range selector" />}}
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
2. Use the date picker to select the stop and stop date and time or manually
|
||||
enter the following start and stop times:
|
||||
|
||||
- **Start**: 2022-01-01 08:00:00
|
||||
- **Stop**: 2022-01-01 20:00:01
|
||||
|
||||
3. Click **{{% caps %}}Apply Time Range{{% /caps %}}**.
|
||||
|
||||
5. Use the **Query Builder** to select the measurement, fields, and tags to query:
|
||||
|
||||
1. In the **{{% caps %}}From{{% /caps %}}** column, select the **get-started** bucket.
|
||||
2. In the **Filter** column, select the **home** measurement.
|
||||
3. In the next **Filter** column, select the **temp** field.
|
||||
4. In the next **Filter** column, select the **room** tag and the **Kitchen** tag value.
|
||||
|
||||
6. Click **{{% caps %}}Submit{{% /caps %}}** to run the query and visualize the
|
||||
results.
|
||||
|
||||
{{< img-hd src="/img/influxdb/2-4-get-started-visualize-query-builder.png" alt="InfluxDB Query Builder" />}}
|
||||
|
||||
7. Click **{{< icon "check" >}}** to save the cell and return to the dashboard.
|
||||
|
||||
## Create and use dashboard variables
|
||||
|
||||
InfluxDB dashboard cells use **dashboard variables** to dynamically change
|
||||
specific parts of cell queries.
|
||||
The query builder automatically builds queries using the following
|
||||
[predefined dashboard variables](/influxdb/v2.4/visualize-data/variables/#predefined-dashboard-variables),
|
||||
each controlled by selections in your dashboard:
|
||||
|
||||
- `v.timeRangeStart`: Start time of the queried time range specified by the time range selector.
|
||||
- `v.timeRangeStop`: Stop time of the queried time range specified by the time range selector.
|
||||
- `v.windowPeriod`: Window period used downsample data to one point per pixel in
|
||||
a cell visualization. The value of this variable is determined by the pixel-width of the cell.
|
||||
|
||||
### Create a custom dashboard variable
|
||||
|
||||
Let's create a custom dashboard variable that we can use to change the field
|
||||
displayed by your dashboard cell.
|
||||
|
||||
1. Select **Settings > Variables** in the left navigation bar.
|
||||
|
||||
{{< nav-icon "settings" >}}
|
||||
|
||||
2. Click **+ {{% caps %}}Create Variable{{% /caps %}}** and select **New Variable**.
|
||||
3. Name your variable. For this tutorial, name the variable, **"room"**.
|
||||
4. Select the default **Query** dashboard variable type.
|
||||
This variable type uses the results of a query to populate the list of potential
|
||||
variable values. _For information about the other dashboard variable types,
|
||||
see [Variable types](/influxdb/v2.4/visualize-data/variables/variable-types/)._
|
||||
5. Enter the following Flux query to return all the different `room` tag values
|
||||
in your `get-started` bucket from the [Unix epoch](/influxdb/v2.4/reference/glossary/#unix-timestamp).
|
||||
|
||||
```js
|
||||
import "influxdata/influxdb/schema"
|
||||
|
||||
schema.tagValues(bucket: "get-started", tag: "room", start: time(v: 0))
|
||||
```
|
||||
|
||||
6. Click **{{% caps %}}Create Variable{{% /caps %}}**.
|
||||
|
||||
### Use a custom dashboard variable
|
||||
|
||||
1. Navigate to your **Getting Started Dashboard** by clicking **Dashboards** in
|
||||
the left navigation bar and the clicking on the name of your dashboard.
|
||||
|
||||
{{< nav-icon "dashboards" >}}
|
||||
|
||||
2. Click the **{{< icon "gear" >}}** on the **Room temperature** cell and select
|
||||
**{{< icon "pencil" >}} Configure**.
|
||||
3. Click **{{% caps %}}Script Editor{{% /caps %}}** to edit the Flux query
|
||||
directly.
|
||||
4. On line 5 of the Flux query, replace `"Kitchen"` with `v.room` to use the
|
||||
selected value of the `room` dashboard variable.
|
||||
|
||||
```js
|
||||
from(bucket: "get-started")
|
||||
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|
||||
|> filter(fn: (r) => r["_measurement"] == "home")
|
||||
|> filter(fn: (r) => r["_field"] == "temp")
|
||||
|> filter(fn: (r) => r["room"] == v.room)
|
||||
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|
||||
|> yield(name: "mean")
|
||||
```
|
||||
5. Click **{{< icon "check" >}}** to save the cell and return to the dashboard.
|
||||
6. Refresh the browser to reload the dashboard.
|
||||
7. Use the **room variable** drop-down menu to select the room to display
|
||||
recorded temperatures from.
|
||||
|
||||
{{< img-hd src="/img/influxdb/2-4-get-started-visualize-variable-select.png" alt="InfluxDB dashboard variable selection" />}}
|
||||
|
||||
_For more information about creating custom dashboard variables, see
|
||||
[Use and manage dashboard variables](/influxdb/v2.4/visualize-data/variables/)._
|
||||
|
||||
{{< page-nav prev="/influxdb/v2.4/get-started/process/" >}}
|
||||
|
||||
---
|
||||
|
||||
## Congratulations!
|
||||
|
||||
You have walked through the
|
||||
[basics of setting up, writing, querying, processing, and visualizing](/influxdb/v2.4/get-started/)
|
||||
data with InfluxDB {{< current-version >}}.
|
||||
Feel free to dive in deeper to each of these topics:
|
||||
|
||||
- [Write data to InfluxDB](/influxdb/v2.4/write-data/)
|
||||
- [Query data in InfluxDB](/influxdb/v2.4/query-data/)
|
||||
- [Process data with InfluxDB](/influxdb/v2.4/process-data/)
|
||||
- [Visualize data with the InfluxDB UI](/influxdb/v2.4/visualize-data/)
|
||||
|
||||
If you have questions as you're getting started, reach out to us using the
|
||||
available [Support and feedback](#bug-reports-and-feedback) channels.
|
||||
|
|
@ -0,0 +1,394 @@
|
|||
---
|
||||
title: Get started writing data
|
||||
seotitle: Write data | Get started with InfluxDB
|
||||
list_title: Write data
|
||||
description: >
|
||||
Get started writing data to InfluxDB by learning about line protocol and using
|
||||
tools like the InfluxDB UI, `influx` CLI, and InfluxDB API.
|
||||
menu:
|
||||
influxdb_2_4:
|
||||
name: Write data
|
||||
parent: Get started
|
||||
identifier: get-started-write-data
|
||||
weight: 101
|
||||
metadata: [2 / 5]
|
||||
related:
|
||||
- /influxdb/v2.4/write-data/
|
||||
- /influxdb/v2.4/write-data/best-practices/
|
||||
- /influxdb/v2.4/reference/syntax/line-protocol/
|
||||
- /{{< latest "telegraf" >}}/
|
||||
---
|
||||
|
||||
InfluxDB provides many different options for ingesting or writing data, including
|
||||
the following:
|
||||
|
||||
- Influx user interface (UI)
|
||||
- [InfluxDB HTTP API](/influxdb/v2.4/reference/api/)
|
||||
- [`influx` CLI](/influxdb/v2.4/tools/influx-cli/)
|
||||
- [Telegraf](/{{< latest "telegraf" >}}/)
|
||||
- {{% cloud-only %}}[MQTT](/influxdb/cloud/write-data/no-code/native-subscriptions/){{% /cloud-only %}}
|
||||
- [InfluxDB client libraries](/influxdb/v2.4/api-guide/client-libraries/)
|
||||
|
||||
This tutorial walks you through the fundamental of using **line protocol** to write
|
||||
data to InfluxDB. If using tools like Telegraf or InfluxDB client libraries, they will
|
||||
build the line protocol for you, but it's good to understand how line protocol works.
|
||||
|
||||
## Line protocol
|
||||
|
||||
All data written to InfluxDB is written using **line protocol**, a text-based
|
||||
format that lets you provide the necessary information to write a data point to InfluxDB.
|
||||
_This tutorial covers the basics of line protocol, but for detailed information,
|
||||
see the [Line protocol reference](/influxdb/v2.4/reference/syntax/line-protocol/)._
|
||||
|
||||
### Line protocol elements
|
||||
|
||||
Each line of line protocol contains the following elements:
|
||||
|
||||
{{< req type="key" >}}
|
||||
|
||||
- {{< req "\*" >}} **measurement**: String that identifies the [measurement]() to store the data in.
|
||||
- **tag set**: Comma-delimited list of key value pairs, each representing a tag.
|
||||
Tag keys and values are unquoted strings. _Spaces and commas must be escaped._
|
||||
- {{< req "\*" >}} **field set**: Comma-delimited list key value pairs, each representing a field.
|
||||
Field keys are unquoted strings. _Spaces and commas must be escaped._
|
||||
Field values can be [strings](/influxdb/v2.4/reference/syntax/line-protocol/#string) (quoted),
|
||||
[floats](/influxdb/v2.4/reference/syntax/line-protocol/#float),
|
||||
[integers](/influxdb/v2.4/reference/syntax/line-protocol/#integer),
|
||||
[unsigned integers](/influxdb/v2.4/reference/syntax/line-protocol/#uinteger),
|
||||
or [booleans](/influxdb/v2.4/reference/syntax/line-protocol/#boolean).
|
||||
- **timestamp**: [Unix timestamp](/influxdb/v2.4/reference/syntax/line-protocol/#unix-timestamp)
|
||||
associated with the data. InfluxDB supports up to nanosecond precision.
|
||||
_If the precision if the timestamp is not in nanoseconds, you must specify the
|
||||
precision when writing the data to InfluxDB._
|
||||
|
||||
#### Line protocol element parsing
|
||||
|
||||
- **measurement**: Everything before the _first unescaped comma before the first whitespace_.
|
||||
- **tag set**: Key-value pairs between the _first unescaped comma_ and the _first unescaped whitespace_.
|
||||
- **field set**: Key-value pairs between the _first and second unescaped whitespaces_.
|
||||
- **timestamp**: Integer value after the _second unescaped whitespace_.
|
||||
- Lines are separated by the newline character (`\n`).
|
||||
Line protocol is whitespace sensitive.
|
||||
|
||||
---
|
||||
|
||||
{{< influxdb/line-protocol >}}
|
||||
|
||||
---
|
||||
|
||||
_For schema design recommendataions, see [InfluxDB schema design](/influxdb/v2.4/write-data/best-practices/schema-design/)._
|
||||
|
||||
## Construct line protocol
|
||||
|
||||
With a basic understanding of line protocol, you can now construct line protocol
|
||||
and write data to InfluxDB.
|
||||
Consider a use case where you collect data from sensors in your home.
|
||||
Each sensor collects temperature, humidity, and carbon monoxide readings.
|
||||
To collect this data, use the following schema:
|
||||
|
||||
- **measurement**: `home`
|
||||
- **tags**
|
||||
- `room`: Living Room or Kitchen
|
||||
- **fields**
|
||||
- `temp`: temperature in °C (float)
|
||||
- `hum`: percent humidity (float)
|
||||
- `co`: carbon monoxide in parts per million (integer)
|
||||
- **timestamp**: Unix timestamp in _second_ precision
|
||||
|
||||
Data is collected hourly beginning at 2022-01-01T08:00:00Z (UTC) until 2022-01-01T20:00:00Z (UTC).
|
||||
The resulting line protocol would look something like the following:
|
||||
|
||||
##### Home sensor data line protocol
|
||||
```sh
|
||||
home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000
|
||||
home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000
|
||||
home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600
|
||||
home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600
|
||||
home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200
|
||||
home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200
|
||||
home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800
|
||||
home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400
|
||||
home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000
|
||||
home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=0i 1641045600
|
||||
home,room=Kitchen temp=22.8,hum=36.3,co=1i 1641045600
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=1i 1641049200
|
||||
home,room=Kitchen temp=22.7,hum=36.2,co=3i 1641049200
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=4i 1641052800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=7i 1641052800
|
||||
home,room=Living\ Room temp=22.6,hum=35.9,co=5i 1641056400
|
||||
home,room=Kitchen temp=22.7,hum=36.0,co=9i 1641056400
|
||||
home,room=Living\ Room temp=22.8,hum=36.2,co=9i 1641060000
|
||||
home,room=Kitchen temp=23.3,hum=36.9,co=18i 1641060000
|
||||
home,room=Living\ Room temp=22.5,hum=36.3,co=14i 1641063600
|
||||
home,room=Kitchen temp=23.1,hum=36.6,co=22i 1641063600
|
||||
home,room=Living\ Room temp=22.2,hum=36.4,co=17i 1641067200
|
||||
home,room=Kitchen temp=22.7,hum=36.5,co=26i 1641067200
|
||||
```
|
||||
|
||||
## Write line protocol to InfluxDB
|
||||
|
||||
Use the **InfluxDB UI**, **`influx` CLI**, or **InfluxDB API** to write the
|
||||
line protocol above to InfluxDB.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------------ BEGIN UI CONTENT ----------------------------->
|
||||
|
||||
1. Visit
|
||||
{{% oss-only %}}[localhost:8086](http://localhost:8086){{% /oss-only %}}
|
||||
{{% cloud-only %}}[cloud2.influxdata.com](https://cloud2.influxdata.com){{% /cloud-only %}}
|
||||
in a browser to log in and access the InfluxDB UI.
|
||||
|
||||
2. Navigate to **Load Data** > **Buckets** using the left navigation bar.
|
||||
|
||||
{{< nav-icon "load data" >}}
|
||||
|
||||
3. Click **{{< icon "plus" >}} {{< caps >}}Add Data{{< /caps >}}** on the bucket
|
||||
you want to write the data to and select **Line Protocol**.
|
||||
4. Select **{{< caps >}}Enter Manually{{< /caps >}}**.
|
||||
5. {{< req "Important" >}} In the **Precision** drop-down menu above the line
|
||||
protocol text field, select **Seconds** (to match to precision of the
|
||||
timestamps in the line protocol).
|
||||
6. Copy the [line protocol above](#home-sensor-data-line-protocol) and paste it
|
||||
into the line protocol text field.
|
||||
7. Click **{{< caps >}}Write Data{{< /caps >}}**.
|
||||
|
||||
The UI will confirm that the data has been written successfully.
|
||||
|
||||
<!------------------------------- END UI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!---------------------------- BEGIN CLI CONTENT ----------------------------->
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.4/tools/influx-cli/).
|
||||
2. Use the [`influx write` command](/influxdb/v2.4/reference/cli/influx/write/)
|
||||
to write the [line protocol above](#home-sensor-data-line-protocol) to InfluxDB.
|
||||
|
||||
**Provide the following**:
|
||||
|
||||
- `-b, --bucket` or `--bucket-id` flag with the bucket name or ID to write do.
|
||||
- `-p, --precision` flag with the timestamp precision (`s`).
|
||||
- String-encoded line protocol.
|
||||
- [Connection and authentication credentials](/influxdb/v2.4/get-started/setup/?t=influx+CLI#configure-authentication-credentials)
|
||||
|
||||
```sh
|
||||
influx write \
|
||||
--bucket get-started \
|
||||
--precision s "
|
||||
home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000
|
||||
home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000
|
||||
home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600
|
||||
home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600
|
||||
home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200
|
||||
home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200
|
||||
home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800
|
||||
home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400
|
||||
home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000
|
||||
home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=0i 1641045600
|
||||
home,room=Kitchen temp=22.8,hum=36.3,co=1i 1641045600
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=1i 1641049200
|
||||
home,room=Kitchen temp=22.7,hum=36.2,co=3i 1641049200
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=4i 1641052800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=7i 1641052800
|
||||
home,room=Living\ Room temp=22.6,hum=35.9,co=5i 1641056400
|
||||
home,room=Kitchen temp=22.7,hum=36.0,co=9i 1641056400
|
||||
home,room=Living\ Room temp=22.8,hum=36.2,co=9i 1641060000
|
||||
home,room=Kitchen temp=23.3,hum=36.9,co=18i 1641060000
|
||||
home,room=Living\ Room temp=22.5,hum=36.3,co=14i 1641063600
|
||||
home,room=Kitchen temp=23.1,hum=36.6,co=22i 1641063600
|
||||
home,room=Living\ Room temp=22.2,hum=36.4,co=17i 1641067200
|
||||
home,room=Kitchen temp=22.7,hum=36.5,co=26i 1641067200
|
||||
"
|
||||
```
|
||||
|
||||
<!------------------------------ END CLI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!----------------------------- BEGIN API CONTENT ----------------------------->
|
||||
|
||||
To write data to InfluxDB using the InfluxDB HTTP API, send a request to
|
||||
the InfluxDB API `/api/v2/write` endpoint using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/api/v2/write" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token <INFLUX_TOKEN>
|
||||
- **Content-Type**: text/plain; charset=utf-8
|
||||
- **Accept**: application/json
|
||||
- **Query parameters**:
|
||||
- **org**: InfluxDB organization name
|
||||
- **bucket**: InfluxDB bucket name
|
||||
- **precision**: timestamp precision (default is `ns`)
|
||||
- **Request body**: Line protocol as plain text
|
||||
|
||||
The following example uses cURL and the InfluxDB API to write line protocol
|
||||
to InfluxDB:
|
||||
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG=<YOUR_INFLUXDB_ORG>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_API_TOKEN>
|
||||
|
||||
curl --request POST \
|
||||
"$INFLUX_HOST/api/v2/write?org=$INFLUX_ORG&bucket=get-started&precision=s" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--header "Content-Type: text/plain; charset=utf-8" \
|
||||
--header "Accept: application/json" \
|
||||
--data-binary "
|
||||
home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000
|
||||
home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000
|
||||
home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600
|
||||
home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600
|
||||
home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200
|
||||
home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200
|
||||
home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800
|
||||
home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400
|
||||
home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000
|
||||
home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=0i 1641045600
|
||||
home,room=Kitchen temp=22.8,hum=36.3,co=1i 1641045600
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=1i 1641049200
|
||||
home,room=Kitchen temp=22.7,hum=36.2,co=3i 1641049200
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=4i 1641052800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=7i 1641052800
|
||||
home,room=Living\ Room temp=22.6,hum=35.9,co=5i 1641056400
|
||||
home,room=Kitchen temp=22.7,hum=36.0,co=9i 1641056400
|
||||
home,room=Living\ Room temp=22.8,hum=36.2,co=9i 1641060000
|
||||
home,room=Kitchen temp=23.3,hum=36.9,co=18i 1641060000
|
||||
home,room=Living\ Room temp=22.5,hum=36.3,co=14i 1641063600
|
||||
home,room=Kitchen temp=23.1,hum=36.6,co=22i 1641063600
|
||||
home,room=Living\ Room temp=22.2,hum=36.4,co=17i 1641067200
|
||||
home,room=Kitchen temp=22.7,hum=36.5,co=26i 1641067200
|
||||
"
|
||||
```
|
||||
<!------------------------------ END API CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "View the written data" %}}
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | co | 1 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | co | 1 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | co | 3 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | co | 7 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | co | 9 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | co | 18 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | co | 22 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | co | 26 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | hum | 35.9 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | hum | 36.2 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | hum | 36.1 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | hum | 36.5 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | hum | 36.3 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | hum | 36.2 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | hum | 36.9 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | hum | 36.6 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | hum | 36.5 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | temp | 21 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | temp | 23 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | temp | 22.4 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | temp | 22.5 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | temp | 22.8 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | temp | 22.8 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | temp | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | temp | 23.3 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | temp | 23.1 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | co | 1 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | co | 4 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | co | 5 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | co | 9 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | co | 14 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | co | 17 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | hum | 36.1 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | hum | 36.1 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | hum | 36.2 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | hum | 36.3 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | hum | 36.4 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | temp | 21.1 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | temp | 21.4 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | temp | 21.8 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | temp | 22.2 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | temp | 22.2 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | temp | 22.4 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | temp | 22.3 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | temp | 22.3 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | temp | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | temp | 22.6 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | temp | 22.8 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | temp | 22.5 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | temp | 22.2 |
|
||||
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
**Congratulations!** You have written data to InfluxDB. The method described
|
||||
above is the manual way of writing data, but there are other options available:
|
||||
|
||||
- [Write data to InfluxDB using no-code solutions](/influxdb/v2.4/write-data/no-code/)
|
||||
- [Write data to InfluxDB using developer tools](/influxdb/v2.4/write-data/developer-tools/)
|
||||
|
||||
With data now stored in InfluxDB, let's query it.
|
||||
|
||||
{{< page-nav prev="/influxdb/v2.4/get-started/setup/" next="/influxdb/v2.4/get-started/query/" keepTab=true >}}
|
||||
|
|
@ -128,6 +128,7 @@ option task = {
|
|||
## Create a task using the InfluxDB API
|
||||
|
||||
{{% oss-only %}}
|
||||
|
||||
Use the [`/api/v2/tasks` InfluxDB API endpoint](/influxdb/v2.4/api/#operation/PostTasks) to create a task.
|
||||
|
||||
{{< api-endpoint method="POST" endpoint="http://localhost:8086/api/v2/tasks/" >}}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ title: Query sample data
|
|||
description: >
|
||||
Explore InfluxDB OSS with our sample data buckets.
|
||||
menu:
|
||||
influxdb_2_4::
|
||||
influxdb_2_4:
|
||||
name: Query with sample data
|
||||
parent: Execute queries
|
||||
weight: 10
|
||||
weight: 210
|
||||
---
|
||||
|
||||
Use **InfluxDB OSS** sample datasets to quickly access data that lets you explore and familiarize yourself with InfluxDB Cloud without requiring you to have or write your own data.
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ To return the version of Flux installed with InfluxDB using the InfluxDB UI:
|
|||
|
||||
1. Click **Data Explorer** in the left navigation bar.
|
||||
|
||||
{{< nav-icon "data-explorer" >}}
|
||||
{{< nav-icon "data-explorer" >}}
|
||||
|
||||
2. Click **{{% caps %}}Script Editor{{% /caps %}}** to manually create and
|
||||
edit a Flux query.
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ using the InfluxDB user interface (UI).
|
|||
|
||||
{{< nav-icon "load-data" >}}
|
||||
|
||||
2. Click the **{{< icon "toggle-green" >}} Status** toggle.
|
||||
2. Click the **{{< icon "toggle" >}} Status** toggle.
|
||||
|
||||
{{% /oss-only %}}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,71 +0,0 @@
|
|||
---
|
||||
title: Get started with InfluxDB
|
||||
description: >
|
||||
Start collecting, processing, and visualizing data in InfluxDB OSS.
|
||||
menu:
|
||||
influxdb_2_5:
|
||||
name: Get started
|
||||
weight: 3
|
||||
influxdb/v2.5/tags: [get-started]
|
||||
aliases:
|
||||
- /influxdb/v2.5/introduction/get-started/
|
||||
---
|
||||
|
||||
After you've [installed InfluxDB OSS](/influxdb/v2.5/install/), you're ready to get started. Explore the following ways to work with your data:
|
||||
|
||||
- [Collect and write data](#collect-and-write-data)
|
||||
- [Query data](#query-data)
|
||||
- [Process data](#process-data)
|
||||
- [Visualize data](#visualize-data)
|
||||
- [Monitor and alert](#monitor-and-alert)
|
||||
|
||||
*Note:** To run InfluxDB, start the `influxd` daemon ([InfluxDB service](/influxdb/v2.5/reference/cli/influxd/)) using the [InfluxDB command line interface](/influxdb/v2.5/reference/cli/influx/). Once you've started the `influxd` daemon, use `localhost:8086` to log in to your InfluxDB instance.
|
||||
|
||||
To start InfluxDB, do the following:
|
||||
1. Open a terminal.
|
||||
2. Type `influxd` in the command line.
|
||||
|
||||
```sh
|
||||
influxd
|
||||
```
|
||||
|
||||
### Collect and write data
|
||||
|
||||
Collect and write data to InfluxDB using the Telegraf plugins, the InfluxDB v2 API, the `influx` command line interface (CLI), the InfluxDB UI (the user interface for InfluxDB 2.5), or the InfluxDB v2 API client libraries.
|
||||
|
||||
#### Use Telegraf
|
||||
|
||||
Use Telegraf to quickly write data to {{< cloud-name >}}.
|
||||
Create new Telegraf configurations automatically in the InfluxDB UI, or manually update an existing Telegraf configuration to send data to your {{< cloud-name "short" >}} instance.
|
||||
|
||||
For details, see [Automatically configure Telegraf](/influxdb/v2.5/write-data/no-code/use-telegraf/auto-config/)
|
||||
and [Manually update Telegraf configurations](/influxdb/v2.5/write-data/no-code/use-telegraf/manual-config/).
|
||||
|
||||
#### Scrape data
|
||||
|
||||
**InfluxDB OSS** lets you scrape Prometheus-formatted metrics from HTTP endpoints. For details, see [Scrape data](/influxdb/v2.5/write-data/no-code/scrape-data/).
|
||||
|
||||
#### API, CLI, and client libraries
|
||||
|
||||
For information about using the InfluxDB v2 API, `influx` CLI, and client libraries to write data, see [Write data to InfluxDB](/influxdb/v2.5/write-data/).
|
||||
|
||||
### Query data
|
||||
|
||||
Query data using Flux, the UI, and the `influx` command line interface.
|
||||
See [Query data](/influxdb/v2.5/query-data/).
|
||||
|
||||
### Process data
|
||||
|
||||
Use InfluxDB tasks to process and downsample data. See [Process data](/influxdb/v2.5/process-data/).
|
||||
|
||||
### Visualize data
|
||||
|
||||
Build custom dashboards to visualize your data.
|
||||
See [Visualize data](/influxdb/v2.5/visualize-data/).
|
||||
|
||||
### Monitor and alert
|
||||
|
||||
Monitor your data and sends alerts based on specified logic.
|
||||
See [Monitor and alert](/influxdb/v2.5/monitor-alert/).
|
||||
|
||||
{{< influxdbu "influxdb-101" >}}
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
---
|
||||
title: Get started with InfluxDB
|
||||
list_title: Get started
|
||||
description: >
|
||||
Start collecting, querying, processing, and visualizing data in InfluxDB OSS.
|
||||
menu:
|
||||
influxdb_2_5:
|
||||
name: Get started
|
||||
weight: 3
|
||||
influxdb/v2.5/tags: [get-started]
|
||||
aliases:
|
||||
- /influxdb/v2.5/introduction/get-started/
|
||||
---
|
||||
|
||||
InfluxDB {{< current-version >}} is the platform purpose-built to collect, store,
|
||||
process and visualize time series data.
|
||||
**Time series data** is a sequence of data points indexed in time order.
|
||||
Data points typically consist of successive measurements made from the same
|
||||
source and are used to track changes over time.
|
||||
Examples of time series data include:
|
||||
|
||||
- Industrial sensor data
|
||||
- Server performance metrics
|
||||
- Heartbeats per minute
|
||||
- Electrical activity in the brain
|
||||
- Rainfall measurements
|
||||
- Stock prices
|
||||
|
||||
This multi-part tutorial walks you through writing time series data to InfluxDB {{< current-version >}},
|
||||
querying that data, processing and alerting on the data, and then visualizing the data.
|
||||
|
||||
## Key concepts before you get started
|
||||
|
||||
Before you get started using InfluxDB, it's important to understand how time series
|
||||
data is organized and stored in InfluxDB and some key definitions that are used
|
||||
throughout this documentation.
|
||||
|
||||
### Data organization
|
||||
|
||||
The InfluxDB data model organizes time series data into buckets and measurements.
|
||||
A bucket can contain multiple measurements. Measurements contain multiple
|
||||
tags and fields.
|
||||
|
||||
- **Bucket**: Named location where time series data is stored.
|
||||
A bucket can contain multiple _measurements_.
|
||||
- **Measurement**: Logical grouping for time series data.
|
||||
All _points_ in a given measurement should have the same _tags_.
|
||||
A measurement contains multiple _tags_ and _fields_.
|
||||
- **Tags**: Key-value pairs with values that differ, but do not change often.
|
||||
Tags are meant for storing metadata for each point--for example,
|
||||
something to identify the source of the data like host, location, station, etc.
|
||||
- **Fields**: Key-value pairs with values that change over time--for example: temperature, pressure, stock price, etc.
|
||||
- **Timestamp**: Timestamp associated with the data.
|
||||
When stored on disk and queried, all data is ordered by time.
|
||||
|
||||
_For detailed information and examples of the InfluxDB data model, see
|
||||
[Data elements](/influxdb/v2.5/reference/key-concepts/data-elements/)._
|
||||
|
||||
### Important definitions
|
||||
|
||||
The following are important definitions to understand when using InfluxDB:
|
||||
|
||||
- **Point**: Single data record identified by its _measurement, tag keys, tag values, field key, and timestamp_.
|
||||
- **Series**: A group of points with the same
|
||||
{{% oss-only %}}_measurement, tag keys, and tag values_.{{% /oss-only %}}
|
||||
{{% cloud-only %}}_measurement, tag keys and values, and field key_.{{% /cloud-only %}}
|
||||
|
||||
##### Example InfluxDB query results
|
||||
|
||||
{{< influxdb/points-series >}}
|
||||
|
||||
## Tools to use
|
||||
|
||||
Throughout this tutorial, there are multiple tools you can use to interact with
|
||||
InfluxDB {{< current-version >}}. Examples are provided for each of the following:
|
||||
|
||||
- [InfluxDB user interface (UI)](#influxdb-user-interface-ui)
|
||||
- [`influx` CLI](#influx-cli)
|
||||
- [InfluxDB HTTP API](#influxdb-http-api)
|
||||
|
||||
### InfluxDB user interface (UI)
|
||||
|
||||
The InfluxDB UI provides a web-based visual interface for interacting with and managing InfluxDB.
|
||||
{{% oss-only %}}The UI is packaged with InfluxDB and runs as part of the InfluxDB service. To access the UI, with InfluxDB running, visit [localhost:8086](http://localhost:8086) in your browser.{{% /oss-only %}}
|
||||
{{% cloud-only %}}To access the InfluxDB Cloud UI, [log into your InfluxDB Cloud account](https://cloud2.influxdata.com).{{% /cloud-only %}}
|
||||
|
||||
### `influx` CLI
|
||||
|
||||
The `influx` CLI lets you interact with and manage InfluxDB {{< current-version >}} from a command line.
|
||||
{{% oss-only %}}The CLI is packaged separately from InfluxDB and must be downloaded and installed separately.{{% /oss-only %}}
|
||||
For detailed CLI installation instructions, see
|
||||
[Use the influx CLI](/influxdb/v2.5/tools/influx-cli/).
|
||||
|
||||
### InfluxDB HTTP API
|
||||
|
||||
The [InfluxDB API](/influxdb/v2.5/reference/api/) provides a simple way to
|
||||
interact with the InfluxDB {{< current-version >}} using HTTP(S) clients.
|
||||
Examples in this tutorial use cURL, but any HTTP(S) client will work.
|
||||
|
||||
{{% note %}}
|
||||
#### InfluxDB client libraries
|
||||
|
||||
[InfluxDB client libraries](/influxdb/v2.5/api-guide/client-libraries/) are
|
||||
language-specific clients that interact with the InfluxDB HTTP API.
|
||||
Examples for client libraries are not provided in this tutorial, but these can
|
||||
be used to perform all the actions outlined in this tutorial.
|
||||
{{% /note %}}
|
||||
|
||||
## Authorization
|
||||
|
||||
**InfluxDB {{< current-version >}} requires authentication** using [API tokens](/influxdb/v2.5/security/tokens/).
|
||||
Each API token is associated with a user and a specific set of permissions for InfluxDB resources.
|
||||
|
||||
{{< page-nav next="/influxdb/v2.5/get-started/setup/" >}}
|
||||
|
||||
---
|
||||
|
||||
{{< influxdbu "influxdb-101" >}}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,603 @@
|
|||
---
|
||||
title: Get started querying data
|
||||
seotitle: Query data | Get started with InfluxDB
|
||||
list_title: Query data
|
||||
description: >
|
||||
Get started querying data in InfluxDB by learning about Flux and InfluxQL and
|
||||
using tools like the InfluxDB UI, `influx` CLI, and InfluxDB API.
|
||||
menu:
|
||||
influxdb_2_5:
|
||||
name: Query data
|
||||
parent: Get started
|
||||
identifier: get-started-query-data
|
||||
weight: 102
|
||||
metadata: [3 / 5]
|
||||
related:
|
||||
- /influxdb/v2.5/query-data/
|
||||
---
|
||||
|
||||
InfluxDB supports many different tools for querying data, including:
|
||||
|
||||
- InfluxDB user interface (UI)
|
||||
- [InfluxDB HTTP API](/influxdb/v2.5/reference/api/)
|
||||
- [`influx` CLI](/influxdb/v2.5/tools/influx-cli/)
|
||||
- [Chronograf](/{{< latest "Chronograf" >}}/)
|
||||
- [Grafana](/influxdb/v2.5/tools/grafana/)
|
||||
- [InfluxDB client libraries](/influxdb/v2.5/api-guide/client-libraries/)
|
||||
|
||||
This tutorial walks you through the fundamentals of querying data in InfluxDB and
|
||||
focuses primarily on the two languages you can use to query your time series data:
|
||||
|
||||
- **Flux**: A functional scripting language designed to query and process data
|
||||
from InfluxDB and other data sources.
|
||||
- **InfluxQL**: A SQL-like query language designed to query time series data from
|
||||
InfluxDB.
|
||||
|
||||
{{% note %}}
|
||||
The examples in this section of the tutorial query the data from written in the
|
||||
[Get started writing data](/influxdb/v2.5/get-started/write/#write-line-protocol-to-influxdb) section.
|
||||
{{% /note %}}
|
||||
|
||||
###### On this page:
|
||||
- [Query data with Flux](#query-data-with-flux)
|
||||
- [Flux query basics](#flux-query-basics)
|
||||
- [Execute a Flux query](#execute-a-flux-query)
|
||||
- [Query data with InfluxQL](#query-data-with-influxql)
|
||||
- [InfluxQL query basics](#influxql-query-basics)
|
||||
- [Execute an InfluxQL query](#execute-an-influxql-query)
|
||||
|
||||
---
|
||||
|
||||
## Query data with Flux
|
||||
|
||||
Flux is a functional scripting language that lets you query and process data
|
||||
from InfluxDB and [other data sources](/flux/v0.x/query-data/).
|
||||
|
||||
{{% note %}}
|
||||
This is a brief introduction to writing Flux queries.
|
||||
For a more in-depth introduction, see [Get started with Flux](/{{< latest "flux" >}}/get-started/).
|
||||
{{% /note %}}
|
||||
|
||||
### Flux query basics
|
||||
|
||||
When querying InfluxDB with Flux, there are three primary functions you use:
|
||||
|
||||
- [from()](/{{< latest "flux" >}}/stdlib/influxdata/influxdb/from/):
|
||||
Queries data from an InfluxDB bucket.
|
||||
- [range()](/{{< latest "flux" >}}/stdlib/universe/range/):
|
||||
Filters data based on time bounds. Flux requires "bounded" queries—queries
|
||||
limited to a specific time range.
|
||||
- [filter()](/{{< latest "flux" >}}/stdlib/universe/filter/):
|
||||
Filters data based on column values. Each row is represented by `r`
|
||||
and each column is represented by a property of `r`.
|
||||
You can apply multiple subsequent filters.
|
||||
|
||||
To see how `from()` structures data into rows and tables when returned from InfluxDB,
|
||||
[view the data written in Get started writing to InfluxDB](/influxdb/v2.5/get-started/write/#view-the-written-data).
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "Learn more about how `filter()` works" %}}
|
||||
|
||||
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/) reads each row as a
|
||||
[record](/flux/v0.x/data-types/composite/record/) named `r`.
|
||||
In the `r` record, each key-value pair represents a column and its value.
|
||||
For example:
|
||||
|
||||
```js
|
||||
r = {
|
||||
_time: 2020-01-01T00:00:00Z,
|
||||
_measurement: "home",
|
||||
room: "Kitchen",
|
||||
_field: "temp",
|
||||
_value: 21.0,
|
||||
}
|
||||
```
|
||||
|
||||
To filter rows, use [predicate expressions](/flux/v0.x/get-started/syntax-basics/#predicate-expressions)
|
||||
to evaluate the values of columns. Given the row record above:
|
||||
|
||||
```javascript
|
||||
(r) => r._measurement == "home" // Returns true
|
||||
(r) => r.room == "Kitchen" // Returns true
|
||||
(r) => r._field == "co" // Returns false
|
||||
(r) => r._field == "co" or r._field == "temp" // Returns true
|
||||
(r) => r._value <= 20.0 // Returns false
|
||||
```
|
||||
|
||||
Rows that evaluate to `true` are included in the `filter()` output.
|
||||
Rows that evaluate to `false` are dropped from the `filter()` output.
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
#### Pipe-forward operator
|
||||
|
||||
Flux uses the pipe-forward operator (`|>`) to pipe the output of one function as
|
||||
input the next function as input.
|
||||
|
||||
#### Query the example data
|
||||
|
||||
The following Flux query returns the **co**, **hum**, and **temp** fields stored in
|
||||
the **home** measurement with timestamps **between 2022-01-01T08:00:00Z and 2022-01-01T20:00:01Z**.
|
||||
|
||||
```js
|
||||
from(bucket: "get-started")
|
||||
|> range(start: 2022-01-01T08:00:00Z, stop: 2022-01-01T20:00:01Z)
|
||||
|> filter(fn: (r) => r._measurement == "home")
|
||||
|> filter(fn: (r) => r._field== "co" or r._field == "hum" or r._field == "temp")
|
||||
```
|
||||
|
||||
### Execute a Flux query
|
||||
|
||||
Use the **InfluxDB UI**, **`influx` CLI**, or **InfluxDB API** to execute Flux queries.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!--------------------------- BEGIN FLUX UI CONTENT --------------------------->
|
||||
|
||||
1. Visit
|
||||
{{% oss-only %}}[localhost:8086](http://localhost:8086){{% /oss-only %}}
|
||||
{{% cloud-only %}}[cloud2.influxdata.com](https://cloud2.influxdata.com){{% /cloud-only %}}
|
||||
in a browser to log in and access the InfluxDB UI.
|
||||
|
||||
2. In the left navigation bar, click **Data Explorer**.
|
||||
|
||||
{{< nav-icon "data-explorer" "v4" >}}
|
||||
|
||||
3. The InfluxDB Data Explorer provides two options for querying data with Flux:
|
||||
|
||||
- [Query Builder](#query-builder) _(default)_:
|
||||
Visual query builder that lets you select the time range,
|
||||
measurement, tags, and fields to query.
|
||||
- [Script Editor](#script-editor):
|
||||
In-browser code editor for composing and running Flux scripts.
|
||||
|
||||
---
|
||||
|
||||
#### Query builder
|
||||
|
||||
**To build and execute a Flux query with the query builder**:
|
||||
|
||||
1. In the **{{% caps %}}FROM{{% /caps %}}** column, select the bucket to query. For this tutorial,
|
||||
select the **get-started** bucket.
|
||||
2. In the next **filter** column, select **_measurement** from the
|
||||
column dropdown menu, and then select the **home** measurement.
|
||||
3. _(Optional)_ To query a specific field or fields, in the next **filter**
|
||||
column, select **_field** from the column dropdown menu, and then
|
||||
select the fields to query. In this tutorial, there are three
|
||||
fields: **co**, **hum**, and **temp**.
|
||||
4. _(Optional)_ To query by specific tag values, in the next **filter**
|
||||
column, select then tag column from the column dropdown menu, and then
|
||||
select the tag values to filter by. In this tutorial, the tag only
|
||||
tag column is **room**.
|
||||
5. _(Optional)_ In the **{{% caps %}}Aggregate Function{{% /caps %}}** pane,
|
||||
select an aggregate or selector function to use to downsample the data.
|
||||
The default aggregate function is `mean`.
|
||||
6. In the time range dropdown menu, select **Custom Time Range**, and
|
||||
select the following dates from the date selectors:
|
||||
|
||||
- **Start**: 2022-01-01 08:00:00
|
||||
- **Stop**: 2022-01-01 20:00:01
|
||||
|
||||
_Note the addition of one second to the stop time. In Flux, stop
|
||||
times are exclusive and will exclude points with that timestamp.
|
||||
By adding one second, the query will include all points to
|
||||
2022-01-01 20:00:00_.
|
||||
|
||||
7. Click **{{% caps %}}Submit{{% /caps %}}** to execute the query with the
|
||||
selected filters and operations and display the result.
|
||||
|
||||
---
|
||||
|
||||
#### Script editor
|
||||
|
||||
**To write and execute a Flux query with the query builder**:
|
||||
|
||||
1. In the Data Explorer, click **{{% caps %}}Script Editor{{% /caps %}}**.
|
||||
2. Write your Flux query in the Script Editor text field.
|
||||
|
||||
_**Note**: You can either hand-write the functions or you can use the function list
|
||||
to the right of the script editor to search for and inject functions._
|
||||
|
||||
1. Use `from()` and specify the bucket to query with the `bucket` parameter.
|
||||
For this tutorial, query the **get-started** bucket.
|
||||
2. Use `range()` to specify the time range to query. The `start`
|
||||
parameter defines the earliest time to include in results.
|
||||
The `stop` parameter specifies the latest time (exclusively) to
|
||||
include in results.
|
||||
|
||||
- **start**: 2022-01-01T08:00:00Z
|
||||
- **stop**: 2022-01-01T20:00:01Z
|
||||
|
||||
_Note the addition of one second to the stop time. In Flux, stop
|
||||
times are exclusive and will exclude points with that timestamp.
|
||||
By adding one second, the query will include all points to
|
||||
2022-01-01 20:00:00_.
|
||||
|
||||
If you want to use the start and stop times selected in the time
|
||||
selection dropdown menu, use `v.timeRangeStart` and `v.timeRangeStop`
|
||||
as the values for the `start` and `stop` parameters.
|
||||
|
||||
3. Use `filter()` to filter results by the **home** measurement.
|
||||
4. _(Optional)_ Use `filter()` to filter results by a specific field.
|
||||
In this tutorial, there are three fields: **co**, **hum**, and **temp**.
|
||||
5. _(Optional)_ Use `filter()` to filter results by specific
|
||||
tag values. In this tutorial, there is one tag, **room**, with two
|
||||
potential values: **Living Room** or **Kitchen**.
|
||||
|
||||
```js
|
||||
from(bucket: from(bucket: "get-started")
|
||||
|> range(start: 2022-01-01T08:00:00Z, stop: 2022-01-01T20:00:01Z)
|
||||
|> filter(fn: (r) => r._measurement == "home")
|
||||
|> filter(fn: (r) => r._field== "co" or r._field == "hum" or r._field == "temp")
|
||||
```
|
||||
|
||||
3. Click **{{% caps %}}Submit{{% /caps %}}** to execute the query with the
|
||||
selected filters and operations and display the result.
|
||||
|
||||
<!---------------------------- END FLUX UI CONTENT ---------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!-------------------------- BEGIN FLUX CLI CONTENT --------------------------->
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.5/tools/influx-cli/).
|
||||
2. Use the [`influx query` command](/influxdb/v2.5/reference/cli/influx/query/)
|
||||
to query InfluxDB using Flux.
|
||||
|
||||
**Provide the following**:
|
||||
|
||||
- String-encoded Flux query.
|
||||
- [Connection and authentication credentials](/influxdb/v2.5/get-started/setup/?t=influx+CLI#configure-authentication-credentials)
|
||||
|
||||
```sh
|
||||
influx query '
|
||||
from(bucket: "get-started")
|
||||
|> range(start: 2022-01-01T08:00:00Z, stop: 2022-01-01T20:00:01Z)
|
||||
|> filter(fn: (r) => r._measurement == "home")
|
||||
|> filter(fn: (r) => r._field== "co" or r._field == "hum" or r._field == "temp")
|
||||
'
|
||||
```
|
||||
|
||||
<!--------------------------- END FLUX CLI CONTENT ---------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!-------------------------- BEGIN FLUX API CONTENT --------------------------->
|
||||
|
||||
To query data from InfluxDB using Flux and the InfluxDB HTTP API, send a request
|
||||
to the InfluxDB API [`/api/v2/query` endpoint](/influxdb/v2.5/api/#operation/PostQuery)
|
||||
using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/api/v2/query" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token <INFLUX_TOKEN>
|
||||
- **Content-Type**: application/vnd.flux
|
||||
- **Accept**: application/csv
|
||||
- _(Optional)_ **Accept-Encoding**: gzip
|
||||
- **Query parameters**:
|
||||
- **org**: InfluxDB organization name
|
||||
- **Request body**: Flux query as plain text
|
||||
|
||||
The following example uses cURL and the InfluxDB API to query data with Flux:
|
||||
|
||||
```sh
|
||||
curl --request POST \
|
||||
"$INFLUX_HOST/api/v2/query?org=$INFLUX_ORG&bucket=get-started" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--header "Content-Type: application/vnd.flux" \
|
||||
--header "Accept: application/csv" \
|
||||
--data 'from(bucket: "get-started")
|
||||
|> range(start: 2022-01-01T08:00:00Z, stop: 2022-01-01T20:00:01Z)
|
||||
|> filter(fn: (r) => r._measurement == "home")
|
||||
|> filter(fn: (r) => r._field== "co" or r._field == "hum" or r._field == "temp")
|
||||
'
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
The InfluxDB `/api/v2/query` endpoint returns query results in
|
||||
[annotated CSV](/influxdb/v2.5/reference/syntax/annotated-csv/).
|
||||
{{% /note %}}
|
||||
|
||||
<!--------------------------- END FLUX API CONTENT ---------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
### Flux query results
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "View Flux query results" %}}
|
||||
|
||||
{{% note %}}
|
||||
`_start` and `_stop` columns have been omitted.
|
||||
These columns, by default, represent the query time bounds and are added by `range()`.
|
||||
{{% /note %}}
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | co | 1 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | co | 1 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | co | 3 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | co | 7 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | co | 9 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | co | 18 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | co | 22 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | co | 26 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | hum | 35.9 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | hum | 36.2 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | hum | 36.1 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | hum | 36.5 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | hum | 36.3 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | hum | 36.2 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | hum | 36.9 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | hum | 36.6 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | hum | 36.5 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | temp | 21 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | temp | 23 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | temp | 22.4 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | temp | 22.5 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | temp | 22.8 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | temp | 22.8 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | temp | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | temp | 23.3 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | temp | 23.1 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | co | 1 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | co | 4 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | co | 5 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | co | 9 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | co | 14 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | co | 17 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | hum | 36.1 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | hum | 36.1 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | hum | 36.2 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | hum | 36.3 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | hum | 36.4 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | temp | 21.1 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | temp | 21.4 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | temp | 21.8 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | temp | 22.2 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | temp | 22.2 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | temp | 22.4 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | temp | 22.3 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | temp | 22.3 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | temp | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | temp | 22.6 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | temp | 22.8 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | temp | 22.5 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | temp | 22.2 |
|
||||
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
## Query data with InfluxQL
|
||||
|
||||
InfluxQL is a SQL-like query language similar to most SQL languages, but
|
||||
specifically designed to query time series data from InfluxDB 0.x and 1.x.
|
||||
|
||||
{{% note %}}
|
||||
#### Map databases and retention policies to buckets
|
||||
|
||||
Because InfluxQL was developed for earlier versions of InfluxDB, it depends on
|
||||
**databases and retention policies** (DBRP) which have been replaced by
|
||||
[buckets](/influxdb/v2.5/get-started/#data-organization) in InfluxDB {{< current-version >}}.
|
||||
To use InfluxQL with InfluxDB {{< current-version >}}, first
|
||||
[map database and retention policy (DBRP) combinations to an InfluxDB bucket](/influxdb/v2.5/query-data/influxql/dbrp/).
|
||||
{{% /note %}}
|
||||
|
||||
### InfluxQL query basics
|
||||
|
||||
When querying InfluxDB with InfluxQL, the most basic query includes the following
|
||||
statements and clauses:
|
||||
|
||||
- `SELECT`: Specify which fields and tags to query.
|
||||
- `FROM`: Specify the measurement to query.
|
||||
Use the measurement name or a fully-qualified measurement name which includes
|
||||
the database and retention policy. For example: `db.rp.measurement`.
|
||||
- `WHERE`: _(Optional)_ Filter data based on fields, tags, and time.
|
||||
|
||||
The following InfluxQL query returns the **co**, **hum**, and **temp** fields and
|
||||
the **room** tag stored in the **home** measurement with timestamps
|
||||
**between 2022-01-01T08:00:00Z and 2022-01-01T20:00:00Z**.
|
||||
|
||||
```sql
|
||||
SELECT co,hum,temp,room FROM "get-started".autogen.home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z'
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
These are just the fundamentals of the InfluxQL syntax.
|
||||
For more in-depth information, see the [InfluxQL documentation](/influxdb/v2.5/query-data/influxql/).
|
||||
{{% /note %}}
|
||||
|
||||
### Execute an InfluxQL query
|
||||
|
||||
Use the **`influx` CLI**, or **InfluxDB API** to execute InfluxQL queries.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------- BEGIN INFLUXQL UI CONTENT ------------------------->
|
||||
|
||||
{{% note %}}
|
||||
#### The InflxuDB UI does not support InfluxQL
|
||||
|
||||
The InfluxDB {{< current-version >}} UI does not provide a way to query data with InfluxQL.
|
||||
For a user interface that builds and executes InfluxQL queries, consider using
|
||||
[Chronograf](/influxdb/v2.5/tools/chronograf/) or
|
||||
[Grafana](/influxdb/v2.5/tools/grafana/) with InfluxDB {{< current-version >}}.
|
||||
{{% /note %}}
|
||||
|
||||
<!-------------------------- END INFLUXQL UI CONTENT -------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!------------------------ BEGIN INFLUXQL CLI CONTENT ------------------------->
|
||||
|
||||
{{< cli/influx-creds-note >}}
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.5/tools/influx-cli/).
|
||||
2. Use the [`influx v1 shell` command](/influxdb/v2.5/reference/cli/influx/v1/shell/)
|
||||
to start an InfluxQL shell and query InfluxDB using InfluxQL.
|
||||
Provide the following:
|
||||
|
||||
- [Connection and authentication credentials](/influxdb/v2.5/get-started/setup/?t=influx+CLI#configure-authentication-credentials)
|
||||
|
||||
```sh
|
||||
influx v1 shell
|
||||
```
|
||||
|
||||
3. Enter an InfluxQL query and press {{< keybind mac="return" other="Enter ↵" >}}.
|
||||
|
||||
```sql
|
||||
SELECT co,hum,temp,room FROM "get-started".autogen.home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z'
|
||||
```
|
||||
|
||||
<!------------------------- END INFLUXQL CLI CONTENT -------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!------------------------ BEGIN INFLUXQL API CONTENT ------------------------->
|
||||
|
||||
To query data from InfluxDB using InfluxQL and the InfluxDB HTTP API, send a request
|
||||
to the InfluxDB API [`/query` 1.X compatibility endpoint](/influxdb/v2.5/reference/api/influxdb-1x/query/)
|
||||
using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/query" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token <INFLUX_TOKEN>
|
||||
- **Accept**: application/json
|
||||
- _(Optional)_ **Accept-Encoding**: gzip
|
||||
- **Query parameters**:
|
||||
- **db**: Database to query.
|
||||
- **rp**: Retention policy to query data from.
|
||||
- **q**: InfluxQL query to execute.
|
||||
- **epoch**: _(Optional)_ Return results with
|
||||
[Unix timestamps](/influxdb/v2.5/reference/glossary/#unix-timestamp) of a
|
||||
specified precision instead of [RFC3339 timestamps](/influxdb/v2.5/reference/glossary/#rfc3339-timestamp). The following precisions are available:
|
||||
|
||||
- `ns` - nanoseconds
|
||||
- `u` or `µ` - microseconds
|
||||
- `ms` - milliseconds
|
||||
- `s` - seconds
|
||||
- `m` - minutes
|
||||
- `h` - hours
|
||||
|
||||
- **Request body**: Flux query as plain text
|
||||
|
||||
The following example uses cURL and the InfluxDB API to query data with InfluxQL:
|
||||
|
||||
```sh
|
||||
curl --get "$INFLUX_HOST/query?org=$INFLUX_ORG&bucket=get-started" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--data-urlencode "db=get-started" \
|
||||
--data-urlencode "rp=autogen" \
|
||||
--data-urlencode "q=SELECT co,hum,temp,room FROM home WHERE time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T20:00:00Z'"
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
The InfluxDB `/write` 1.x compatibility endpoint returns query results in JSON format.
|
||||
{{% /note %}}
|
||||
|
||||
<!------------------------- END INFLUXQL API CONTENT -------------------------->
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
### InfluxQL query results
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "View InfluxQL query results" %}}
|
||||
|
||||
| time | room | co | hum | temp |
|
||||
| :------------------- | :---------- | --: | ---: | ---: |
|
||||
| 2022-01-01T08:00:00Z | Kitchen | 0 | 35.9 | 21 |
|
||||
| 2022-01-01T08:00:00Z | Living Room | 0 | 35.9 | 21.1 |
|
||||
| 2022-01-01T09:00:00Z | Kitchen | 0 | 36.2 | 23 |
|
||||
| 2022-01-01T09:00:00Z | Living Room | 0 | 35.9 | 21.4 |
|
||||
| 2022-01-01T10:00:00Z | Kitchen | 0 | 36.1 | 22.7 |
|
||||
| 2022-01-01T10:00:00Z | Living Room | 0 | 36 | 21.8 |
|
||||
| 2022-01-01T11:00:00Z | Kitchen | 0 | 36 | 22.4 |
|
||||
| 2022-01-01T11:00:00Z | Living Room | 0 | 36 | 22.2 |
|
||||
| 2022-01-01T12:00:00Z | Kitchen | 0 | 36 | 22.5 |
|
||||
| 2022-01-01T12:00:00Z | Living Room | 0 | 35.9 | 22.2 |
|
||||
| 2022-01-01T13:00:00Z | Kitchen | 1 | 36.5 | 22.8 |
|
||||
| 2022-01-01T13:00:00Z | Living Room | 0 | 36 | 22.4 |
|
||||
| 2022-01-01T14:00:00Z | Kitchen | 1 | 36.3 | 22.8 |
|
||||
| 2022-01-01T14:00:00Z | Living Room | 0 | 36.1 | 22.3 |
|
||||
| 2022-01-01T15:00:00Z | Kitchen | 3 | 36.2 | 22.7 |
|
||||
| 2022-01-01T15:00:00Z | Living Room | 1 | 36.1 | 22.3 |
|
||||
| 2022-01-01T16:00:00Z | Kitchen | 7 | 36 | 22.4 |
|
||||
| 2022-01-01T16:00:00Z | Living Room | 4 | 36 | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | Kitchen | 9 | 36 | 22.7 |
|
||||
| 2022-01-01T17:00:00Z | Living Room | 5 | 35.9 | 22.6 |
|
||||
| 2022-01-01T18:00:00Z | Kitchen | 18 | 36.9 | 23.3 |
|
||||
| 2022-01-01T18:00:00Z | Living Room | 9 | 36.2 | 22.8 |
|
||||
| 2022-01-01T19:00:00Z | Kitchen | 22 | 36.6 | 23.1 |
|
||||
| 2022-01-01T19:00:00Z | Living Room | 14 | 36.3 | 22.5 |
|
||||
| 2022-01-01T20:00:00Z | Kitchen | 26 | 36.5 | 22.7 |
|
||||
| 2022-01-01T20:00:00Z | Living Room | 17 | 36.4 | 22.2 |
|
||||
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
**Congratulations!** You've learned the basics of querying data in InfluxDB.
|
||||
For a deep dive into all the ways you can query InfluxDB, see the
|
||||
[Query data in InfluxDB](/influxdb/v2.5/query-data/) section of documentation.
|
||||
|
||||
Let's move on to more advanced data processing queries and automating queries
|
||||
with InfluxDB tasks.
|
||||
|
||||
{{< page-nav prev="/influxdb/v2.5/get-started/write/" next="/influxdb/v2.5/get-started/process/" keepTab=true >}}
|
||||
|
|
@ -0,0 +1,457 @@
|
|||
---
|
||||
title: Set up InfluxDB
|
||||
seotitle: Set up InfluxDB | Get started with InfluxDB
|
||||
list_title: Set up InfluxDB
|
||||
description: >
|
||||
Learn how to set up InfluxDB for the "Get started with InfluxDB" tutorial.
|
||||
menu:
|
||||
influxdb_2_5:
|
||||
name: Set up InfluxDB
|
||||
parent: Get started
|
||||
identifier: get-started-set-up
|
||||
weight: 101
|
||||
metadata: [1 / 5]
|
||||
related:
|
||||
- /influxdb/v2.5/install/
|
||||
- /influxdb/v2.5/reference/config-options/
|
||||
- /influxdb/v2.5/security/tokens/
|
||||
- /influxdb/v2.5/organizations/buckets/
|
||||
- /influxdb/v2.5/tools/influx-cli/
|
||||
- /influxdb/v2.5/reference/api/
|
||||
---
|
||||
|
||||
As you get started with this tutorial, do the following to make sure everything
|
||||
you need is in place.
|
||||
|
||||
1. If you haven't already, [download and install InfluxDB](/influxdb/v2.5/install/).
|
||||
|
||||
Installation instructions depend on your operating system.
|
||||
Be sure to go through the installation and initialization process fully.
|
||||
|
||||
2. **Start InfluxDB**.
|
||||
|
||||
Run the `influxd` daemon to start the InfluxDB service, HTTP API, and
|
||||
user interface (UI).
|
||||
|
||||
```sh
|
||||
influxd
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
#### Configure InfluxDB
|
||||
|
||||
There are multiple ways to custom-configure InfluxDB.
|
||||
For information about what configuration options are available and how to set them,
|
||||
see [InfluxDB configuration options](/influxdb/v2.5/reference/config-options/).
|
||||
{{% /note %}}
|
||||
|
||||
Once running, the InfluxDB UI is accessible at [localhost:8086](http://localhost:8086).
|
||||
|
||||
3. {{< req text="(Optional)" color="magenta" >}} **Download, install, and configure the `influx` CLI**.
|
||||
|
||||
The `influx` CLI provides a simple way to interact with InfluxDB from a
|
||||
command line. For detailed installation and setup instructions,
|
||||
see [Use the influx CLI](/influxdb/v2.5/tools/influx-cli/).
|
||||
|
||||
4. {{< req text="(Optional)" color="magenta" >}} **Create an All Access API token.**
|
||||
<span id="create-an-all-access-api-token"></span>
|
||||
|
||||
During the InfluxDB initialization process, you created a user and API token
|
||||
that has permissions to manage everything in your InfluxDB instance.
|
||||
This is known as an **Operator token**. While you can use your Operator token
|
||||
to interact with InfluxDB, we recommend creating an **all access token** that
|
||||
is scoped to an organization.
|
||||
|
||||
Use the **InfluxDB UI**, **`influx` CLI**, or **InfluxDB API** to create an
|
||||
all access token.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------------ BEGIN UI CONTENT ----------------------------->
|
||||
|
||||
1. Visit
|
||||
{{% oss-only %}}[localhost:8086](http://localhost:8086){{% /oss-only %}}
|
||||
{{% cloud-only %}}[cloud2.influxdata.com](https://cloud2.influxdata.com){{% /cloud-only %}}
|
||||
in a browser to log in and access the InfluxDB UI.
|
||||
|
||||
2. Navigate to **Load Data** > **API Tokens** using the left navigation bar.
|
||||
3. Click **+ {{% caps %}}Generate API token{{% /caps %}}** and select
|
||||
**All Access API Token**.
|
||||
4. Enter a description for the API token and click **{{< icon "check" >}} {{% caps %}}Save{{% /caps %}}**.
|
||||
5. Copy the generated token and store it for safe keeping.
|
||||
|
||||
<!------------------------------- END UI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!---------------------------- BEGIN CLI CONTENT ----------------------------->
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.5/tools/influx-cli/).
|
||||
2. Use the [`influx auth create` command](/influxdb/v2.5/reference/cli/influx/auth/create/)
|
||||
to create an all access token.
|
||||
|
||||
**Provide the following**:
|
||||
|
||||
- `--all-access` flag
|
||||
- `--host` flag with your [InfluxDB host URL](/influxdb/v2.5/reference/urls/)
|
||||
- `-o, --org` or `--org-id` flags with your InfluxDB organization name or
|
||||
[ID](/influxdb/v2.5/organizations/view-orgs/#view-your-organization-id)
|
||||
- `-t, --token` flag with your Operator token
|
||||
|
||||
```sh
|
||||
influx auth create \
|
||||
--all-access \
|
||||
--host http://localhost:8086 \
|
||||
--org <YOUR_INFLUXDB_ORG_NAME> \
|
||||
--token <YOUR_INFLUXDB_OPERATOR_TOKEN>
|
||||
```
|
||||
|
||||
3. Copy the generated token and store it for safe keeping.
|
||||
|
||||
<!------------------------------ END CLI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!----------------------------- BEGIN API CONTENT ----------------------------->
|
||||
|
||||
Send a request to the InfluxDB API `/api/v2/authorizations` endpoint using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/api/v2/authorizations" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token <INFLUX_OPERATOR_TOKEN>
|
||||
- **Content-Type**: application/json
|
||||
- **Request body**: JSON body with the following properties:
|
||||
- **status**: `"active"`
|
||||
- **description**: API token description
|
||||
- **orgID**: [InfluxDB organization ID](/influxdb/v2.5/organizations/view-orgs/#view-your-organization-id)
|
||||
- **permissions**: Array of objects where each object represents permissions
|
||||
for an InfluxDB resource type or a specific resource. Each permission contains the following properties:
|
||||
- **action**: "read" or "write"
|
||||
- **resource**: JSON object that represents the InfluxDB resource to grant
|
||||
permission to. Each resource contains at least the following properties:
|
||||
- **orgID**: [InfluxDB organization ID](/influxdb/v2.5/organizations/view-orgs/#view-your-organization-id)
|
||||
- **type**: Resource type.
|
||||
_For information about what InfluxDB resource types exist, use the
|
||||
[`/api/v2/resources` endpoint](/influxdb/v2.5/api/#operation/GetResources)._
|
||||
|
||||
The following example uses cURL and the InfluxDB API to generate an all access token:
|
||||
|
||||
{{% truncate %}}
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG_ID=<YOUR_INFLUXDB_ORG_ID>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_OPERATOR_TOKEN>
|
||||
|
||||
curl --request POST \
|
||||
"$INFLUX_HOST/api/v2/authorizations" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--header "Content-Type: text/plain; charset=utf-8" \
|
||||
--data '{
|
||||
"status": "active",
|
||||
"description": "All access token for get started tutorial",
|
||||
"orgID": "'"$INFLUX_ORG_ID"'",
|
||||
"permissions": [
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "authorizations"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "authorizations"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "buckets"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "buckets"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "dashboards"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "dashboards"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "orgs"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "orgs"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "sources"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "sources"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "tasks"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "tasks"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "telegrafs"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "telegrafs"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "users"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "users"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "variables"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "variables"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "scrapers"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "scrapers"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "secrets"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "secrets"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "labels"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "labels"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "views"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "views"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "documents"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "documents"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notificationRules"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notificationRules"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notificationEndpoints"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notificationEndpoints"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "checks"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "checks"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "dbrp"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "dbrp"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notebooks"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "notebooks"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "annotations"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "annotations"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "remotes"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "remotes"}},
|
||||
{"action": "read", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "replications"}},
|
||||
{"action": "write", "resource": {"orgID": "'"$INFLUX_ORG_ID"'", "type": "replications"}}
|
||||
]
|
||||
}
|
||||
'
|
||||
```
|
||||
{{% /truncate %}}
|
||||
|
||||
The response body contains a JSON object with the following properties:
|
||||
|
||||
- **id**: API Token ID
|
||||
- **token**: API Token ({{< req "Important" >}})
|
||||
- **status**: Token status
|
||||
- **description**: Token description
|
||||
- **orgID**: InfluxDB organization ID the token is associated with
|
||||
- **org**: InfluxDB organization name the token is associated with
|
||||
- **userID**: User ID the token is associated with
|
||||
- **user**: Username the token is associated with
|
||||
- **permissions**: List of permissions for organization resources
|
||||
|
||||
**Copy the generated `token` and store it for safe keeping.**
|
||||
|
||||
<!------------------------------ END API CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
{{% note %}}
|
||||
We recommend using a password manager or a secret store to securely store
|
||||
sensitive tokens.
|
||||
{{% /note %}}
|
||||
|
||||
5. **Configure authentication credentials**. <span id="configure-authentication-credentials"></span>
|
||||
|
||||
As you go through this tutorial, interactions with InfluxDB {{< current-version >}}
|
||||
require your InfluxDB **host**, **organization name or ID**, and your **API token**.
|
||||
There are different methods for providing these credentials depending on
|
||||
which client you use to interact with InfluxDB.
|
||||
|
||||
{{% note %}}
|
||||
When configuring your token, if you [created an all access token](#create-an-all-access-api-token),
|
||||
use that token to interact with InfluxDB. Otherwise, use your operator token.
|
||||
{{% /note %}}
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------------ BEGIN UI CONTENT ----------------------------->
|
||||
|
||||
When managing InfluxDB through the InfluxDB UI, authentication credentials are
|
||||
provided automatically using credentials associated with the user you log in with.
|
||||
|
||||
<!------------------------------- END UI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!---------------------------- BEGIN CLI CONTENT ----------------------------->
|
||||
|
||||
There are three ways to provided authentication credentials to the `influx` CLI:
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "CLI connection configurations <em>(<span class=\"req\">Recommended</span>)</em>" %}}
|
||||
|
||||
The `influx` CLI lets you specify connection configuration presets that let
|
||||
you store and quickly switch between multiple sets of InfluxDB connection
|
||||
credentials. Use the [`influx config create` command](/influxdb/v2.5/reference/cli/influx/config/create/)
|
||||
to create a new CLI connection configuration. Include the following flags:
|
||||
|
||||
- `-n, --config-name`: Connection configuration name. This examples uses `get-started`.
|
||||
- `-u, --host-url`: [InfluxDB host URL](/influxdb/v2.5/reference/urls/).
|
||||
- `-o, --org`: InfluxDB organization name.
|
||||
- `-t, --token`: InfluxDB API token.
|
||||
|
||||
```sh
|
||||
influx config create \
|
||||
--name get-started
|
||||
--host-url http://localhost:8086
|
||||
--org <YOUR_INFLUXDB_ORG_NAME>
|
||||
--token <YOUR_INFLUXDB_API_TOKEN>
|
||||
```
|
||||
|
||||
_For more information about CLI connection configurations, see
|
||||
[Install and use the `influx` CLI](/influxdb/v2.5/tools/influx-cli/#set-up-the-influx-cli)._
|
||||
|
||||
{{% /expand %}}
|
||||
|
||||
{{% expand "Environment variables" %}}
|
||||
|
||||
The `influx` CLI checks for specific environment variables and, if present,
|
||||
uses those environment variables to populate authentication credentials.
|
||||
Set the following environment variables in your command line session:
|
||||
|
||||
- `INFLUX_HOST`: [InfluxDB host URL](/influxdb/v2.5/reference/urls/).
|
||||
- `INFLUX_ORG`: InfluxDB organization name.
|
||||
- `INFLUX_ORG_ID`: InfluxDB [organization ID](/influxdb/v2.5/organizations/view-orgs/#view-your-organization-id).
|
||||
- `INFLUX_TOKEN`: InfluxDB API token.
|
||||
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG=<YOUR_INFLUXDB_ORG_NAME>
|
||||
export INFLUX_ORG_ID=<YOUR_INFLUXDB_ORG_ID>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_API_TOKEN>
|
||||
```
|
||||
|
||||
{{% /expand %}}
|
||||
|
||||
{{% expand "Command flags" %}}
|
||||
|
||||
Use the following `influx` CLI flags to provide required credentials to commands:
|
||||
|
||||
- `--host`: [InfluxDB host URL](/influxdb/v2.5/reference/urls/).
|
||||
- `-o`, `--org` or `--org-id`: InfluxDB organization name or
|
||||
[ID](/influxdb/v2.5/organizations/view-orgs/#view-your-organization-id).
|
||||
- `-t`, `--token`: InfluxDB API token.
|
||||
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
{{% note %}}
|
||||
All `influx` CLI examples in this getting started tutorial assume your InfluxDB
|
||||
**host**, **organization**, and **token** are provided by either the
|
||||
[active `influx` CLI configuration](/influxdb/v2.5/reference/cli/influx/#provide-required-authentication-credentials)
|
||||
or by environment variables.
|
||||
{{% /note %}}
|
||||
|
||||
<!------------------------------ END CLI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!----------------------------- BEGIN API CONTENT ----------------------------->
|
||||
|
||||
When using the InfluxDB API, provide the required connection credentials in the
|
||||
following ways:
|
||||
|
||||
- **InfluxDB host**: The domain and port to send HTTP(S) requests to.
|
||||
- **InfluxDB API Token**: Include an `Authorization` header that uses either
|
||||
`Bearer` or `Token` scheme and your InfluxDB API token. For example:
|
||||
`Authorization: Bearer 0xxx0o0XxXxx00Xxxx000xXXxoo0==`.
|
||||
- **InfluxDB organization name or ID**: Depending on the API endpoint used, pass
|
||||
this as part of the URL path, query string, or in the request body.
|
||||
|
||||
All API examples in this tutorial use **cURL** from a command line.
|
||||
To provide all the necessary credentials to the example cURL commands, set
|
||||
the following environment variables in your command line session.
|
||||
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG=<YOUR_INFLUXDB_ORG_NAME>
|
||||
export INFLUX_ORG_ID=<YOUR_INFLUXDB_ORG_ID>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_API_TOKEN>
|
||||
```
|
||||
<!------------------------------ END API CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
6. {{< req text="(Optional)" color="magenta" >}} **Create a bucket**.
|
||||
|
||||
In the InfluxDB initialization process, you created a bucket.
|
||||
You can use that bucket or create a new one specifically for this getting
|
||||
started tutorial. All examples in this tutorial assume a bucket named
|
||||
_get-started_.
|
||||
|
||||
Use the **InfluxDB UI**, **`influx` CLI**, or **InfluxDB API** to create a
|
||||
new bucket.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------------ BEGIN UI CONTENT ----------------------------->
|
||||
|
||||
1. Visit
|
||||
{{% oss-only %}}[localhost:8086](http://localhost:8086){{% /oss-only %}}
|
||||
{{% cloud-only %}}[cloud2.influxdata.com](https://cloud2.influxdata.com){{% /cloud-only %}}
|
||||
in a browser to log in and access the InfluxDB UI.
|
||||
|
||||
2. Navigate to **Load Data** > **Buckets** using the left navigation bar.
|
||||
3. Click **+ {{< caps >}}Create bucket{{< /caps >}}**.
|
||||
4. Provide a bucket name (get-started) and select {{% caps %}}Never{{% /caps %}}
|
||||
to create a bucket with an infinite [retention period](/influxdb/v2.5/reference/glossary/#retention-period).
|
||||
5. Click **{{< caps >}}Create{{< /caps >}}**.
|
||||
|
||||
<!------------------------------- END UI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!---------------------------- BEGIN CLI CONTENT ----------------------------->
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.5/tools/influx-cli/).
|
||||
2. Use the [`influx bucket create` command](/influxdb/v2.5/reference/cli/influx/bucket/create/)
|
||||
to create a new bucket.
|
||||
|
||||
**Provide the following**:
|
||||
|
||||
- `-n, --name` flag with the bucket name.
|
||||
- [Connection and authentication credentials](#configure-authentication-credentials)
|
||||
|
||||
```sh
|
||||
influx bucket create --name get-started
|
||||
```
|
||||
|
||||
<!------------------------------ END CLI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!----------------------------- BEGIN API CONTENT ----------------------------->
|
||||
|
||||
To create a bucket using the InfluxDB HTTP API, send a request to
|
||||
the InfluxDB API `/api/v2/buckets` endpoint using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/api/v2/buckets" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token `INFLUX_TOKEN`
|
||||
- **Content-Type**: `application/json`
|
||||
- **Request body**: JSON object with the following properties:
|
||||
- **org**: InfluxDB organization name
|
||||
- **name**: Bucket name
|
||||
- **retentionRules**: List of retention rule objects that define the bucket's retention period.
|
||||
Each retention rule object has the following properties:
|
||||
- **type**: `"expire"`
|
||||
- **everySeconds**: Retention period duration in seconds.
|
||||
`0` indicates the retention period is infinite.
|
||||
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG_ID=<YOUR_INFLUXDB_ORG_ID>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_API_TOKEN>
|
||||
|
||||
curl --request POST \
|
||||
"$INFLUX_HOST/api/v2/buckets" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--header "Content-Type: application/json" \
|
||||
--data '{
|
||||
"orgID": "'"$INFLUX_ORG_ID"'",
|
||||
"name": "get-started",
|
||||
"retentionRules": [
|
||||
{
|
||||
"type": "expire",
|
||||
"everySeconds": 0
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
<!------------------------------ END API CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
{{< page-nav prev="/influxdb/v2.5/get-started/" next="/influxdb/v2.5/get-started/write/" keepTab=true >}}
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
---
|
||||
title: Get started visualizing data
|
||||
seotitle: Visualize data | Get started with InfluxDB
|
||||
list_title: Visualize data
|
||||
description: >
|
||||
...
|
||||
menu:
|
||||
influxdb_2_5:
|
||||
name: Visualize data
|
||||
parent: Get started
|
||||
identifier: get-started-visualize-data
|
||||
weight: 104
|
||||
metadata: [5 / 5]
|
||||
related:
|
||||
- /influxdb/v2.5/visualize-data/
|
||||
- /influxdb/v2.5/visualize-data/visualization-types/
|
||||
- /influxdb/v2.5/tools/chronograf/
|
||||
- /influxdb/v2.5/tools/grafana/
|
||||
---
|
||||
|
||||
There are many tools you can use to visualize your time series data including the
|
||||
InfluxDB user interface (UI), [Chronograf](), and
|
||||
[Grafana](/influxdb/v2.5/tools/grafana/).
|
||||
This tutorial walks you through using the **InfluxDB UI** to create a simple dashboard.
|
||||
|
||||
Dashboards are a powerful way of displaying time series data and can help to
|
||||
identify trends and anomalies. A dashboard is comprised of one or more
|
||||
dashboard cells. A **dashboard cell** visualizes the results of a query using
|
||||
one of the available [visualization types](/influxdb/v2.5/visualize-data/visualization-types/).
|
||||
|
||||
- [Create a dashboard](#create-a-dashboard)
|
||||
- [Create dashboard cells](#create-dashboard-cells)
|
||||
- [Create and use dashboard variables](#create-and-use-dashboard-variables)
|
||||
- [Create a custom dashboard variable](#create-a-custom-dashboard-variable)
|
||||
- [Use a custom dashboard variable](#use-a-custom-dashboard-variable)
|
||||
|
||||
## Create a dashboard
|
||||
|
||||
1. With InfluxDB running, visit [localhost:8086](http://localhost:8086) in your
|
||||
browser to access the InfluxDB UI.
|
||||
2. Log in and select **Dashboards** in the left navigation bar.
|
||||
|
||||
{{< nav-icon "dashboards" >}}
|
||||
|
||||
3. Click **+ {{% caps %}}Create Dashboard{{% /caps %}}** and select **New Dashboard**.
|
||||
4. Click _**Name this Dashboard**_ and provide a name for the dashboard.
|
||||
For this tutorial, we'll use **"Getting Started Dashboard"**.
|
||||
|
||||
## Create dashboard cells
|
||||
|
||||
With your new dashboard created and named, add a new dashboard cell:
|
||||
|
||||
1. Click **{{< icon "add-cell" >}} {{% caps %}}Add Cell{{% /caps %}}**.
|
||||
2. Click _**Name this Cell**_ and provide a name for the cell.
|
||||
For this tutorial, we'll use **"Room temperature"**.
|
||||
3. _(Optional)_ Select the visualization type from the visualization drop-down menu.
|
||||
There are many different [visualization types](/influxdb/v2.5/visualize-data/visualization-types/)
|
||||
available.
|
||||
For this tutorial, use the default **Graph** visualization.
|
||||
4. Use the query time range selector to select an absolute time range that
|
||||
covers includes the time range of the
|
||||
[data written in "Get started writing to InfluxDB"](/influxdb/v2.5/get-started/write/#view-the-written-data):
|
||||
**2022-01-01T08:00:00Z** to **2022-01-01T20:00:01Z**.
|
||||
|
||||
1. The query time range selector defaults to querying data from the last hour
|
||||
(**{{< icon "clock" >}} Past 1h**).
|
||||
Click the time range selector drop-down menu and select **Custom Time Range**.
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "View time range selector" %}}
|
||||
{{< img-hd src="/img/influxdb/2-4-get-started-visualize-time-range.png" alt="InfluxDB time range selector" />}}
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
2. Use the date picker to select the stop and stop date and time or manually
|
||||
enter the following start and stop times:
|
||||
|
||||
- **Start**: 2022-01-01 08:00:00
|
||||
- **Stop**: 2022-01-01 20:00:01
|
||||
|
||||
3. Click **{{% caps %}}Apply Time Range{{% /caps %}}**.
|
||||
|
||||
5. Use the **Query Builder** to select the measurement, fields, and tags to query:
|
||||
|
||||
1. In the **{{% caps %}}From{{% /caps %}}** column, select the **get-started** bucket.
|
||||
2. In the **Filter** column, select the **home** measurement.
|
||||
3. In the next **Filter** column, select the **temp** field.
|
||||
4. In the next **Filter** column, select the **room** tag and the **Kitchen** tag value.
|
||||
|
||||
6. Click **{{% caps %}}Submit{{% /caps %}}** to run the query and visualize the
|
||||
results.
|
||||
|
||||
{{< img-hd src="/img/influxdb/2-4-get-started-visualize-query-builder.png" alt="InfluxDB Query Builder" />}}
|
||||
|
||||
7. Click **{{< icon "check" >}}** to save the cell and return to the dashboard.
|
||||
|
||||
## Create and use dashboard variables
|
||||
|
||||
InfluxDB dashboard cells use **dashboard variables** to dynamically change
|
||||
specific parts of cell queries.
|
||||
The query builder automatically builds queries using the following
|
||||
[predefined dashboard variables](/influxdb/v2.5/visualize-data/variables/#predefined-dashboard-variables),
|
||||
each controlled by selections in your dashboard:
|
||||
|
||||
- `v.timeRangeStart`: Start time of the queried time range specified by the time range selector.
|
||||
- `v.timeRangeStop`: Stop time of the queried time range specified by the time range selector.
|
||||
- `v.windowPeriod`: Window period used downsample data to one point per pixel in
|
||||
a cell visualization. The value of this variable is determined by the pixel-width of the cell.
|
||||
|
||||
### Create a custom dashboard variable
|
||||
|
||||
Let's create a custom dashboard variable that we can use to change the field
|
||||
displayed by your dashboard cell.
|
||||
|
||||
1. Select **Settings > Variables** in the left navigation bar.
|
||||
|
||||
{{< nav-icon "settings" >}}
|
||||
|
||||
2. Click **+ {{% caps %}}Create Variable{{% /caps %}}** and select **New Variable**.
|
||||
3. Name your variable. For this tutorial, name the variable, **"room"**.
|
||||
4. Select the default **Query** dashboard variable type.
|
||||
This variable type uses the results of a query to populate the list of potential
|
||||
variable values. _For information about the other dashboard variable types,
|
||||
see [Variable types](/influxdb/v2.5/visualize-data/variables/variable-types/)._
|
||||
5. Enter the following Flux query to return all the different `room` tag values
|
||||
in your `get-started` bucket from the [Unix epoch](/influxdb/v2.5/reference/glossary/#unix-timestamp).
|
||||
|
||||
```js
|
||||
import "influxdata/influxdb/schema"
|
||||
|
||||
schema.tagValues(bucket: "get-started", tag: "room", start: time(v: 0))
|
||||
```
|
||||
|
||||
6. Click **{{% caps %}}Create Variable{{% /caps %}}**.
|
||||
|
||||
### Use a custom dashboard variable
|
||||
|
||||
1. Navigate to your **Getting Started Dashboard** by clicking **Dashboards** in
|
||||
the left navigation bar and the clicking on the name of your dashboard.
|
||||
|
||||
{{< nav-icon "dashboards" >}}
|
||||
|
||||
2. Click the **{{< icon "gear" >}}** on the **Room temperature** cell and select
|
||||
**{{< icon "pencil" >}} Configure**.
|
||||
3. Click **{{% caps %}}Script Editor{{% /caps %}}** to edit the Flux query
|
||||
directly.
|
||||
4. On line 5 of the Flux query, replace `"Kitchen"` with `v.room` to use the
|
||||
selected value of the `room` dashboard variable.
|
||||
|
||||
```js
|
||||
from(bucket: "get-started")
|
||||
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|
||||
|> filter(fn: (r) => r["_measurement"] == "home")
|
||||
|> filter(fn: (r) => r["_field"] == "temp")
|
||||
|> filter(fn: (r) => r["room"] == v.room)
|
||||
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|
||||
|> yield(name: "mean")
|
||||
```
|
||||
5. Click **{{< icon "check" >}}** to save the cell and return to the dashboard.
|
||||
6. Refresh the browser to reload the dashboard.
|
||||
7. Use the **room variable** drop-down menu to select the room to display
|
||||
recorded temperatures from.
|
||||
|
||||
{{< img-hd src="/img/influxdb/2-4-get-started-visualize-variable-select.png" alt="InfluxDB dashboard variable selection" />}}
|
||||
|
||||
_For more information about creating custom dashboard variables, see
|
||||
[Use and manage dashboard variables](/influxdb/v2.5/visualize-data/variables/)._
|
||||
|
||||
{{< page-nav prev="/influxdb/v2.5/get-started/process/" >}}
|
||||
|
||||
---
|
||||
|
||||
## Congratulations!
|
||||
|
||||
You have walked through the
|
||||
[basics of setting up, writing, querying, processing, and visualizing](/influxdb/v2.5/get-started/)
|
||||
data with InfluxDB {{< current-version >}}.
|
||||
Feel free to dive in deeper to each of these topics:
|
||||
|
||||
- [Write data to InfluxDB](/influxdb/v2.5/write-data/)
|
||||
- [Query data in InfluxDB](/influxdb/v2.5/query-data/)
|
||||
- [Process data with InfluxDB](/influxdb/v2.5/process-data/)
|
||||
- [Visualize data with the InfluxDB UI](/influxdb/v2.5/visualize-data/)
|
||||
|
||||
If you have questions as you're getting started, reach out to us using the
|
||||
available [Support and feedback](#bug-reports-and-feedback) channels.
|
||||
|
|
@ -0,0 +1,394 @@
|
|||
---
|
||||
title: Get started writing data
|
||||
seotitle: Write data | Get started with InfluxDB
|
||||
list_title: Write data
|
||||
description: >
|
||||
Get started writing data to InfluxDB by learning about line protocol and using
|
||||
tools like the InfluxDB UI, `influx` CLI, and InfluxDB API.
|
||||
menu:
|
||||
influxdb_2_5:
|
||||
name: Write data
|
||||
parent: Get started
|
||||
identifier: get-started-write-data
|
||||
weight: 101
|
||||
metadata: [2 / 5]
|
||||
related:
|
||||
- /influxdb/v2.5/write-data/
|
||||
- /influxdb/v2.5/write-data/best-practices/
|
||||
- /influxdb/v2.5/reference/syntax/line-protocol/
|
||||
- /{{< latest "telegraf" >}}/
|
||||
---
|
||||
|
||||
InfluxDB provides many different options for ingesting or writing data, including
|
||||
the following:
|
||||
|
||||
- Influx user interface (UI)
|
||||
- [InfluxDB HTTP API](/influxdb/v2.5/reference/api/)
|
||||
- [`influx` CLI](/influxdb/v2.5/tools/influx-cli/)
|
||||
- [Telegraf](/{{< latest "telegraf" >}}/)
|
||||
- {{% cloud-only %}}[MQTT](/influxdb/cloud/write-data/no-code/native-subscriptions/){{% /cloud-only %}}
|
||||
- [InfluxDB client libraries](/influxdb/v2.5/api-guide/client-libraries/)
|
||||
|
||||
This tutorial walks you through the fundamental of using **line protocol** to write
|
||||
data to InfluxDB. If using tools like Telegraf or InfluxDB client libraries, they will
|
||||
build the line protocol for you, but it's good to understand how line protocol works.
|
||||
|
||||
## Line protocol
|
||||
|
||||
All data written to InfluxDB is written using **line protocol**, a text-based
|
||||
format that lets you provide the necessary information to write a data point to InfluxDB.
|
||||
_This tutorial covers the basics of line protocol, but for detailed information,
|
||||
see the [Line protocol reference](/influxdb/v2.5/reference/syntax/line-protocol/)._
|
||||
|
||||
### Line protocol elements
|
||||
|
||||
Each line of line protocol contains the following elements:
|
||||
|
||||
{{< req type="key" >}}
|
||||
|
||||
- {{< req "\*" >}} **measurement**: String that identifies the [measurement]() to store the data in.
|
||||
- **tag set**: Comma-delimited list of key value pairs, each representing a tag.
|
||||
Tag keys and values are unquoted strings. _Spaces and commas must be escaped._
|
||||
- {{< req "\*" >}} **field set**: Comma-delimited list key value pairs, each representing a field.
|
||||
Field keys are unquoted strings. _Spaces and commas must be escaped._
|
||||
Field values can be [strings](/influxdb/v2.5/reference/syntax/line-protocol/#string) (quoted),
|
||||
[floats](/influxdb/v2.5/reference/syntax/line-protocol/#float),
|
||||
[integers](/influxdb/v2.5/reference/syntax/line-protocol/#integer),
|
||||
[unsigned integers](/influxdb/v2.5/reference/syntax/line-protocol/#uinteger),
|
||||
or [booleans](/influxdb/v2.5/reference/syntax/line-protocol/#boolean).
|
||||
- **timestamp**: [Unix timestamp](/influxdb/v2.5/reference/syntax/line-protocol/#unix-timestamp)
|
||||
associated with the data. InfluxDB supports up to nanosecond precision.
|
||||
_If the precision if the timestamp is not in nanoseconds, you must specify the
|
||||
precision when writing the data to InfluxDB._
|
||||
|
||||
#### Line protocol element parsing
|
||||
|
||||
- **measurement**: Everything before the _first unescaped comma before the first whitespace_.
|
||||
- **tag set**: Key-value pairs between the _first unescaped comma_ and the _first unescaped whitespace_.
|
||||
- **field set**: Key-value pairs between the _first and second unescaped whitespaces_.
|
||||
- **timestamp**: Integer value after the _second unescaped whitespace_.
|
||||
- Lines are separated by the newline character (`\n`).
|
||||
Line protocol is whitespace sensitive.
|
||||
|
||||
---
|
||||
|
||||
{{< influxdb/line-protocol >}}
|
||||
|
||||
---
|
||||
|
||||
_For schema design recommendataions, see [InfluxDB schema design](/influxdb/v2.5/write-data/best-practices/schema-design/)._
|
||||
|
||||
## Construct line protocol
|
||||
|
||||
With a basic understanding of line protocol, you can now construct line protocol
|
||||
and write data to InfluxDB.
|
||||
Consider a use case where you collect data from sensors in your home.
|
||||
Each sensor collects temperature, humidity, and carbon monoxide readings.
|
||||
To collect this data, use the following schema:
|
||||
|
||||
- **measurement**: `home`
|
||||
- **tags**
|
||||
- `room`: Living Room or Kitchen
|
||||
- **fields**
|
||||
- `temp`: temperature in °C (float)
|
||||
- `hum`: percent humidity (float)
|
||||
- `co`: carbon monoxide in parts per million (integer)
|
||||
- **timestamp**: Unix timestamp in _second_ precision
|
||||
|
||||
Data is collected hourly beginning at 2022-01-01T08:00:00Z (UTC) until 2022-01-01T20:00:00Z (UTC).
|
||||
The resulting line protocol would look something like the following:
|
||||
|
||||
##### Home sensor data line protocol
|
||||
```sh
|
||||
home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000
|
||||
home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000
|
||||
home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600
|
||||
home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600
|
||||
home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200
|
||||
home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200
|
||||
home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800
|
||||
home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400
|
||||
home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000
|
||||
home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=0i 1641045600
|
||||
home,room=Kitchen temp=22.8,hum=36.3,co=1i 1641045600
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=1i 1641049200
|
||||
home,room=Kitchen temp=22.7,hum=36.2,co=3i 1641049200
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=4i 1641052800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=7i 1641052800
|
||||
home,room=Living\ Room temp=22.6,hum=35.9,co=5i 1641056400
|
||||
home,room=Kitchen temp=22.7,hum=36.0,co=9i 1641056400
|
||||
home,room=Living\ Room temp=22.8,hum=36.2,co=9i 1641060000
|
||||
home,room=Kitchen temp=23.3,hum=36.9,co=18i 1641060000
|
||||
home,room=Living\ Room temp=22.5,hum=36.3,co=14i 1641063600
|
||||
home,room=Kitchen temp=23.1,hum=36.6,co=22i 1641063600
|
||||
home,room=Living\ Room temp=22.2,hum=36.4,co=17i 1641067200
|
||||
home,room=Kitchen temp=22.7,hum=36.5,co=26i 1641067200
|
||||
```
|
||||
|
||||
## Write line protocol to InfluxDB
|
||||
|
||||
Use the **InfluxDB UI**, **`influx` CLI**, or **InfluxDB API** to write the
|
||||
line protocol above to InfluxDB.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[InfluxDB UI](#)
|
||||
[influx CLI](#)
|
||||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<!------------------------------ BEGIN UI CONTENT ----------------------------->
|
||||
|
||||
1. Visit
|
||||
{{% oss-only %}}[localhost:8086](http://localhost:8086){{% /oss-only %}}
|
||||
{{% cloud-only %}}[cloud2.influxdata.com](https://cloud2.influxdata.com){{% /cloud-only %}}
|
||||
in a browser to log in and access the InfluxDB UI.
|
||||
|
||||
2. Navigate to **Load Data** > **Buckets** using the left navigation bar.
|
||||
|
||||
{{< nav-icon "load data" >}}
|
||||
|
||||
3. Click **{{< icon "plus" >}} {{< caps >}}Add Data{{< /caps >}}** on the bucket
|
||||
you want to write the data to and select **Line Protocol**.
|
||||
4. Select **{{< caps >}}Enter Manually{{< /caps >}}**.
|
||||
5. {{< req "Important" >}} In the **Precision** drop-down menu above the line
|
||||
protocol text field, select **Seconds** (to match to precision of the
|
||||
timestamps in the line protocol).
|
||||
6. Copy the [line protocol above](#home-sensor-data-line-protocol) and paste it
|
||||
into the line protocol text field.
|
||||
7. Click **{{< caps >}}Write Data{{< /caps >}}**.
|
||||
|
||||
The UI will confirm that the data has been written successfully.
|
||||
|
||||
<!------------------------------- END UI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!---------------------------- BEGIN CLI CONTENT ----------------------------->
|
||||
|
||||
1. If you haven't already, [download, install, and configure the `influx` CLI](/influxdb/v2.5/tools/influx-cli/).
|
||||
2. Use the [`influx write` command](/influxdb/v2.5/reference/cli/influx/write/)
|
||||
to write the [line protocol above](#home-sensor-data-line-protocol) to InfluxDB.
|
||||
|
||||
**Provide the following**:
|
||||
|
||||
- `-b, --bucket` or `--bucket-id` flag with the bucket name or ID to write do.
|
||||
- `-p, --precision` flag with the timestamp precision (`s`).
|
||||
- String-encoded line protocol.
|
||||
- [Connection and authentication credentials](/influxdb/v2.5/get-started/setup/?t=influx+CLI#configure-authentication-credentials)
|
||||
|
||||
```sh
|
||||
influx write \
|
||||
--bucket get-started \
|
||||
--precision s "
|
||||
home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000
|
||||
home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000
|
||||
home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600
|
||||
home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600
|
||||
home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200
|
||||
home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200
|
||||
home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800
|
||||
home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400
|
||||
home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000
|
||||
home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=0i 1641045600
|
||||
home,room=Kitchen temp=22.8,hum=36.3,co=1i 1641045600
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=1i 1641049200
|
||||
home,room=Kitchen temp=22.7,hum=36.2,co=3i 1641049200
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=4i 1641052800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=7i 1641052800
|
||||
home,room=Living\ Room temp=22.6,hum=35.9,co=5i 1641056400
|
||||
home,room=Kitchen temp=22.7,hum=36.0,co=9i 1641056400
|
||||
home,room=Living\ Room temp=22.8,hum=36.2,co=9i 1641060000
|
||||
home,room=Kitchen temp=23.3,hum=36.9,co=18i 1641060000
|
||||
home,room=Living\ Room temp=22.5,hum=36.3,co=14i 1641063600
|
||||
home,room=Kitchen temp=23.1,hum=36.6,co=22i 1641063600
|
||||
home,room=Living\ Room temp=22.2,hum=36.4,co=17i 1641067200
|
||||
home,room=Kitchen temp=22.7,hum=36.5,co=26i 1641067200
|
||||
"
|
||||
```
|
||||
|
||||
<!------------------------------ END CLI CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
<!----------------------------- BEGIN API CONTENT ----------------------------->
|
||||
|
||||
To write data to InfluxDB using the InfluxDB HTTP API, send a request to
|
||||
the InfluxDB API `/api/v2/write` endpoint using the `POST` request method.
|
||||
|
||||
{{< api-endpoint endpoint="http://localhost:8086/api/v2/write" method="post" >}}
|
||||
|
||||
Include the following with your request:
|
||||
|
||||
- **Headers**:
|
||||
- **Authorization**: Token <INFLUX_TOKEN>
|
||||
- **Content-Type**: text/plain; charset=utf-8
|
||||
- **Accept**: application/json
|
||||
- **Query parameters**:
|
||||
- **org**: InfluxDB organization name
|
||||
- **bucket**: InfluxDB bucket name
|
||||
- **precision**: timestamp precision (default is `ns`)
|
||||
- **Request body**: Line protocol as plain text
|
||||
|
||||
The following example uses cURL and the InfluxDB API to write line protocol
|
||||
to InfluxDB:
|
||||
|
||||
```sh
|
||||
export INFLUX_HOST=http://localhost:8086
|
||||
export INFLUX_ORG=<YOUR_INFLUXDB_ORG>
|
||||
export INFLUX_TOKEN=<YOUR_INFLUXDB_API_TOKEN>
|
||||
|
||||
curl --request POST \
|
||||
"$INFLUX_HOST/api/v2/write?org=$INFLUX_ORG&bucket=get-started&precision=s" \
|
||||
--header "Authorization: Token $INFLUX_TOKEN" \
|
||||
--header "Content-Type: text/plain; charset=utf-8" \
|
||||
--header "Accept: application/json" \
|
||||
--data-binary "
|
||||
home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000
|
||||
home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000
|
||||
home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600
|
||||
home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600
|
||||
home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200
|
||||
home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200
|
||||
home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800
|
||||
home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400
|
||||
home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000
|
||||
home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=0i 1641045600
|
||||
home,room=Kitchen temp=22.8,hum=36.3,co=1i 1641045600
|
||||
home,room=Living\ Room temp=22.3,hum=36.1,co=1i 1641049200
|
||||
home,room=Kitchen temp=22.7,hum=36.2,co=3i 1641049200
|
||||
home,room=Living\ Room temp=22.4,hum=36.0,co=4i 1641052800
|
||||
home,room=Kitchen temp=22.4,hum=36.0,co=7i 1641052800
|
||||
home,room=Living\ Room temp=22.6,hum=35.9,co=5i 1641056400
|
||||
home,room=Kitchen temp=22.7,hum=36.0,co=9i 1641056400
|
||||
home,room=Living\ Room temp=22.8,hum=36.2,co=9i 1641060000
|
||||
home,room=Kitchen temp=23.3,hum=36.9,co=18i 1641060000
|
||||
home,room=Living\ Room temp=22.5,hum=36.3,co=14i 1641063600
|
||||
home,room=Kitchen temp=23.1,hum=36.6,co=22i 1641063600
|
||||
home,room=Living\ Room temp=22.2,hum=36.4,co=17i 1641067200
|
||||
home,room=Kitchen temp=22.7,hum=36.5,co=26i 1641067200
|
||||
"
|
||||
```
|
||||
<!------------------------------ END API CONTENT ------------------------------>
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
{{< expand-wrapper >}}
|
||||
{{% expand "View the written data" %}}
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | co | 0 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | co | 1 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | co | 1 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | co | 3 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | co | 7 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | co | 9 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | co | 18 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | co | 22 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | co | 26 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | hum | 35.9 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | hum | 36.2 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | hum | 36.1 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | hum | 36.5 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | hum | 36.3 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | hum | 36.2 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | hum | 36 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | hum | 36.9 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | hum | 36.6 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | hum | 36.5 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :------ | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Kitchen | temp | 21 |
|
||||
| 2022-01-01T09:00:00Z | home | Kitchen | temp | 23 |
|
||||
| 2022-01-01T10:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T11:00:00Z | home | Kitchen | temp | 22.4 |
|
||||
| 2022-01-01T12:00:00Z | home | Kitchen | temp | 22.5 |
|
||||
| 2022-01-01T13:00:00Z | home | Kitchen | temp | 22.8 |
|
||||
| 2022-01-01T14:00:00Z | home | Kitchen | temp | 22.8 |
|
||||
| 2022-01-01T15:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T16:00:00Z | home | Kitchen | temp | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
| 2022-01-01T18:00:00Z | home | Kitchen | temp | 23.3 |
|
||||
| 2022-01-01T19:00:00Z | home | Kitchen | temp | 23.1 |
|
||||
| 2022-01-01T20:00:00Z | home | Kitchen | temp | 22.7 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | co | 0 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | co | 1 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | co | 4 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | co | 5 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | co | 9 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | co | 14 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | co | 17 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | hum | 36.1 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | hum | 36.1 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | hum | 36 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | hum | 35.9 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | hum | 36.2 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | hum | 36.3 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | hum | 36.4 |
|
||||
|
||||
| _time | _measurement | room | _field | _value |
|
||||
| :------------------- | :----------- | :---------- | :----- | -----: |
|
||||
| 2022-01-01T08:00:00Z | home | Living Room | temp | 21.1 |
|
||||
| 2022-01-01T09:00:00Z | home | Living Room | temp | 21.4 |
|
||||
| 2022-01-01T10:00:00Z | home | Living Room | temp | 21.8 |
|
||||
| 2022-01-01T11:00:00Z | home | Living Room | temp | 22.2 |
|
||||
| 2022-01-01T12:00:00Z | home | Living Room | temp | 22.2 |
|
||||
| 2022-01-01T13:00:00Z | home | Living Room | temp | 22.4 |
|
||||
| 2022-01-01T14:00:00Z | home | Living Room | temp | 22.3 |
|
||||
| 2022-01-01T15:00:00Z | home | Living Room | temp | 22.3 |
|
||||
| 2022-01-01T16:00:00Z | home | Living Room | temp | 22.4 |
|
||||
| 2022-01-01T17:00:00Z | home | Living Room | temp | 22.6 |
|
||||
| 2022-01-01T18:00:00Z | home | Living Room | temp | 22.8 |
|
||||
| 2022-01-01T19:00:00Z | home | Living Room | temp | 22.5 |
|
||||
| 2022-01-01T20:00:00Z | home | Living Room | temp | 22.2 |
|
||||
|
||||
{{% /expand %}}
|
||||
{{< /expand-wrapper >}}
|
||||
|
||||
**Congratulations!** You have written data to InfluxDB. The method described
|
||||
above is the manual way of writing data, but there are other options available:
|
||||
|
||||
- [Write data to InfluxDB using no-code solutions](/influxdb/v2.5/write-data/no-code/)
|
||||
- [Write data to InfluxDB using developer tools](/influxdb/v2.5/write-data/developer-tools/)
|
||||
|
||||
With data now stored in InfluxDB, let's query it.
|
||||
|
||||
{{< page-nav prev="/influxdb/v2.5/get-started/setup/" next="/influxdb/v2.5/get-started/query/" keepTab=true >}}
|
||||
|
|
@ -128,6 +128,7 @@ option task = {
|
|||
## Create a task using the InfluxDB API
|
||||
|
||||
{{% oss-only %}}
|
||||
|
||||
Use the [`/api/v2/tasks` InfluxDB API endpoint](/influxdb/v2.5/api/#operation/PostTasks) to create a task.
|
||||
|
||||
{{< api-endpoint method="POST" endpoint="http://localhost:8086/api/v2/tasks/" >}}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ title: Query sample data
|
|||
description: >
|
||||
Explore InfluxDB OSS with our sample data buckets.
|
||||
menu:
|
||||
influxdb_2_5::
|
||||
influxdb_2_5:
|
||||
name: Query with sample data
|
||||
parent: Execute queries
|
||||
weight: 10
|
||||
weight: 210
|
||||
---
|
||||
|
||||
Use **InfluxDB OSS** sample datasets to quickly access data that lets you explore and familiarize yourself with InfluxDB Cloud without requiring you to have or write your own data.
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ To return the version of Flux installed with InfluxDB using the InfluxDB UI:
|
|||
|
||||
1. Click **Data Explorer** in the left navigation bar.
|
||||
|
||||
{{< nav-icon "data-explorer" >}}
|
||||
{{< nav-icon "data-explorer" >}}
|
||||
|
||||
2. Click **{{% caps %}}Script Editor{{% /caps %}}** to manually create and
|
||||
edit a Flux query.
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ using the InfluxDB user interface (UI).
|
|||
|
||||
{{< nav-icon "load-data" >}}
|
||||
|
||||
2. Click the **{{< icon "toggle-green" >}} Status** toggle.
|
||||
2. Click the **{{< icon "toggle" >}} Status** toggle.
|
||||
|
||||
{{% /oss-only %}}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
influxdb:
|
||||
default: v4
|
||||
cloud: v4
|
||||
v2.5: v4
|
||||
v2.4: v4
|
||||
v2.3: v3
|
||||
v2.2: v3
|
||||
v2.1: v3
|
||||
v2.0: v2
|
||||
|
||||
enterprise_influxdb:
|
||||
default: v2
|
||||
|
||||
chronograf:
|
||||
default: v2
|
||||
|
||||
telegraf:
|
||||
default: v2
|
||||
|
||||
kapacitor:
|
||||
default: v2
|
||||
|
||||
resources:
|
||||
default: v4
|
||||
|
||||
# Only used by content/example.md for testing icons
|
||||
example:
|
||||
default: v4
|
||||
|
|
@ -5,6 +5,7 @@
|
|||
{{ $modals := resources.Get "js/modals.js" }}
|
||||
{{ $influxdbURLs := resources.Get "js/influxdb-url.js" }}
|
||||
{{ $featureCallouts := resources.Get "js/feature-callouts.js" }}
|
||||
{{ $tabbedContent := resources.Get "js/tabbed-content.js" }}
|
||||
{{ $notifications := resources.Get "js/notifications.js" }}
|
||||
{{ $keybindings := resources.Get "js/keybindings.js" }}
|
||||
{{ $fluxGroupKeys := resources.Get "js/flux-group-keys.js" }}
|
||||
|
|
@ -13,7 +14,7 @@
|
|||
{{ $pageFeedback := resources.Get "js/page-feedback.js" }}
|
||||
{{ $homepageInteractions := resources.Get "js/home-interactions.js" }}
|
||||
{{ $fluxInfluxDBVersions := resources.Get "/js/flux-influxdb-versions.js"}}
|
||||
{{ $footerjs := slice $versionSelector $contentInteractions $searchInteractions $listFilters $modals $influxdbURLs $featureCallouts $notifications $keybindings $fullscreenCode $pageFeedback $homepageInteractions $fluxInfluxDBVersions | resources.Concat "js/footer.bundle.js" | resources.Fingerprint }}
|
||||
{{ $footerjs := slice $versionSelector $contentInteractions $searchInteractions $listFilters $modals $influxdbURLs $featureCallouts $tabbedContent $notifications $keybindings $fullscreenCode $pageFeedback $homepageInteractions $fluxInfluxDBVersions | resources.Concat "js/footer.bundle.js" | resources.Fingerprint }}
|
||||
{{ $fluxGroupKeyjs := slice $fluxGroupKeys | resources.Concat "js/flux-group-keys.js" | resources.Fingerprint }}
|
||||
{{ $fluxCurrentTimejs := slice $fluxCurrentTime | resources.Concat "js/flux-current-time.js" | resources.Fingerprint }}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,12 @@
|
|||
<h4 id="authentication-credentials">Authentication credentials</h4>
|
||||
<p>
|
||||
The examples below assume your InfluxDB <strong>host</strong>, <strong>organization</strong>, and <strong>token</strong> are
|
||||
provided by the <a href="/influxdb/{{ $currentVersion }}/reference/cli/influx/#provide-required-authentication-credentials">active <code>influx</code> CLI configuration</a>.
|
||||
If you do not have a CLI configuration set up, use the appropriate flags to provide these required credentials.
|
||||
provided by either the <a href="/influxdb/{{ $currentVersion }}/reference/cli/influx/#provide-required-authentication-credentials">active <code>influx</code> CLI configuration</a> or by environment variables (<code>INFLUX_HOST</code>, <code>INFLUX_ORG</code>, and <code>INFLUX_TOKEN</code>).
|
||||
If you do not have a CLI configuration set up or the environment variables set, include these required credentials for each command with the following flags:
|
||||
</p>
|
||||
<ul>
|
||||
<li><code>--host</code>: <a href="/influxdb/{{ $currentVersion }}/reference/urls/">InfluxDB host</a></li>
|
||||
<li><code>-o, --org</code> or <code>--org-id</code>: InfluxDB organization name or ID</li>
|
||||
<li><code>-t, --token</code>: InfluxDB API token</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -1,4 +1,3 @@
|
|||
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||
{{ $expandLabel := .Get 0 }}
|
||||
<div class="expand" id="{{ $expandLabel | anchorize }}">
|
||||
<p class="expand-label">
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
{{- $groupKey := .Get 0 -}}
|
||||
<p class="table-group-key">Group key = {{ $groupKey }}</p>
|
||||
{{- $instance := .Get 1 | default false -}}
|
||||
<p class="table-group-key">Group key{{ if $instance }} instance{{ end }} = {{ $groupKey }}</p>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
{{- $_hugo_config := `{ "version": 1 }` -}}
|
||||
{{- $icon := .Get 0 | default "influx" -}}
|
||||
{{- $version := .Get 1 | default "v3" -}}
|
||||
{{- $productPathData := findRE "[^/]+.*?" .Page.RelPermalink -}}
|
||||
{{- $product := index $productPathData 0 -}}
|
||||
{{- $productVersion := index $productPathData 1 | default "v0.0" -}}
|
||||
{{- $defaultClockface := cond (isset (index .Site.Data.clockface $product) $productVersion) (index (index .Site.Data.clockface $product) $productVersion) (index (index .Site.Data.clockface $product) "default") }}
|
||||
{{- $version := .Get 1 | default $defaultClockface -}}
|
||||
|
||||
{{- if eq $version "v2" -}}
|
||||
{{- if or (eq $icon "nav-admin") (eq $icon "influx") (eq $icon "influx-icon") -}}
|
||||
|
|
@ -74,55 +78,55 @@
|
|||
{{- else if eq $icon "toggle-green" -}}
|
||||
<span class="inline ui-toggle green"><span class="circle"></span></span>
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- else if eq $version "v3" -}}
|
||||
{{- if or (eq $icon "nav-admin") (eq $icon "influx") (eq $icon "influx-icon") -}}
|
||||
<span class="inline cf-icon cubo middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon cubo middle"></span>
|
||||
{{- else if or (eq $icon "nav-data-explorer") (eq $icon "data-explorer") (eq $icon "graph") -}}
|
||||
<span class="inline cf-icon graphline-2 middle large"></span>
|
||||
<span class="inline {{ $version }} cf-icon graphline-2 middle large"></span>
|
||||
{{- else if or (eq $icon "nav-dashboards") (eq $icon "dashboard") (eq $icon "dashboards") -}}
|
||||
<span class="inline cf-icon graph-line-new"></span>
|
||||
<span class="inline {{ $version }} cf-icon graph-line-new"></span>
|
||||
{{- else if or (eq $icon "nav-tasks") (eq $icon "calendar") (eq $icon "tasks") -}}
|
||||
<span class="inline cf-icon calendar"></span>
|
||||
<span class="inline {{ $version }} cf-icon calendar"></span>
|
||||
{{- else if or (eq $icon "nav-organizations") (eq $icon "nav-orgs") (eq $icon "orgs") (eq $icon "org") -}}
|
||||
<span class="inline cf-icon users-duo middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon users-duo middle"></span>
|
||||
{{- else if or (eq $icon "nav-configuration") (eq $icon "nav-config") (eq $icon "wrench") -}}
|
||||
<span class="inline cf-icon wrench-nav middle large"></span>
|
||||
<span class="inline {{ $version }} cf-icon wrench-nav middle large"></span>
|
||||
{{- else if eq $icon "add-cell" -}}
|
||||
<span class="inline cf-icon add-cell-new small"></span>
|
||||
<span class="inline {{ $version }} cf-icon add-cell-new small"></span>
|
||||
{{- else if eq $icon "alert" -}}
|
||||
<span class="inline cf-icon alert-triangle-new middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon alert-triangle-new middle"></span>
|
||||
{{- else if or (eq $icon "checkmark") (eq $icon "check") -}}
|
||||
<span class="inline cf-icon checkmark-new large"></span>
|
||||
<span class="inline {{ $version }} cf-icon checkmark-new large"></span>
|
||||
{{- else if or (eq $icon "gear") (eq $icon "cog") (eq $icon "settings") (eq $icon "config") -}}
|
||||
<span class="inline cf-icon cog-solid-new middle small"></span>
|
||||
<span class="inline {{ $version }} cf-icon cog-solid-new middle small"></span>
|
||||
{{- else if eq $icon "download" -}}
|
||||
<span class="inline cf-icon download-new middle large"></span>
|
||||
<span class="inline {{ $version }} cf-icon download-new middle large"></span>
|
||||
{{- else if or (eq $icon "duplicate") (eq $icon "copy") (eq $icon "clone") -}}
|
||||
<span class="inline cf-icon duplicate middle small"></span>
|
||||
<span class="inline {{ $version }} cf-icon duplicate middle small"></span>
|
||||
{{- else if or (eq $icon "export") (eq $icon "save-as") -}}
|
||||
<span class="inline cf-icon export-new middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon export-new middle"></span>
|
||||
{{- else if or (eq $icon "expand") (eq $icon "fullscreen") -}}
|
||||
<span class="inline cf-icon expand-b middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon expand-b middle"></span>
|
||||
{{- else if eq $icon "note" -}}
|
||||
<span class="inline cf-icon text-new middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon text-new middle"></span>
|
||||
{{- else if eq $icon "pause" -}}
|
||||
<span class="inline cf-icon pause middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon pause middle"></span>
|
||||
{{- else if or (eq $icon "pencil") (eq $icon "edit") -}}
|
||||
<span class="inline cf-icon pencil"></span>
|
||||
<span class="inline {{ $version }} cf-icon pencil"></span>
|
||||
{{- else if eq $icon "play" -}}
|
||||
<span class="inline cf-icon play middle small"></span>
|
||||
<span class="inline {{ $version }} cf-icon play middle small"></span>
|
||||
{{- else if eq $icon "plus" -}}
|
||||
<span class="inline cf-icon plus-new top"></span>
|
||||
<span class="inline {{ $version }} cf-icon plus-new top"></span>
|
||||
{{- else if or (eq $icon "refresh") (eq $icon "replay") -}}
|
||||
<span class="inline cf-icon refresh-new middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon refresh-new middle"></span>
|
||||
{{- else if or (eq $icon "remove") (eq $icon "x") -}}
|
||||
<span class="inline cf-icon remove-new large"></span>
|
||||
<span class="inline {{ $version }} cf-icon remove-new large"></span>
|
||||
{{- else if eq $icon "search" -}}
|
||||
<span class="inline cf-icon search middle small"></span>
|
||||
<span class="inline {{ $version }} cf-icon search middle small"></span>
|
||||
{{- else if or (eq $icon "trash") (eq $icon "trashcan") (eq $icon "delete") -}}
|
||||
<span class="inline cf-icon trash-new top small"></span>
|
||||
<span class="inline {{ $version }} cf-icon trash-new top small"></span>
|
||||
{{- else if eq $icon "triangle" -}}
|
||||
<span class="inline cf-icon triangle middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon triangle middle"></span>
|
||||
{{- else if eq $icon "cloud" -}}
|
||||
<span class="inline icon-cloud large"></span>
|
||||
{{- else if eq $icon "feedback" -}}
|
||||
|
|
@ -130,15 +134,15 @@
|
|||
{{- else if eq $icon "chat" -}}
|
||||
<span class="inline icon-chat large"></span>
|
||||
{{- else if or (eq $icon "eye-open") (eq $icon "eye") (eq $icon "view") -}}
|
||||
<span class="inline cf-icon eye-open-new"></span>
|
||||
<span class="inline {{ $version }} cf-icon eye-open-new"></span>
|
||||
{{- else if or (eq $icon "eye-closed") (eq $icon "hide") -}}
|
||||
<span class="inline cf-icon eye-closed large"></span>
|
||||
<span class="inline {{ $version }} cf-icon eye-closed large"></span>
|
||||
{{- else if or (eq $icon "notebook") (eq $icon "notebooks") -}}
|
||||
<span class="inline cf-icon book-pencil"></span>
|
||||
<span class="inline {{ $version }} cf-icon book-pencil"></span>
|
||||
{{- else if eq $icon "crown" -}}
|
||||
<span class="inline cf-icon crown-solid-new "></span>
|
||||
<span class="inline {{ $version }} cf-icon crown-solid-new "></span>
|
||||
{{- else if or (eq $icon "bar-chart") (eq $icon "bar-graph") -}}
|
||||
<span class="inline cf-icon bar-chart-new top"></span>
|
||||
<span class="inline {{ $version }} cf-icon bar-chart-new top"></span>
|
||||
{{- else if eq $icon "add-label" -}}
|
||||
<span class="inline add-btn-round {{ $version }}"></span>
|
||||
{{- else if or (eq $icon "toggle") (eq $icon "toggle-blue") -}}
|
||||
|
|
@ -150,16 +154,100 @@
|
|||
{{- else if or (eq $icon "notebook-add") (eq $icon "notebook-add-cell") -}}
|
||||
<span class="inline notebook-add-cell {{ $version }}"><span class="cf-icon plus-new"></span></span>
|
||||
{{- else if or (eq $icon "annotate") (eq $icon "pin") -}}
|
||||
<span class="inline cf-icon annotate-new"></span>
|
||||
<span class="inline {{ $version }} cf-icon annotate-new"></span>
|
||||
{{- else if eq $icon "clock" -}}
|
||||
<span class="inline cf-icon clock-new top small"></span>
|
||||
<span class="inline {{ $version }} cf-icon clock-new top small"></span>
|
||||
{{- else if or (eq $icon "handle") (eq $icon "move-cell") (eq $icon "move") -}}
|
||||
<span class="inline cf-icon handle-new middle xsmall"></span>
|
||||
<span class="inline {{ $version }} cf-icon handle-new middle xsmall"></span>
|
||||
{{- else if eq $icon "share" -}}
|
||||
<span class="inline cf-icon share middle"></span>
|
||||
<span class="inline {{ $version }} cf-icon share middle"></span>
|
||||
{{- else if eq $icon "bucket" -}}
|
||||
<span class="inline cf-icon bucket-solid top"></span>
|
||||
<span class="inline {{ $version }} cf-icon bucket-solid top"></span>
|
||||
{{- else if or (eq $icon "more") (eq $icon "...") (eq $icon "ellipses") -}}
|
||||
<span class="inline cf-icon more bottom"></span>
|
||||
<span class="inline {{ $version }} cf-icon more bottom"></span>
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- if or (eq $icon "nav-admin") (eq $icon "influx") (eq $icon "influx-icon") -}}
|
||||
<span class="inline {{ $version }} cf-icon CuboSolid middle"></span>
|
||||
{{- else if or (eq $icon "nav-data-explorer") (eq $icon "data-explorer") (eq $icon "graph") -}}
|
||||
<span class="inline {{ $version }} cf-icon GraphLine_New middle large"></span>
|
||||
{{- else if or (eq $icon "nav-dashboards") (eq $icon "dashboard") (eq $icon "dashboards") -}}
|
||||
<span class="inline {{ $version }} cf-icon DashH"></span>
|
||||
{{- else if or (eq $icon "nav-tasks") (eq $icon "calendar") (eq $icon "tasks") -}}
|
||||
<span class="inline {{ $version }} cf-icon Calendar"></span>
|
||||
{{- else if or (eq $icon "nav-organizations") (eq $icon "nav-orgs") (eq $icon "orgs") (eq $icon "org") -}}
|
||||
<span class="inline {{ $version }} cf-icon User middle"></span>
|
||||
{{- else if eq $icon "add-cell" -}}
|
||||
<span class="inline {{ $version }} cf-icon AddCell_New small"></span>
|
||||
{{- else if eq $icon "alert" -}}
|
||||
<span class="inline {{ $version }} cf-icon AlertTriangle middle"></span>
|
||||
{{- else if or (eq $icon "checkmark") (eq $icon "check") -}}
|
||||
<span class="inline {{ $version }} cf-icon Checkmark_New large"></span>
|
||||
{{- else if or (eq $icon "gear") (eq $icon "cog") (eq $icon "settings") (eq $icon "config") -}}
|
||||
<span class="inline {{ $version }} cf-icon CogSolid_New middle small"></span>
|
||||
{{- else if eq $icon "download" -}}
|
||||
<span class="inline {{ $version }} cf-icon Download_New middle large"></span>
|
||||
{{- else if or (eq $icon "duplicate") (eq $icon "copy") (eq $icon "clone") -}}
|
||||
<span class="inline {{ $version }} cf-icon Duplicate_New middle small"></span>
|
||||
{{- else if or (eq $icon "export") (eq $icon "save-as") -}}
|
||||
<span class="inline {{ $version }} cf-icon Export_New middle"></span>
|
||||
{{- else if or (eq $icon "expand") (eq $icon "fullscreen") -}}
|
||||
<span class="inline {{ $version }} cf-icon ExpandB middle"></span>
|
||||
{{- else if eq $icon "note" -}}
|
||||
<span class="inline {{ $version }} cf-icon Text_New middle"></span>
|
||||
{{- else if eq $icon "pause" -}}
|
||||
<span class="inline {{ $version }} cf-icon Pause middle"></span>
|
||||
{{- else if or (eq $icon "pencil") (eq $icon "edit") -}}
|
||||
<span class="inline {{ $version }} cf-icon Pencil"></span>
|
||||
{{- else if eq $icon "play" -}}
|
||||
<span class="inline {{ $version }} cf-icon Play middle small"></span>
|
||||
{{- else if eq $icon "plus" -}}
|
||||
<span class="inline {{ $version }} cf-icon Plus_New top"></span>
|
||||
{{- else if or (eq $icon "refresh") (eq $icon "replay") -}}
|
||||
<span class="inline {{ $version }} cf-icon Refresh_New middle"></span>
|
||||
{{- else if or (eq $icon "remove") (eq $icon "x") -}}
|
||||
<span class="inline {{ $version }} cf-icon Remove_New large"></span>
|
||||
{{- else if eq $icon "search" -}}
|
||||
<span class="inline {{ $version }} cf-icon Search_New middle small"></span>
|
||||
{{- else if or (eq $icon "trash") (eq $icon "trashcan") (eq $icon "delete") -}}
|
||||
<span class="inline {{ $version }} cf-icon Trash_New top small"></span>
|
||||
{{- else if eq $icon "cloud" -}}
|
||||
<span class="inline cf-icon Cloud large"></span>
|
||||
{{- else if eq $icon "feedback" -}}
|
||||
<span class="inline df-icon Chat large"></span>
|
||||
{{- else if eq $icon "chat" -}}
|
||||
<span class="inline cf-icon Chat large"></span>
|
||||
{{- else if or (eq $icon "eye-open") (eq $icon "eye") (eq $icon "view") -}}
|
||||
<span class="inline {{ $version }} cf-icon EyeOpen"></span>
|
||||
{{- else if or (eq $icon "eye-closed") (eq $icon "hide") -}}
|
||||
<span class="inline {{ $version }} cf-icon EyeClosed large"></span>
|
||||
{{- else if or (eq $icon "notebook") (eq $icon "notebooks") -}}
|
||||
<span class="inline {{ $version }} cf-icon BookCode"></span>
|
||||
{{- else if eq $icon "crown" -}}
|
||||
<span class="inline {{ $version }} cf-icon CrownSolid_New "></span>
|
||||
{{- else if or (eq $icon "bar-chart") (eq $icon "bar-graph") -}}
|
||||
<span class="inline {{ $version }} cf-icon BarChart_New top"></span>
|
||||
{{- else if eq $icon "add-label" -}}
|
||||
<span class="inline add-btn-round {{ $version }}"></span>
|
||||
{{- else if or (eq $icon "toggle") (eq $icon "toggle-blue") -}}
|
||||
<span class="inline ui-toggle blue {{ $version }}"><span class="circle"></span></span>
|
||||
{{- else if eq $icon "toggle-green" -}}
|
||||
<span class="inline ui-toggle green {{ $version }}"><span class="circle"></span></span>
|
||||
{{- else if eq $icon "toggle-off" -}}
|
||||
<span class="inline ui-toggle off {{ $version }}"><span class="circle"></span></span>
|
||||
{{- else if or (eq $icon "notebook-add") (eq $icon "notebook-add-cell") -}}
|
||||
<span class="inline notebook-add-cell {{ $version }}"><span class="{{ $version }} cf-icon Plus_New"></span></span>
|
||||
{{- else if or (eq $icon "annotate") (eq $icon "pin") -}}
|
||||
<span class="inline {{ $version }} cf-icon Annotate_New"></span>
|
||||
{{- else if eq $icon "clock" -}}
|
||||
<span class="inline {{ $version }} cf-icon Clock_New top small"></span>
|
||||
{{- else if or (eq $icon "handle") (eq $icon "move-cell") (eq $icon "move") -}}
|
||||
<span class="inline v3 cf-icon handle-new middle xsmall"></span>
|
||||
{{- else if eq $icon "share" -}}
|
||||
<span class="inline {{ $version }} cf-icon Share middle"></span>
|
||||
{{- else if eq $icon "bucket" -}}
|
||||
<span class="inline {{ $version }} cf-icon BucketSolid top"></span>
|
||||
{{- else if or (eq $icon "more") (eq $icon "...") (eq $icon "ellipses") -}}
|
||||
<span class="inline {{ $version }} cf-icon More bottom"></span>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
<div id="line-protocol-anatomy">
|
||||
<p>
|
||||
<span class="el measurement">measurement</span><span class="comma">,</span><span class="el tagset">tag11=val1,tag2=val2</span><span class="whitespace" data-whitespace="1st"> </span>
|
||||
<span class="el fieldset">field1="v1",field2=1i</span><span class="whitespace" data-whitespace="2nd"> </span><span class="el timestamp">0000000000000000000</span>
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
<div id="series-diagram">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th align="left">_time</th>
|
||||
<th align="left">_measurement</th>
|
||||
<th align="left"><span class="tooltip" data-tooltip-text="tag key">location</span></th>
|
||||
<th align="left">_field</th>
|
||||
<th align="right">_value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="left"><span class="tooltip" data-tooltip-text="timestamp">2022-01-01T12:00:00Z</span></td>
|
||||
<td align="left"><span class="tooltip" data-tooltip-text="measurement">weather</span></td>
|
||||
<td align="left"><span class="tooltip" data-tooltip-text="tag value">London, UK</span></td>
|
||||
<td align="left"><span class="tooltip" data-tooltip-text="field key">temperature</span></td>
|
||||
<td align="right"><span class="tooltip" data-tooltip-text="field value">12.0</span></td>
|
||||
</tr>
|
||||
<tr class="point">
|
||||
<td align="left">2022-02-01T12:00:00Z</td>
|
||||
<td align="left">weather</td>
|
||||
<td align="left">London, UK</td>
|
||||
<td align="left">temperature</td>
|
||||
<td align="right">12.1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left">2022-03-01T12:00:00Z</td>
|
||||
<td align="left">weather</td>
|
||||
<td align="left">London, UK</td>
|
||||
<td align="left">temperature</td>
|
||||
<td align="right">11.5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left">2022-04-01T12:00:00Z</td>
|
||||
<td align="left">weather</td>
|
||||
<td align="left">London, UK</td>
|
||||
<td align="left">temperature</td>
|
||||
<td align="right">5.9</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="series-diagram">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th align="left">_time</th>
|
||||
<th align="left">_measurement</th>
|
||||
<th align="left">location</th>
|
||||
<th align="left">_field</th>
|
||||
<th align="right">_value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="left">2022-01-01T12:00:00Z</td>
|
||||
<td align="left">weather</td>
|
||||
<td align="left">Cologne, DE</td>
|
||||
<td align="left">temperature</td>
|
||||
<td align="right">13.2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left">2022-02-01T12:00:00Z</td>
|
||||
<td align="left">weather</td>
|
||||
<td align="left">Cologne, DE</td>
|
||||
<td align="left">temperature</td>
|
||||
<td align="right">11.5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left">2022-03-01T12:00:00Z</td>
|
||||
<td align="left">weather</td>
|
||||
<td align="left">Cologne, DE</td>
|
||||
<td align="left">temperature</td>
|
||||
<td align="right">10.2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left">2022-04-01T12:00:00Z</td>
|
||||
<td align="left">weather</td>
|
||||
<td align="left">Cologne, DE</td>
|
||||
<td align="left">temperature</td>
|
||||
<td align="right">7.9</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
@ -1,5 +1,9 @@
|
|||
{{ $navIcon := lower (.Get 0) | default "influx" }}
|
||||
{{ $version := lower (.Get 1) | default "v3" }}
|
||||
{{- $productPathData := findRE "[^/]+.*?" .Page.RelPermalink -}}
|
||||
{{- $product := index $productPathData 0 -}}
|
||||
{{- $productVersion := index $productPathData 1 | default "v0.0" -}}
|
||||
{{- $defaultClockface := cond (isset (index .Site.Data.clockface $product) $productVersion) (index (index .Site.Data.clockface $product) $productVersion) (index (index .Site.Data.clockface $product) "default") }}
|
||||
{{- $version := .Get 1 | default $defaultClockface -}}
|
||||
|
||||
{{ if eq $version "v2" }}
|
||||
{{ if or (eq $navIcon "admin") (eq $navIcon "influx") }}
|
||||
|
|
@ -84,66 +88,93 @@
|
|||
{{ end }}
|
||||
|
||||
{{ else }}
|
||||
{{ if eq $version "v3" }}
|
||||
|
||||
{{/* ----------------------- CLOCKFACE v3 ----------------------- */}}
|
||||
{{/* ----------------------- CLOCKFACE v3 ----------------------- */}}
|
||||
|
||||
{{ if or (eq $navIcon "data-explorer") (eq $navIcon "data explorer") (eq $navIcon "explore") }}
|
||||
{{ .Scratch.Set "icon" "graphline-2" }}
|
||||
{{ .Scratch.Set "title" "Data Explorer" }}
|
||||
{{ else if or (eq $navIcon "notebooks") (eq $navIcon "books") }}
|
||||
{{ .Scratch.Set "icon" "book-pencil" }}
|
||||
{{ .Scratch.Set "title" "Notebooks" }}
|
||||
{{ else if or (eq $navIcon "dashboards") (eq $navIcon "boards") }}
|
||||
{{ .Scratch.Set "icon" "graph-line-new" }}
|
||||
{{ .Scratch.Set "title" "Dashboards" }}
|
||||
{{ else if eq $navIcon "tasks" }}
|
||||
{{ .Scratch.Set "icon" "calendar" }}
|
||||
{{ .Scratch.Set "title" "Tasks" }}
|
||||
{{ else if or (eq $navIcon "monitor") (eq $navIcon "alerts") (eq $navIcon "bell") }}
|
||||
{{ .Scratch.Set "icon" "bell" }}
|
||||
{{ .Scratch.Set "title" "Alerts" }}
|
||||
{{ else if or (eq $navIcon "load data") (eq $navIcon "load-data") (eq $navIcon "data") }}
|
||||
{{ .Scratch.Set "icon" "ingest-new" }}
|
||||
{{ .Scratch.Set "title" "Load Data" }}
|
||||
{{ else if eq $navIcon "settings" }}
|
||||
{{ .Scratch.Set "icon" "wrench-nav" }}
|
||||
{{ .Scratch.Set "title" "Settings" }}
|
||||
{{ end }}
|
||||
{{ if or (eq $navIcon "data-explorer") (eq $navIcon "data explorer") (eq $navIcon "explore") }}
|
||||
{{ .Scratch.Set "icon" "graphline-2" }}
|
||||
{{ .Scratch.Set "title" "Data Explorer" }}
|
||||
{{ else if or (eq $navIcon "notebooks") (eq $navIcon "books") }}
|
||||
{{ .Scratch.Set "icon" "book-pencil" }}
|
||||
{{ .Scratch.Set "title" "Notebooks" }}
|
||||
{{ else if or (eq $navIcon "dashboards") (eq $navIcon "boards") }}
|
||||
{{ .Scratch.Set "icon" "graph-line-new" }}
|
||||
{{ .Scratch.Set "title" "Dashboards" }}
|
||||
{{ else if eq $navIcon "tasks" }}
|
||||
{{ .Scratch.Set "icon" "calendar" }}
|
||||
{{ .Scratch.Set "title" "Tasks" }}
|
||||
{{ else if or (eq $navIcon "monitor") (eq $navIcon "alerts") (eq $navIcon "bell") }}
|
||||
{{ .Scratch.Set "icon" "bell" }}
|
||||
{{ .Scratch.Set "title" "Alerts" }}
|
||||
{{ else if or (eq $navIcon "load data") (eq $navIcon "load-data") (eq $navIcon "data") }}
|
||||
{{ .Scratch.Set "icon" "ingest-new" }}
|
||||
{{ .Scratch.Set "title" "Load Data" }}
|
||||
{{ else if eq $navIcon "settings" }}
|
||||
{{ .Scratch.Set "icon" "wrench-nav" }}
|
||||
{{ .Scratch.Set "title" "Settings" }}
|
||||
{{ end }}
|
||||
|
||||
{{ if or (eq $navIcon "profile") (eq $navIcon "account") }}
|
||||
<div class="nav-items-v3">
|
||||
<div class="nav-item-v3 account">
|
||||
<div class="acct-inner-v3">
|
||||
<div class="acct-icon-v3"><span class="initial">u</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-item-v3 account">
|
||||
<div class="acct-inner-v3">
|
||||
<div class="acct-icon-v3"><span class="initial">u</span></div>
|
||||
<div class="acct-label-v3">
|
||||
<div class="username">username</div>
|
||||
<div class="orgname">org-name</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ else }}
|
||||
{{ $icon := .Scratch.Get "icon" }}
|
||||
{{ $title := .Scratch.Get "title" }}
|
||||
<div class="nav-items-v3">
|
||||
<div class="nav-item-v3">
|
||||
<div class="nav-icon-v3">
|
||||
<span class="cf-icon {{ $icon }}"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-item-v3">
|
||||
<div class="nav-icon-v3">
|
||||
<span class="cf-icon {{ $icon }}"></span>
|
||||
</div>
|
||||
<p class="nav-label-v3">{{ $title }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/* ----------------------- CLOCKFACE v4 ----------------------- */}}
|
||||
|
||||
{{ if or (eq $navIcon "data-explorer") (eq $navIcon "data explorer") (eq $navIcon "explore") }}
|
||||
{{ .Scratch.Set "icon" "GraphLine_New" }}
|
||||
{{ .Scratch.Set "title" "Data Explorer" }}
|
||||
{{ else if or (eq $navIcon "notebooks") (eq $navIcon "books") }}
|
||||
{{ .Scratch.Set "icon" "Pencil" }}
|
||||
{{ .Scratch.Set "title" "Notebooks" }}
|
||||
{{ else if or (eq $navIcon "dashboards") (eq $navIcon "boards") }}
|
||||
{{ .Scratch.Set "icon" "DashH" }}
|
||||
{{ .Scratch.Set "title" "Dashboards" }}
|
||||
{{ else if eq $navIcon "tasks" }}
|
||||
{{ .Scratch.Set "icon" "Calendar" }}
|
||||
{{ .Scratch.Set "title" "Tasks" }}
|
||||
{{ else if or (eq $navIcon "monitor") (eq $navIcon "alerts") (eq $navIcon "bell") }}
|
||||
{{ .Scratch.Set "icon" "Bell" }}
|
||||
{{ .Scratch.Set "title" "Alerts" }}
|
||||
{{ else if or (eq $navIcon "load data") (eq $navIcon "load-data") (eq $navIcon "data") }}
|
||||
{{ .Scratch.Set "icon" "Upload_New" }}
|
||||
{{ .Scratch.Set "title" "Load Data" }}
|
||||
{{ else if eq $navIcon "settings" }}
|
||||
{{ .Scratch.Set "icon" "CogOutline_New" }}
|
||||
{{ .Scratch.Set "title" "Settings" }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ if or (eq $navIcon "profile") (eq $navIcon "account") }}
|
||||
<div class="nav-items-{{ $version }}">
|
||||
<div class="nav-item-{{ $version }} account">
|
||||
<div class="acct-inner-{{ $version }}">
|
||||
<div class="acct-icon-{{ $version }}"><span class="initial">u</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-item-{{ $version }} account">
|
||||
<div class="acct-inner-{{ $version }}">
|
||||
<div class="acct-icon-{{ $version }}"><span class="initial">u</span></div>
|
||||
<div class="acct-label-{{ $version }}">
|
||||
<div class="username">username</div>
|
||||
<div class="orgname">org-name</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ else }}
|
||||
{{ $icon := .Scratch.Get "icon" }}
|
||||
{{ $title := .Scratch.Get "title" }}
|
||||
<div class="nav-items-{{ $version }}">
|
||||
<div class="nav-item-{{ $version }}">
|
||||
<div class="nav-icon-{{ $version }}">
|
||||
<span class="{{ $version }} cf-icon {{ $icon }}"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-item-{{ $version }}">
|
||||
<div class="nav-icon-{{ $version }}">
|
||||
<span class="{{ $version }} cf-icon {{ $icon }}"></span>
|
||||
</div>
|
||||
<p class="nav-label-{{ $version }}">{{ $title }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,11 +4,12 @@
|
|||
{{ $nextText := .Get "nextText" | default "" }}
|
||||
{{ $prevPage := .Site.GetPage (replaceRE `\/$` "" $prev) }}
|
||||
{{ $nextPage := .Site.GetPage (replaceRE `\/$` "" $next) }}
|
||||
{{ $keepTab := .Get "keepTab" | default false}}
|
||||
<div class="page-nav-btns">
|
||||
{{ if ne (len $prev) 0 }}
|
||||
<a class="btn prev" href="{{ $prevPage.RelPermalink }}">{{ if ne (len $prevText) 0 }}{{ $prevText }}{{ else if $prevPage.Params.list_title }}{{ $prevPage.Params.list_title }}{{ else }}{{ $prevPage.Title }}{{ end }}</a>
|
||||
<a class="btn prev{{if $keepTab}} keep-tab{{end}}" href="{{ $prevPage.RelPermalink }}">{{ if ne (len $prevText) 0 }}{{ $prevText }}{{ else if $prevPage.Params.list_title }}{{ $prevPage.Params.list_title }}{{ else }}{{ $prevPage.Title }}{{ end }}</a>
|
||||
{{ end }}
|
||||
{{ if ne (len $next) 0 }}
|
||||
<a class="btn next" href="{{ $nextPage.RelPermalink }}">{{ if ne (len $nextText) 0 }}{{ $nextText }}{{ else if $nextPage.Params.list_title }}{{ $nextPage.Params.list_title }}{{ else }}{{ $nextPage.Title }}{{ end }}</a>
|
||||
<a class="btn next{{if $keepTab}} keep-tab{{end}}" href="{{ $nextPage.RelPermalink }}">{{ if ne (len $nextText) 0 }}{{ $nextText }}{{ else if $nextPage.Params.list_title }}{{ $nextPage.Params.list_title }}{{ else }}{{ $nextPage.Title }}{{ end }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||
<div class="truncate closed">
|
||||
{{ .Inner }}
|
||||
<div class="truncate closed" id="truncate-{{ .Ordinal }}">
|
||||
<div class="truncate-content closed">
|
||||
{{ .Inner }}
|
||||
</div>
|
||||
<div class="truncate-bottom">
|
||||
<a class="truncate-toggle" href="#"></a>
|
||||
</div>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,98 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="icomoon" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="Play" d="M785.276 396.647l-493.126-328.751c-3.503-2.33-7.573-3.669-11.776-3.87s-8.382 0.742-12.091 2.731c-3.71 1.984-6.811 4.941-8.974 8.55s-3.307 7.735-3.309 11.942v657.5c0.002 4.208 1.146 8.336 3.309 11.946s5.264 6.564 8.974 8.55c3.709 1.986 7.888 2.929 12.091 2.728s8.273-1.539 11.776-3.87l493.126-328.75c3.183-2.125 5.798-5.001 7.603-8.38 1.809-3.375 2.752-7.147 2.752-10.974 0-3.831-0.943-7.599-2.752-10.974-1.805-3.379-4.42-6.255-7.603-8.38v0z" />
|
||||
<glyph unicode="" glyph-name="Pause" horiz-adv-x="983" d="M425.984 132.779c0-18.022-15.77-33.792-33.792-33.792h-112.64c-18.022 0-33.792 15.77-33.792 33.792v608.256c0 18.022 15.77 33.792 33.792 33.792h112.64c18.022 0 33.792-15.77 33.792-33.792v-608.256zM741.421 132.779c0-18.022-15.774-33.792-33.796-33.792h-112.64c-18.022 0-33.792 15.77-33.792 33.792v608.256c0 18.022 15.77 33.792 33.792 33.792h112.64c18.022 0 33.796-15.77 33.796-33.792v-608.256z" />
|
||||
<glyph unicode="" glyph-name="EyeOpen" d="M50.391 426.667c40.107 218.453 231.552 384 461.609 384 230.059 0 421.461-165.547 461.611-384-40.107-218.453-231.552-384-461.611-384-230.057 0-421.46 165.547-461.609 384v0zM512 213.334c56.58 0 110.844 22.477 150.852 62.485 40.004 40.004 62.481 94.268 62.481 150.848s-22.477 110.842-62.481 150.849c-40.009 40.008-94.272 62.484-150.852 62.484s-110.84-22.476-150.848-62.484c-40.008-40.008-62.484-94.269-62.484-150.849s22.476-110.844 62.484-150.848c40.008-40.009 94.268-62.485 150.848-62.485zM512 298.667c-33.946 0-66.505 13.487-90.508 37.491s-37.49 56.563-37.49 90.509c0 33.946 13.486 66.505 37.49 90.51s56.563 37.49 90.508 37.49c33.95 0 66.505-13.486 90.513-37.49 24.004-24.005 37.487-56.564 37.487-90.51s-13.483-66.505-37.487-90.509c-24.009-24.004-56.563-37.491-90.513-37.491z" />
|
||||
<glyph unicode="" glyph-name="Flask" d="M682.667 853.334v-85.333h-42.667v-138.368c0-49.408 10.709-98.176 31.403-143.019l182.699-395.776c14.805-32.128 0.768-70.144-31.317-84.907-8.405-3.925-17.536-5.931-26.795-5.931h-567.979c-35.328 0-64 28.672-64 64 0 9.259 2.005 18.432 5.888 26.837l182.699 395.776c20.693 44.8 31.403 93.611 31.403 143.019v138.368h-42.667v85.333h341.333zM554.667 768h-85.333v-170.667h85.333v170.667z" />
|
||||
<glyph unicode="" glyph-name="AddCell_New" d="M938.667 384.043v-298.709c0-11.315-4.497-22.17-12.497-30.17s-18.854-12.497-30.17-12.497h-341.333v341.376h384zM469.333 384.043v-341.376h-341.333c-11.316 0-22.168 4.497-30.17 12.497s-12.497 18.854-12.497 30.17v298.709h384zM469.333 810.667v-341.291h-384v298.624c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497h341.333zM896 810.667c11.315 0 22.17-4.495 30.17-12.497s12.497-18.854 12.497-30.17v-298.624h-384v341.291h341.333z" />
|
||||
<glyph unicode="" glyph-name="QuestionMark" d="M512-0c-235.648 0-426.667 191.019-426.667 426.667s191.019 426.667 426.667 426.667c235.648 0 426.667-191.019 426.667-426.667s-191.019-426.667-426.667-426.667zM469.333 298.667v-85.333h85.333v85.333h-85.333zM554.667 368.854c34.291 10.334 63.727 32.64 82.953 62.861 19.221 30.217 26.953 66.33 21.781 101.77-5.167 35.439-22.895 67.841-49.95 91.307s-61.636 36.434-97.451 36.542c-34.522 0.003-67.981-11.953-94.686-33.834-26.704-21.881-45.004-52.337-51.788-86.187l83.712-16.768c2.377 11.886 8.077 22.852 16.444 31.624 8.363 8.772 19.046 14.988 30.805 17.925s24.111 2.475 35.618-1.334c11.507-3.808 21.696-10.806 29.38-20.179 7.689-9.373 12.553-20.735 14.033-32.765s-0.486-24.233-5.67-35.19c-5.184-10.957-13.376-20.215-23.616-26.697-10.24-6.485-22.11-9.929-34.231-9.929-11.315 0-22.17-4.497-30.17-12.497s-12.497-18.854-12.497-30.17v-64h85.333v27.52z" />
|
||||
<glyph unicode="" glyph-name="AlertTriangle" horiz-adv-x="983" d="M526.991 778.929l390.185-675.842c3.592-6.226 5.485-13.287 5.485-20.48 0-7.188-1.892-14.25-5.485-20.476-3.596-6.23-8.765-11.399-14.991-14.995-6.23-3.592-13.292-5.489-20.48-5.489h-780.371c-7.19 0-14.253 1.896-20.48 5.489-6.226 3.596-11.397 8.765-14.992 14.995-3.595 6.226-5.487 13.287-5.487 20.476 0 7.193 1.893 14.254 5.487 20.48l390.186 675.842c3.592 6.226 8.765 11.397 14.991 14.991s13.287 5.487 20.48 5.487c7.188 0 14.25-1.892 20.48-5.487 6.226-3.595 11.395-8.765 14.991-14.991v0zM450.56 246.447v-81.92h81.92v81.92h-81.92zM450.56 533.169v-204.802h81.92v204.802h-81.92z" />
|
||||
<glyph unicode="" glyph-name="Annotate_New" horiz-adv-x="983" d="M737.28 783.017v-81.92h-40.96v-245.758l81.92-122.88v-81.92h-245.76v-286.72h-81.92v286.72h-245.76v81.92l81.92 122.88v245.758h-40.96v81.92h491.52z" />
|
||||
<glyph unicode="" glyph-name="ArrowDown_New" horiz-adv-x="983" d="M450.548 247.59v498.567h81.92v-498.567l219.709 219.709 57.917-57.917-318.587-318.587-318.586 318.587 57.917 57.917 219.709-219.709z" />
|
||||
<glyph unicode="" glyph-name="ArrowLeft_New" horiz-adv-x="983" d="M320.62 463.523h498.564v-81.92h-498.564l219.708-219.709-57.917-57.917-318.586 318.587 318.586 318.588 57.917-57.917-219.708-219.711z" />
|
||||
<glyph unicode="" glyph-name="ArrowRight_New" horiz-adv-x="983" d="M662.389 385.711h-498.564v81.92h498.564l-219.709 219.709 57.917 57.917 318.587-318.586-318.587-318.587-57.917 57.917 219.709 219.709z" />
|
||||
<glyph unicode="" glyph-name="BarChart_New" horiz-adv-x="983" d="M163.84 391.962h145.636v-329.834h-145.636v329.834zM673.563 538.557h145.637v-476.43h-145.637v476.43zM418.701 758.447h145.637v-696.32h-145.637v696.32z" />
|
||||
<glyph unicode="" glyph-name="Bell" horiz-adv-x="983" d="M901.12 107.179h-819.2v81.92h40.96v285.45c0 204.306 165.069 369.908 368.64 369.908s368.64-165.601 368.64-369.908v-285.45h40.96v-81.92zM204.8 189.099h573.44v285.45c0 159.046-128.369 287.988-286.72 287.988s-286.72-128.942-286.72-287.988v-285.45zM389.12 66.219h204.8c0-27.161-10.789-53.207-29.991-72.409-19.206-19.206-45.253-29.991-72.409-29.991s-53.203 10.785-72.409 29.991c-19.202 19.202-29.991 45.249-29.991 72.409v0z" />
|
||||
<glyph unicode="" glyph-name="BookCode" horiz-adv-x="983" d="M819.405 848.557c45.138 0 81.715-36.782 81.715-81.51v-656.181c0-45.015-36.577-81.51-81.715-81.51h-655.565v163.84h-81.92v81.92h81.92v122.88h-81.92v81.92h81.92v122.882h-81.92v81.92h81.92v163.84h655.565zM327.68 766.637h-81.92v-655.362h81.92v655.362zM819.2 766.637h-409.6v-655.362h409.6v655.362z" />
|
||||
<glyph unicode="" glyph-name="BookOutline" horiz-adv-x="983" d="M122.88 176.807v552.96c0 32.59 12.946 63.845 35.991 86.889s54.299 35.991 86.889 35.991h573.44c10.863 0 21.283-4.315 28.963-11.997s11.997-18.1 11.997-28.963v-737.28c0-10.863-4.317-21.283-11.997-28.963s-18.1-11.997-28.963-11.997h-552.96c-38.022 0-74.486 15.106-101.371 41.988-26.885 26.886-41.989 63.349-41.989 101.372v0zM778.24 115.367v122.88h-512c-16.295 0-31.923-6.472-43.445-17.994s-17.995-27.152-17.995-43.446c0-16.294 6.473-31.924 17.995-43.446s27.15-17.994 43.445-17.994h512zM204.8 306.363c19.198 9.118 40.188 13.832 61.44 13.804h512v450.56h-532.48c-10.863 0-21.282-4.315-28.963-11.997s-11.997-18.1-11.997-28.963v-423.404z" />
|
||||
<glyph unicode="" glyph-name="Braces" d="M170.667 170.667v157.867c0 16.973-6.743 33.254-18.745 45.257s-28.281 18.743-45.255 18.743h-21.333v68.267h21.333c8.404 0 16.727 1.655 24.492 4.873s14.82 7.932 20.763 13.871c5.943 5.943 10.657 13.001 13.873 20.766s4.872 16.086 4.872 24.491v157.867c0 33.948 13.486 66.505 37.49 90.51s56.562 37.49 90.51 37.49h42.667v-85.333h-42.667c-11.316 0-22.168-4.495-30.17-12.497s-12.497-18.854-12.497-30.17v-174.933c0.004-17.963-5.66-35.469-16.186-50.027-10.526-14.554-25.377-25.417-42.438-31.040 17.061-5.623 31.912-16.486 42.438-31.040 10.526-14.558 16.19-32.064 16.186-50.027v-174.933c0-11.315 4.495-22.17 12.497-30.17s18.854-12.497 30.17-12.497h42.667v-85.333h-42.667c-33.948 0-66.505 13.487-90.51 37.491s-37.49 56.563-37.49 90.509v0zM853.333 328.534v-157.867c0-33.946-13.487-66.505-37.491-90.509s-56.563-37.491-90.509-37.491h-42.667v85.333h42.667c11.315 0 22.17 4.497 30.17 12.497s12.497 18.854 12.497 30.17v174.933c-0.004 17.963 5.662 35.469 16.188 50.027 10.526 14.554 25.374 25.417 42.436 31.040-17.062 5.623-31.91 16.486-42.436 31.040-10.526 14.558-16.192 32.064-16.188 50.027v174.933c0 11.316-4.497 22.168-12.497 30.17s-18.854 12.497-30.17 12.497h-42.667v85.333h42.667c33.946 0 66.505-13.486 90.509-37.49s37.491-56.562 37.491-90.51v-157.867c0-16.973 6.741-33.254 18.743-45.257s28.284-18.743 45.257-18.743h21.333v-68.267h-21.333c-16.973 0-33.254-6.741-45.257-18.743s-18.743-28.284-18.743-45.257v0z" />
|
||||
<glyph unicode="" glyph-name="BucketSolid" horiz-adv-x="983" d="M858.911 670.801c0 100.729-191.693 147.456-368.64 147.456s-368.641-46.727-368.641-147.456c0-4.915 0-7.34 2.49-12.321l98.304-538.182c4.915-81.134 142.541-117.965 270.337-117.965s265.421 36.897 270.336 117.965l98.304 538.247c-2.425 4.915-2.425 7.34-2.425 12.321l-0.066-0.066zM490.271 744.529c194.183 0 294.912-54.067 294.912-73.728s-100.729-73.728-294.912-73.728c-194.184 0-294.913 54.067-294.913 73.728s100.729 73.728 294.913 73.728v0z" />
|
||||
<glyph unicode="" glyph-name="Calendar" horiz-adv-x="983" d="M706.56 705.193h155.648c10.322 0 20.218-4.1 27.517-11.397 7.295-7.297 11.395-17.195 11.395-27.515v-622.59c0-10.322-4.1-20.218-11.395-27.517-7.299-7.299-17.195-11.395-27.517-11.395h-700.416c-10.32 0-20.217 4.096-27.515 11.395s-11.397 17.195-11.397 27.517v622.59c0 10.32 4.1 20.217 11.397 27.515s17.195 11.397 27.515 11.397h155.648v77.824h77.824v-77.824h233.472v77.824h77.824v-77.824zM823.296 393.899h-622.592v-311.296h622.592v311.296zM628.736 627.369h-233.472v-77.824h-77.824v77.824h-116.736v-155.646h622.592v155.646h-116.736v-77.824h-77.824v77.824zM278.528 316.075h77.824v-77.824h-77.824v77.824zM473.088 316.075h77.824v-77.824h-77.824v77.824zM667.648 316.075h77.824v-77.824h-77.824v77.824z" />
|
||||
<glyph unicode="" glyph-name="CaretDown_New" d="M512 298.667l-256 256h512l-256-256z" />
|
||||
<glyph unicode="" glyph-name="CaretLeft_New" d="M384 426.667l256 256v-512l-256 256z" />
|
||||
<glyph unicode="" glyph-name="CaretRight_New" d="M640 426.667l-256-256v512l256-256z" />
|
||||
<glyph unicode="" glyph-name="CaretUp_New" d="M512 554.667l256-256h-512l256 256z" />
|
||||
<glyph unicode="" glyph-name="Chat" d="M275.413 128l-190.080-149.333v789.333c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497h768c11.315 0 22.17-4.495 30.17-12.497s12.497-18.854 12.497-30.17v-597.333c0-11.315-4.497-22.17-12.497-30.17s-18.854-12.497-30.17-12.497h-620.587z" />
|
||||
<glyph unicode="" glyph-name="Checkmark_New" d="M426.666 291.328l392.192 392.235 60.373-60.331-452.566-452.565-271.531 271.531 60.331 60.331 211.2-211.2z" />
|
||||
<glyph unicode="" glyph-name="CircleThick" horiz-adv-x="983" d="M491.516 38.85c-220.534 0-402.151 181.621-402.151 402.153 0 220.537 181.617 402.154 402.151 402.154 220.537 0 402.153-181.617 402.153-402.154 0-220.533-181.617-402.153-402.153-402.153v0zM491.516 661.54c-121.941 0-220.534-98.592-220.534-220.537 0-121.942 98.592-220.533 220.534-220.533 121.946 0 220.537 98.591 220.537 220.533 0 121.944-98.591 220.537-220.537 220.537z" />
|
||||
<glyph unicode="" glyph-name="Clipboard_New" d="M256 768v-170.667h512v170.667h85.632c23.381 0 42.368-18.987 42.368-42.368v-683.264c-0.013-11.234-4.48-22.003-12.42-29.948-7.945-7.94-18.714-12.407-29.948-12.42h-683.264c-11.233 0.013-22.003 4.48-29.946 12.42-7.943 7.945-12.411 18.714-12.422 29.948v683.264c0 23.381 18.987 42.368 42.368 42.368h85.632zM341.333 853.334h341.333v-170.667h-341.333v170.667z" />
|
||||
<glyph unicode="" glyph-name="Clock_New" d="M512-0c-235.648 0-426.667 191.019-426.667 426.667s191.019 426.667 426.667 426.667c235.648 0 426.667-191.019 426.667-426.667s-191.019-426.667-426.667-426.667zM554.667 426.667v213.333h-85.333v-298.667h256v85.333h-170.667z" />
|
||||
<glyph unicode="" glyph-name="Cloud" d="M725.333 42.667h-426.667c-60.449-0.038-118.961 21.316-165.176 60.284-46.215 38.963-77.15 93.026-87.329 152.61-10.179 59.588 1.056 120.853 31.715 172.949s78.764 91.663 135.798 111.695c-1.932 40.377 4.352 80.726 18.473 118.603s35.783 72.493 63.675 101.752c27.892 29.259 61.434 52.551 98.592 68.465s77.163 24.121 117.585 24.121c40.422 0 80.427-8.206 117.585-24.121s70.699-39.207 98.594-68.465c27.891-29.259 49.553-63.875 63.671-101.752 14.123-37.877 20.407-78.226 18.475-118.603 57.033-20.031 105.139-59.599 135.799-111.695 30.656-52.096 41.894-113.361 31.714-172.949-10.18-59.584-41.114-113.647-87.33-152.61-46.217-38.967-104.725-60.322-165.175-60.284zM725.333 554.669c0.009 28.458-5.675 56.631-16.717 82.86s-27.221 49.983-47.582 69.864c-20.365 19.881-44.497 35.487-70.985 45.899-26.483 10.412-54.784 15.419-83.234 14.728s-56.478-7.069-82.424-18.756c-25.948-11.687-49.296-28.447-68.668-49.294s-34.377-45.359-44.133-72.093c-9.755-26.735-14.063-55.151-12.669-83.575l2.987-63.49-59.904-21.077c-37.952-13.419-69.941-39.821-90.321-74.534s-27.839-75.516-21.062-115.196c6.778-39.68 27.356-75.691 58.103-101.67 30.747-25.984 69.686-40.269 109.941-40.333h426.667c31.415 0.013 62.221 8.695 89.020 25.092s48.55 39.872 62.861 67.844c14.31 27.968 20.621 59.345 18.24 90.671s-13.363 61.389-31.74 86.874c-18.372 25.485-43.426 45.402-72.393 57.557-28.971 12.16-60.736 16.081-91.793 11.345-31.057-4.74-60.203-17.963-84.228-38.208s-41.993-46.729-51.93-76.535l-80.981 27.008c17.015 50.974 49.634 95.3 93.235 126.707 43.597 31.411 95.974 48.313 149.709 48.313z" />
|
||||
<glyph unicode="" glyph-name="CogOutline_New" horiz-adv-x="983" d="M121.979 236.133c-17.315 29.942-30.775 61.956-40.059 95.273 20.206 10.277 37.175 25.944 49.030 45.265 11.855 19.325 18.135 41.55 18.143 64.217 0.009 22.671-6.254 44.9-18.095 64.229-11.841 19.333-28.798 35.011-48.996 45.303 18.516 66.95 53.769 128.084 102.441 177.644 19.009-12.358 41.067-19.217 63.733-19.816s45.055 5.085 64.69 16.423c19.635 11.338 35.751 27.887 46.563 47.816s15.9 42.462 14.699 65.103c67.26 17.383 137.839 17.354 205.087-0.082-1.188-22.641 3.908-45.17 14.729-65.094s26.943-36.465 46.58-47.794c19.64-11.329 42.029-17.004 64.696-16.396 22.663 0.608 44.716 7.474 63.721 19.839 23.716-24.166 44.769-51.651 62.464-82.33 17.736-30.679 31.007-62.669 40.059-95.273-20.206-10.277-37.175-25.945-49.029-45.266-11.858-19.321-18.137-41.546-18.145-64.217-0.008-22.667 6.255-44.896 18.096-64.229 11.842-19.329 28.799-35.009 48.996-45.302-18.514-66.949-53.768-128.082-102.441-177.644-19.010 12.358-41.066 19.218-63.734 19.816-22.663 0.598-45.056-5.083-64.688-16.421-19.636-11.338-35.754-27.89-46.563-47.817-10.813-19.931-15.901-42.463-14.701-65.106-67.26-17.383-137.839-17.355-205.087 0.082 1.19 22.643-3.908 45.171-14.728 65.094s-26.943 36.467-46.582 47.796c-19.639 11.33-42.030 17.002-64.694 16.396-22.664-0.61-44.719-7.475-63.723-19.841-24.208 24.703-45.196 52.363-62.464 82.33v0zM353.812 228.105c43.648-25.174 76.464-65.577 92.16-113.459 20.439-1.925 40.96-1.966 61.399-0.041 15.704 47.89 48.538 88.293 92.201 113.459 43.631 25.244 95.048 33.485 144.384 23.142 11.878 16.712 22.118 34.529 30.638 53.166-33.612 37.544-52.179 86.172-52.142 136.561 0 51.61 19.251 99.82 52.142 136.561-8.581 18.631-18.862 36.429-30.72 53.166-49.304-10.335-100.688-2.108-144.302 23.101-43.647 25.175-76.464 65.578-92.16 113.459-20.439 1.925-40.96 1.966-61.399 0.041-15.704-47.888-48.538-88.292-92.201-113.459-43.631-25.244-95.048-33.486-144.384-23.142-11.855-16.723-22.113-34.524-30.638-53.166 33.611-37.542 52.178-86.172 52.142-136.561 0-51.61-19.251-99.82-52.142-136.561 8.58-18.629 18.864-36.426 30.72-53.166 49.304 10.334 100.688 2.109 144.302-23.101zM476.692 318.053c-32.588 0-63.844 12.947-86.889 35.992s-35.991 54.301-35.991 86.888c0 32.592 12.946 63.844 35.991 86.888 23.045 23.046 54.301 35.992 86.889 35.992s63.844-12.946 86.888-35.992c23.044-23.044 35.992-54.297 35.992-86.888 0-32.588-12.947-63.844-35.992-86.888s-54.301-35.992-86.888-35.992zM476.692 399.973c10.863 0 21.283 4.317 28.963 11.997 7.68 7.684 11.997 18.1 11.997 28.963s-4.317 21.283-11.997 28.963c-7.68 7.684-18.1 11.997-28.963 11.997s-21.283-4.313-28.963-11.997c-7.68-7.68-11.997-18.1-11.997-28.963s4.317-21.279 11.997-28.963c7.68-7.68 18.1-11.997 28.963-11.997v0z" />
|
||||
<glyph unicode="" glyph-name="CogSolid_New" d="M424.706 844.375c57.555 12.069 116.981 12.098 174.547 0.085 3.836-25.314 13.329-49.437 27.767-70.578 14.443-21.141 33.463-38.755 55.646-51.534 22.17-12.823 46.942-20.483 72.478-22.411 25.54-1.928 51.183 1.926 75.021 11.275 39.181-43.864 68.86-95.362 87.168-151.253-19.994-15.982-36.13-36.265-47.211-59.342-11.081-23.074-16.819-48.35-16.789-73.95 0-53.931 25.003-102.016 64.085-133.291-18.415-55.842-48.132-107.302-87.296-151.168-23.834 9.344-49.468 13.193-74.995 11.264-25.532-1.924-50.295-9.583-72.461-22.4-22.165-12.774-41.169-30.374-55.603-51.503-14.434-21.124-23.923-45.227-27.767-70.524-57.545-12.096-116.975-12.156-174.547-0.171-3.817 25.335-13.299 49.485-27.741 70.652-14.442 21.163-33.472 38.797-55.672 51.588-22.171 12.817-46.946 20.471-72.483 22.391s-51.178-1.941-75.016-11.298c-39.185 43.878-68.864 95.39-87.168 151.296 19.985 15.974 36.116 36.241 47.195 59.302s16.823 48.32 16.805 73.903c0.021 25.604-5.73 50.889-16.825 73.963-11.095 23.077-27.249 43.356-47.26 59.329 18.418 55.846 48.133 107.302 87.296 151.168 23.836-9.342 49.471-13.193 74.999-11.264s50.294 9.584 72.457 22.4c22.167 12.774 41.172 30.378 55.606 51.503s23.923 45.23 27.765 70.524v0.043zM512 298.667c33.95 0 66.509 13.487 90.513 37.491s37.487 56.563 37.487 90.509c0 33.95-13.483 66.505-37.487 90.511-24.004 24.005-56.563 37.49-90.513 37.49-33.946 0-66.505-13.486-90.508-37.49-24.005-24.006-37.49-56.561-37.49-90.511 0-33.946 13.486-66.505 37.49-90.509 24.003-24.004 56.562-37.491 90.508-37.491v0z" />
|
||||
<glyph unicode="" glyph-name="Coppercoin" d="M512-0c-235.648 0-426.667 191.019-426.667 426.667s191.019 426.667 426.667 426.667c235.648 0 426.667-191.019 426.667-426.667s-191.019-426.667-426.667-426.667zM512 85.334c90.526 0 177.348 35.964 241.361 99.972 64.009 64.013 99.972 150.835 99.972 241.361 0 90.527-35.964 177.347-99.972 241.359-64.013 64.013-150.835 99.974-241.361 99.974-90.527 0-177.347-35.962-241.359-99.974s-99.974-150.832-99.974-241.359c0-90.526 35.962-177.348 99.974-241.361 64.012-64.009 150.832-99.972 241.359-99.972v0zM512 637.867l211.2-211.2-211.2-211.2-211.2 211.2 211.2 211.2zM512 517.163l-90.496-90.496 90.496-90.496 90.496 90.496-90.496 90.496z" />
|
||||
<glyph unicode="" glyph-name="CrownSolid_New" d="M85.333 128h853.333v-85.333h-853.333v85.333zM85.333 725.334l213.333-128 213.333 256 213.333-256 213.333 128v-512h-853.333v512z" />
|
||||
<glyph unicode="" glyph-name="Cube" d="M955.947 634.778c0 0 0 2.347-2.347 2.347 0 2.347-2.347 4.693-2.347 4.693l-2.347 2.347c0 2.347-2.347 2.347-2.347 4.693l-4.693 4.693-401.28 211.2c-9.387 4.693-23.467 4.693-32.853 0l-401.28-211.2c-4.693 2.347-7.040 0-9.387-2.347 0 0 0 0-2.347-2.347s-2.347-2.347-4.693-4.693c0 0 0-2.347-2.347-2.347 0-2.347-2.347-4.693-2.347-7.040s0-4.693 0-7.040v-422.4c0-14.080 7.040-25.813 18.773-30.507l401.28-211.2c2.347 0 2.347-2.347 4.693-2.347h2.347c2.347 0 7.040-2.347 9.387-2.347 4.693 0 11.733 2.347 16.427 4.693l401.28 211.2c11.733 7.040 18.773 18.773 18.773 30.507v420.053c0 2.347 0 7.040-2.347 9.387v0zM521.813 796.698l326.187-171.307-326.187-171.307-326.187 171.307 326.187 171.307zM155.733 566.725l330.88-173.653v-342.613l-330.88 173.653v342.613z" />
|
||||
<glyph unicode="" glyph-name="CuboSolid" d="M756.996 231.168l237.38 55.859c4.659 0 9.31 0 9.31 4.655 4.659 0 4.659 4.655 9.31 9.31 0 4.655 4.659 4.655 4.659 9.31 0 4.651 0 9.31 0 9.31l-102.4 437.526c0 9.31-4.659 13.964-13.965 18.617-4.655 4.656-13.965 4.656-23.275 4.656l-237.38-55.856c-9.31 0-13.965-4.656-18.62-13.964-4.655-4.656-4.655-13.964-4.655-23.273l102.4-437.526c0-9.31 4.655-13.965 13.965-18.62 4.655 0 13.961 0 23.27 0v-0.004zM673.212-38.792l288.585 265.31c9.31 9.31 9.31 18.615-4.655 13.961l-200.145-46.541c-9.31 0-13.965-4.659-23.275-13.965-4.655-4.655-9.31-13.965-13.961-23.275l-60.51-195.49c-4.659-4.655 4.655-9.31 13.961 0v0zM147.249 49.643l432.872-134.985c9.31 0 13.965 0 23.275 4.659 4.655 4.655 9.31 9.31 13.965 18.615l69.815 232.725c0 4.659 0 9.31 0 9.31 0 4.659 0 9.31-4.655 9.31 0 4.659-4.659 4.659-9.31 9.31-4.655 4.655-4.659 4.659-9.31 4.659l-428.218 130.325c-9.31 0-13.964 0-23.273-4.655-4.656-4.659-13.964-9.31-13.964-18.62l-69.817-232.725c0-9.31 0-13.965 0-23.275 4.656 0 13.964-4.655 18.617-4.655h0.003zM7.613 519.753l88.437-381.675c4.656-13.961 9.309-13.961 13.964 0l60.509 195.49c0 9.31 0 18.62 0 23.275s-4.656 18.615-9.309 23.275l-139.637 148.943c-9.31 9.309-18.617 9.309-13.963-9.31v0.003zM347.396 929.353l-330.473-302.544c-4.656-4.656-9.31-13.964-9.31-23.273s4.656-13.964 9.31-18.617l167.563-176.871c4.656-4.659 13.964-9.31 18.617-9.31 9.309 0 13.964 4.655 18.617 9.31l330.472 307.198c4.659 0 4.659 9.31 4.659 13.964 0 9.31 0 18.617-4.659 23.273l-167.562 176.873c0 4.656-4.656 4.656-9.309 4.656 0 4.656-4.656 4.656-9.31 4.656s-9.31 0-9.31 0c-4.656-4.656-9.309-4.656-9.309-9.31l0.005-0.005zM663.902 240.478c13.965-4.655 23.275 4.659 18.62 18.62l-97.745 414.255c-4.655 13.963-18.615 18.617-27.925 9.309l-311.858-288.584c-9.309-9.31-9.309-23.27 4.656-27.925l414.252-125.675zM826.812 817.643l-377.015 111.71c-13.965 4.656-18.62 0-4.655-13.963l139.635-148.944c4.655-4.656 13.965-9.309 23.275-13.963s18.615-4.656 23.27 0l200.145 46.544c9.31 4.656 9.31 13.964-4.655 18.617v0z" />
|
||||
<glyph unicode="" glyph-name="Cubouniform" d="M981.333 290.134c0 8.533 0 12.8 0 17.067l-102.4 426.667c0 4.267-4.267 8.533-4.267 12.8 0 0 0 4.267-4.267 4.267-4.267 4.267-4.267 4.267-8.533 8.533-4.267 0-8.533 4.267-8.533 4.267l-426.667 128c-8.533 4.267-12.8 4.267-12.8 4.267-8.533 0-12.8 0-17.067-4.267h-4.267c-4.267 0-8.533-4.267-12.8-8.533l-324.267-298.667c-4.267 0-4.267-4.267-8.533-8.533v-4.267c-4.267-4.267-4.267-8.533-4.267-12.8s0-8.533 0-12.8l102.4-426.667c0-4.267 0-4.267 4.267-8.533s4.267-8.533 8.533-12.8c0 0 0 0 4.267-4.267s8.533-4.267 12.8-8.533l426.667-128c4.267 0 8.533 0 12.8 0s8.533 0 12.8 4.267h4.267c4.267 0 4.267 4.267 8.533 4.267l324.267 298.667c4.267 4.267 4.267 4.267 8.533 8.533s4.267 8.533 8.533 17.067v0zM238.933 157.867l51.2 157.867 345.6-102.4-51.2-157.867-345.6 102.4zM409.6 793.6l115.2-123.733-260.267-238.933-119.467 123.733 264.533 238.933zM887.467 328.534l-166.4-38.4-81.067 345.6 166.4 38.4 81.067-345.6zM563.2 588.8l68.267-285.867-285.867 85.333 217.6 200.533zM601.6 716.8l-46.933 46.933 115.2-34.133-68.267-12.8zM162.133 409.6l51.2-51.2-21.333-68.267-29.867 119.467zM721.067 204.8l68.267 17.067-89.6-85.333 21.333 68.267z" />
|
||||
<glyph unicode="" glyph-name="Darkmode_New" d="M485.547 852.521c-31.441-29.296-56.657-64.624-74.147-103.877s-26.895-81.627-27.653-124.593c-0.758-42.967 7.146-85.646 23.24-125.49 16.094-39.846 40.048-76.041 70.435-106.428s66.581-54.345 106.428-70.438c39.846-16.094 82.526-23.996 125.491-23.241 42.97 0.759 85.342 10.163 124.595 27.652 39.253 17.493 74.581 42.709 103.876 74.15-13.568-223.36-198.997-400.256-425.771-400.256-235.691 0-426.709 191.019-426.709 426.667 0 226.772 176.896 412.201 400.213 425.854z" />
|
||||
<glyph unicode="" glyph-name="DashH" d="M554.667 42.667v426.667h341.333v-426.667h-341.333zM128 384v426.667h341.333v-426.667h-341.333zM384 469.334v256h-170.667v-256h170.667zM128 42.667v256h341.333v-256h-341.333zM213.333 128h170.667v85.333h-170.667v-85.333zM640 128h170.667v256h-170.667v-256zM554.667 810.667h341.333v-256h-341.333v256zM640 725.334v-85.333h170.667v85.333h-170.667z" />
|
||||
<glyph unicode="" glyph-name="Download_New" d="M128 128h768v-85.333h-768v85.333zM554.667 376.662l259.029 259.072 60.331-60.331-362.027-362.069-362.027 362.027 60.331 60.373 259.029-258.987v476.587h85.333v-476.672z" />
|
||||
<glyph unicode="" glyph-name="ExpandB" d="M853.333 810.667h85.333v-256h-85.333v170.667h-170.667v85.333h170.667zM170.667 810.667h170.667v-85.333h-170.667v-170.667h-85.333v256h85.333zM853.333 128v170.667h85.333v-256h-256v85.333h170.667zM170.667 128h170.667v-85.333h-256v256h85.333v-170.667z" />
|
||||
<glyph unicode="" glyph-name="Export_New" d="M426.667 810.667v-85.333h-213.333v-597.333h597.333v213.333h85.333v-256c0-11.315-4.497-22.17-12.497-30.17s-18.854-12.497-30.17-12.497h-682.667c-11.316 0-22.168 4.497-30.17 12.497s-12.497 18.854-12.497 30.17v682.667c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497h256zM750.336 725.334h-195.669v85.333h341.333v-341.333h-85.333v195.669l-298.667-298.667-60.331 60.331 298.667 298.667z" />
|
||||
<glyph unicode="" glyph-name="EyeClosed" d="M192.855 685.48l-133.419 133.376 60.373 60.373 844.756-844.801-60.373-60.331-141.227 141.227c-75.042-47.595-162.099-72.802-250.965-72.661-230.057 0-421.46 165.547-461.609 384 18.348 99.384 68.336 190.171 142.507 258.817h-0.043zM629.632 248.657l-62.464 62.464c-23.889-11.43-50.739-15.168-76.843-10.701-26.108 4.471-50.185 16.93-68.911 35.657-18.728 18.726-31.185 42.803-35.654 68.911-4.47 26.103-0.731 52.954 10.7 76.843l-62.464 62.465c-27.148-41.025-39.284-90.169-34.354-139.116 4.931-48.943 26.625-94.682 61.41-129.463 34.785-34.786 80.523-56.482 129.466-61.41 48.947-4.932 98.091 7.202 139.115 34.351v0zM340.225 778.237c53.205 20.907 111.188 32.427 171.775 32.427 230.059 0 421.461-165.547 461.611-384.001-13.073-71.070-42.458-138.138-85.845-195.925l-164.693 164.693c4.894 32.956 2.001 66.598-8.448 98.236-10.449 31.634-28.164 60.383-51.721 83.941-23.561 23.558-52.309 41.271-83.942 51.72-31.637 10.449-65.28 13.343-98.236 8.451l-140.5 140.459z" />
|
||||
<glyph unicode="" glyph-name="FunnelSolid" d="M426.667 341.334l-256 384v85.333h682.667v-85.333l-256-384v-256l-170.667-85.333v341.333z" />
|
||||
<glyph unicode="" glyph-name="GraphLine_New" d="M213.333 810.667v-682.667h682.667v-85.333h-768v768h85.333zM865.835 670.166l60.331-60.331-243.499-243.499-128 127.957-183.168-183.125-60.331 60.331 243.499 243.499 128-127.957 183.168 183.125z" />
|
||||
<glyph unicode="" glyph-name="Group" horiz-adv-x="983" d="M81.92 8.875c0 86.909 34.523 170.254 95.975 231.707s144.799 95.973 231.705 95.973c86.905 0 170.254-34.521 231.707-95.973 61.448-61.452 95.973-144.798 95.973-231.707h-655.36zM409.6 377.515c-135.782 0-245.76 109.978-245.76 245.762 0 135.782 109.978 245.76 245.76 245.76s245.76-109.978 245.76-245.76c0-135.784-109.978-245.762-245.76-245.762zM711.188 286.051c62.652-16.101 118.632-51.56 159.961-101.327 41.333-49.766 65.909-111.301 70.234-175.849h-122.184c0 106.906-40.96 204.227-108.012 277.176zM628.326 379.276c34.324 30.704 61.776 68.309 80.552 110.359s28.455 87.591 28.402 133.642c0.086 55.973-14.23 111.027-41.574 159.867 46.391-9.322 88.125-34.422 118.108-71.033 29.979-36.611 46.354-82.474 46.346-129.794 0.012-29.183-6.218-58.030-18.264-84.609s-29.639-50.278-51.589-69.505c-21.955-19.227-47.763-33.538-75.702-41.976-27.935-8.438-57.352-10.809-86.278-6.951v0z" />
|
||||
<glyph unicode="" glyph-name="History" d="M512 853.334c235.648 0 426.667-191.019 426.667-426.667s-191.019-426.667-426.667-426.667c-235.648 0-426.667 191.019-426.667 426.667h85.333c0-188.501 152.832-341.333 341.333-341.333s341.333 152.832 341.333 341.333c0 188.501-152.832 341.333-341.333 341.333-117.333 0-220.843-59.179-282.24-149.333h111.573v-85.333h-256v256h85.333v-106.667c77.824 103.68 201.771 170.667 341.333 170.667zM554.667 640v-195.627l138.368-138.368-60.373-60.373-163.328 163.413v230.955h85.333z" />
|
||||
<glyph unicode="" glyph-name="Duplicate_New" d="M298.667 682.667v128c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497h512c11.315 0 22.17-4.495 30.17-12.497s12.497-18.854 12.497-30.17v-597.333c0-11.315-4.497-22.17-12.497-30.17s-18.854-12.497-30.17-12.497h-128v-128c0-23.552-19.2-42.667-42.965-42.667h-511.403c-5.626-0.034-11.204 1.045-16.413 3.174s-9.945 5.265-13.937 9.229c-3.993 3.964-7.162 8.678-9.327 13.875-2.164 5.193-3.282 10.761-3.287 16.388l0.128 597.333c0 23.552 19.2 42.667 42.965 42.667h127.573zM384 682.667h341.333v-426.667h85.333v512h-426.667v-85.333z" />
|
||||
<glyph unicode="" glyph-name="Install" horiz-adv-x="983" d="M368.64 819.877v-81.92h-163.84l-0.041-409.598h573.44l0.041 409.598h-163.84v81.92h204.8c10.863 0 21.283-4.315 28.963-11.997s11.997-18.1 11.997-28.963v-737.278c0-10.867-4.317-21.283-11.997-28.967-7.68-7.68-18.1-11.993-28.963-11.993h-655.36c-10.863 0-21.282 4.313-28.963 11.993-7.681 7.684-11.997 18.1-11.997 28.967v737.278c0 10.863 4.316 21.282 11.997 28.963s18.1 11.997 28.963 11.997h204.8zM778.199 246.439h-573.44l0.041-163.84h573.44l-0.041 163.84zM696.32 205.479v-81.92h-81.92v81.92h81.92zM532.48 819.877v-204.8h122.88l-163.84-163.838-163.84 163.838h122.88v204.8h81.92z" />
|
||||
<glyph unicode="" glyph-name="Layers" horiz-adv-x="983" d="M822.6 283.303l49.234-29.532c3.035-1.819 5.55-4.395 7.295-7.475 1.749-3.076 2.666-6.558 2.666-10.097s-0.918-7.021-2.666-10.101c-1.745-3.080-4.26-5.652-7.295-7.471l-359.219-215.532c-6.373-3.83-13.664-5.849-21.094-5.849-7.434 0-14.725 2.019-21.094 5.849l-359.22 215.532c-3.038 1.819-5.552 4.391-7.297 7.471s-2.663 6.562-2.663 10.101c0 3.539 0.918 7.021 2.663 10.097 1.746 3.080 4.26 5.657 7.297 7.475l49.234 29.532 331.080-198.656 331.080 198.656zM822.6 475.815l49.234-29.532c3.035-1.819 5.55-4.395 7.295-7.475 1.749-3.076 2.666-6.558 2.666-10.097s-0.918-7.021-2.666-10.101c-1.745-3.080-4.26-5.652-7.295-7.471l-380.314-228.188-380.314 228.188c-3.038 1.819-5.552 4.391-7.297 7.471s-2.663 6.562-2.663 10.101c0 3.539 0.918 7.021 2.663 10.097 1.746 3.080 4.26 5.657 7.297 7.475l49.234 29.532 331.080-198.656 331.080 198.656zM512.573 852.277l359.26-215.532c3.035-1.818 5.55-4.393 7.295-7.472 1.749-3.080 2.666-6.559 2.666-10.1s-0.918-7.020-2.666-10.099c-1.745-3.080-4.26-5.655-7.295-7.473l-380.314-228.187-380.314 228.187c-3.038 1.818-5.552 4.393-7.297 7.473s-2.663 6.559-2.663 10.099c0 3.54 0.918 7.020 2.663 10.1s4.26 5.654 7.297 7.472l359.22 215.532c6.369 3.828 13.66 5.849 21.094 5.849 7.43 0 14.721-2.022 21.094-5.849h-0.041zM491.52 769.415l-250.389-150.241 250.389-150.24 250.388 150.24-250.388 150.241z" />
|
||||
<glyph unicode="" glyph-name="Lightmode_New" horiz-adv-x="983" d="M491.52 172.715c-65.18 0-127.69 25.895-173.779 71.983s-71.981 108.597-71.981 173.777c0 65.18 25.892 127.692 71.981 173.781s108.599 71.981 173.779 71.981c65.18 0 127.689-25.892 173.777-71.981 46.092-46.089 71.983-108.601 71.983-173.781s-25.891-127.689-71.983-173.777c-46.088-46.088-108.597-71.983-173.777-71.983zM450.56 869.037h81.92v-122.88h-81.92v122.88zM450.56 90.795h81.92v-122.88h-81.92v122.88zM143.974 708.105l57.917 57.917 86.876-86.876-57.917-57.917-86.876 86.876zM694.272 157.806l57.917 57.917 86.876-86.876-57.917-57.917-86.876 86.876zM781.148 766.064l57.917-57.958-86.876-86.876-57.917 57.917 86.876 86.917zM230.851 215.723l57.917-57.917-86.876-86.876-57.917 57.917 86.876 86.876zM942.080 459.435v-81.92h-122.88v81.92h122.88zM163.84 459.435v-81.92h-122.88v81.92h122.88z" />
|
||||
<glyph unicode="" glyph-name="Link" horiz-adv-x="983" d="M752.189 277.732l-57.917 57.999 57.917 57.917c19.153 18.989 34.37 41.57 44.773 66.454s15.786 51.577 15.847 78.547c0.057 26.97-5.21 53.686-15.503 78.615s-25.412 47.578-44.483 66.649c-19.071 19.071-41.718 34.187-66.646 44.481-24.932 10.294-51.646 15.562-78.619 15.503-26.968-0.059-53.662-5.445-78.545-15.847s-47.464-25.618-66.454-44.773l-57.917-57.958-57.958 57.917 57.999 57.917c53.772 53.774 126.705 83.983 202.752 83.983s148.98-30.209 202.752-83.983c53.772-53.773 83.984-126.705 83.984-202.752s-30.212-148.98-83.984-202.752l-57.999-57.917zM636.355 161.897l-57.958-57.917c-53.772-53.772-126.706-83.98-202.752-83.98s-148.979 30.208-202.752 83.98c-53.773 53.772-83.983 126.706-83.983 202.752s30.21 148.98 83.983 202.752l57.958 57.918 57.917-58-57.917-57.917c-19.154-18.985-34.369-41.57-44.772-66.454s-15.788-51.577-15.847-78.545c-0.059-26.972 5.21-53.686 15.503-78.615s25.41-47.579 44.481-66.65c19.071-19.071 41.721-34.185 66.649-44.483 24.928-10.293 51.645-15.561 78.615-15.503 26.97 0.061 53.663 5.448 78.546 15.847 24.883 10.404 47.469 25.62 66.454 44.773l57.917 57.917 57.958-57.876zM607.355 596.361l57.958-57.958-289.628-289.588-57.958 57.917 289.628 289.629z" />
|
||||
<glyph unicode="" glyph-name="Lock" horiz-adv-x="983" d="M737.28 590.497h81.92c10.863 0 21.283-4.316 28.963-11.997s11.997-18.1 11.997-28.963v-491.518c0-10.867-4.317-21.283-11.997-28.967-7.68-7.68-18.1-11.993-28.963-11.993h-655.36c-10.863 0-21.282 4.313-28.963 11.993-7.681 7.684-11.997 18.1-11.997 28.967v491.518c0 10.863 4.316 21.282 11.997 28.963s18.1 11.997 28.963 11.997h81.92v40.96c0 65.179 25.892 127.69 71.981 173.779s108.599 71.981 173.779 71.981c65.18 0 127.689-25.893 173.777-71.981 46.092-46.089 71.983-108.599 71.983-173.779v-40.96zM450.56 273.796v-92.897h81.92v92.897c15.618 9.015 27.824 22.934 34.726 39.592 6.898 16.663 8.11 35.135 3.445 52.552-4.669 17.42-14.954 32.813-29.262 43.79s-31.834 16.929-49.869 16.929c-18.035 0-35.561-5.951-49.869-16.929s-24.592-26.37-29.262-43.79c-4.665-17.416-3.455-35.889 3.445-52.552 6.902-16.658 19.108-30.577 34.726-39.592v0zM655.36 590.497v40.96c0 43.453-17.261 85.126-47.989 115.852-30.724 30.726-72.397 47.988-115.851 47.988s-85.126-17.262-115.852-47.988c-30.726-30.726-47.988-72.399-47.988-115.852v-40.96h327.68z" />
|
||||
<glyph unicode="" glyph-name="More" horiz-adv-x="983" d="M204.8 512.679c-45.056 0-81.92-36.864-81.92-81.92s36.864-81.92 81.92-81.92c45.056 0 81.92 36.864 81.92 81.92s-36.864 81.92-81.92 81.92zM778.24 512.679c-45.056 0-81.92-36.864-81.92-81.92s36.864-81.92 81.92-81.92c45.056 0 81.92 36.864 81.92 81.92s-36.864 81.92-81.92 81.92zM491.52 512.679c-45.056 0-81.92-36.864-81.92-81.92s36.864-81.92 81.92-81.92c45.056 0 81.92 36.864 81.92 81.92s-36.864 81.92-81.92 81.92z" />
|
||||
<glyph unicode="" glyph-name="Pencil" horiz-adv-x="983" d="M528.384 649.56l173.752-173.794-405.504-405.463h-173.752v173.793l405.504 405.464zM586.301 707.477l86.876 86.917c7.68 7.679 18.096 11.993 28.959 11.993s21.279-4.314 28.959-11.993l115.876-115.876c7.68-7.681 11.993-18.097 11.993-28.959s-4.313-21.277-11.993-28.959l-86.917-86.876-173.752 173.752z" />
|
||||
<glyph unicode="" glyph-name="Plus_New" horiz-adv-x="983" d="M450.56 483.999v245.758h81.92v-245.758h245.76v-81.92h-245.76v-245.76h-81.92v245.76h-245.76v81.92h245.76z" />
|
||||
<glyph unicode="" glyph-name="Refresh_New" horiz-adv-x="983" d="M223.764 720.221c74.324 64.403 169.41 99.793 267.756 99.656 226.222 0 409.6-183.378 409.6-409.602 0-87.491-27.443-168.591-74.138-235.11l-130.662 235.11h122.88c0.004 64.242-18.874 127.068-54.284 180.666-35.414 53.598-85.803 95.605-144.896 120.796-59.097 25.192-124.293 32.458-187.482 20.894-63.193-11.564-121.592-41.447-167.936-85.934l-40.837 73.523zM759.276 100.33c-74.326-64.401-169.411-99.791-267.756-99.656-226.222 0-409.6 183.378-409.6 409.6 0 87.491 27.443 168.593 74.138 235.112l130.662-235.112h-122.88c-0.005-64.238 18.872-127.066 54.286-180.662s85.8-95.605 144.895-120.795c59.096-25.194 124.292-32.461 187.481-20.894 63.193 11.563 121.59 41.443 167.936 85.93l40.837-73.523z" />
|
||||
<glyph unicode="" glyph-name="Remove_New" horiz-adv-x="983" d="M491.52 472.284l202.752 202.753 57.917-57.917-202.752-202.753 202.752-202.752-57.917-57.917-202.752 202.752-202.752-202.752-57.917 57.917 202.752 202.752-202.752 202.753 57.917 57.917 202.752-202.753z" />
|
||||
<glyph unicode="" glyph-name="Save" horiz-adv-x="983" d="M737.28 49.819v327.68h-491.52v-327.68h-81.92c-10.863 0-21.282 4.313-28.963 11.997-7.681 7.68-11.997 18.096-11.997 28.963v655.358c0 10.863 4.316 21.282 11.997 28.963s18.1 11.997 28.963 11.997h532.48l163.84-163.84v-532.478c0-10.867-4.317-21.283-11.997-28.963-7.68-7.684-18.1-11.997-28.963-11.997h-81.92zM655.36 49.819h-327.68v245.76h327.68v-245.76z" />
|
||||
<glyph unicode="" glyph-name="Search_New" d="M769.323 229.675l182.741-182.699-60.373-60.373-182.699 182.741c-67.981-54.494-152.533-84.134-239.659-84.011-211.968 0-384 172.032-384 384s172.032 384 384 384c211.968 0 384-172.032 384-384 0.124-87.125-29.517-171.678-84.011-239.659zM683.733 261.334c54.148 55.684 84.39 130.33 84.267 208 0 165.035-133.675 298.667-298.667 298.667-165.035 0-298.667-133.632-298.667-298.667 0-164.992 133.632-298.667 298.667-298.667 77.67-0.124 152.316 30.118 208 84.267l6.4 6.4z" />
|
||||
<glyph unicode="" glyph-name="Share" horiz-adv-x="983" d="M537.395 204.537l-171.993 93.798c-22.454-24.007-51.61-40.702-83.678-47.919s-65.565-4.62-96.139 7.451c-30.574 12.067-56.81 33.055-75.299 60.232-18.489 27.181-28.376 59.29-28.376 92.16s9.887 64.979 28.376 92.156c18.489 27.179 44.725 48.167 75.299 60.237s64.071 14.666 96.139 7.449c32.068-7.217 61.224-23.913 83.678-47.918l172.034 93.798c-9.769 38.663-5.1 79.562 13.132 115.028s48.771 63.067 85.893 77.627c37.126 14.56 78.287 15.081 115.765 1.465 37.482-13.616 68.71-40.435 87.835-75.429 19.12-34.994 24.822-75.76 16.040-114.659-8.786-38.898-31.457-73.257-63.762-96.635-32.305-23.38-72.028-34.173-111.722-30.36s-76.636 21.975-103.899 51.077l-172.034-93.798c6.604-26.272 6.604-53.764 0-80.036l171.993-93.798c27.263 29.102 64.201 47.264 103.899 51.077 39.694 3.813 79.417-6.98 111.722-30.36s54.977-57.737 63.762-96.637c8.782-38.896 3.080-79.663-16.040-114.655-19.124-34.996-50.352-61.813-87.835-75.432-37.478-13.615-78.639-13.095-115.765 1.466-37.122 14.561-67.662 42.16-85.893 77.627s-22.901 76.366-13.132 115.028v-0.041zM245.758 328.359c21.726 0 42.563 8.63 57.926 23.994s23.994 36.2 23.994 57.926c0 21.725-8.631 42.562-23.994 57.926s-36.2 23.994-57.926 23.994c-21.726 0-42.563-8.63-57.926-23.994s-23.994-36.2-23.994-57.926c0-21.725 8.631-42.562 23.994-57.926s36.2-23.994 57.926-23.994v0zM696.32 574.118c21.725 0 42.562 8.631 57.926 23.994 15.36 15.363 23.994 36.2 23.994 57.926s-8.634 42.563-23.994 57.926c-15.364 15.363-36.2 23.994-57.926 23.994-21.729 0-42.566-8.631-57.93-23.994-15.36-15.363-23.99-36.2-23.99-57.926s8.63-42.563 23.99-57.926c15.364-15.363 36.2-23.994 57.93-23.994v0zM696.32 82.599c21.725 0 42.562 8.63 57.926 23.994 15.36 15.364 23.994 36.2 23.994 57.926s-8.634 42.562-23.994 57.926c-15.364 15.364-36.2 23.994-57.926 23.994-21.729 0-42.566-8.63-57.93-23.994-15.36-15.364-23.99-36.2-23.99-57.926s8.63-42.562 23.99-57.926c15.364-15.364 36.2-23.994 57.93-23.994v0z" />
|
||||
<glyph unicode="" glyph-name="Shield" horiz-adv-x="983" d="M154.952 790.144l336.568 74.793 336.568-74.793c9.097-2.022 17.232-7.084 23.060-14.352 5.833-7.268 9.011-16.307 9.011-25.625v-409.065c-0.004-40.46-9.994-80.29-29.086-115.962-19.091-35.668-46.694-66.073-80.359-88.51l-259.195-172.81-259.195 172.81c-33.658 22.434-61.257 52.834-80.349 88.494s-29.086 75.485-29.096 115.937v409.106c0.002 9.318 3.18 18.357 9.011 25.625s13.965 12.331 23.061 14.352v0zM204.8 717.317v-376.216c0-26.972 6.659-53.527 19.385-77.304 12.726-23.781 31.125-44.052 53.565-59.011l213.77-142.541 213.77 142.541c22.434 14.954 40.829 35.222 53.555 58.991 12.726 23.773 19.386 50.319 19.395 77.283v376.257l-286.72 63.652-286.72-63.652z" />
|
||||
<glyph unicode="" glyph-name="Star" d="M512 159.565l-300.926-168.448 67.2 338.261-253.227 234.153 342.486 40.619 144.468 313.173 144.469-313.173 342.485-40.619-253.227-234.153 67.2-338.261-300.928 168.448z" />
|
||||
<glyph unicode="" glyph-name="StarSmile" d="M512 917.323l180.309-263.808 306.645-89.984-195.2-253.012 9.173-319.403-300.928 107.435-300.926-107.435 9.173 319.403-195.2 253.012 306.646 89.984 180.308 263.808zM512 766.113l-127.060-185.941-216.107-63.36 137.6-178.26-6.528-225.067 212.094 75.691 212.053-75.691-6.485 225.067 137.557 178.26-216.064 63.36-127.061 185.941zM426.667 426.658c0-22.635 8.994-44.339 24.994-60.343 16.004-16 37.709-24.99 60.339-24.99 22.635 0 44.339 8.99 60.339 24.99 16.004 16.004 24.994 37.709 24.994 60.343h85.333c0-45.265-17.98-88.674-49.984-120.683-32.009-32.004-75.418-49.984-120.683-49.984-45.261 0-88.672 17.98-120.678 49.984-32.006 32.009-49.987 75.418-49.987 120.683h85.332z" />
|
||||
<glyph unicode="" glyph-name="Subscribe" horiz-adv-x="983" d="M532.505 764.597v-81.895h-409.624v-548.236l72.216 56.717h583.168v286.745h81.895v-327.655c0-22.61-18.375-40.985-40.985-40.985h-595.798l-182.467-143.372v757.771c0 22.61 18.375 40.985 40.985 40.985l450.61-0.076zM737.28 764.597v122.88h81.895v-122.88h122.88v-81.895h-122.88v-122.88h-81.895v122.88h-122.88v81.895h122.88z" />
|
||||
<glyph unicode="" glyph-name="Switch_New" horiz-adv-x="983" d="M657.408 428.715l202.752-202.752-202.752-202.752-57.917 57.917 103.875 103.916-539.525-0.041v81.92h539.525l-103.875 103.875 57.917 57.917zM325.632 838.317l57.917-57.917-103.875-103.875h539.525v-81.92h-539.525l103.875-103.877-57.917-57.917-202.752 202.754 202.752 202.752z" />
|
||||
<glyph unicode="" glyph-name="Text_New" horiz-adv-x="983" d="M122.88 762.537h737.28v-81.92h-737.28v81.92zM122.88 148.139h573.44v-81.92h-573.44v81.92zM122.88 352.939h737.28v-81.92h-737.28v81.92zM122.88 557.737h573.44v-81.918h-573.44v81.918z" />
|
||||
<glyph unicode="" glyph-name="Trash_New" horiz-adv-x="983" d="M286.72 684.717v122.88c0 10.863 4.316 21.282 11.997 28.963s18.1 11.997 28.963 11.997h327.68c10.863 0 21.283-4.316 28.963-11.997s11.997-18.1 11.997-28.963v-122.88h204.8v-81.92h-81.92v-532.482c0-10.863-4.317-21.279-11.997-28.963-7.68-7.68-18.1-11.997-28.963-11.997h-573.44c-10.863 0-21.282 4.317-28.963 11.997-7.681 7.684-11.997 18.1-11.997 28.963v532.482h-81.92v81.92h204.8zM368.64 766.637v-81.92h245.76v81.92h-245.76z" />
|
||||
<glyph unicode="" glyph-name="Undo" horiz-adv-x="983" d="M238.715 647.835l103.875-103.875-57.917-57.918-202.752 202.752 202.752 202.752 57.917-57.917-103.875-103.875h293.765c86.905 0 170.254-34.524 231.707-95.975 61.448-61.452 95.973-144.8 95.973-231.705s-34.525-170.254-95.973-231.703c-61.452-61.452-144.802-95.977-231.707-95.977h-368.64v81.92h368.64c65.18 0 127.689 25.891 173.777 71.983 46.092 46.088 71.983 108.597 71.983 173.777s-25.891 127.69-71.983 173.779c-46.088 46.089-108.597 71.981-173.777 71.981h-293.765z" />
|
||||
<glyph unicode="" glyph-name="Upload_New" d="M128 127.992h768v-85.333h-768v85.333zM554.667 689.995v-476.67h-85.333v476.67l-259.029-259.070-60.331 60.331 362.027 362.068 362.027-362.025-60.331-60.331-259.029 259.028z" />
|
||||
<glyph unicode="" glyph-name="Upload_Outline" horiz-adv-x="983" d="M491.52 386.276l173.793-173.752-57.958-57.958-74.875 74.875v-228.762h-81.92v228.844l-74.874-74.957-57.958 57.958 173.792 173.752zM491.52 819.877c70.328-0.003 138.203-25.85 190.718-72.627s86.012-111.221 94.118-181.080c50.967-13.898 95.425-45.267 125.612-88.619 30.183-43.352 44.175-95.932 39.522-148.554-4.649-52.621-27.644-101.937-64.963-139.325-37.323-37.384-86.594-60.469-139.207-65.212v82.493c18.85 2.691 36.975 9.11 53.314 18.883s30.573 22.7 41.861 38.031c11.289 15.335 19.411 32.76 23.892 51.266s5.231 37.716 2.204 56.517c-3.023 18.797-9.765 36.803-19.825 52.969s-23.237 30.163-38.769 41.181c-15.528 11.014-33.096 18.829-51.679 22.979-18.579 4.153-37.802 4.563-56.545 1.208 6.414 29.864 6.070 60.784-1.016 90.497-7.082 29.713-20.722 57.466-39.92 81.224s-43.467 42.923-71.029 56.088c-27.562 13.165-57.721 19.998-88.269 19.998-30.544 0-60.703-6.833-88.267-19.998-27.563-13.165-51.832-32.329-71.030-56.088s-32.838-51.511-39.92-81.224c-7.083-29.713-7.43-60.633-1.015-90.497-37.37 7.016-75.997-1.098-107.383-22.561s-52.962-54.514-59.979-91.881c-7.018-37.372 1.097-75.997 22.559-107.385s54.513-52.961 91.883-59.978l7.373-1.229v-82.493c-52.615 4.735-101.892 27.816-139.218 65.2s-60.326 86.696-64.981 139.317c-4.655 52.625 9.331 105.21 39.514 148.566s74.643 74.726 125.609 88.627c8.098 69.863 41.591 134.312 94.109 181.090s120.398 72.622 190.726 72.616v0z" />
|
||||
<glyph unicode="" glyph-name="User" horiz-adv-x="983" d="M163.84 4.779c0 86.905 34.523 170.25 95.975 231.703s144.799 95.977 231.705 95.977c86.905 0 170.254-34.525 231.707-95.977 61.448-61.452 95.973-144.798 95.973-231.703h-655.36zM491.52 373.419c-135.782 0-245.76 109.978-245.76 245.758 0 135.782 109.978 245.76 245.76 245.76s245.76-109.978 245.76-245.76c0-135.78-109.978-245.758-245.76-245.758z" />
|
||||
<glyph unicode="" glyph-name="Zap" horiz-adv-x="983" d="M768 497.327h-225.28l168.96 394.24-506.88-506.88h225.28l-168.96-394.24 506.88 506.88z" />
|
||||
<glyph unicode="" glyph-name="SidebarClose" d="M128 810.667h768c11.315 0 22.17-4.495 30.17-12.497s12.497-18.854 12.497-30.17v-682.667c0-11.315-4.497-22.17-12.497-30.17s-18.854-12.497-30.17-12.497h-768c-11.316 0-22.168 4.497-30.17 12.497s-12.497 18.854-12.497 30.17v682.667c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497v0zM341.333 725.334h-170.667v-597.333h170.667v597.333zM426.667 725.334v-597.333h426.667v597.333h-426.667zM712.836 627.5l60.339-60.34-140.497-140.498 140.497-140.497-60.339-60.339-200.836 200.836 200.836 200.838z" />
|
||||
<glyph unicode="" glyph-name="SidebarOpen" d="M128 810.667h768c11.315 0 22.17-4.495 30.17-12.497s12.497-18.854 12.497-30.17v-682.667c0-11.315-4.497-22.17-12.497-30.17s-18.854-12.497-30.17-12.497h-768c-11.316 0-22.168 4.497-30.17 12.497s-12.497 18.854-12.497 30.17v682.667c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497v0zM341.333 725.334h-170.667v-597.333h170.667v597.333zM426.667 725.334v-597.333h426.667v597.333h-426.667zM572.339 627.5l-60.339-60.34 140.497-140.498-140.497-140.497 60.339-60.339 200.836 200.836-200.836 200.838z" />
|
||||
<glyph unicode="" glyph-name="Info_New" d="M512-0c-235.648 0-426.667 191.019-426.667 426.667s191.019 426.667 426.667 426.667c235.648 0 426.667-191.019 426.667-426.667s-191.019-426.667-426.667-426.667zM469.333 469.334v-256h85.333v256h-85.333zM469.333 640v-85.333h85.333v85.333h-85.333z" />
|
||||
<glyph unicode="" glyph-name="QuestionMark_Outline" d="M512-0c-235.648 0-426.667 191.019-426.667 426.667s191.019 426.667 426.667 426.667c235.648 0 426.667-191.019 426.667-426.667s-191.019-426.667-426.667-426.667zM512 85.334c90.526 0 177.348 35.964 241.361 99.972 64.009 64.013 99.972 150.835 99.972 241.361 0 90.527-35.964 177.347-99.972 241.359-64.013 64.013-150.835 99.974-241.361 99.974-90.527 0-177.347-35.962-241.359-99.974s-99.974-150.832-99.974-241.359c0-90.526 35.962-177.348 99.974-241.361 64.012-64.009 150.832-99.972 241.359-99.972v0zM469.333 298.667h85.333v-85.333h-85.333v85.333zM554.667 368.854v-27.52h-85.333v64c0 11.315 4.497 22.17 12.497 30.17s18.854 12.497 30.17 12.497c12.122 0 23.991 3.443 34.231 9.929 10.24 6.481 18.432 15.74 23.616 26.697s7.151 23.159 5.67 35.19c-1.481 12.030-6.345 23.392-14.033 32.765-7.684 9.373-17.873 16.37-29.38 20.179s-23.859 4.271-35.618 1.334c-11.759-2.937-22.443-9.153-30.805-17.925-8.367-8.771-14.067-19.738-16.444-31.624l-83.712 16.768c5.19 25.938 17.174 50.032 34.727 69.82s40.046 34.56 65.181 42.806c25.135 8.246 52.006 9.67 77.871 4.126s49.792-17.856 69.338-35.678c19.546-17.823 34.010-40.516 41.911-65.76s8.96-52.132 3.063-77.92c-5.897-25.788-18.534-49.545-36.625-68.847-18.086-19.298-40.977-33.451-66.325-41.007v0z" />
|
||||
<glyph unicode="" glyph-name="CaretOutlineRight" d="M562.005 426.667l-211.201 211.2 60.331 60.331 271.532-271.531-271.532-271.531-60.331 60.331 211.201 211.2z" />
|
||||
<glyph unicode="" glyph-name="CollapseLeft" d="M547.328 411.136l211.2-211.2-60.331-60.331-271.531 271.531 271.531 271.529 60.331-60.331-211.2-211.199zM298.667 128v554.667h85.333v-554.667h-85.333z" />
|
||||
<glyph unicode="" glyph-name="CollapseRight" d="M476.672 411.136l-211.201 211.2 60.331 60.331 271.532-271.531-271.532-271.531-60.331 60.331 211.201 211.2zM725.333 682.667v-554.667h-85.333v554.667h85.333z" />
|
||||
<glyph unicode="" glyph-name="DoubleCaretVertical" d="M522.368 99.968l-181.035 181.035 60.373 60.331 120.661-120.704 120.661 120.704 60.373-60.331-181.035-181.035zM522.368 604.672l-120.661-120.704-60.373 60.331 181.035 181.035 181.035-181.035-60.373-60.331-120.661 120.704z" />
|
||||
<glyph unicode="" glyph-name="Timer" d="M751.701 684.032l61.995 61.995 60.331-60.331-61.995-61.995c61.261-76.679 90.833-173.905 82.65-271.706-8.188-97.805-53.508-188.762-126.66-254.191s-168.58-100.369-266.688-97.638c-98.108 2.731-191.445 42.923-260.844 112.324-69.399 69.397-109.591 162.735-112.322 260.843s32.206 193.535 97.637 266.688c65.431 73.152 156.387 118.475 254.192 126.66 97.801 8.185 195.025-21.389 271.706-82.649v0zM512 85.334c39.223 0 78.059 7.727 114.295 22.733 36.237 15.010 69.158 37.009 96.892 64.747 27.738 27.733 49.737 60.655 64.747 96.892 15.006 36.237 22.733 75.072 22.733 114.295s-7.727 78.059-22.733 114.295c-15.010 36.235-37.009 69.16-64.747 96.894-27.733 27.734-60.655 49.733-96.892 64.743s-75.072 22.735-114.295 22.735c-79.211 0-155.178-31.467-211.189-87.477s-87.477-131.979-87.477-211.189c0-79.211 31.467-155.179 87.477-211.187 56.011-56.013 131.979-87.479 211.189-87.479v0zM469.333 597.334h85.333v-256h-85.333v256zM341.333 896h341.333v-85.333h-341.333v85.333z" />
|
||||
<glyph unicode="" glyph-name="Logout" d="M213.333-0c-11.316 0-22.168 4.497-30.17 12.497s-12.497 18.854-12.497 30.17v768c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497h597.333c11.315 0 22.17-4.495 30.17-12.497s12.497-18.854 12.497-30.17v-128h-85.333v85.333h-512v-682.667h512v85.333h85.333v-128c0-11.315-4.497-22.17-12.497-30.17s-18.854-12.497-30.17-12.497h-597.333zM768 256v128h-298.667v85.333h298.667v128l213.333-170.667-213.333-170.667z" />
|
||||
<glyph unicode="" glyph-name="SaveOutline" d="M298.667 128v256h426.667v-256h85.333v476.672l-120.661 120.661h-476.672v-597.333h85.333zM170.667 810.667h554.667l170.667-170.667v-554.667c0-11.315-4.497-22.17-12.497-30.17s-18.854-12.497-30.17-12.497h-682.667c-11.316 0-22.168 4.497-30.17 12.497s-12.497 18.854-12.497 30.17v682.667c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497zM384 298.667v-170.667h256v170.667h-256z" />
|
||||
<glyph unicode="" glyph-name="CurrencyDollar" d="M512-0c-235.648 0-426.667 191.019-426.667 426.667s191.019 426.667 426.667 426.667c235.648 0 426.667-191.019 426.667-426.667s-191.019-426.667-426.667-426.667zM512 85.334c90.526 0 177.348 35.964 241.361 99.972 64.009 64.013 99.972 150.835 99.972 241.361 0 90.527-35.964 177.347-99.972 241.359-64.013 64.013-150.835 99.974-241.361 99.974-90.527 0-177.347-35.962-241.359-99.974s-99.974-150.832-99.974-241.359c0-90.526 35.962-177.348 99.974-241.361 64.012-64.009 150.832-99.972 241.359-99.972v0zM362.667 341.334h234.667c5.658 0 11.085 2.249 15.087 6.246 3.998 4.002 6.246 9.429 6.246 15.087s-2.249 11.085-6.246 15.087c-4.002 3.998-9.429 6.246-15.087 6.246h-170.667c-28.29 0-55.421 11.238-75.425 31.241-20.004 20.006-31.242 47.138-31.242 75.426 0 28.29 11.238 55.421 31.242 75.425s47.135 31.242 75.425 31.242h42.667v85.333h85.333v-85.333h106.667v-85.333h-234.667c-5.658 0-11.084-2.249-15.085-6.246-4.001-4.002-6.249-9.429-6.249-15.087s2.248-11.085 6.249-15.087c4-3.998 9.427-6.246 15.085-6.246h170.667c28.288 0 55.42-11.238 75.426-31.241 20.002-20.006 31.241-47.138 31.241-75.426s-11.238-55.42-31.241-75.426c-20.006-20.002-47.138-31.241-75.426-31.241h-42.667v-85.333h-85.333v85.333h-106.667v85.333z" />
|
||||
<glyph unicode="" glyph-name="Subtract" d="M213.334 469.334h597.333v-85.333h-597.333v85.333z" />
|
||||
<glyph unicode="" glyph-name="Bill" d="M853.333-0h-682.667c-11.316 0-22.168 4.497-30.17 12.497s-12.497 18.854-12.497 30.17v768c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497h682.667c11.315 0 22.17-4.495 30.17-12.497s12.497-18.854 12.497-30.17v-768c0-11.315-4.497-22.17-12.497-30.17s-18.854-12.497-30.17-12.497zM341.333 554.667v-85.333h341.333v85.333h-341.333zM341.333 384v-85.333h341.333v85.333h-341.333z" />
|
||||
<glyph unicode="" glyph-name="Sync" d="M376.538 595.512l97.327 100.079-61.174 59.493-238.172-244.905h678.815v85.333h-476.795zM647.462 257.831h-476.796v85.333h678.814l-238.174-244.907-61.171 59.494 97.327 100.079z" />
|
||||
<glyph unicode="" glyph-name="FolderOpen" d="M128 42.667c-11.316 0-22.168 4.497-30.17 12.497s-12.497 18.854-12.497 30.17v682.667c0 11.316 4.495 22.168 12.497 30.17s18.854 12.497 30.17 12.497h316.331l85.333-85.333h323.669c11.315 0 22.17-4.495 30.17-12.497s12.497-18.854 12.497-30.17v-128h-85.333v85.333h-316.331l-85.333 85.333h-238.336v-511.915l64 255.915h725.333l-98.56-394.368c-2.313-9.225-7.637-17.417-15.138-23.266-7.497-5.854-16.738-9.033-26.249-9.033h-692.053zM850.688 384h-549.376l-64-256h549.376l64 256z" />
|
||||
<glyph unicode="" glyph-name="PieChart" d="M469.333 851.2v-467.2h467.2c-21.376-215.595-203.307-384-424.533-384-235.648 0-426.667 191.019-426.667 426.667 0 221.227 168.405 403.157 384 424.533zM554.667 851.2c201.917-20.937 360.93-179.95 381.712-380.033l0.154-1.834h-381.867v381.867z" />
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 51 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 71 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
Loading…
Reference in New Issue