BigQuery 결제 정보를 slack에 알림 기능 만들기
11854 단어 슬랙GoogleAppsScriptslackbot
배경
BigQuery의 요금은 싸다고 해도 사내 이용 인원수와 데이터량이 늘어날수록 모니터링하는 것이 좋다고 생각하므로 BigQuery의 과금 정보를 slack에 보내는 기능을 만들고 싶습니다.
웹상 관련 기사가 많다고 생각하므로, 여기서 중요한 것만 말하고 싶습니다.
BigQuery 결제 정보를 slack으로 보내기
다음 단계가 있습니다.
1. Google Cloud Platform(GCP) 측, 결제 정보 내보내기
2. SQL을 작성하고 필요한 정보를 집계
3. Google Apps Script(GAS)에서 SQL이 실행한 결과를 slack에 보내는 기능 개발
4. 배포 및 트리거 설정
이어서 각 단계를 설명합니다.
1. 결제 정보 내보내기
주로 이 기사를 참고했습니다. → GCP : 이번 달 GCP 요금을 slack에 자동으로 씁니다. ←
내보내기 기능을 켜면 BigQuery의 지정된 데이터 세트에 GCP의 모든 청구 정보가 포함됩니다. 대략 30분~1시간마다 새로운 과금 정보가 점점 추가됩니다.
2.SQL
여기서는 전날 BigQuery 쿼리 결제 정보를 추출하는 SQL을 작성합니다.
한 가지주의 사항이 있습니다. BigQuery에는 다음과 같은 청구 단위가 있습니다. Active Storage, Analysis, Long Term Storage 및 Streaming Insert입니다. 또한 지역별 요금이 부과됩니다.
예를 들어, 아래의 SQL을 실행하면 이런 결과가 됩니다.
-- BigQuery 課金単位
SELECT
DISTINCT sku.description
FROM
`<PJ名>.<Dataset名>.gcp_billing_export_v1_014465_30B3AE_52397F`
WHERE
service.description = 'BigQuery'
ORDER BY
1
공식 사이트에 기재되어 있으므로 상세하게 설명하지 않지만, 쿼리의 요금과 스토리지의 요금등이 있습니다. → 요금 설명 참고 ←
이번에는 쿼리 수수료만 알림을 보내므로 sku.description = 'Analysis'
를 WHERE 문에 넣습니다.
-- 先日のBigQuery クエリ料金を出す
SELECT
DATE(TIMESTAMP_ADD(usage_start_time, INTERVAL 9 HOUR)) AS query_date,
service.description,
project.id,
project.name,
SUM(cost) AS cost_jpn,
SUM(usage.amount_in_pricing_units) AS usage_tb,
1024 * SUM(usage.amount_in_pricing_units) AS usage_gb,
usage.pricing_unit,
currency
FROM
`<PJ名>.<Dataset名>.gcp_billing_export_v1_014465_30B3AE_52397F`
WHERE
DATE(_PARTITIONTIME) >= "2019-07-01"
AND service.description = 'BigQuery'
AND project.id = 'gdp-glopla'
AND sku.description = 'Analysis'
GROUP BY
query_date,
service.description,
project.id,
project.name,
currency,
usage.pricing_unit
HAVING
query_date = DATE_ADD(DATE(TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 9 HOUR)), INTERVAL -1 DAY)
ORDER BY
query_date
실행한 결과는, 이런 느낌이 됩니다.
query_date
description
id
이름
cost_jpn
usage_tb
usage_gb
pricing_unit
currency
2019/7/16
BigQuery
[PJ ID]
[PJ명]
106.473763
0.197759628
202.5058594
tebibyte
JPY
우리 회사는 어제의 BigQuery 요금은 106 엔 밖에 없습니다. 202.5GB의 데이터에 쿼리를 실행하고 있었지만, 놀랄 정도로 싸네요.
3. Google Apps Script (GAS)
드디어 GAS를 사용합니다.
주로 이 기사를 참고했습니다. → GAS로 간편하게 Slack에 대한 KPI 알림 Bot 만들기 ←
위의 기사에 써 있는 함수 runQuery
를 이용하므로, 안의 SQL 부분을 상기의 SQL로 바꿉니다.postSlack
쪽에 대해서는, 이하의 부분도 바꿉니다.
또, 여기서 rows[0].f[4].v
라는 것은, 상기의 실행된 SQL의 1행째의 5열째의 값이라고 하는 의미입니다.
var cost_jpn = Math.round(rows[0].f[4].v * 10) / 10; // 課金
var usage_gb = Math.round(rows[0].f[6].v * 10) / 10; // クエリ容量GB
var usage_tb = Math.round(rows[0].f[5].v * 10) / 10; // クエリ容量TB
body의 fields 쪽에 대해서는, 아래와 같은 느낌으로 바꿉니다.
{
"title": "昨日の課金",
"value": cost_jpn + ' 円',
"short": true /* 二列で表示 */
},
{
"title": "昨日の容量 (GB)",
"value": usage_gb + ' GB',
"short": true /* 二列で表示 */
},
{
"title": "昨日の容量 (TB)",
"value": usage_tb + ' TB',
"short": true /* 二列で表示 */
}
4. 배포 및 트리거
"편집"→ "현재 프로젝트 트리거"로 들어가면 설정 화면이 나타납니다.
매일 출사했을 때 전날의 과금 정보를 보고 싶기 때문에, 아래와 같이 설정하고 있습니다.
오시마
이제 BigQuery의 쿼리 요금 상태를 파악할 수 있습니다.
덧붙여서, 실제의 slack의 통지는 이런 느낌이 되고 있습니다.
그럼, 여러가지 모니터링하고 싶은 항목을 집계해, slack에 정기적으로 보내도록 합시다~!
Reference
이 문제에 관하여(BigQuery 결제 정보를 slack에 알림 기능 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/GDP-HKY/items/3feb6ab20404c3d2fb03
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다음 단계가 있습니다.
1. Google Cloud Platform(GCP) 측, 결제 정보 내보내기
2. SQL을 작성하고 필요한 정보를 집계
3. Google Apps Script(GAS)에서 SQL이 실행한 결과를 slack에 보내는 기능 개발
4. 배포 및 트리거 설정
이어서 각 단계를 설명합니다.
1. 결제 정보 내보내기
주로 이 기사를 참고했습니다. → GCP : 이번 달 GCP 요금을 slack에 자동으로 씁니다. ←
내보내기 기능을 켜면 BigQuery의 지정된 데이터 세트에 GCP의 모든 청구 정보가 포함됩니다. 대략 30분~1시간마다 새로운 과금 정보가 점점 추가됩니다.
2.SQL
여기서는 전날 BigQuery 쿼리 결제 정보를 추출하는 SQL을 작성합니다.
한 가지주의 사항이 있습니다. BigQuery에는 다음과 같은 청구 단위가 있습니다. Active Storage, Analysis, Long Term Storage 및 Streaming Insert입니다. 또한 지역별 요금이 부과됩니다.
예를 들어, 아래의 SQL을 실행하면 이런 결과가 됩니다.
-- BigQuery 課金単位
SELECT
DISTINCT sku.description
FROM
`<PJ名>.<Dataset名>.gcp_billing_export_v1_014465_30B3AE_52397F`
WHERE
service.description = 'BigQuery'
ORDER BY
1
공식 사이트에 기재되어 있으므로 상세하게 설명하지 않지만, 쿼리의 요금과 스토리지의 요금등이 있습니다. → 요금 설명 참고 ←
이번에는 쿼리 수수료만 알림을 보내므로
sku.description = 'Analysis'
를 WHERE 문에 넣습니다.-- 先日のBigQuery クエリ料金を出す
SELECT
DATE(TIMESTAMP_ADD(usage_start_time, INTERVAL 9 HOUR)) AS query_date,
service.description,
project.id,
project.name,
SUM(cost) AS cost_jpn,
SUM(usage.amount_in_pricing_units) AS usage_tb,
1024 * SUM(usage.amount_in_pricing_units) AS usage_gb,
usage.pricing_unit,
currency
FROM
`<PJ名>.<Dataset名>.gcp_billing_export_v1_014465_30B3AE_52397F`
WHERE
DATE(_PARTITIONTIME) >= "2019-07-01"
AND service.description = 'BigQuery'
AND project.id = 'gdp-glopla'
AND sku.description = 'Analysis'
GROUP BY
query_date,
service.description,
project.id,
project.name,
currency,
usage.pricing_unit
HAVING
query_date = DATE_ADD(DATE(TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 9 HOUR)), INTERVAL -1 DAY)
ORDER BY
query_date
실행한 결과는, 이런 느낌이 됩니다.
query_date
description
id
이름
cost_jpn
usage_tb
usage_gb
pricing_unit
currency
2019/7/16
BigQuery
[PJ ID]
[PJ명]
106.473763
0.197759628
202.5058594
tebibyte
JPY
우리 회사는 어제의 BigQuery 요금은 106 엔 밖에 없습니다. 202.5GB의 데이터에 쿼리를 실행하고 있었지만, 놀랄 정도로 싸네요.
3. Google Apps Script (GAS)
드디어 GAS를 사용합니다.
주로 이 기사를 참고했습니다. → GAS로 간편하게 Slack에 대한 KPI 알림 Bot 만들기 ←
위의 기사에 써 있는 함수
runQuery
를 이용하므로, 안의 SQL 부분을 상기의 SQL로 바꿉니다.postSlack
쪽에 대해서는, 이하의 부분도 바꿉니다.또, 여기서
rows[0].f[4].v
라는 것은, 상기의 실행된 SQL의 1행째의 5열째의 값이라고 하는 의미입니다. var cost_jpn = Math.round(rows[0].f[4].v * 10) / 10; // 課金
var usage_gb = Math.round(rows[0].f[6].v * 10) / 10; // クエリ容量GB
var usage_tb = Math.round(rows[0].f[5].v * 10) / 10; // クエリ容量TB
body의 fields 쪽에 대해서는, 아래와 같은 느낌으로 바꿉니다.
{
"title": "昨日の課金",
"value": cost_jpn + ' 円',
"short": true /* 二列で表示 */
},
{
"title": "昨日の容量 (GB)",
"value": usage_gb + ' GB',
"short": true /* 二列で表示 */
},
{
"title": "昨日の容量 (TB)",
"value": usage_tb + ' TB',
"short": true /* 二列で表示 */
}
4. 배포 및 트리거
"편집"→ "현재 프로젝트 트리거"로 들어가면 설정 화면이 나타납니다.
매일 출사했을 때 전날의 과금 정보를 보고 싶기 때문에, 아래와 같이 설정하고 있습니다.
오시마
이제 BigQuery의 쿼리 요금 상태를 파악할 수 있습니다.
덧붙여서, 실제의 slack의 통지는 이런 느낌이 되고 있습니다.
그럼, 여러가지 모니터링하고 싶은 항목을 집계해, slack에 정기적으로 보내도록 합시다~!
Reference
이 문제에 관하여(BigQuery 결제 정보를 slack에 알림 기능 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/GDP-HKY/items/3feb6ab20404c3d2fb03
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(BigQuery 결제 정보를 slack에 알림 기능 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/GDP-HKY/items/3feb6ab20404c3d2fb03텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)