Skip to content
ysoftmanPublic

About

fine dust info

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

Watch-Dust

References

  • data 공공포털 openapi 한국환경공단 대기오염정보 조회 서비스(airkorea)

    curl "https://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getMinuDustFrcstDspth?numOfRows=4&pageNo=1&searchDate=2026-08-15&returnType=json&serviceKey=${WATCHDUST_OPENAPIAIRKOREA_SERVICE_KEY}"
    
  • slack 알림을 받기 위한 설정

    • https://api.slack.com/apps > 앱 생성 후 선택
      • oauth & permissions > oauth tokens 생성 및 확인
      • oauth & permissions > scopes > add an oauth scopes > chart:write 추가
    • 동작 테스트 예시
    curl -X POST https://slack.com/api/chat.postMessage -d "token=aaaaa&channel=dustinfo&username=watchDust bot&text=미세먼지 정보입니다."
    • cron.yaml 에 설정된 url 및 schedule 에 따라 슬랙 채널로 알람 발송

빌드 및 실행

# secret 파일 생성 (gitignore 됨, 로컬 실행과 deploy.sh 배포에 공용)
cat << zzz > .env
export WATCHDUST_OPENAPIAIRKOREA_SERVICE_KEY="발급받은서비스키"
export WATCHDUST_SLACKAPI_TOKEN="xoxb-슬랙봇토큰"
zzz

# get packages
go get ./...

# build
go build

# default:gae(google app engin) 환경으로 실행
go build && . .env && ./watchdust

# 일반 서버 환경으로 실행
go build && . .env && ./watchdust -servertype normal

google app engine 배포

# gcloud 설치 - mac
brew install google-cloud-sdk
# 또는 수동 설치
cd ~/workspace
wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-365.0.0-darwin-x86_64.tar.gz
rm -rf google-cloud-sdk
tar zxvf google-cloud-sdk-365.0.0-darwin-x86_64.tar.gz
# 컴포넌트 설치, golang 패키지 설치
gcloud components install app-engine-go

# gcloud 설치 - ubuntu
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install google-cloud-sdk
sudo apt-get install google-cloud-sdk-app-engine-python google-cloud-sdk-app-engine-go google-cloud-sdk-datastore-emulator

# docs
https://cloud.google.com/appengine/docs/

# google cloud 올리기전에 로컬에서 테스트 해볼 수 있다.
# 아래 명령을 실행해두면 .go 소스 수정때마다 자동 빌드 된다.
# google-cloud-sdk.tar.gz 로 설치했을 경우
~/workspace/google-cloud-sdk/bin/dev_appserver.py app.yaml --port 9999

# gcloud 인증(브라우저 열리고 로그인)
gcloud auth login

# google cloud 초기화
# url 링크 후 verification code 확인하여 입력
# 기존 프로젝트 또는 신규 프로젝트 생성 선택
# Compute Region and Zone 선택
gcloud init

# 다른 프로젝트 설정도 있다면 확인하고 default 변경
gcloud projects list
gcloud config set project watchdust

# glcoud 구글 app engine 에 배포하기
# deploy.sh 는 .env 의 secret 을 env_variables 로 app.yaml 에 머지한
# 임시 파일(app.deploy.yaml, gitignore 됨)을 만들어 배포하고 삭제한다.
# 추가 인자는 gcloud app deploy 로 그대로 전달된다.
# 배포 종료시 접속 가능한 url 이 표시된다.
# 배포전 아래 내용이 출력된다. 이상이 있다면 gcloud init 로 다시 설정하자.
# descriptor:      [/Users/ysoftman/workspace/watchDust/app.deploy.yaml]
# source:          [/Users/ysoftman/workspace/watchDust]
# target project:  [watchdust]
# target service:  [default]
# target version:  [20190416t141405]
# target url:      [https://watchdust.appspot.com]
# --version 버전 명시
# --promote 현재 배포한 버전이 모든 트랙픽(100%)을 받도록 한다. 기존 버전의 인스턴스는 트랙픽 0% 이 된다.
# --stop-previous-version 새버전이 올라가면 기존 버전은 stop 하도록 한다.
./deploy.sh --version 20260509 --promote --stop-previous-version

# 크론 설정
gcloud app deploy cron.yaml

# 배포 후 접속 URL 확인 하기
gcloud app browse
https://watchdust.appspot.com

# 앱 로그 확인
gcloud app logs tail -s default
https://console.cloud.google.com/logs/viewer?project=watchdust

About

fine dust info

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages