9.외부 시스템 연동

Edit

9.1dbcalldbcall

SQL 저장 프로시저를 호출하고 실행한 결과(결과 집합 및/또는 출력 매개변수)를 반환합니다.

문법

dbcall PROFILE {SQL_STATEMENT}
PROFILE

JDBC 연결에 사용할 프로파일을 지정합니다.

프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 JDBC 프로파일이 접속 프로파일에 통합되었습니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
{SQL_STATEMENT}

SQL 저장 프로시저를 호출하는 쿼리문을 입력합니다.

SQL 쿼리문에 콜론(:)으로 시작하는 입력 매개변수와 출력 매개변수를 정의할 수 있습니다.

출력하는 방식은 다음과 같습니다.

사용 예

1) Microsoft SQL Server에서 특정 테이블의 컬럼 구성 조회

dbcall mssql {call msdb.dbo.sp_columns("log_shipping_primaries")}

2) Microsoft SQL Server에서 id1000line 값을 사용자 정의 프로시저로 조회

set id = 1000 | dbcall mssql {call GetLine(:id, :line(varchar))}

9.2dbloaddbload

dbload 명령어는 ENT #2309 2019-11-27_10-43 일자 버전부터 사용할 수 있습니다.

입력으로 받는 쿼리 결과를 SQL 쿼리문으로 변환해 외부 SQL 서버에 입력합니다. dboutput 명령어와 동일한 기능을 수행하고, rowretry 옵션의 기본값만 다릅니다.

문법

dbload PROFILE [batchsize=NUM] [database=SCHEMA] [rowretry=t] [stoponfail=t] [type=update] table=TABLE FIELD_1[, FIELD_2, ...]
PROFILE

JDBC 연결에 사용할 프로파일을 지정합니다.

프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 JDBC 프로파일이 접속 프로파일에 통합되었습니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
batchsize=NUM

데이터베이스 배치 트랜잭션에 적용할 처리 단위를 지정합니다. 단위가 크면 한 번에 많이 커밋하므로 효율적이지만, 트랜잭션이 실패했을 때 롤백 처리량도 증가합니다. 2000을 권장합니다. 처리 단위를 지정하지 않으면 1건 단위로 커밋하므로 느릴 수 있습니다.

database=SCHEMA

접속 후 데이터베이스(혹은 스키마)를 전환하려고 할 때 지정합니다.

rowretry=t

행 단위로 재시도 여부를 설정합니다. 사용하려면 t, 사용하지 않으려면 f를 지정합니다(기본값: t). 설정하면 성능에서 손해를 볼 수 있지만 배치 트랜잭션이 실패했을 때 데이터 손실을 최소화할 수 있습니다.

stoponfail=t

실패한 쿼리 명령이 있을 때 트랜잭션의 중지 여부를 설정합니다. t로 설정하면 실패한 쿼리가 발생했을 때 트랜잭션을 중지합니다. f로 지정하면 실패한 트랜잭션을 건너뛰고 다음 트랜잭션을 실행합니다(기본값: f).

type=update

SQL 쿼리의 타입을 insert 혹은 update로 지정할 수 있습니다(기본값: insert). update로 설정하면 반드시 1개 이상의 필드를 키 컬럼으로 지정해야 합니다. SQL 데이터베이스에서 키 컬럼이 있는지 확인하고(SQL SELECT 쿼리문 수행), 키 컬럼이 없으면 INSERT 명령을, 키 컬럼이 있으면 UPDATE 명령을 수행합니다.

table=TABLE

데이터를 입력할 테이블 이름을 지정합니다.

FIELD_1[, FIELD_2, ...]

데이터베이스에 입력할 필드 이름을 구분자인 쉼표(,)로 나누어 입력합니다. 필드 이름은 대상 테이블의 컬럼 이름과 일치해야 합니다. 필드와 컬럼의 이름이 일치하지 않으면, dbload 명령문 앞에 rename 명령문을 이용해 SQL 데이터베이스의 컬럼과 이름을 일치시켜야 합니다. 필드 이름 앞에 + 기호를 붙이면 키 컬럼으로 인식합니다.

9.3dblookupdblookup

입력 레코드를 SQL 쿼리문의 플레이스홀더에 대응시켜서 실행하고, 조회되는 첫번째 레코드를 필드로 할당합니다.

문법

dblookup PROFILE [bypass=BOOLEAN_EXPR] SQL_SYNATAX
PROFILE

JDBC 연결에 사용할 프로파일을 지정합니다.

프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 JDBC 프로파일이 접속 프로파일에 통합되었습니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
bypass=BOOLEAN_EXPR

