1. 설치
필자는 레드햇을 주로 사용하기 때문에 그에 맞춰서 정리하겠습니다.- 패키지 매니저 업데이트
cat <
- yum을 통한 설치
sudo yum install influxdb
sudo service influxdb start
만약 systemd(CentOS 7+, RHEL 7+)을 사용한다면..
sudo yum install influxdb
sudo systemctl start influxdb
2. 사용법
influx 명령어로 influxDB에 접속했다면 곧바로 데이터베이스의 기능을 사용할 수 있습니다. MySQL과 같은 RDBMS처럼 create database 명령어로 데이터베이스를 만들 수 있습니다. 그리고 use 명령어로 데이터베이스를 선택합니다.| RDB | influxDB |
|---|---|
| database | database |
| table | measurement |
| column | key |
| PK or Indexed column | tag key(only string) |
| unindexed column | field key |
| SET of index entries | series |
- tag key 와 field key
- 클라이언트 명령
| 명령어 | 설명 |
|---|---|
| use [database 이름] | 현재 데이터베이스 지정 |
| show measurements | measurement(테이블) 목록 보기 |
| show tag keys | 모든 measurement의 모든 tag key 목록 보기 |
| show field keys | 모든 measurement의 모든 field key 목록 보기 |
| show series | 모든 measurement의 서로소인 tag key 튜플의 목록 보기 |
- DB 생성
create database ui_monitoring_new
> use ui_monitoring_new
Using database ui_monitoring_new
SQL이라면 다음 순서로 테이블을 만들었겠지만, InfluxDB는 테이블이란 용어 대신 'measurements' 라는 개념을 사용한다. measurement는 별도로 생성할 필요는 없기 때문에 곧바로 데이터를 insert 하면 measurement를 사용할 수 있다.
- 데이터 입력
insert ui_monitoring_new,zon_type=ap,pagetype=hoem,site_cd=sg,page_url=/sg/ result=true,resultval=0.001
> insert ui_monitoring_new,zon_type=ap,pagetype=hoem,site_cd=sg,page_url=/sg/ result=false,resultval=1
필자 같은 경우 Node.js의 앱과 연결해서 monitoring을 하는 역할을 수행한뒤 결과값을 influxDB에 넣어주는 기능을 개발했다. 아래와 같이 호출을 하였습니다.
curl -is -XPOST "http://{IP}:{PORT}/write?db=ui_monitoring_db" --data-binary "ui_monitoring_new,zone_type=ap,pagetype=home,site_cd=sg,page_url=/sg/ result=true,resultval=0.001"
//** Send Success to InfluxDB
var influxApi = 'curl -is -XPOST "http://10.0.17.86:8086/write?db=ui_monitoring_db" --data-binary "ui_monitoring_new,zone_type=' + zoneType + ',page_type='+ pageType +',site_cd=' + siteCd + ',page_url=' + url + ' result=true,resultval=0.001"';
exec(influxApi, function(status, output) {
console.log(status);
});
- 테이블(measurement) 조회
show measurements;
name: measurements
name
----
ui_monitoring_new
- 데이터 조회
SELECT * FROM "ui_monitoring_new" LIMIT 1
필자의 경우 데이터가 많아서 LIMIT 1로 1 row만 확인하고있음.
위의 insert 쿼리에서 time이라는 값을 지정하지 않았는데도 자동으로 시간이 입력되어 있습니다. influxDB는 쿼리가 저장되는 시간을 ns(나노세컨드) 단위로 자동으로 저장하며, 당연히 UTC를 기준으로 합니다.
SELECT "result" FROM "ui_monitoring_new" LIMIT 1
name: ui_monitoring_new
time result
---- ------
1526630150707300172 true
데이터 값이 많은 경우, 위와 같이 특정 컬럼만 가져올 수 있습니다.
- 데이터 추가
measurement에 없는 값(ami_ck,ami_id)을 가지는 데이터를 하나만 더 넣어보자.
insert ui_monitoring_new,ami_ck=1,ami_id=1,zon_type=ap,pagetype=hoem,site_cd=sg,page_url=/sg/ result=true,resultval=0.001
놀랍게도 measurement의 스키마가 하나 더 늘어났고, 없는 부분은 공백처리 되어있다. 이로부터 InfluxDB는 스키마가 없는 형태로 동작한다는 것을 알 수 있다. 어떻게 보면 MongoDB와도 매우 유사하다고 볼 수도 있는데, 완벽한 비정형 데이터는 아니라는 점에서 차이를 가진다.
3. REST API
필자가 위에서 설명했듯이, 필자의 프로젝트에서는 monitoring app(Node.js)가 모니터링 수행을 한 후, 결과값을 InfluxDB에 쌓고있다. InfluxDB에 쌓을 시에, REST API를 통해서 넣고, 다음과 같이 insert합니다.curl -is -XPOST "http://{IP}:{PORT}/write?db=ui_monitoring_db" --data-binary "ui_monitoring_new,zone_type=ap,pagetype=home,site_cd=sg,page_url=/sg/ result=true,resultval=0.001"
[결과값]
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 9d7b7fcc-b291-11e9-ae08-02435dcfe90f
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.7
X-Request-Id: 9d7b7fcc-b291-11e9-ae08-02435dcfe90f
Date: Tue, 30 Jul 2019 06:16:49 GMT
4. 마치며
필자가 DevOps 업무를 하면서 처음 시도했던것이 influxDB에 measurement를 만들고, 데이터를 넣는 일을 했었습니다. pupeeteer를 활용한 monitoring시스템을 구축하고, 그 결과값을 influxDB에 쌓은뒤, grafana로 대시보드를 보여주었는데, 손쉽게 모니터링 시스템을 구축할 수 있었습니다. 개인적인 생각으로는 적절한 모니터링 툴이 없는 스타트업의 경우 약간의 노력으로 왠만한 상용 솔루션 부럽지 않은 모니터링 툴을 만들 수도 있습니다. 뭔가 모니터링 하고자하는 니즈가 있는 부서의 담당 개발자에게 데이터 수집 방법 및 Grafana로 대시보드 그리는 법 포함해서 30분 정도만 교육하면 얼마 안되서 바로 만들어서 활용하는 식입니다. 이처럼 시스템모니터링 용도뿐 아니라 서비스 반응을 실시간으로 모니터링하여 개선점 도출, 수정, 테스트, 배포 프로세스가 스피드있게 진행되어야 하는 DevOps 환경에서는 더욱 유용할 것입니다. 다음시간에는 influxDB + grafana 연계를 통한 대시보드 구현에 대해서 소개하겠습니다. 워니즈 블로그 워니즈 깃헙5. 2026년 지금 설치한다면: InfluxDB 2.x·3.x로 달라진 것
이 글의 설치·조회 명령은 InfluxDB 1.x 기준입니다. InfluxData 공식 문서(docs.influxdata.com)를 확인해보면 그사이 메이저 버전이 두 번 더 나왔습니다.
- 쓰기 API가
/write?db=이름에서 InfluxDB 2.x의/api/v2/write?org=조직&bucket=버킷&precision=ns로 바뀌었습니다. database 대신 bucket·org 개념을 쓰고, 익명 접속 대신 토큰 인증이 기본입니다. - 지금은 InfluxDB 3(Core/Enterprise)까지 나와 있고, 쿼리 언어도 InfluxQL 대신 SQL을 기본으로 지원합니다.
- 1.x 문서(docs.influxdata.com/influxdb/v1/)는 여전히 남아 있어 레거시 환경 참고는 가능하지만, 신규 설치라면 공식 문서가 2.x·3.x를 기준으로 안내합니다.
이 글에서 다루는 tag·field·measurement 개념 자체는 2.x에서도 그대로 쓰이지만, 설치 명령과 쓰기 API 경로는 버전에 맞춰 공식 문서를 다시 확인하시길 권합니다.
AI 활용 고지: AI 도구로 초안을 만들고 직접 실행·검증한 내용입니다.
함께 보면 좋은 글
새 글이 올라오면 Threads @wonizz.ai 에도 올립니다. 팔로우해 두면 피드에서 바로 볼 수 있습니다.