QRadar Pulse 의 시계열 차트

처음에는 QRadar® Pulse 의 관계형 데이터에서 시계열 차트를 작성하는 것이 어려울 수 있습니다. AQL 조회에서 리턴되는 데이터의 양을 다루기 어려울 수도 있지만 몇 가지 배경 지식과 주의 깊은 계획을 통해 적절하고 유의미한 시계열 차트를 생성할 수 있습니다.

참고: 시계열 차트에 대해 읽은 후 최근 10분 동안 상위 5개의 가장 활성화된 디바이스 추적의 프로시저에 따라 동적 시계열 차트를 작성하십시오. QRadar Pulse V2.1.4 이상에서 시계열 차트에는 추적할 디바이스를 모르거나 시계열 차트가 제대로 작동하기 어려운 경우에 유용한 동적 계열 옵션이 있습니다. 이 옵션은 자동으로 계열을 발견하여 시계열 차트에 별도의 행으로 표시합니다.
다음 AQL 조회와 같이 starttime을 기준으로 지표의 순서를 지정하는 경우 시계열이 생성되지만 리턴되는 데이터의 양이 관련 작업을 수행하고 파악하기에 너무 방대할 수 있습니다.
select starttime as 'Start Time',
SUM(eventcount) as 'Event Count (Sum)'
from events
where eventcount <> NULL
GROUP BY starttime
order by starttime
LAST 60 minutes
리턴되는 데이터의 양으로 인해 많은 정보를 제공하지 않는 복잡한 차트가 생성될 수 있습니다. 이벤트 시작 시간이 정기적인 간격으로 발생하지 않을 수도 있으며, 이 경우 데이터 세트에 간격이 발생할 수 있습니다.
그림 1. 너무 많은 데이터로 인해 복잡한 결과가 생성됨
대용량 데이터가 포함된 노이즈 차트

시계열 조회에서 간격 작성

첫 번째 단계는 데이터 분석에 사용할 간격의 유형을 결정하는 것입니다. 매 초와 같이 좁은 간격으로 데이터를 확인하고 싶으십니까? 아니면 매 분 또는 매 시간과 같이 더 넓은 간격으로 확인하고 싶으십니까? 데이터 점은 지표가 계산되도록 간격에 따라 그룹화되어야 하기 때문에 이 결정은 매우 중요합니다.

원래 조회를 사용하는 경우 다음 기법 중 하나를 사용하여 데이터를 그룹화할 수 있습니다.
  • GROUP BY절을 사용하여 GROUP BY starttime/60000 간격을 작성합니다. starttime은 밀리초 단위로 표시되므로 60,000(60초 x 1000밀리초)으로 나누는 경우 60초(1분)의 그룹 또는 간격을 작성하게 됩니다.
  • sTime 집합을 사용하도록 ORDER BY절을 변경합니다.
이 조회는 다음과 같은 코드로 변경됩니다.
select starttime as 'sTime',
SUM(eventcount) as 'Event Count (Sum)'
from events
where eventcount > 0
GROUP BY starttime/60000
order by "sTime"
LAST 60 minutes
이제 데이터가 시각적으로 더욱 유용하게 되었으며 하나의 데이터 점이 매 분마다 발생하게 됩니다. 간격이 올바르게 정의되었기 때문에 데이터를 더욱 익숙한 시계열 형식으로 형식화하기 위한 몇 가지 전략을 사용할 수 있습니다.
그림 2. 올바르게 정의된 간격이 포함된 더욱 유용한 데이터 결과
데이터를 사용할 수 있지만 세분화가 필요합니다.

계열을 작성하기 위해 행을 컬럼으로 피벗

시계열 차트를 작성하는 한 가지 방법은 Pulse에서 계열을 직접 나타내는 열로 데이터 행을 피벗하는 것입니다. 예를 들어 사용자의 유스 케이스가 1분의 간격마다 특정 디바이스에 대한 이벤트를 계수하는 것일 경우 그래프에 표시할 각각의 계열별로 별도의 조건부 집합을 작성해야 합니다.
SUM(IF LOGSOURCETYPENAME(devicetype) = 'System Notification' THEN 1.0 ELSE 0.0) 
as system_notification
SUM(IF LOGSOURCETYPENAME(devicetype) = 'SIM Audit' THEN 1.0 ELSE 0.0) as sim_audit
The full query looks like the following example:
SELECT starttime/(1000*60) as 'minute',
(minute * (1000*60)) as 'stime',
SUM(IF LOGSOURCETYPENAME(devicetype) = 'System Notification' THEN 1.0 ELSE 0.0) 
as system_notification,
SUM(IF LOGSOURCETYPENAME(devicetype) = 'SIM Audit' THEN 1.0 ELSE 0.0) as sim_audit
FROM events
WHERE devicetype <> NULL
GROUP BY minute
ORDER BY stime asc
LAST 10 minutes
이 조회는 System NotificationSIM Audit 디바이스 양쪽에 대한 행 데이터를 가져와서 차트의 계열에 해당하는 별도의 컬럼으로 피벗합니다.
그림 3. 별도의 컬럼에 대해 리턴되는 결과
데이터 행을 열로 피벗하기 위한 결과
다음 이미지는 행을 피벗하기 위한 보기 구성 및 차트 표시를 보여줍니다.
그림 4. 보기 구성 및 차트 표시
데이터 행을 열로 구성

