InfluxDB는 InfluxData에서 개발한 오픈 소스 순차 데이터베이스입니다. Go로 작성되었으며 시계열 데이터의 고성능 쿼리 및 저장에 중점을 둡니다. InfluxDB는 스토리지 시스템의 데이터 모니터링 및 IoT 산업의 실시간 데이터와 같은 시나리오에서 널리 사용됩니다. 기술적 특징은 다음과 같습니다:
Measurement: 문자열은 레코드의 해당 의미를 나타냅니다. 예를 들어, 모니터링 데이터인 CPU_load 또는 측정 데이터인 Average_temp
tag 그룹: 레코드의 일련의 속성 정보를 나타내는 키-값 쌍의 집합으로 구성됩니다. 동일한 측정 데이터가 반드시 동일한 태그 그룹을 가질 필요는 없으며 Schema-free입니다. 태그 정보는 기본적으로 색인화되어 있습니다.
필드 그룹: 레코드의 특정 값 정보(이름 포함)를 나타내는 키-값 쌍의 집합으로도 구성됩니다. 필드 그룹에서 정의 가능한 값 유형에는 64비트 정수, 64비트 부동 소수점, 문자열 및 부울이 포함됩니다. 필드 정보는 색인화할 수 없습니다.
Timestamp: 레코드의 시간 속성입니다. 데이터 삽입 시 타임스탬프를 명시적으로 지정하지 않으면 기본적으로 데이터베이스에 저장된 타임스탬프가 레코드 입력 시간이 됩니다.
InfluxDB는 HTTP 기반 데이터 삽입 및 쿼리를 지원합니다. 또한 TCP 또는 UDP 프로토콜을 기반으로 직접 연결을 허용합니다.
InfluxDB를 사용하면 사용자는 데이터 보존 정책(Retention Policies)을 정의하여 지정된 시간 이상 저장된 데이터를 삭제하거나 다운샘플링할 수 있습니다.
influxDB 명령줄 입력
influx -precision rfc3339
InfluxDB 데이터베이스 작업
show databases
create database shhnwangjian
drop database shhnwangjian
use shhnwangjian
InfluxDB에는 테이블(테이블)이라는 개념이 없습니다. 대신 MEASUREMENTS의 기능은 기존 데이터베이스의 테이블 기능과 동일하므로 MEASUREMENTS도 호출할 수 있습니다. InfluxDB의 테이블.
• 모든 테이블 표시
SHOW MEASUREMENTS
• 새 테이블 만들기
InfluxDB에는 새 테이블을 만드는 명시적인 명령문이 없습니다. 데이터를 삽입해야만 새 테이블을 만들 수 있습니다.
insert disk_free,hostname=server01 value=442221834240i insert cpu_virtual_used_num,host=1 value=41556593150
여기서 disk_free는 테이블 이름, 호스트 이름은 인덱스(태그), value=xx는 레코드 값(필드)입니다. 레코드 값이 여러 개 있을 수 있으며, 시스템에는 추가 타임스탬프가 제공됩니다
또는 직접 쓸 수도 있습니다 데이터를 추가할 때 직접 입력하세요. 타임스탬프 입력
insert disk_free,hostname=server01 value=442221834240i 1435362189575692182
• 테이블 삭제
drop measurement disk_free
influxDB는 데이터 레코드를 직접 삭제하는 방법을 제공하지 않지만, 주로 데이터 보존 정책을 제공합니다. 데이터 보존 시간이 지정된 시간을 초과하는 경우 해당 데이터만 삭제하세요.
show retention policies on "db_name" show retention policies on cdhnm
create retention policy "rp_name" on "db_name" duration 3w replication 1 default create retention policy test on cdhnm duration 1h replication 1 default
rp_name: 정책 이름;
db_name: 특정 데이터베이스 이름
3w: 3주 저장, 3주 이전의 데이터는 다음과 같습니다. save 삭제됨, influxdb에는 h(시간), d(일), w(주)와 같은 다양한 이벤트 매개변수가 있습니다. 복제 1: 복사본 수, 일반적으로 1이면 충분합니다.
default: 기본 정책으로 설정
alter retention policy “rp_name” on “db_name” duration 30d default alter retention policy autogen on cdhnm duration 1h default
alter retention policy autogen on cdhnm duration 0h replication 1 default
drop retention policy “rp_name” on “db_name" drop retention policy test on cdhnm
select * fromcpu_virtual_used_num
데이터 삽입과 테이블 생성을 동시에
insert disk_free,hostname=server01 value=442221834240i insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.3 1557023160
influxDB 제공되지 않습니다. 이 방법은 데이터 기록을 직접 삭제하지만 주로 데이터 보존 시간을 지정하는 데 사용되는 데이터 보존 전략을 제공합니다. 지정된 시간이 초과되면 해당 데이터가 삭제됩니다. 최소 1시간 동안 새 데이터베이스 만료 정책을 생성하세요
Retention Policies create retention policy "rp_name" on "db_name" duration 3w replication 1 default retention policy duration must be at least 1h0m0s influxdb
쿼리 태그: Cluster_metric의 태그 키 표시
쿼리 필드: Cluster_metric의 필드 키 표시
InfluxDB를 사용할 때 InfluxDB 사용으로 인해 시간은 UTC이며 쿼리할 때 시간대 문제가 자주 발생합니다.
InfluxDB는 epoch_time 지원 외에도 rfc3339_date_time_string 및 rfc3339_like_date_time_string도 지원합니다.
epoch_time
일부 이론적 설명은 협정 세계시(1970년 1월 1일 목요일) 이후 경과된 시간입니다. 예를 들어, Java 프로그램에서 System.currentTimeMillis()를 사용하여 얻는 것은 이번 시간입니다. 일반적으로 밀리초 수준(ms) 정밀도, 즉 13비트 Long 형식입니다. InfluxDB에서는 타임스탬프의 정확도가 19비트 Long 유형인 나노초 수준(ns)에 도달할 수 있습니다.
rfc3339_date_time_string
rfc3339时间格式是ietf协会定义的一种时间格式,这个名字是因为它被定义在rfc3339中。感兴趣的同学可以自己查看上面的连接。InfluxDB中rfc3339的时间格式是这样的:
‘YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ’
其中nnnnnnnnn是可选的,如果不写则会被设置为000000000。注意,如果使用这种时间格式,需要使用单括号(’)将时间括起来。
rfc3339_like_date_time_string
因为rfc3339_date_time_string的格式确实比较反人类,所以InfluxDB也支持这种人类阅读更友好的格式:
‘YYYY-MM-DD HH:MM:SS.nnnnnnnnn’
其中HH:MM:SS.nnnnnnnnn是可选的,如果不填写会被设置为00:00:00.000000000。所以查询时可以设置到天、小时、分钟、秒等不同精度。这种时间格式同样要求被单括号括起来。
InfluxDB默认东时间是纳秒(ns),即19位时间戳。但是一般情况下时间精度不会这么高。所以如果使用秒级精度查询:
select * from cpu_virtual_used_num where time >= 1435333209s and time <= 1542964713s
如果使用毫秒级精度查询:
select * from cpu_virtual_used_num where time >= 1435333209000ms and time <= 1542964714000ms
如果需要使用北京时间(东八区),可以在SQL中使用tc关键字:
select * from cpu_virtual_used_num where time >= '2018-11-23 14:30:39' and time <= '2019-11-23 14:32:32' tz('Asia/Shanghai')
Timestamp时间列
既然是时间序列数据库,influxdb 的数据都有一列名为 time 的列,里面存储 UTC 时间戳。
Influxdb 时间转成北京时间:UTC time + 8 hours = Beijing time
influx -precision rfc3339 show retention policies on cdhnm alter retention policy autogen on cdhnm duration 1h default create retention policy test on cdhnm duration 1h replication 1 default drop retention policy test on cdhnm insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.9 1557045292000000000 select * from cpu_virtual_used_num where time >= '2018-11-23 14:30:39' and time <= '2019-11-23 14:32:32' tz('Asia/Shanghai') delete from cpu_virtual_used_num
切换到root用户 命令:su 输入密码:123456
启动:
sudo service influxdb start
重启:
service influxdb restart
切换到普通用户:
命令:exit
위 내용은 운영 및 유지보수 모니터링을 위한 필독서: 중요한 순간에 활용할 수 있는 반드시 알아야 할 InfluxDB 활용 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!