daemon notes, backup

flux

Telegraf, InfluxDB, Chronograf and Kapacitor are known as the TICK Stack.

influx Command Language

-database name
-username username
-password password blank: prompt for password (--password '').
-host name
-execute command
-format [json|csv|column] CSV vi fixup variable for width fractional seconds:%s/\.\d\{2,9\}-05:00//
-pretty for the json format.
-precision [rfc3339|h|m|s|ms|u|ns] format of the timestamp rfc3339:ccyy-mm-ddThh:mm:ss.sssZ .Default :nanoseconds.sic
-consistency [any|one|quorum|all] Set write consistency level
-import
-path to file to import
-compressed true if the import file is compressed
-pps points per second the import will allow. default zero.
-port #### default:8086
-socket ####
-ssl Use https
-type [influxql|flux]shell
-unsafeSsl when connecting to the cluster using https and not use SSL verification.
-version on Mac 2021-02-12 1.8.4 ,,, v1.7.6 [2019-04-16]

connect host:port connects to another node
auth prompts for username and password
use db_name
pretty toggles pretty print for the json format
chunked turns on chunked responses from server
chunk size size 0 to reset to the default
format [json| csv | column ] format of the server responses
CSV vi fixup variable for width fractional seconds:%s/\.\d\{2,9\}-05:00//
precision [rfc3339|h|m|s|ms|u|ns] format of the timestamp
consistency [any|one|quorum|all sets write consistency level
history command history
settings Example:
Setting           Value
--------          --------
Host              localhost:8086
Username          
Database          ruuvi
RetentionPolicy            see SHOW RETENTION POLICIES on ruuvi
Pretty            false
Format            column
Write Consistency all 
Chunked           true
Chunk Size        0 
Write Consistency number of nodes that must confirm the write. If the requirement is not met the return value will be either partial write if some points in the batch fail or write failure if all points in the batch fail.
$INFLUXDB_GRAPHITE_CONSISTENCY_LEVEL see the Query String Parameters for Writes
clear settings such as database or retention policy.
# Clear the database context
clear database
clear db

# Clear the retention policy context
clear retention policy
clear rp 
exit |quit|^d
show [databases | series | measurements | tag keys | field keys ]

SQL-like query language named InfluxQL

Command line editing on InfluxDB shell version: 1.8.4.
Control characters:
^a goes to beginning of line, ^← back a work, ^b back a character, ^→ forward a word, ^e end of line,
^u erase to beginning of line, ^w erase previous word, ^d delete under cursor, ^k erase to end. of line,
^L clearScreen, ^r reverse_Incremental_search, ^y yank from delete buffer.


Measurement names, tag keys, tag values, field keys, and field values are case sensitive.

Numerical field values are floats unless they include a trailing i

Use " (quotes) not ' (apostrophes) (don't use tz('EST') use America/New_York or something from this list.
Not timestamps nor boolean (true, false)


influx Command Line Intrepreter queries the database.(May be slow if on same system as database being heavely upated.)

Keywords

ALTER CREATE DELETE WRITE DROP INSERT
QUERY READ
SELECT FROM INTO GROUP BY WHERE LIMIT OFFSET SLIMIT ON ORDER ASC DESC
ALL ANY AS
DESTINATIONS DIAGNOSTICS CONTINUOUS DATABASE DATABASES DISTINCT
DURATION BEGIN END EVERY EXPLAIN FIELD FOR
GRANTS GROUPS IN
INF
KEY DEFAULT KEYS KILL
SHOW MEASUREMENT MEASUREMENTS NAME
PASSWORD GRANT REVOKE POLICY POLICIES PRIVILEGES
QUERIES REPLICATION RESAMPLE RETENTION
SERIES SET SHARD SHARDS
SOFFSET STATS SUBSCRIPTION SUBSCRIPTIONS TAG
TO USER USERS VALUES WITH

influx 
>SHOW DATABASES
name: databases
_internal      ruuvi     NOAA_water_database
>q
It an be run from another system using
influx -host dbhosst

ERR: no data received The database is not running.

  influx -database ruuvi 
  Connected to http://localhost:8086 version 1.7.4 
  InfluxDB shell version: 1.7.6 as of 4/25/19 Raspberry Pi 
  >use ruuvi 
>show FIELD KEYS name: ruuvi_measurements fieldKey fieldType -------- --------- These (gray) keys are calculated values included by default with ruuvi-collector.properties:storage.values=extended They can be excluded with =raw More info is at Packet Formats
absoluteHumidity float accelerationAngleFromX float accelerationAngleFromY float accelerationAngleFromZ float accelerationTotal float
accelerationX float accelerationY float accelerationZ float batteryVoltage float airDensity float dewPoint float equilibriumVaporPressure float humidity float measurementSequenceNumber integer movementCounter integer pressure float rssi integer temperature float txPower integer >show tag keys name: ruuvi_measurements tagKey ------ dataFormat mac
>show measurements name: measurements name ---- ruuvi_measurements > show series key --- ruuvi_measurements,dataFormat=3,mac=C7103C6824C2 ruuvi_measurements,dataFormat=3,mac=D2503AFE1A96 ruuvi_measurements,dataFormat=3,mac=DC4B596ED18B ruuvi_measurements,dataFormat=3,mac=E4D56DEC6E29 ruuvi_measurements,dataFormat=4,mac=C7103C6824C2 ruuvi_measurements,dataFormat=5,mac=C3F5C373450A ruuvi_measurements,dataFormat=5,mac=C4D8A4A90981 ruuvi_measurements,dataFormat=5,mac=C876E596B2C3 ruuvi_measurements,dataFormat=5,mac=D0FD6D6506DC ruuvi_measurements,dataFormat=5,mac=D2503AFE1A96 ruuvi_measurements,dataFormat=5,mac=D3517872EC0F ruuvi_measurements,dataFormat=5,mac=D6F3DADAC85E ruuvi_measurements,dataFormat=5,mac=DC4B596ED18B ruuvi_measurements,dataFormat=5,mac=DCDF6E338D04 ruuvi_measurements,dataFormat=5,mac=E49ED586E4CE ruuvi_measurements,dataFormat=5,mac=E4D56DEC6E29 ruuvi_measurements,dataFormat=5,mac=E9383FDD20BC ruuvi_measurements,dataFormat=5,mac=F2C0C643AD03 ruuvi_measurements,dataFormat=5,mac=F7B7744722AB ruuvi_measurements,dataFormat=5,mac=F7FA744A1E1A



SELECT COUNT( * | field_key | field_key,tag_key | /regular_expression/ )
        [INTO ] 
            FROM 
                [ WHERE ] 
                    [ GROUP BY [* | tag_key[,tag_key]]] 
                                  [ ORDER BY time ] 
                                      [ LIMIT ] 
                                          [ OFFSET] 
                                               [ SLIMIT ] 
                                                      [ SOFFSET ] 
                                                              [ tz('time_zone') ]
For field_keys and tag_key with the same name use: _key ::[field|tag ]

time   = , <> , != , > , >= , < or <= > now() -duration_unit : w d h m s ms u ns No month code.
All time in InfluxDB is UTC. For EasternTime use: tz('America/New_York)

Example if tz is specified:
   'yyyy-mm-dd[Thh:mm:ss-hh:00'

'2021-03-23T00:10:00-04:00'

'2021-03-23'
'yyyy-mm-dd[ hh:mm:ss[.thmuuunnn ]'

'yyyy-mm-dd[Thh:mm:ss[.thmuuunnnZ']

… time > '2019-03-26' and time  <='2019-03-26 17:01:00'

… time > '2019-03-26T17:00:08.960Z' limit 1
time                     floor
----                     -----
2019-03-26T17:00:08.964Z 44

… time > '2019-03-26T17:00:08.965Z' limit 1
time                     floor
----                     -----
2019-03-26T17:00:19.062Z 44 

… time >= now()-2h GROUP BY time(10m) requires at least one aggregate function.

MEAN( ) from ruuvi_measurements GROUP By time … for each time(12m) interval : faster too!
SELECT MEAN(batteryVoltage) FROM ruuvi_measurements WHERE … GROUP BY * ,time(12m) LIMIT 2 ;


SELECT round( (32+( (9/5)*(temperature)) )*10 )/10 , mean(batteryVoltage)*100 as volts FROM ruuvi_measurements 
    WHERE time > :dashboardTime: AND time < :upperDashboardTime: AND 
          "mac"='E4D56DEC6E29'  
            group by  *,time(6h)

now() - 7d

where does not support or for multiple time ranges.


Examples:

Command, suitible to include in a script, to display the time(using Eastern Standard Time zone) of the most recent (last) temperature , etc:
  influx -precision rfc3339 -database ruuvi  
select mac, round( (32+( (9/5)*(temperature)) )*10 )/10 from ruuvi_measurements where time > now() -2m group by mac tz('America/New_York')
From a specfic ruuvi tag.
 
select temperature from ruuvi_measurements where time > now() - 15m  AND mac='D3517872EC0F'  limit 10 
select temperature from ruuvi_measurements where time > '2019-02-19' AND mac='D3517872EC0F'   limit 10 
select temperature from ruuvi_measurements where time > '2019-02-19T04:08:00Z' AND mac='D3517872EC0F'   limit 10 
All macs with temperature converted to fahrenheit
 select mac,ceil(temperature*9/5)+32 from ruuvi_measurements  where time > now()-1h group_by mac tz('America/New_York') 
From Command Line
influx -precision rfc3339 -database ruuvi -execute "select  round( (32+( (9/5)*(temperature)) )*10 )/10 from ruuvi_measurements 
                                                        where mac='DC4B596ED18B' tz('America/New_York')"
Non-interactive query database "metrics" and pretty print json:
     influx -database 'metrics' -execute 'select * from cpu' -format 'json' -pretty 

Connect to a specific database and set database context(to defaults)

 influx -database 'metrics' -host 'localhost' -port '8086' 


cURL connects to a running database engine>
Either can be run from a remote system

 curl --silent --show-error --get 'http://pi93graf:8086/query?' --data-urlencode "db=ruuvi" --data-urlencode \
"q=SELECT mac,last(temperature) FROM ruuvi_measurements where mac='DC4B596ED18B' 
                                    limit 3 tz('America/New_York') "  
{"results":[{"statement_id":0,"series":[{"name":"ruuvi_measurements", "columns":["time","mac","last"], "values":[["2019-05-22T01:43:53.159467957-04:00","DC4B596ED18B",16.18]]}]}]}

curl --silent --show-error --connect-timeout 6 --get 'http://pi93graf:8086/query?' \
   --data-urlencode "db=ruuvi" \
   --data-urlencode \
  "q=SELECT mac,round( (32+( (9/5)*(temperature)) )*10 )/10 FROM ruuvi_measurements group by mac tz('America/New_York') " |\
 sed "s/name.:.ruuvi_measurements/  \\n/g; s/.columns.:..time.,.mac.,.//g; s/.......-..:..//g" |\
 sed "s/0000000001//g; s/99999999999//g ;  s/\[/\n[/g" 
# to get it to be more human readable.
curl  --silent --show-error --get 'http://localhost:8086/query?pretty=true' --data-urlencode "db=ruuvi" --data-urlencode \
    "q=SELECT rssi FROM ruuvi_measurements limit 3"  
{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "ruuvi_measurements",
                    "columns": [
                        "time",
                        "rssi"
                    ],
                    "values": [
                        [
                            "2018-03-25T00:23:19.564Z",
                            -54
                        ],
                        [
                            "2018-03-25T00:23:23.63Z",
                            -59
                        ],
                        [
                            "2018-03-25T00:23:28.299Z",
                            -50
                        ]
                    ]
                }
            ]
        }
    ]
}

To make this more human readable :
| sed 's/},{/\n/g; s/"//g; s/\[//g ; s/]/\n/g; s/name:ruuvi_measurements,//g; s/columns://g; '\ 's/values://g ; s/{mac://g; s/-0.:00//g' curl --get 'http://localhost:8086/query?' --data-urlencode "db=ruuvi" --data-urlencode "q=SELECT rssi FROM ruuvi_measurements limit 3" {"results":[{"statement_id":0,"series":[{"name":"ruuvi_measurements", "columns":["time","rssi"], "values":[["2018-03-25T00:23:19.564Z",-54],["2018-03-25T00:23:23.63Z",-59],["2018-03-25T00:23:28.299Z",-50]]}]}]}
Additional examples:
influx -precision rfc3339 -database ruuvi  #  ccyy-mm-ddThh:mm:ssZ

select mac,ceil(temperature*9/5)+32 from ruuvi_measurements  where time > now()-15m group by mac 
                                                                                        limit 10 tz('America/New_York') 

name: ruuvi_measurements tags: mac=D3517872EC0F time mac ceil ---- --- ---- 2018-12-28T13:34:11.836-05:00 D3517872EC0F 56 2018-12-28T13:34:21.946-05:00 D3517872EC0F 56 2018-12-28T13:34:32.029-05:00 D3517872EC0F 56 name: ruuvi_measurements tags: mac=E9383FDD20BC time mac ceil ---- --- ---- 2018-12-28T13:34:20.964-05:00 E9383FDD20BC 75 2018-12-28T13:34:31.116-05:00 E9383FDD20BC 75 2018-12-28T13:34:41.268-05:00 E9383FDD20BC 75 select LAST(temperature) from ruuvi_measurements where mac='DC4B596ED18B' tz('America/New_York') (Not ET, not EDT ) name: ruuvi_measurements time last ---- ---- 2018-12-03T20:40:28.217-05:00 24.41 select ceil((temperature*9/5)+32) from ruuvi_measurements where time > 1545583683677000000 tz('America/New_York') 2018-12-23T11:48:13.764-05:00 41 2018-12-23T11:48:23.838-05:00 41 2018-12-23T11:48:33.939-05:00 41 … 2018-12-23T12:11:50.314-05:00 42 2018-12-23T12:12:00.42-05:00 42 note ugly time when ms is nn0 2018-12-23T12:12:11.032-05:00 42 select min(rssi), mean(rssi), max(rssi), STDDEV(rssi ),max( movementCounter) FROM ruuvi_measurements where time > now()-7d and mac='D3517872EC0F' tz('America/New_York') name: ruuvi_measurements time min mean max stddev max_1 ---- --- ---- --- ------ ----- 2023-06-19T11:59:58.524301933-04:00 -104 -96.18324607329843 -86 4.5564219500061265 157 select min(rssi), mean(rssi), max(rssi), STDDEV(rssi ),max( movementCounter) FROM ruuvi_measurements where time > '2023-06-10' and mac='D3517872EC0F' tz('America/New_York') name: ruuvi_measurements time min mean max stddev max_1 ---- --- ---- --- ------ ----- 2023-06-10T00:00:00.000000001-04:00 -105 -96.39492753623189 -59 5.017194716767061 157 select min(rssi), mean(rssi), max(rssi), STDDEV(rssi ),max( movementCounter) FROM ruuvi_measurements where time > '2023-06-02T10:27:00-04:00' and mac='D3517872EC0F' tz('America/New_York') time is oldest in range time min mean max stddev max_1 ---- --- ---- --- ------ ----- 2023-06-02T10:27:00.000000001-04:00 -105 -96.39492753623189 -59 5.017194716767061 157 select temperature, absoluteHumidity, pressure FROM ruuvi_measurements where mac='D3517872EC0F' and time > now()-2d and rssi> -70 limit 2; name: ruuvi_measurements time temperature absoluteHumidity pressure ---- ----------- ---------------- --------------- 2018-03-22T17:05:14.741Z 6 4.064597097450367 99300 2018-03-22T17:06:15.745Z 6 4.064597097450367 99300 select temperature, absoluteHumidity,batteryVoltage, pressure, txPower from ruuvi_measurements where mac='D3517872EC0F' and batteryVoltage>0 limit 2 time temperature absoluteHumidity batteryVoltage pressure txPower ---- ----------- ---------------- -------------- -------- ------- 2018-06-06T17:53:25.336Z 49.86 40.90683320213987 3.001 99442 ### last entry as of 11/30/18 2018-06-06T17:53:36.438Z 49.83 40.84931173861518 3.019 99454 ### notice no txPower values Other MACs : E511D11ECBB8, E6C3BE6F656C , FB0ECBEF7354, F7FA744A1E1A, DFC8B0FE5CC0 D3517872EC0F lines wrapped and precision edited for breivity (ed) select * from ruuvi_measurements where mac='D3517872EC0F' and time > 154079 and rssi> -70 limit `; name: ruuvi_measurements time absoluteHumidity accelerationAngleFromX accelerationAngleFromY accelerationAngleFromZ accelerationTotal ---- ---------------- ---------------------- ---------------------- ---------------------- ----------------- 1540249289169000000 8.624138716002781 76.08684542427619 14.79288467670658 85.07363877795116 0.9898070519045619 accelerationX accelerationY accelerationZ airDensity batteryVoltage dataFormat ------------- ------------- ------------- ---------- -------------- ---------- 0.238 0.957 0.085 1.2378516828652366 2.929 3 dewPoint equilibriumVaporPressure humidity mac measurementSequenceNumber movementCounter pressure -------- ------------------------ -------- --- ------------------------- --------------- -------- 8.66 1121.3290262788335 100 D3517872EC0F 1004 86 rssi temperature txPower ---- ----------- ------- -61 8.66 4 select temperature,humidity,batteryVoltage, rssi from ruuvi_measurements where mac='D3517872EC0F' order by time limit 4 name: ruuvi_measurements time temperature humidity batteryVoltage rssi ---- ----------- -------- -------------- ---- 1540249341135000000 8.65 100 2.929 -76 1540249351743000000 8.65 100 2.929 -62 1540249361841000000 8.66 100 2.923 -64 1540249371940000000 8.64 100 2.923 -78 select mac, temperature, rssi from ruuvi_measurements order by time limit 6 name: ruuvi_measurements time mac temperature rssi ---- --- ----------- ---- 1540249289169000000 D3517872EC0F 8.66 -61 1540249290475000000 F2C0C643AD03 21 -92 1540249299762000000 D3517872EC0F 8.65 -76 1540249301098000000 F2C0C643AD03 21 -93 1540249309853000000 D3517872EC0F 8.65 -64