SQL 쿼리문을 실행하지 않을 조건을 불리언 표현식으로 정의합니다. 조건이 참이면 SQL 쿼리문을 실행하지 않고 출력을 내보냅니다.

bypass=BOOLEAN_EXPR은 일반적으로 조건절에 들어갈 필드 값이 존재하지 않으면 SQL을 실행하지 않도록 조건식을 구성합니다.
SQL_STATEMENT

실행할 SQL 쿼리문을 입력합니다.

SQL 쿼리문에 콜론(:)으로 시작하는 입력 매개변수를 정의할 수 있습니다.

사용 예

json "{'login':'logpresso'}"
| dblookup USERDB bypass="isnull(login)"
  select name, sex from users where login = :login

9.4dboutputdboutput

입력으로 받는 쿼리 결과를 SQL 쿼리문으로 변환해 외부 SQL 서버에 입력합니다. dbload 명령어와 동일한 기능을 수행하고, rowretry 옵션의 기본값만 다릅니다.

문법

dboutput PROFILE [batchsize=NUM] [database=SCHEMA] [rowretry=f] [stoponfail=t] [type=update] table=TABLE FIELD_1[, FIELD_2, ...]

rowretry 옵션을 제외한 나머지 항목들은 dbload 명령어를 참조하세요.

rowretry=f

행 단위로 재시도 여부를 설정합니다. 사용하려면 t, 사용하지 않으려면 f를 지정합니다(기본값: f). t로 설정하면 성능에서 손해를 볼 수 있지만 배치 트랜잭션이 실패했을 때 데이터 손실을 최소화할 수 있습니다.

9.5dbquerydbquery

외부 데이터베이스 서버를 대상으로 SQL 질의를 수행합니다.

문법

dbquery PROFILE SQL_STATEMENT
PROFILE

JDBC 연결에 사용할 프로파일을 지정합니다.

프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 JDBC 프로파일이 접속 프로파일에 통합되었습니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
SQL_STATEMENT

질의할 SQL 쿼리문을 입력합니다. JDBC를 통해 조회되는 모든 결과 집합을 키/값 쌍으로 읽어들입니다.

SQL 쿼리문에 콜론(:)으로 시작하는 입력 매개변수와 출력 매개변수를 정의할 수 있습니다.

사용 예

1) weblogs 테이블에서 100건의 로그 조회

dbquery oracle select * from weblogs where rownum <= 100

2) 입력 매개변수를 이용해 employee 테이블에서 최근 1주일 간 입사자 목록을 조회

# 입력 매개변수: created_at 
| set created_at = string(dateadd(now(), "day", -7), "yyyy-MM-dd") 
| dbquery emp select * from employee where created_at >= :created_at
MS SQL Server 2008에서 쿼리 속도를 계측한 결과는 아래와 같습니다.
- 로그프레소 서버 하드웨어 사양: Intel Core i5-2467M 1.6GHz
- DB 서버 하드웨어 사양: Intel Core i5 750 2.67GHz, RAM 4GB
- 데이터: IIS 로그 1999194건
- 쿼리: dbquery sql select * from logs
- 소요시간: 27.3초 (74,000건/초)

9.6dbscriptdbscript

SQL 스크립트를 실행해 데이터를 읽어옵니다. 이 명령어를 실행하려면 관리자 권한이 필요합니다.

문법

dbscript PROFILE [cs=CHARSET] SQL_FILE_PATH [:parameter_1 [:parameter_2] ...]
PROFILE

JDBC 연결에 사용할 프로파일을 지정합니다.

프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 JDBC 프로파일이 접속 프로파일에 통합되었습니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
cs=CHARSET

파일의 인코딩을 지정합니다(기본값: UTF-8). 인코딩 형식 이름은 IANA Charset Registry에 등록된 Preferred MIME Name 또는 Aliases에 등록된 이름을 사용합니다: https://www.iana.org/assignments/character-sets/character-sets.xhtml

SQL_FILE_PATH

실행할 SQL 스크립트 파일의 절대 경로를 입력합니다. SQL 스크립트 파일의 최대 길이는 1MB(1,048,576 bytes)를 초과할 수 없습니다.

SQL 스크립트 파일은 다음과 조건을 만족해야 합니다.
- 'SELECT' 쿼리만 사용할 수 있습니다.
- 물음표(?)를 사용하여 매개변수가 삽입될 위치를 지정할 수 있습니다.
[:parameter_1 [:parameter_2] ...]

스크립트에서 참조할 매개변수를 공백문자로 구분하여 열거합니다. 매개변수의 이름은 콜론(:)으로 시작해야 하고, 매개변수의 순서대로 SQL 파일의 플레이스홀더를 대치합니다. 매개변수는 set 명령어를 사용하여 설정하거나, 프로시저의 호출 인자를 매개변수로 넘겨받을 수 있습니다. 프로시저의 호출은 dbcall 명령어를 참조하세요.

9.7ftpftp

FTP 서버에서 파일 시스템을 탐색하거나, 쿼리 결과를 파일로 전송할 수 있습니다.

문법

파일 시스템 목록 조회

ftp PROFILE ls [encoding=CHARSET] PATH

텍스트 기반 또는 JSON 형식 파일 읽기

ftp FTP_PROFILE cat [encoding=CHARSET] [format=json] [limit=NUM] [offset=NUM] PATH

특정한 레코드의 필드 값을 텍스트, CSV, 또는 JSON 형식으로 파일 전송

ftp FTP_PROFILE put [append=t]|[overwrite=t] [encoding=CHARSET] [fields=FIELD[,FIELD,...]] [format={json|csv}] PATH
PROFILE

FTP 연결에 사용할 프로파일을 지정합니다.

프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 FTP 프로파일이 접속 프로파일에 통합되었습니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
{cat|ls|put}

FTP 세션에서 실행할 명령어를 지정합니다.

append=t

쿼리 결과를 FTP 서버에 전송할 때 사용할 수 있는 옵션으로, PATH로 지정된 파일이 있으면 파일에 이어서 씁니다. overwrite 옵션과 함께 사용할 수 없습니다.

encoding=CHARSET

문자열 인코딩 형식(기본값: UTF-8). 다음 문서에 등록된 Preferred MIME Name이나 Aliases를 사용합니다: https://www.iana.org/assignments/character-sets/character-sets.xhtml

fields=FIELD[,FIELD,...]

FTP 서버에 전송할 필드 목록을 입력합니다. 구분자로 쉼표(,)를 사용합니다.

appent=t 옵션을 사용할 때 데이터의 일관성을 유지할 수 있도록 항상 fields 옵션의 목록 순서를 동일하게 유지해주세요.
format={json|csv}

조회/전송할 파일 형식을 지정합니다. 텍스트 파일을 조회, 전송할 때에는 생략합니다.

limit=NUM

FTP 서버에서 파일을 읽어올 때 출력할 행의 개수를 입력합니다. 기본값은 무제한입니다.

offset=NUM

FTP 서버에서 파일을 읽을 때 건너뛸 행 개수를 입력합니다. 기본값은 0입니다.

overwrite=t

쿼리 결과를 FTP 서버에 전송할 때 사용할 수 있는 옵션으로, PATH로 지정된 파일이 있으면 파일을 무시하고 덮어씁니다. append 옵션과 함께 사용할 수 없습니다.

PATH

디렉터리 또는 파일의 절대 경로를 입력합니다. 전송할 때에는 디렉터리 경로가 아니라 단일 파일 경로를 입력해야 합니다. 파일을 조회할 때에 파일 경로에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다.

사용 예

1) srv 프로파일 설정 후, 원격 디렉터리 조회

ftp srv ls /data/logs

조회 결과 필드들은 각각 아래의 의미를 갖습니다:

2) logpresso.sh 파일의 첫 5행을 조회

ftp srv cat limit=5 /logpresso.sh

3) /sample.json 파일을 JSON 형식으로 파싱하여 조회

ftp srv cat format=json /sample.json

4) JMX 클래스 로딩 로그 중 LoadedClassCount, UnloadedClassCount만 /tmp/output.txt 파일에 출력

table classloading
| ftp srv put fields=UnloadedClassCount,LoadedClassCount /tmp/output.txt

5) JMX 클래스 로딩 로그를 JSON 파일로 출력

table classloading 
| ftp srv put format=json /tmp/classloading.json

6) JMX 클래스 로딩 로그 중 LoadedClassCount, UnloadedClassCount만 /tmp/output.json 파일에 출력

table classloading 
| ftp srv put format=json
  fields=LoadedClassCount,UnloadedClassCount /tmp/classloading.json

9.8hdfshdfs

HDFS를 탐색하거나, 쿼리 결과를 파일로 전송할 수 있습니다.

문법

파일 목록 조회

hdfs PROFILE {ls|lsr} PATH

파일 내용 읽기

hdfs PROFILE cat [format=csv|json|sequence] [limit=NUM] [offset=NUM] PATH

특정한 레코드의 필드 값을 텍스트, CSV, JSON 형식으로 파일 전송

hdfs PROFILE put [format=csv|json] [limit=NUM] [offset=NUM] [partition=t] PATH

특정한 레코드의 필드 값을 HDFS 시퀀스 형식으로 파일 전송

hdfs PROFILE put format=sequence [compression_type=block|record] [fields=FIELD_1,[FIELD_2,...]] [key_type=HDFS_TYPE] [key_field=KEY_FIELD] [value_type=HDFS_TYPE] [value_field=VALUE_FIELD] PATH
PROFILE

HDFS 연결에 사용할 프로파일을 지정합니다.

프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 HDFS 프로파일이 접속 프로파일에 통합되었습니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
{ls|lsr}

ls 명령어는 PATH로 지정된 경로의 파일 목록을 보여줍니다. lsrPATH로 지정한 경로의 디렉터리 뿐만 아니라 하위의 모든 디렉터리를 탐색합니다.

cat

HDFS 파일 시스템에 있는 텍스트 파일, CSV 파일, JSON 파일, HDFS 시퀀스 파일 내용을 조회합니다. format 옵션으로 지정된 파일 형식에 맞춰 파싱합니다.

put

fields 옵션으로 지정된 필드의 값들을 HDFS 파일 시스템에 파일로 전송합니다. 파일은 PATH로 지정된 경로에 생성됩니다.

compression_type=block|record

압축 형식을 지정합니다. 이 옵션이 없으면 압축하지 않습니다. record는 레코드 단위 압축, block은 블록 단위 압축을 의미합니다.

format=csv|json|sequence

조회하거나 전송할 파일 형식을 지정합니다. 텍스트 파일을 조회하거나 전송할 때에는 이 옵션을 생략합니다.

key_type=HDFS_TYPE

로그프레소의 HDFS 데이터 변환 타입에서 HDFS 타입에 정의된 타입을 지정합니다.

key_field=KEY_FIELD

키 필드 이름을 지정합니다. 설정하지 않으면 1부터 시작하는 LongWritable 카운터를 사용합니다.

limit=NUM

파일을 읽어올 때 출력할 행의 개수를 입력합니다. 기본값은 무제한입니다.

offset=NUM

파일을 읽어올 때 건너뛸 행 개수를 입력합니다. 기본값은 0입니다.

partition=t

t로 설정하면 매크로를 이용해 디렉터리 경로를 지정할 수 있습니다. 매크로를 이용하면 디렉터리나 파일 이름을 시간에 따라 변경합니다.

fields=FIELD_1,[FIELD_2,...]

put 명령으로 HDFS로 전송할 필드 목록을 입력합니다. 구분자로 쉼표(,)를 사용합니다.

value_type=HDFS_TYPE

로그프레소의 HDFS 데이터 변환 타입에서 HDFS 타입에 정의된 타입을 지정합니다.

value_field=VALUE_FIELD

값 필드 이름을 지정합니다. 설정하지 않으면 전체 필드를 하나의 MapWritable로 전송합니다.

PATH

절대 경로로 경로를 지정합니다.

설명

cat으로 파일을 읽어들일 때 PATH에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다.

put으로 파일을 전송할 때 partition 옵션을 t로 설정하면 매크로를 이용해 시간에 따라 디렉터리 및 파일 경로를 변경하도록 경로를 지정할 수 있습니다. 파티션 옵션을 지정하고 경로에 매크로를 사용하지 않으면 쿼리가 실패합니다.

사용할 수 있는 매크로는 logtimenow가 있습니다.

매크로는 중괄호 쌍({ })으로 감싸 입력합니다. 입력 예시는 사용 예 7번을 참조하세요.

로그프레소는 Java 표준 데이터 타입과 IP 주소와 같이 로그프레소에서 정의한 데이터 타입을 사용합니다. HDFS에서 데이터를 가져오거나 전송할 때 HDFS 데이터 타입에 맞춰 변환 작업을 수행합니다. 타입별 데이터 변환은 다음 표를 참조하세요.

표 9-1로그프레소와 HDFS 데이터 변환 타입

로그프레소 타입

HDFS 타입

설명

string

Text

문자열

mull

NullWritable

널(null)

bool

BooleanWritable

불리언(참/거짓)

int

IntWritable

VIntWritable

4바이트(32비트) 정수

long

LongWritable

VLongWritable

8바이트(64비트) 정수

float

FloatWritable

단정도 실수(single precision)

double

DoubleWritable

배정도 실수(double precision)

사용 예

1) vm 이름의 프로파일로 접속하여 루트 경로 파일 목록을 조회

hdfs vm ls /

보여주는 필드는 다음과 같습니다.

2) vm 프로파일로 접속하여 /tmp/LICENSE.txt 파일의 첫 행을 건너뛰고 5개 행을 조회

hdfs vm cat offset=1 limit=5 /tmp/LICENSE.txt

3) vm 프로파일로 접속하여 /tmp/malware.csv 파일에서 3개 행을 조회

hdfs vm cat format=csv limit=3 /tmp/malware.csv