이 방법은 관계형 데이터를 시계열 데이터로 변환하기에 유효 적절한 반면 찾고 있는 데이터가 무엇인지 사전에 알고 있어야 합니다.

동적 시계열 작성

찾고 있는 디바이스가 무엇인지 사전에 모르고 있거나 마지막 1시간 동안 가장 많이 활성화된 최상위 5개의 디바이스를 그래프로 표시하려는 경우 어떻게 해야 합니까? QRadar Pulse V2.1.4에서 동적 시계열을 작성할 수 있습니다. 두 번째 전략에서는 데이터 행을 컬럼으로 피벗하지 않고 2차 GROUP BY절(예제에서는 "device"로 표시됨)을 사용하여 동적 시계열을 작성합니다.
SELECT starttime/(1000*60) as 'minute', 
MIN(starttime) as 'stime', 
eventcount as 'eventCount', devicetype as 'deviceType',
LOGSOURCETYPENAME(devicetype) as 'device', 
count(*) as 'total'
FROM events
WHERE deviceType IN (
    SELECT deviceType FROM (
        SELECT devicetype as 'deviceType', 
        count(*) as 'total'
        FROM events
        GROUP BY deviceType
        ORDER BY total DESC
        LIMIT 8
        LAST {Time_Span}
    )
) and devicetype not in (18,105,147,368)
GROUP BY minute, device
ORDER BY minute asc
LAST {Time_Span}
이 조회에 대해 리턴되는 결과는 다음 이미지와 유사합니다.
그림 5. 디바이스에 대해 리턴되는 결과
동적 시계열에 대한 데이터 결과

이전 방법과의 차이점은 데이터가 컬럼으로 피벗되지 않으며 시간 컬럼에 2차 GROUP BY절로 인해 발생하는 반복이 포함된다는 점입니다. QRadar Pulse 는 동적 시계열 옵션을 사용하여 데이터를 적절한 시계열 형식으로 분할합니다. time이 포함된 컬럼(x축의 stime), data가 포함된 컬럼(y축의 total) 및 GROUP BY절이 포함된 컬럼(device별로 서로 다른 계열을 추출하기 위해)을 선택하십시오.

그림 6. 디바이스별로 데이터 분할
동적 시계열에서 디바이스별로 데이터 분할

이 차트는 이전 방법으로 작성한 차트와 동일하게 보이지만 기본 AQL 조회는 훨씬 더 동적입니다. 로그 소스가 시간에 따라 변경되는 경우 더 이상 해당 값이 조회에 하드코딩되지 않기 때문에 차트가 자동으로 업데이트됩니다.

하지만 몇 가지 위험 요소에 대해 인지해야 합니다. 데이터 행이 컬럼으로 피벗되지 않기 때문에 데이터의 크기가 훨씬 커지며 디바이스의 수에 비례하여 늘어납니다. QRadar Pulse 는 데이터를 처리하므로 데이터 크기가 브라우저의 전체 응답성에 부정적인 영향을 줄 수 있습니다. 성능 저하를 방지하기 위해 QRadar Pulse 는 발견하는 처음 20개의 데이터 시리즈를 렌더링하고 후속 시리즈를 무시합니다. WHERE절을 사용하여 동적 시계열에서 사용할 데이터 세트를 제한(LIMIT) 및 순서 지정(ORDER)함으로써 데이터의 크기를 제한하십시오. 예를 들어 유스 케이스가 "마지막 10분 동안 가장 많이 활성화된 최상위 3개의 디바이스를 계수하되 'Health Metrics'는 제외함"인 경우 다음과 같은 조회를 작성하십시오.
SELECT starttime/(1000*60) as 'minute', (minute * (1000*60)) as 'stime', LOGSOURCETYPENAME(devicetype) as 'device', count(*) as 'total'
FROM events
WHERE device IN (
    SELECT deviceList FROM (
        SELECT LOGSOURCETYPENAME(devicetype) as deviceList, count(*) as topDevices
        FROM events
        WHERE deviceList <> 'Health Metrics'
        GROUP BY deviceList
        ORDER BY topDevices DESC
        LIMIT 3
        LAST 10 minutes
    )
)
GROUP BY minute, device
ORDER BY stime asc
LAST 10 minutes
이 조회는 더욱 효율적이며 렌더링되는 세 개의 계열이 선택한 시간 범위 동안 가장 많이 활성화된 최상위 3개의 디바이스에 해당되도록 합니다.