into

SELECT_clause INTO FROM_clause [WHERE_clause] [GROUP_BY_clause]

Copy data from one database to another.
The backreference syntax (:MEASUREMENT) maintains the source measurement names in the destination .
When copying large amounts of data, avoid running out of memory by running INTO queries with different measurements or time boundaries with the WHERE.

Example: SELECT "water_level" INTO "h2o_feet_copy_1" FROM "h2o_feet" WHERE "location" = 'coyote_creek'.
h2o_feet_copy_1 is a new new measurement
Result displays number of points and a meaningless timestamp.

downsampling

SELECT MEAN("water_level") INTO "all_my_averages" FROM "h2o_feet"
          WHERE "location" = 'coyote_creek'
          AND time >= '2015-08-18' AND time <= '2015-08-18' GROUP BY time(12m)

This creates averages over each 12 minute period and takes a while!


Aggregations

With text fields (like MAC) returns null
COUNT( don't use *
          select  count(batteryVoltage) from ruuvi_measurements where  time >= now()-3h tz('America/New_York')
          name: ruuvi_measurements
          ------------------------
          time                count
          2018-12-08T20:50:15.11-05:00    6125
DISTINCT( cannot be combined with other functions or fields, not even another DISTINCT . count(distinct( field)) is OK
Will report the earliest time if a range is specified.
select distinct(batteryVoltage) from ruuvi_measurements where
                                    mac = 'E49ED586E4CE' and time < '2020-08-01' and time > '2020-05-01' 
name: ruuvi_measurements
time                           distinct
----                           --------
2020-05-01T00:00:00.000000001Z 2.929
2020-05-01T00:00:00.000000001Z 2.935
2020-05-01T00:00:00.000000001Z 2.917
2020-05-01T00:00:00.000000001Z 2.911
INTEGRAL( [ * | * average
INTEGRAL( field_key |
   /regular_expression/ ]
                [
, unit ]
area under the curve for subsequent field values and converts those results into the summed area per unit.
MEAN( no function AVERAGE MEDIAN( half data lower MODE( most frequent.
STDDEV( SUM(
SPREAD( difference between the minimum and maximum

Selectors

Selecting a field and a selected field, value for both fields will be from the row of the selected field. For example:
2023-01-13T16:48:17.121272389-05:00 21.79       3.091
2023-01-13T16:49:24.152548228-05:00 21.78       3.067
2023-01-13T16:50:27.597212999-05:00 21.8        3.079
2023-01-13T16:51:29.770300218-05:00 21.82       3.074
2023-01-13T16:52:34.458392959-05:00 21.84       3.0730000000000004

select temperature,min(batteryVoltage)  from ruuvi_measurements  tz('America/New_York')
time                                temperature min
2023-01-13T07:52:16.446954713-05:00 21.38       3.0730000000000004

When selection returns values from different rows for the different fields 1969-12-31T19:00:00-05:00 is returned as the time.
select first(temperature),last(batteryVoltage)  from ruuvi_measurements  tz('America/New_York')
time                      first last
1969-12-31T19:00:00-05:00 26.49 2.486
SAMPLE( field,n randomly select values TOP( field,n greatest n values
cannot be used with another function (not even bottom
PERCENTILE( field,nvalue that is larger than n percent of the field values BOTTOM( field,n smallest n values
cannot be used with another function (not even top
MIN( FIRST( oldest
select FIRST(temperature) from ruuvi_measurements where mac='D48B9C6C230E' 
name: ruuvi_measurements
time                     first
----                     -----
2018-10-03T01:19:46.678Z 25.04
MAX( LAST( newest
select LAST(temperature) from ruuvi_measurements where mac='D48B9C6C230E' 
name: ruuvi_measurements
time                     last
----                     ----
2018-12-02T21:33:26.728Z 23.52
 select count(batteryVoltage),percentile(batteryVoltage,10), min(batteryVoltage),mean(batteryVoltage),max(batteryVoltage),stddev(batteryVoltage) 
    from ruuvi_measurements where  batteryVoltage<1.78 and time > '2021-01-01' and mac='E9383FDD20BC' tz('America/New_York')
name: ruuvi_measurements
time                                count percentile min   mean    max   stddev
----                                ----- ---------- ---   ----    ---   ------
2021-01-01T00:00:00.000000001-05:00 16    1.743      1.729 1.76225 1.778 0.013542525613784159

select mac,ceil(pressure/100),ceil(batteryVoltage*100)/100,ceil(temperature*9/5)+32,ceil(humidity) 
    from ruuvi_measurements  
    where time > NOW()-1m  group by mac limit 5 tz('America/New_York') 

Transformations

CEILING( rounded up ROUND( FLOOR( rounded down
CUMULATIVE_SUM(   
DERIVATIVE( unit: 1s, nonNegative: true, columns: ["_value"], timeColumn: "_time"
returns N-1 values
NON_NEGATIVE_DERIVATIVE( [NON_]NEGATIVE_DIFFERENCE(  
HISTOGRAM( MOVING_AVERAGE( 
ELAPSED(
measurementUpdateLimit=30000

select elapsed(humidity,1s) from ruuvi_measurements where time > now() -5m group by mac limit 3  tz('America/New_York')
tags: mac=C7103C6824C2
time                                elapsed
----                                -------
2019-12-07T18:44:12.041362137-05:00 32
2019-12-07T18:44:46.980645189-05:00 34
2019-12-07T18:45:14.355036496-05:00 27

tags: mac=D6F3DADAC85E
2019-12-07T18:44:28.991358158-05:00 36
2019-12-07T18:45:01.200742424-05:00 32
2019-12-07T18:45:33.299000051-05:00 32

tags: mac=E9383FDD20BC
2019-12-07T18:44:15.1649262-05:00   39
2019-12-07T18:44:46.980645189-05:00 31
2019-12-07T18:45:25.192936173-05:00 38
Predictors
HOLT_WINTERS(

sigQUIT (usually ^\) while a query is running causes influx to output partial results like:
ERR: -12-31T00:31:48.091-05:00","D3517872EC0F",33],
["2018-12-31T00:31:58.171-05:00","D3517872EC0F",33],["2018-12-31T00:32:08.251-05:00","D3517872EC0F",33],
 ["2018-12-31T00:32:18.359-05:00","D3517872EC0F",33],["2018-12-31T00:32:28.463-05:00","D3517872EC0F",33],
  ["2018-12-31T00:32:38.566-05:00","D3517872EC0F",33],["2018-12-31T00:32:48.679-05:00","D3517872EC0F",33],
    ["2018-12-31T00:34:39.727-05:00","D3517872EC0F",33],["2018-12-31T00:34:49.818-05:00","D3517872EC0F",33], ["2018-12-31T00:35:00.396-05:00"…


Retention Policy

Unique per database, define: When a database is created, the default is autogen with infinite duration, replication factor of 1, and shard group duration of 7 days (7*24=168h).

ALTER [CREATE] RETENTION POLICY retention_policy_name ON database_name
   DURATION duration
  REPLICATION n
   [SHARD DURATION sduration] [DEFAULT]

GornellVT
 SHOW RETENTION POLICIES on ruuvi
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true
> alter retention policy autogen on ruuvi DURATION 18240h
> SHOW RETENTION POLICIES on ruuvi
name    duration   shardGroupDuration replicaN default
----    --------   ------------------ -------- -------
autogen 18240h0m0s 168h0m0s           1        true

> SHOW RETENTION POLICIES on ruuvi
name    duration shardGroupDuration replican default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

alter retention policy autogen on ruuvi DURATION 4320h   # 180 days 1/2 year,  (365+25)= 9360h (365*2+30)= 18240h
autogen 4320h0m0s 168h0m0s           1        true

SHOW SERIES [ON database_name] [FROM_clause]
                [WHERE tag_key operator [ 'tag_value' | regular_expression]] [LIMIT_clause] [OFFSET_clause]

SHOW MEASUREMENTS [ON database_name] [WITH MEASUREMENT regular_expression]
                 [WHERE tag_key operator ['tag_value' | regular_expression]] [LIMIT_clause] [OFFSET_clause

SHOW TAG KEYS [ON database_name] [FROM_clause]
                [WHERE tag_key operator ['tag_value' | regular_expression]] [LIMIT_clause] [OFFSET_clause]

SHOW TAG VALUES [ON database_name][FROM_clause] WITH KEY [ [operator "tag_key" | regular_expression] | [IN ("tag_key1","tag_key2")]]
                [WHERE tag_key operator ['tag_value' | regular_expression]] [LIMIT_clause] [OFFSET_clause]

SHOW FIELD KEYS [ON database_name] [FROM measurement_name]


influxd daemon (service)

Is influxd running?
curl --connect-timeout 2 --head http://localhost:8086/ping
or
curl --connect-timeout 2 --head http://pi93graf:8086/ping
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 75c9524a-7d8c-11e9-9827-b827eb1c5b93
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.6
X-Request-Id: 75c9524a-7d8c-11e9-9827-b827eb1c5b93
Date: Thu, 23 May 2019 18:56:23 GMT   current time
Ommitting the ping returns
HTTP/1.1 404 Not Found 
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.9
Date: Mon, 30 Dec 2019 21:52:23 GMT
Content-Length: 19

Starting may take 40 seconds! on pi zero

         sudo service influxdb start    or
         sudo systemctl restart influxdb
not: sudo systemctl reload influxdb
      Failed to reload influxdb.service: Job type reload is not applicable for unit influxdb.service.…

Interactively (shows errors):
influxd run -config /etc/influxdb/influxdb.conf.yymmdd

Better yet:
sudo /usr/lib/influxdb/scripts/influxd-systemd-start.sh # backgrounds influxd

influxd [[command] [arguments]]

commands :

run DEFAULT
Does NOT check if there is an existing instance running!
-config path Default $INFLUXDB_CONFIG_PATH, ~/.influxdb/influxdb.conf, or /etc/influxdb/influxdb.conf
Disable the loading of a configuration file by using /dev/null(Why would you?).
-pidfile path Write process ID to a file. Useful for nice
/usr/lib/influxdb/scripts/influxd-systemd-start.sh includes echo $PID > /var/lib/influxdb/influxd.pid
-cpuprofile path Write CPU profiling information to a file.
-memprofile path Write memory usage information to a file.
systemctl status influxdb
icpu=`date +/var/log/influx_cpu_%y%m%d.%H%M`
imem=`date +/var/log/influx_mem_%y%m%d.%H%M`

sudo influxd run -cpuprofile $icpu -memprofile $imem 

systemd uses : /lib/systemd/system/influxdb.service
ExecStart=/usr/lib/influxdb/scripts/influxd-systemd-start.sh

Which includes: Restart=on-failure , RestartSec=600 ,
config display resultant configuration
Example with error: (influxd halts).
Merging with configuration at: /etc/influxdb/influxdb.conf
config: parse config: Near line 3 (last key parsed ''): bare keys cannot contain '\n'
config: parse config: Near line 2 (last key parsed ''): expected a top-level item to end with a newline, comment, or EOF, but got 't' instead Returns rc=1 (unless piped to more!)

An unknown (or mispelled !) keyword with or with a value does NOT report an error.

backup extracts a snapshot of a data node
restore uses a snapshot of a data node to rebuild a cluster
help influxd [command] -help for more information.
version

Disable the _internal database in production!
To disable the _internal database, store-enabled = false under the [monitor] section of the InfluxDB configuration file.

show stats for 'httpd' |

show stats for 'indexes' 
memoryBytes
-----------
267600



influxd config | more # takes nearly 3 minutes~!
Merging with configuration at: /etc/influxdb/influxdb.conf
reporting-disabled = false
bind-address = "127.0.0.1:8088"
[meta] dir = "/var/lib/influxdb/meta" retention-autocreate = true logging-enabled = true [data] dir = "/var/lib/influxdb/data" index-version = "inmem" wal-dir = "/var/lib/influxdb/wal" wal-fsync-delay = "5s" validate-keys = false query-log-enabled = true cache-max-memory-size = 1073741824 #1,073,741,824 1GB too big cache-snapshot-memory-size = 26214400 cache-snapshot-write-cold-duration = "10m0s" compact-full-write-cold-duration = "4h0m0s" compact-throughput = 50331648 compact-throughput-burst = 50331648 max-series-per-database = 1000000 max-values-per-tag = 100000 max-concurrent-compactions = 0 max-index-log-file-size = 1048576 trace-logging-enabled = false tsm-use-madv-willneed = false [coordinator] write-timeout = "10s" max-concurrent-queries = 0 query-timeout = "8s" log-queries-after = "0s" max-select-point = 0 max-select-series = 0 max-select-buckets = 0 [retention] enabled = true check-interval = "30m0s" [shard-precreation] enabled = true check-interval = "10m0s" advance-period = "30m0s" [monitor] store-enabled = true store-database = "_internal" store-interval = "10s" [subscriber] enabled = true http-timeout = "30s" insecure-skip-verify = false ca-certs = "" write-concurrency = 40 write-buffer-size = 1000 [http] enabled = true bind-address = ":8086" auth-enabled = false log-enabled = true suppress-write-log = false write-tracing = false flux-enabled = false [logging] format = "auto" level = "error" suppress-logo = false [[graphite]] enabled = false bind-address = ":2003" database = "graphite" retention-policy = "" protocol = "tcp" batch-size = 5000 batch-pending = 10 batch-timeout = "1s" consistency-level = "one" separator = "." udp-read-buffer = 0 [[collectd]] enabled = false bind-address = ":25826" database = "collectd" retention-policy = "" batch-size = 5000 batch-pending = 10 batch-timeout = "10s" read-buffer = 0 typesdb = "/usr/share/collectd/types.db" security-level = "none" auth-file = "/etc/collectd/auth_file" parse-multivalue-plugin = "split" [[opentsdb]] enabled = false bind-address = ":4242" database = "opentsdb" retention-policy = "" consistency-level = "one" tls-enabled = false certificate = "/etc/ssl/influxdb.pem" batch-size = 1000 batch-pending = 5 batch-timeout = "1s" log-point-errors = true [[udp]] enabled = false bind-address = ":8089" database = "udp" retention-policy = "" batch-size = 5000 batch-pending = 10 read-buffer = 0 batch-timeout = "1s" precision = "" [continuous_queries] enabled = true log-enabled = true query-stats-enabled = false run-interval = "1s" [tls] min-version = "" max-version = ""
>show SERIES
key
---
ruuvi_measurements,dataFormat=3,mac=DFC8B0FE5CC0
ruuvi_measurements,dataFormat=3,mac=E6C3BE6F656C
ruuvi_measurements,dataFormat=3,mac=F7FA744A1E1A
ruuvi_measurements,dataFormat=3,mac=FB0ECBEF7354
ruuvi_measurements,dataFormat=4,mac=D3517872EC0F
ruuvi_measurements,dataFormat=4,mac=F2C0C643AD03
ruuvi_measurements,dataFormat=5,mac=E511D11ECBB8
ruuvi_measurements,dataFormat=5,mac=E6C3BE6F656C


Performance Profiles

Point browset to //http://influxhost:8086/debug/pprof /debug/pprof/

Types of profiles available:
CountProfile
1262allocs
44block
0cmdline
22goroutine
1262heap
16mutex
0profile
10threadcreate
0trace
full goroutine stack dump

Profile Descriptions:


backup

Creates a backup copy

echo $'\e[3;10;0t \e[8;38;140t'   # set window to upper left corner 0px;0px ; restore to 38c x 140c

#shutdown and disable ruuviCollector  and any applications expecting to connect nicely first
vi /home/pi/RuuviCollector/RuuviCollector # did NOT;exit 0    # Prevent running when systemd starts it.
sudo systemctl daemon-reload
sudo systemctl status ruuvicollector
sudo systemctl status influxdb

sudo systemctl stop ruuvicollector   # it's quite
sudo systemctl status ruuvicollector

Jun 07 16:10:00 pi93graf systemd[1]: Stopping RuuviCollector...
* ruuvicollector.service - RuuviCollector
   Loaded: loaded (/lib/systemd/system/ruuvicollector.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) since Sun 2023-10-22 17:38:15 EDT; 2min 53s ago
  Process: 4876 ExecStart=/home/pi/RuuviCollector/RuuviCollector (code=exited, status=0/SUCCESS)
 Main PID: 4876 (code=exited, status=0/SUCCESS)
time influxd backup -portable|-db dbname [options] path

Exactly one backup path is required and it will be created.

-db name default:with -portable all databases are backed up
-portableUse unless the legacy backup is required.
-host host:port back up from. Defaults 127.0.0.1:8088 i.e.local.
-rp name Retention policy default: all retention policies are used
-start ccyy-mm-ddThh:mm:ssZ starting with ccyy-mm-ddThh:mm:ssZ
-since ccyy-mm-ddThh:mm:ssZ Points after the timestamp incremental (-start is prefered.)
-end ccyy-mm-ddThh:mm:ss.ssZ Exclude points after timestamp
Not compatible with -since
Without -start & -end results in full backup.
-shard sssss The identifier of the shard to back up. -rp is required.
-skip-errors continue if the current shard fails to backup.

Influxdb must be RUNNING!
Download shard 0 failed dial tcp [::1]:8088: connect: connection refused. Waiting 2s and retrying (0)...

pi@pi93graf:/varnew/backup $ time influxd backup  -db ruuvi -portable -start  '2022-11-21T21:00:01Z'  influxdb.221121

2022/06/09 16:12:31 backing up metastore to 220609/meta.01
2022/06/09 16:12:31 backing up db=ruuvi
2022/06/09 16:12:31 backing up db=ruuvi rp=autogen shard=1064 to 220609/ruuvi.autogen.01064.00 since 0001-01-01T00:00:00Z
2022/06/09 16:12:32 backing up db=ruuvi rp=autogen shard=1074 to 220609/ruuvi.autogen.01074.00 since 0001-01-01T00:00:00Z
… 
2022/06/09 16:17:45 backing up db=ruuvi rp=autogen shard=1953 to 220609/ruuvi.autogen.01953.00 since 0001-01-01T00:00:00Z
2022/06/09 16:17:47 backing up db=ruuvi rp=autogen shard=1956 to 220609/ruuvi.autogen.01956.00 since 0001-01-01T00:00:00Z
2022/06/09 16:17:48 backup complete:
2022/06/09 16:17:48     220609/220609/meta.01
2022/06/09 16:17:48     220609/220609/ruuvi.autogen.01064.00
2022/06/09 16:17:48     220609/220609/ruuvi.autogen.01074.00
…
2022/06/09 16:17:48     220609/220609/ruuvi.autogen.01956.00 
> du
1,536,936

gzip -v * # Use gzip to compress 40% !  takes longer than the backup!    ??????????????/
meta.00:     72.4% -- replaced with meta.00.gz
meta.01:     72.4% -- replaced with meta.01.gz
ruuvi.autogen.01064.00:   wait for it  ....   41.1% -- replaced with ruuvi.autogen.01064.00.gz
ruuvi.autogen.01074.00:  41.4% -- replaced with ruuvi.autogen.01074.00.gz
…
 du
902,036
 
rsync elsewhere, if server craps it does not help to have the backup there!
influxd
 8888888           .d888 888                   8888888b.  888888b.
   888            d88P"  888                   888  "Y88b 888  "88b
   888            888    888                   888    888 888  .88P
   888   88888b.  888888 888 888  888 888  888 888    888 8888888K.
   888   888 "88b 888    888 888  888  Y8bd8P' 888    888 888  "Y88b
   888   888  888 888    888 888  888   X88K   888    888 888    888
   888   888  888 888    888 Y88b 888 .d8""8b. 888  .d88P 888   d88P
 8888888 888  888 888    888  "Y88888 888  888 8888888P"  8888888P"
 
2022-06-09T20:04:25.043135Z info    InfluxDB starting   
                {"log_id": "0azWwHJ0000", "version": "1.8.10", "branch": "1.8", "commit": "688e697c51fd"}
2022-06-09T20:04:25.046570Z info    Go runtime  {"log_id": "0azWwHJ0000", "version": "go1.13.8", "maxprocs": 1}
run: open server: listen: listen tcp 127.0.0.1:8088: bind: address already in use
102 files ! 40% compression i.e. need nearly same amount of free space.
total 902,028KB (compressed)                           6107917 Jun  9 16:14 ruuvi.autogen.01564.00.gz
     4027 Jun  9 16:12 meta.00.gz                     7842453 Jun  9 16:14 ruuvi.autogen.01574.00.gz
     4027 Jun  9 16:12 meta.01.gz                     7334368 Jun  9 16:14 ruuvi.autogen.01584.00.gz
  9112365 Jun  9 16:12 ruuvi.autogen.01064.00.gz      7491427 Jun  9 16:14 ruuvi.autogen.01594.00.gz
 10100117 Jun  9 16:12 ruuvi.autogen.01074.00.gz      7737646 Jun  9 16:14 ruuvi.autogen.01604.00.gz
 10018412 Jun  9 16:12 ruuvi.autogen.01084.00.gz      9012170 Jun  9 16:14 ruuvi.autogen.01614.00.gz
 10093971 Jun  9 16:12 ruuvi.autogen.01094.00.gz      9919191 Jun  9 16:14 ruuvi.autogen.01624.00.gz
 …
 11135192 Jun  9 16:14 ruuvi.autogen.01514.00.gz      9909770 Jun  9 16:17 ruuvi.autogen.01944.00.gz
  8393563 Jun  9 16:14 ruuvi.autogen.01524.00.gz      9847670 Jun  9 16:17 ruuvi.autogen.01947.00.gz
  7848930 Jun  9 16:14 ruuvi.autogen.01534.00.gz     10693497 Jun  9 16:17 ruuvi.autogen.01950.00.gz
  7834470 Jun  9 16:14 ruuvi.autogen.01544.00.gz     10443978 Jun  9 16:17 ruuvi.autogen.01953.00.gz
  5055082 Jun  9 16:14 ruuvi.autogen.01554.00.gz      2344092 Jun  9 16:17 ruuvi.autogen.01956.00.gz


influxd restore

Uses backup copies from the specified PATH to restore databases or specific shards from InfluxDB OSS or InfluxDB Enterprise to an InfluxDB OSS instance.

influxd restore [-portable] [options] path

portable consumes files in an improved Enterprise-compatible format that includes a file manifest.

11/26/22 restored ruuvi started with /var/log free 1,520MB ended with 959MB i.e. 600MB consumed even thoughruuvi was alread included in db.

sudo influxd restore -metadir /varnew/backup/220609 .
Using metastore snapshot: meta.01
No other messages, no change in systemctl status influxdb

-metadir directory where backup meta is found Using metastore snapshot: meta.01
-host host:port InfluxDB OSS host to connect to where the data will be restored. Defaults to '127.0.0.1:8088'.
-db name Name of database to be restored (InfluxDB OSS or InfluxDB Enterprise)
-rp name Optional:Name of retention policy from the backup With -db db_name'
-newdb name Name of the InfluxDB OSS database `into which will be imported.
Default: -db db_name .
Must be unique to the target system.
-portable Activate the portable restore mode. Default legacy restore mode .
-newrp name Name of the retention policy to be created on the target system.
Requires '-rp ' Defaulr: -rp rp_name
-shard id optional: With '-db ' and '-rp ' Identifier of the shard to be restored.
PATH` Path to directory containing the backup files.

Notes

Datafiles must be owned/group influxdb influxdb
> sudo find /var/lib/influxdb -user root # any found need to be chown chgrp influxdb
 > cd /var/lib/influxd
/var/lib/influxdb > sudo chown -vR influxdb  * |grep -v retained
changed ownership of '0_chgrp' from root to influxdb
changed ownership of 'data/_internal/monitor/274/fields.idx' from root to influxdb
changed ownership of 'data/_internal/monitor/274' from root to influxdb
changed ownership of 'data/_internal/monitor/272/000000015-000000002.tsm' from root to influxdb 
changed ownership of 'meta/meta.db' from root to influxdb
changed ownership of 'wal/_internal/monitor/274/_00001.wal' from root to influxdb
changed ownership of 'wal/_internal/monitor/274' from root to influxdb
later:
changed ownership of 'data/ruuvi/autogen/10/000000001-000000001.tsm' from root to influxdb
changed ownership of 'data/ruuvi/autogen/5/000000001-000000001.tsm' from root to influxdb
changed ownership of 'data/_internal/monitor/276/000000010-000000001.tsm' from root to influxdb
changed ownership of 'data/_internal/monitor/276/fields.idx' from root to influxdb
changed ownership of 'wal/_internal/monitor/276/_00036.wal' from root to influxdb
changed ownership of 'wal/_internal/monitor/276/_00035.wal' from root to influxdb


InfluxDB stores all integers as signed int64 data types. The minimum and maximum are -9023372036854775808 and 9023372036854775807.
See Go builtins

Benchmark vs Elasticsearch pdf

community influxData

from raspberry pi rev B as of 18-12-14 InfluxDB shell version: 1.0.2
from pi zero 3/27/19 InfluxDB shell version: 1.7.4 , ` influx_inspect, chronograf


inport CSV data

subscriptions