4) vm 프로파일로 접속하여 /tmp/iis.json 파일에서 1개 행을 조회

hdfs vm cat format=json limit=1 /tmp/iis.json

5) vm 프로파일로 접속하여 /tmp/classloading.seq 파일에서 2개 레코드를 조회

hdfs vm cat format=sequence limit=2 /tmp/classloading.seq

6) JMX 클래스 로딩 로그 중 UnloadedClassCountLoadedClassCount/tmp/class.txt 경로에 출력

table classloading
| hdfs vm put fields=UnloadedClassCount,LoadedClassCount /tmp/class.txt

7) sys_cpu_logs 로그를 /tmp 밑의 날짜별 디렉터리에 출력

table sys_cpu_logs
| eval
  line=concat("idle: ", idle,
              ", kernel: ", kernel,
              ", user: ", user)
| hdfs vm put partition=t /tmp/{logtime:yyyyMMdd}/cpu.txt

8) JMX 클래스로딩 로그 중 LoadedClassCount, UnloadedClassCount, TotalLoadedClassCount 출력

table classloading
| hdfs vm put
  format=csv
  fields=LoadedClassCount,UnloadedClassCount,TotalLoadedClassCount
  /tmp/classloading.csv

9) JMX 클래스로딩 로그를 JSON 파일로 출력

table classloading | hdfs vm put format=json /tmp/classloading.json

10) JMX 클래스로딩 로그 전체를 HDFS 시퀀스 파일로 출력

table classloading | hdfs vm put format=sequence /tmp/classloading.seq

11) JMX 클래스로딩 로그 중 LoadedClassCount 값을 출력

table classloading
| hdfs vm put
  format=sequence
  value_type=long
  value_field=LoadedClassCount
  /tmp/classloading.seq

9.9mongomongo

몽고DB를 탐색하거나, 쿼리 결과를 파일로 전송할 수 있습니다.

문법

몽고DB 데이터베이스 목록 보기

mongo PROFILE dbs

몽고DB 컬렉션 목록 보기

mongo PROFILE [database=DB_NAME] cols

몽고DB에서 문서 검색

mongo PROFILE [database=DB_NAME] db.COL_NAME.find(["FILTER_EXPR"|null][, "PROJECTION_EXPR"])

몽고DB에 문서 입력

mongo PROFILE [database=DB_NAME] db.COL_NAME.insert()

몽고DB 문서 수정

mongo PROFILE [database=DB_NAME] db.COL_NAME.updateOne("KEY", "UPDATE")
mongo PROFILE [database=DB_NAME] db.COL_NAME.updateMany("KEY_LIST", "UPDATE_LIST")

몽고DB에서 문서 삭제

mongo PROFILE [database=DB_NAME] db.COL_NAME.deleteOne("KEY")
mongo PROFILE [database=DB_NAME] db.COL_NAME.deleteMany("KEY_LIST")
PROFILE

몽고DB 연결 프로파일을 지정합니다.

프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 몽고DB 프로파일이 접속 프로파일에 통합되었습니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
database=DB_NAME

cols 명령 또는 검색, 입력, 수정, 삭제 명령을 수행할 데이터베이스를 지정합니다.

dbs

데이터베이스 목록을 출력합니다. 출력 필드는 다음과 같습니다.

cols

데이터베이스의 컬렉션 목록을 출력합니다. database 옵션으로 지정된 데이터베이스가 있으면 해당 데이터베이스 컬렉션 목록을 보여줍니다. 데이터베이스를 지정하지 않으면 모든 데이터베이스의 컬렉션을 보여줍니다.

db.COL_NAME.find(["FILTER_EXPR"|null][, "PROJECTION_EXPR"])

COL_NAME로 지정한 컬렉션에서 문서를 조회합니다. find()는 몽고DB의 컬렉션 메서드로, 다음과 같은 매개변수로 인자를 받습니다.

find()는 몽고DB의 컬렉션 메서드입니다. 자세한 내용은 몽고 DB 레퍼런스 매뉴얼에서 db.collection.find() 메서드를 참고하세요: https://docs.mongodb.com/manual/reference/method/db.collection.find/
FILTER_EXPRPROJECTION_EXPR에서 사용할 수 있는 쿼리 연산자는 몽고 DB 레퍼런스 매뉴얼에서 Query and Projection Operators 문서를 참고하세요: https://docs.mongodb.com/manual/reference/operator/query/
db.COL_NAME.insert()

입력으로 받는 레코드를 COL_NAME로 지정한 컬렉션에 문서로 기록합니다. 입력 레코드에 _id 필드 값이 있으면 고유 식별 키(ObjectId)로 사용합니다. _id 값은 모두 고유해야 합니다. _id 값이 지정되어 있지 않으면 12바이트의 16진수 고유 식별 키를 부여합니다.

