기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SAP HANA 데이터 소스에 연결
SAP HANA는
SAP HANA Grafana Enterprise 플러그인을 사용하면 상황에 맞는 로그 및 메트릭 데이터는 물론 Grafana의 다른 모든 데이터 소스와 함께 SAP HANA 데이터를 시각화할 수 있습니다. 이 플러그인에는 쿼리 편집기가 내장되어 있고 주석을 지원하며 경고 임계값 설정, 액세스 제어, 권한 설정 등을 수행할 수 있습니다.
참고
이 데이터 소스는 Grafana Enterprise 전용입니다. 자세한 정보는 엔터프라이즈 플러그인 액세스 관리을 참조하세요.
또한 버전 9 이상을 지원하는 작업 공간에서는 이 데이터 소스를 사용하려면 적절한 플러그인을 설치해야 할 수 있습니다. 자세한 정보는 플러그인으로 작업 영역 확장을 참조하세요.
특성
-
쿼리 편집기 — 플러그인에는 시계열 또는 테이블 데이터를 시각화하고 기본 Grafana 매크로를 자동 완성할 수 있는 구문 강조 기능이 있는 내장 SQL 쿼리 편집기가 함께 제공됩니다.
-
데이터 소스 권한 — Grafana에서 SAP HANA 데이터를 보거나 쿼리할 수 있는 사용자를 제어합니다.
-
주석 — Grafana 그래프에 SAP HANA 이벤트 또는 데이터를 오버레이하여 이벤트와 다른 그래프 데이터의 상관 관계를 분석할 수 있습니다.
-
알림 — SAP HANA에 경고 기반 지표 스토어를 설정합니다.
-
쿼리용 변수 — Grafana에서 SAP HANA 데이터를 기반으로 템플릿 변수를 생성하고 SAP HANA 쿼리에 변수를 포함하여 대시보드를 대화식으로 만들 수 있습니다.
데이터 소스 추가
-
아마존 매니지드 Grafana 워크스페이스에서 Grafana 콘솔을 열고 로그인했는지 확인합니다.
-
구성 아래의 사이드 메뉴 (톱니바퀴 아이콘) 에서 데이터 소스를 선택합니다.
-
데이터 소스 추가를 선택합니다.
참고
사이드 메뉴에 데이터 소스 링크가 보이지 않으면 현재 사용자에게 해당
Admin
역할이 없는 것입니다. -
데이터 소스 목록에서 SAP HANA를 선택합니다.
-
Config 편집기에서 다음 정보를 입력합니다.
-
서버 주소에는 SAP HANA 인스턴스의 주소를 입력합니다. 예:
xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.hana.trial-us10.hanacloud.ondemand.com
. -
서버 포트의 경우 SAP HANA 인스턴스의 포트를 제공합니다.
-
사용자 이름에는 SAP HANA 인스턴스에 연결하는 데 사용할 사용자 이름을 입력합니다.
-
비밀번호에는 이 사용자의 비밀번호를 입력합니다.
-
(선택 사항) TLS 확인을 건너뛰려면 TLS 확인 건너뛰기를 활성화합니다.
-
(선택 사항) 클라이언트 인증서와 키를 제공해야 하는 경우 TLS 클라이언트 인증을 활성화합니다.
-
(선택 사항) 자체 서명된 TLS 인증서 확인을 활성화하려면 CA 인증서를 사용하여 활성화하십시오.
-
(선택 사항) 기본 스키마에 사용할 기본 스키마를 입력합니다. 이를 생략하면 모든 쿼리에 스키마를 지정해야 합니다.
-
액세스 및 권한
Grafana를 SAP HANA에 연결하려면 전용 자격 증명을 사용하세요. 사용자에게 필요한 권한만 제공하십시오. 먼저 사용자 이름과 비밀번호를 사용하여 제한된 사용자를 생성합니다. 다음 쿼리는 제한된 사용자를 생성하는 예제입니다. 또한 이 쿼리는 암호 강제 변경을 비활성화합니다.
CREATE RESTRICTED USER <USER> PASSWORD <PASSWORD> NO FORCE_FIRST_PASSWORD_CHANGE;
그런 다음 사용자가 Grafana와 같은 클라이언트를 통해 다음과 같은 시스템을 연결할 수 있도록 합니다.
ALTER USER <USER> ENABLE CLIENT CONNECT;
마지막으로 사용자에게 필요한 뷰, 테이블 및 스키마에 대한 액세스 권한을 부여합니다.
ALTER USER <USER> GRANT ROLE PUBLIC; GRANT SELECT ON SCHEMA <SCHEMA> TO <USER>;
사용자 수준 권한
데이터 소스 구성 페이지에서 권한 탭을 클릭하여 데이터 소스 권한을 활성화하여 SAP HANA에 대한 액세스를 제한합니다. 권한 페이지에서 관리자는 권한을 활성화하고 쿼리 권한을 특정 사용자 및 팀으로 제한할 수 있습니다.
쿼리 편집기
SAP HANA Grafana 플러그인에는 모든 HANA 쿼리를 입력할 수 있는 SQL 쿼리 편집기가 함께 제공됩니다. 쿼리가 시계열 데이터를 반환하는 경우 이를 시계열 형식으로 지정하여 그래프 패널에 시각화할 수 있습니다. 쿼리 편집기는 지원되는 Grafana 매크로에 대한 자동 완성 및 SQL 쿼리의 구문 강조 표시를 제공합니다.
주석
SAP HANA 쿼리를 Grafana 주석의 소스로 사용할 수 있습니다. 주석 쿼리는 최소 하나의 시간 열과 하나의 텍스트 열을 반환해야 합니다. 주석에 대한 자세한 내용은 을 참조하십시오. 주석
SAP HANA에서 주석을 생성하려면
-
대시보드 설정 기어 아이콘을 선택합니다.
-
왼쪽 메뉴에서 주석, 새로 만들기를 선택합니다.
-
데이터 소스 드롭다운 메뉴에서 SAP HANA 데이터 소스 인스턴스를 선택합니다.
-
쿼리 필드에 하나 이상의 시간 필드와 하나의 텍스트 필드를 반환하는 SAP HANA 쿼리를 입력합니다.
-
형식 드롭다운 메뉴에서 시계열을 선택합니다.
-
각 주석에 대해 From 필드를 구성합니다.
템플릿 및 변수
새 SAP HANA 쿼리 변수를 추가하려면 을 참조하십시오쿼리 변수 추가. SAP HANA 데이터 소스를 데이터 소스로 사용하십시오.
다음 예제 쿼리는 username
users
테이블의 고유한 목록을 반환합니다.
select distinct("username") from "users"
참고
변수 쿼리에서는 열을 하나만 선택해야 합니다. 쿼리에서 두 개의 열을 반환하는 경우 첫 번째 열은 표시 값으로 사용되고 두 번째 열은 변수의 실제 값으로 사용됩니다. 쿼리에서 두 개 이상의 열이 반환되면 해당 열은 거부됩니다.
템플릿 및 변수
쿼리에서 모든 Grafana 변수를 사용할 수 있습니다. 다음 예제는 쿼리에서 단일/다중 변수를 사용하는 방법을 보여줍니다.
-- For example, following query select * from "users" where "city" = ${city} -- will be translated into select * from "users" where "city" = 'london' --- where you can see ${city} variable translated into actual value in the variable
텍스트와 마찬가지로 변수는 숫자 필드에도 사용할 수 있습니다. 아래 예제에서 ${age}
는 숫자를 받아 표의 숫자 필드와 비교하는 텍스트 상자 변수입니다.
select * from "users" where "age" > ${age} --- wil be translated into select * from "users" where "age" > '36'
변수가 여러 값을 반환하는 경우 아래와 같은 SAP HANA 쿼리 in
조건에서 변수를 사용할 수 있습니다. SAP HANA에서 where in
조건을 유효하게 만들려면 변수를 둘러싼 대괄호를 참고하세요.
select * from "users" where "city" in (${cities}) --- will be translated into select * from "users" where "city" in ('london','perth','delhi') --- where you can see ${cities} turned into a list of grafana variables selected. --- You can also write the same query using shorthand notation as shown below select * from "users" where "city" in ($cities)
매크로
-
$__timeFilter(<time_column>)
— Grafana의 시간 범위를 원시 쿼리에 사용할 때 지정된 열에 적용합니다. 날짜/타임스탬프/롱 타임 열에 적용됩니다. -
$__timeFilter(<time_column>, <format>)
— 위와 동일합니다. 하지만 데이터베이스에 저장된 time_column 형식을 지정할 수 있는 기능을 제공합니다. -
$__timeFilter(<time_column>, "epoch", <format>)
— 위와 동일하지만 시간 열이 에포크 (epoch) 일 때 사용할 수 있습니다. 형식은 's', 'ms', 'n' 중 하나일 수 있습니다. -
$__fromTimeFilter(<time_column>)
— 위와 동일하지만 시간 열이 에포크 (epoch) 일 때 사용할 수 있습니다. 형식은 's', 'ms', 'n' 중 하나일 수 있습니다. -
$__fromTimeFilter(<time_column>, <comparison_predicate>)
— 위와 동일하지만 비교_predicate를 지정할 수 있습니다. -
$__fromTimeFilter(<time_column>, <format>)
— 위와 동일하지만 시간 열의 형식을 지정할 수 있습니다. -
$__fromTimeFilter(<time_column>, <format>, <comparison_predicate>)
— 위와 동일하지만 comparison_predicate를 지정할 수 있습니다. -
$__toTimeFilter(<time_column>)
— Grafana의 시간 경과에 따른 시간 필드를 기반으로 시간 조건을 반환합니다. -
$__toTimeFilter(<time_column>, <comparison_predicate>)
— 위와 동일하지만 comparison_predicate를 지정할 수 있습니다. -
$__toTimeFilter(<time_column>, <format>)
— 위와 동일하지만 시간 열의 형식을 지정할 수 있습니다. -
$__toTimeFilter(<time_column>, <comparison_predicate>)
— 위와 동일하지만 comparison_predicate를 지정할 수 있습니다. -
$__timeGroup(<time_column>, <interval>)
— 시간 열을 간격 그룹으로 확장합니다. 날짜/타임스탬프/롱 타임 열에 적용됩니다.
$__timeFilter () 매크로 <time_column>
다음 예제에서는 매크로를 설명합니다. $__timeFilter(<time_column>)
- In the following example, the query select ts, temperature from weather where $__timeFilter(ts) --- will be translated into select ts, temperature from weather where ts > '2021-02-24T12:52:48Z' AND ts < '2021-03-24T12:52:48Z' --- where you can see the grafana dashboard's time range is applied to the column ts in the query.
$__timeFilter (,) 매크로 <time_column><format>
데이터베이스의 시간 열이 사용자 지정 형식으로 저장되는 경우도 있습니다. 다음 예제는 grafana의 시간 선택기를 기반으로 사용자 지정 타임스탬프를 필터링하는 데 도움이 되는 $__timeFilter(<time_column>,
<format>)
매크로를 설명합니다.
SELECT TO_TIMESTAMP("TS",'YYYYMMDDHH24MISS') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYYMMDDHH24MISS") -- TS is in 20210421162012 format SELECT TO_TIMESTAMP("TS",'YYYY-MON-DD') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYY-MON-DD") -- TS is in 2021-JAN-15 format
매크로에서 형식은 타임스탬프 열과 일치하는 유효한 HANA 형식 중 하나일 수 있습니다. 예를 들어, YYYYMMDDHH24MISS
데이터를 형식으로 저장할 때 유효한 형식입니다. 20210421162012
$__타임필터 (, “에포크”) 매크로 <time_column><format>
타임스탬프가 에포크 타임스탬프로 DB에 저장되는 경우도 있습니다. 다음 예제는 grafana의 타임 피커를 기반으로 에포크 타임스탬프를 필터링하는 데 도움이 되는 $__timeFilter(<time_column>, "epoch" <format>)
매크로를 설명합니다. 매크로에서 형식은 ms, s 또는 ns 중 하나일 수 있습니다. 지정하지 않으면 s가 기본 형식으로 처리됩니다.
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch") -- Example : TIMESTAMP field stored in epoch_second format 1257894000 SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","s") -- Example : TIMESTAMP field stored in epoch_second format 1257894000 SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms") -- Example : TIMESTAMP field stored in epoch_ms format 1257894000000 SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000000000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ns") -- Example : TIMESTAMP field stored in epoch_nanoseconds format 1257894000000000000
$__timeFilter의 세 번째 인수를 사용하는 대신 epoch_s, epoch_ms 또는 epoch_ns 중 하나를 두 번째 인수로 사용할 수 있습니다.
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms") -- is same as SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch_ms")
$__ () 및 $__ () 매크로 fromTimeFilter toTimeFilter
$__fromTimeFilter()
매크로는 Grafana 시간 선택기의 시간을 기반으로 시간 필드에 대한 조건으로 확장됩니다.
여기에는 세 개의 파라미터가 허용됩니다. 첫 번째 매개변수는 시간 필드 이름입니다. 시간 열의 comparison_predicate 또는 형식을 두 번째 인수로 전달할 수 있습니다. 둘 다 전달하려는 경우 두 번째 매개 변수는 format 이고 세 번째 매개 변수로는 comparison_predicate를 사용하십시오.
<format>형식을 지정하지 않으면 플러그인은 시간 열을 타임스탬프/날짜 유형으로 간주합니다. 시간 열이 타임스탬프/날짜 이외의 다른 형식으로 저장되어 있는 경우 형식을 두 번째 인수로 전달하십시오. <format>epoch_s, epoch_ms, epoch_ns 또는 YYYY-MM-DD와 같은 기타 사용자 지정 형식 중 하나일 수 있습니다.
<comparison_predicate>선택적 파라미터. 전달되지 않으면 플러그인은 >를 비교 조건자로 사용합니다. <comparison_predicate>=,! 중 하나일 수 있습니다. =, <>, <, <=, >, >=
$__toTimeFilter()
fromTimeFilter$__ () 와 동일하게 작동합니다. Grafana를 계속 사용하는 대신 시간이 지나면 사용할 것입니다. 또한 기본 비교 조건자는 <입니다.
$__타임그룹 (,) <time_column><interval>
예를 들어, 쿼리에서 매크로 $__TimeGroup (타임콜,1h) 은 SERIES_ROUND (“타임콜”, '간격 1시간') 로 확장됩니다.
다음 예제는 다음을 설명합니다. $__timeGroup(<time_column>,
<interval>) macro.
SELECT $__timeGroup(timestamp,1h), "user", sum("value") as "value" FROM "salesdata" WHERE $__timeFilter("timestamp") GROUP BY $__timeGroup(timestamp,1h), "user" ORDER BY $__timeGroup(timestamp,1h) ASC
이는 다음 쿼리로 $__timeGroup(timestamp,1h)
변환되며 여기서 는 로 확장됩니다SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR')
.
SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR') as "timestamp", "user", sum("value") as "value" FROM "salesdata" WHERE "timestamp" > '2020-01-01T00:00:00Z' AND "timestamp" < '2020-01-01T23:00:00Z' GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR'), "user" ORDER BY "timestamp" ASC
참고
$__TimeGroup 매크로와 함께 group by를 사용하는 경우 선택, 정렬 기준 필드의 이름이 그룹화 기준 필드와 동일한지 확인하십시오. 그렇지 않으면 HANA가 쿼리를 인식하지 못할 수 있습니다.
$__timeGroup () 함수에서 간격을 하드 코딩하지 않으려면 $__interval을 간격으로 지정하여 Grafana에 맡길 수 있습니다. Grafana는 대시보드 시간 범위에서 해당 간격을 계산합니다. 쿼리 예시:
SELECT $__timeGroup(timestamp, $__interval), sum("value") as "value" FROM "salesdata" WHERE $__timeFilter("timestamp") GROUP BY $__timeGroup(timestamp, $__interval) ORDER BY $__timeGroup(timestamp, $__interval) ASC
해당 쿼리는 대시보드 시간 범위를 기반으로 다음 쿼리로 변환됩니다.
SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE'), sum("value") as "value" FROM "salesdata" WHERE "timestamp" > '2019-12-31T23:09:14Z' AND "timestamp" < '2020-01-01T23:17:54Z' GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE') ORDER BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE') ASC
알림
그라파나에서 SAP HANA 알림을 설정하려면
-
대시보드에 그래프 패널을 만드세요.
-
시계열 형식으로 SAP HANA 쿼리를 생성합니다.
-
알림 탭을 선택하고 알림 기준을 지정합니다.
-
경고 쿼리를 테스트하려면 [테스트 규칙] 을 선택합니다.
-
알림 수신자, 메시지 및 오류 처리를 지정합니다.
-
대시보드를 저장합니다.
시계열이 아닌 데이터에 대한 경고
시계열이 아닌 데이터에 알림을 보내려면 TO_TIMESTAMP('${__to:date}')
매크로를 사용하여 시계열이 아닌 지표를 시계열로 만들 수 있습니다. 그러면 지표가 단일 지점 시계열 쿼리로 변환됩니다. 쿼리 형식은 다음과 같습니다.
SELECT TO_TIMESTAMP('${__to:date}'), <METRIC> FROM <TABLE≶ WHERE <YOUR CONDITIONS>
다음 예제의 테이블에는 사용자 이름, 나이, 도시, 역할이라는 네 개의 필드가 있습니다. 이 테이블에는 시간 필드가 없습니다. 개발자 역할을 가진 사용자 수가 3명 미만일 때 알림을 보내려고 합니다.
SELECT TO_TIMESTAMP('${__to:date}'), count(*) as "count" FROM ( SELECT 'John' AS "username", 32 AS "age", 'Chennai' as "city", 'dev' as "role" FROM dummy UNION ALL SELECT 'Jacob' AS "username", 32 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy UNION ALL SELECT 'Ali' AS "username", 42 AS "age", 'Delhi' as "city", 'admin' as "role" FROM dummy UNION ALL SELECT 'Raja' AS "username", 12 AS "age", 'New York' as "city", 'ceo' as "role" FROM dummy UNION ALL SELECT 'Sara' AS "username", 35 AS "age", 'Cape Town' as "city", 'dev' as "role" FROM dummy UNION ALL SELECT 'Ricky' AS "username", 25 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy UNION ALL SELECT 'Angelina' AS "username", 31 AS "age", 'London' as "city", 'cxo' as "role" FROM dummy ) WHERE "role" = 'dev'