>운영 및 유지보수 >안전 >운영 및 유지보수 모니터링을 위한 필독서: 중요한 순간에 활용할 수 있는 반드시 알아야 할 InfluxDB 활용 가이드

운영 및 유지보수 모니터링을 위한 필독서: 중요한 순간에 활용할 수 있는 반드시 알아야 할 InfluxDB 활용 가이드

WBOY
WBOY앞으로
2023-06-09 13:40:491667검색

​InfluxDB란 무엇인가요?

InfluxDB는 InfluxData에서 개발한 오픈 소스 순차 데이터베이스입니다. Go로 작성되었으며 시계열 데이터의 고성능 쿼리 및 저장에 중점을 둡니다. InfluxDB는 스토리지 시스템의 데이터 모니터링 및 IoT 산업의 실시간 데이터와 같은 시나리오에서 널리 사용됩니다. 기술적 특징은 다음과 같습니다:

  • InfluxDB는 기술적 구현 측면에서 Go 언어의 특성을 완벽하게 활용하며 외부 종속성 없이 독립적으로 배포할 수 있습니다[5].
  • InfluxDB는 사용자가 데이터를 쉽게 쿼리할 수 있도록 SQL과 유사한 쿼리 언어와 일련의 내장 기능을 제공합니다.
  • InfluxDB에 저장된 데이터는 논리적으로 Measurement, 태그 그룹, 필드 그룹 및 타임스탬프로 구성됩니다.

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 데이터 테이블 작업

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

데이터 보존 정책(Retention Policies)

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이며 쿼리할 때 시간대 문제가 자주 발생합니다.

1. 시간 형식

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。所以查询时可以设置到天、小时、分钟、秒等不同精度。这种时间格式同样要求被单括号括起来。

2、调整时间戳精度

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

3、调整时区

如果需要使用北京时间(东八区),可以在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')

4、UTC时间与Beijing时间转换

Timestamp时间列

既然是时间序列数据库,influxdb 的数据都有一列名为 time 的列,里面存储 UTC 时间戳。

Influxdb 时间转成北京时间:UTC time + 8 hours = Beijing time

sql语句

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제