insert()는 몽고DB의 컬렉션 메서드입니다. 자세한 내용은 몽고DB 레퍼런스 매뉴얼에서 db.collection.insert() 메서드를 참고하세요: https://docs.mongodb.com/manual/reference/method/db.collection.insert/
db.COL_NAME.updateOne("KEY", "UPDATE")

COL_NAME로 지정한 컬렉션에서 입력받은 KEY 필드의 값으로 검색해 가장 먼저 검색된 문서에서 UPDATE 필드의 값을 수정합니다. _id 필드를 KEY로 사용할 때 고유식별자가 자동 생성된 12자리 바이너리인 경우, _id 값을 바이너리 타입으로 설정해야 합니다.

updateOne()은 몽고DB의 컬렉션 메서드입니다. 자세한 내용은 몽고 DB 레퍼런스 매뉴얼에서 db.collection.updateOne() 메서드를 참고하세요: https://docs.mongodb.com/manual/reference/method/db.collection.updateOne/
db.COL_NAME.updateMany("KEY_LIST", "UPDATE_LIST")

COL_NAME로 지정한 컬렉션에서 입력받은 KEY_LIST 필드의 값으로 검색해 UPDATE_LIST 필드의 값을 수정합니다. KEY_LIST, UPDATE_LIST는 모두 구분자로 쉼표(,)를 사용합니다. updateOne() 메서드와 달리 검색된 모든 문서를 대상으로 수정합니다.

updateMany()는 몽고DB의 컬렉션 메서드입니다. 자세한 내용은 몽고 DB 레퍼런스 매뉴얼에서 db.collection.updateMany() 메서드를 참고하세요: https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/
db.COL_NAME.deleteOne("KEY")

COL_NAME로 지정한 컬렉션에서 입력받은 KEY 필드의 값으로 검색해 가장 먼저 검색된 문서를 삭제합니다. _id 필드를 KEY로 사용할 때 고유식별자가 자동 생성된 12자리 바이너리인 경우, _id 값을 바이너리 타입으로 설정해야 합니다.

deleteOne()은 몽고DB의 컬렉션 메서드입니다. 자세한 내용은 몽고 DB 레퍼런스 매뉴얼에서 db.collection.deleteOne() 메서드를 참고하세요: https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/
db.COL_NAME.deleteMany("KEY_LIST")

COL_NAME로 지정한 컬렉션에서 입력받은 KEY_LIST 필드의 값으로 검색해 검색된 모든 문서를 삭제합니다. KEY_LIST는 구분자로 쉼표(,)를 사용합니다.

deleteMany()는 몽고DB의 컬렉션 메서드입니다. 자세한 내용은 몽고 DB 레퍼런스 매뉴얼에서 db.collection.deleteMany() 메서드를 참고하세요: https://docs.mongodb.com/manual/reference/method/db.collection.deleteMany/

사용 예

1) nventory 컬렉션의 모든 문서 조회

mongo PROFILE db.inventory.find()

2) restaurants 컬렉션에서 stars 3점 이상의 문서 조회

mongo PROFILE db.restaurants.find("{stars: {$gte: 3}}")

3) restaurants 컬렉션에서 name, stars 필드만 출력

mongo PROFILE db.restaurants.find(null, "{name: true, stars: true}")

4) 임의의 JSON 문서를 몽고DB restaurants 컬렉션에 입력

json "{
  name: Café Con Leche,
  contact: {
    phone: 228-555-0149,
    email: [email protected],
    location: [-73.92502, 40.8279556]
  },
  stars:3,
  categories: [Bakery, Coffee, Pastries]
}"
| mongo PROFILE db.restaurants.insert()

5) 로그프레소 inventory 테이블의 최근 10건을 몽고DB inventory 컬렉션에 입력

table limit=10 inventory
| mongo PROFILE db.inventory.insert()

6) name 필드를 기준으로 restaurants 컬렉션을 검색하고 stars 값을 수정

json "{}" 
| eval name="Café Con Leche", stars=4 
| mongo PROFILE db.restaurants.updateOne("name", "stars")

7) ObjectId5982df1b7098262f64d4ffaf인 문서 1건을 검색하여 삭제

json "{}" 
| eval _id = fromhex("5982df1b7098262f64d4ffaf") 
| mongo stream2 db.restaurants.deleteOne("_id")

9.10rss

HTTP 통신을 통해 RSS1, RSS2, ATOM 형식의 피드를 수신해 출력합니다.

문법

rss url="FEED_URL" [strip=t]
url="FEED_URL"

RSS 피드의 URL을 입력합니다.

[strip=t]

t로 설정하면, RSS 피드에 포함된 HTML 태그를 제거합니다.

설명

RSS 피드를 읽어오면 각 레코드마다 아래와 같은 필드를 출력합니다.

사용 예

1) RSS 피드 조회

rss url="http://rss.slashdot.org/Slashdot/slashdotMain" strip=t

9.11sftpsftp

SFTP 서버에서 파일 시스템을 탐색하거나, 쿼리 결과를 파일로 전송할 수 있습니다.

문법

파일 목록 조회

sftp PROFILE ls PATH

파일 내용 읽기

sftp PROFILE cat [encoding=CHARSET] [limit=NUM] [offset=NUM] PATH

특정한 레코드의 필드 값을 텍스트, CSV, TSV, JSON 형식으로 파일 전송

sftp PROFILE put [append=t]|[overwrite=t] [encoding=CHARSET] [fields=FIELD_1[,FIELD_2,...]] [format={csv|json|text|tsv}] [multisession=t maxsession=NUM] [partition=t] PATH
PROFILE

SFTP 연결에 사용할 프로파일을 지정합니다.

프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 SSH 프로파일이 접속 프로파일에 통합되었습니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
{cat|ls|put}

sftp 세션에서 실행할 명령어를 입력합니다.

append=t

SFTP 서버에 데이터를 전송할 때 사용할 수 있는 옵션으로, PATH로 지정된 파일이 있으면 파일에 이어서 씁니다. overwrite 옵션과 함께 사용할 수 없습니다.

encoding=CHARSET

문자열 인코딩 형식(기본값: UTF-8). 다음 문서에 등록된 Preferred MIME Name이나 Aliases를 사용합니다: https://www.iana.org/assignments/character-sets/character-sets.xhtml

fields=FIELD[,FIELD,...]

SFTP 서버에 데이터를 전송할 때 사용할 수 있는 옵션으로, 전송 대상 필드를 지정합니다. 여러 필드를 선택하려면 구분자로 쉼표(,)를 사용합니다.

appent=t 옵션을 사용할 때 데이터의 일관성을 유지할 수 있도록 항상 fields 옵션의 목록 순서를 동일하게 유지해주세요.
format={csv|json|text|tsv}

전송할 파일 형식을 지정합니다.

limit=NUM

SFTP 서버에서 파일을 읽어올 때 출력할 행의 개수를 입력합니다. 기본값은 무제한입니다.

multisession=t

멀티세션을 사용할지 여부를 불린 값으로 지정합니다. 지정하지 않을 경우 사용하지 않습니다. 추가 세션을 여는데 시간이 더 걸려 오히려 사용하지 않을 때보다 성능이 떨어질 수 있어, 테스트 후 사용 여부를 결정하는 것이 바람직합니다.

maxsession=NUM

멀티세션을 사용할 때, 최대로 열 세션 수를 지정합니다. 멀티세션 사용 여부를 체크하지 않고 이 옵션을 지정할 경우 쿼리가 실패합니다. 아무리 큰 수를 지정해도 접속 대상의 sshd_config에서 지정한 MaxSessions 수 만큼 세션이 열립니다.

offset=NUM

SFTP 서버에서 파일을 읽을 때 건너뛸 행 개수를 입력합니다. 기본값은 0입니다.

overwrite=t

SFTP 서버에 데이터를 전송할 때 사용할 수 있는 옵션으로, PATH로 지정된 파일이 있으면 파일을 무시하고 덮어씁니다. append 옵션과 함께 사용할 수 없습니다.

partition=t

t로 설정하면 매크로를 이용해 디렉터리 경로를 지정할 수 있습니다. 매크로를 이용하면 디렉터리나 파일 이름을 시간에 따라 변경합니다.

PATH

디렉터리 또는 파일의 절대 경로를 입력합니다. 전송할 때에는 디렉터리 경로가 아니라 단일 파일 경로를 입력해야 합니다. 파일을 조회할 때에 파일 경로에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다.

설명

partition 옵션을 t로 설정하면 매크로를 이용해 시간에 따라 디렉터리 및 파일 경로를 변경하도록 경로를 지정할 수 있습니다. 파티션 옵션을 지정하고 경로에 매크로를 사용하지 않으면 쿼리가 실패합니다.

사용할 수 있는 매크로는 logtimenow가 있습니다.

매크로는 중괄호 쌍({ })으로 감싸 입력합니다. 입력 예시는 사용 예 6번을 참조하세요.

사용 예

1) srv 프로파일로 SSH 접속하여 원격 디렉터리 파일 조회

sftp srv ls /

조회 결과 필드들은 각각 아래의 의미를 가집니다:

2) srv 프로파일로 접속하여 /logpresso.sh 파일의 첫 5행을 조회

sftp srv cat limit=5 /logpresso.sh

3) JMX 클래스 로딩 로그 중 UnloadedClassCountLoadedClassCount/tmp/class.txt 파일에 출력

table classloading 
| sftp srv put
  fields=UnloadedClassCount,LoadedClassCount
  /tmp/class.txt

4) JMX 클래스 로딩 로그를 /tmp/class.json 파일로 출력

table classloading | sftp srv put format=json /tmp/class.json

5) JMX 클래스 로딩 로그 중 LoadedClassCount, UnloadedClassCount, TotalLoadedClassCount 항목을 /tmp/class.csv 파일로 출력

table classloading 
| sftp srv put
  format=csv
  fields=LoadedClassCount,UnloadedClassCount,TotalLoadedClassCount
  /tmp/class.csv

6) 디렉토리를 로그 시간 기준 년월일로, 파일 이름을 현재시간 기준 시분으로 JMX 클래스로딩 로그 중 LoadedClassCount, UnloadedClassCount, TotalLoadedClassCount 항목을 JSON 파일로 출력

table classloading 
| sftp srv put
  format=json
  partition=t
  fields=LoadedClassCount,UnloadedClassCount,TotalLoadedClassCount
  {logtime:/yyyy/MM/dd/}{now:HHmm}.txt

9.12wget

HTTP 통신으로 웹 리소스를 받아오거나, 수신한 결과를 line 필드에, 서버의 HTTP 코드는 _wget_code 필드에 출력합니다.

문법

wget [auth="ID:PASSWD"] [body=FIELD] [encoding=CHARSET] [format={form|json|xml}] [header=FIELD_MAP_TYPE] [method={delete|get|post|put}] [selector="CSS_SELECTOR"] [timeout=NUM] [url="SITE_URL"]
auth="ID:PASSWD"

HTTP 기본 인증에 필요한 정보를 지정합니다.

body=FIELD

HTML 본문으로 사용할 필드를 지정합니다. method=post, method=put과 함께 사용합니다.

encoding=CHARSET

문자열 인코딩 형식(기본값: UTF-8). 다음 문서에 등록된 Preferred MIME Name이나 Aliases를 사용합니다: https://www.iana.org/assignments/character-sets/character-sets.xhtml

format={form|json|xml}

전송 포맷을 form, json, xml 중에서 선택할 수 있습니다. REST API 통신을 할 때 사용합니다. 기본값은 form입니다.

header=FIELD_MAP_TYPE

HTTP 헤더로 사용 키-값으로 구성된 맵 타입 필드를 지정합니다. key, value 모두 문자열 타입인 값만 전송합니다. dict() 함수를 이용해 키-값 맵을 지정할 수도 있습니다:

method={delete|get|post|put}

HTTP 메서드를 지정합니다. 기본값은 get입니다.

post 메서드는 다음과 같은 특징이 있습니다.
- 입력 레코드의 키/값을 'x-www-form-urlencoded' 형식으로 URL 인코딩하여 전송합니다.
- url 옵션과 함께 사용할 수 없으므로 header 옵션을 이용해 HTTP 헤더를 직접 입력합니다.
selector="CSS_SELECTOR"

CSS의 selector와 동일한 문법으로 HTML DOM 트리에서 선택할 요소를 지정합니다.

timeout=NUM

HTTP 연결 타임아웃 시간을 초 단위로 지정합니다(기본값: 30초).

url="SITE_URL"

연결할 웹 서비스 URL을 입력합니다. 지정된 웹 주소로 요청을 전송하고 응답을 수신합니다.

사용 예

1) RSS 피드 제목 조회

wget url="https://logpresso.com/feed/" selector="item title" 
| explode elements 
| eval title = valueof(elements, "own_text") 
| fields title

2) HTTP 헤더를 직접 입력해 로그프레소 홈페이지 접속

json "{}"
| eval HEADER=
dict("Accept", "*/*",
     "Accept-Language", "ko-kr",
     "Connection", "keep-alive",
     "Accept-Encoding", "gzip, deflate",
     "User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:64.0) Gecko/20100101 Firefox/64.0") 
| wget header=HEADER url="https://ko.logpresso.com"

3) FireMon REST API 호출

wget auth="firemon:firemon"
     url="https://HOSTNAME/firemon/api/1.0/rules.json?q=rule%7btrue%7d"
| parsejson 
| explode devices | parsemap field=devices 
| explode configSets | parsemap field=configSets 
| explode policies | parsemap field=policies 
| explode rules | parsemap field=rules 
| fields uid, log, name, action, comment, disabled
Count of comments [0]