CLI, Cloud Pub/Sub 주제에 JSON 메시지 공개

11959 단어 GCPpubsubgcloudtech

배경.


패키지 서버 서비스를 실행하지 않고 클라우드 Pub/Sub에서 디코더 테스트를 수행하려고 합니다.

컨텐트


전제 조건


여기에 Cloud Logging의 이벤트를 실시간으로 감지합니다.의 구조를 참고하여 Infra/Apps가 GKE인 경우를 예로 들면 클라우드 펀션의 테스트 상황을 고려한다.
GKE의 경우 주요 로그 형식은 textPayloadjsonPayload 두 가지다.샘플은 아래와 같다.
샘플 로그 파일
textPayload.json
{
  "severity":"ERROR",
  "message":"There was an error in the application.",
  "httpRequest":{
    "requestMethod":"GET"
  },
  "times":"2020-10-12T07:20:50.52Z",
  "logging.googleapis.com/insertId":"42",
  "logging.googleapis.com/labels":{
    "user_label_1":"value_1",
    "user_label_2":"value_2"
  },
  "logging.googleapis.com/operation":{
    "id":"get_data",
    "producer":"github.com/MyProject/MyApplication",
     "first":"true"
  },
  "logging.googleapis.com/sourceLocation":{
    "file":"get_data.py",
    "line":"142",
    "function":"getData"
  },
  "logging.googleapis.com/spanId":"000000000000004a",
  "logging.googleapis.com/trace":"projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824",
  "logging.googleapis.com/trace_sampled":false
}
jsonPayload.json
{
  "insertId": "42",
  "jsonPayload": {
    "message": "There was an error in the application",
    "times": "2019-10-12T07:20:50.52Z"
  },
  "httpRequest": {
    "requestMethod": "GET"
  },
  "resource": {
    "type": "k8s_container",
    "labels": {
      "container_name": "hello-app",
      "pod_name": "helloworld-gke-6cfd6f4599-9wff8",
      "project_id": "stackdriver-sandbox-92334288",
      "namespace_name": "default",
      "location": "us-west4",
      "cluster_name": "helloworld-gke"
    }
  },
  "timestamp": "2020-11-07T15:57:35.945508391Z",
  "severity": "ERROR",
  "labels": {
    "user_label_2": "value_2",
    "user_label_1": "value_1"
  },
  "logName": "projects/stackdriver-sandbox-92334288/logs/stdout",
  "operation": {
    "id": "get_data",
    "producer": "github.com/MyProject/MyApplication",
    "first": true
  },
  "trace": "projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824",
  "sourceLocation": {
    "file": "get_data.py",
    "line": "142",
    "function": "getData"
  },
  "receiveTimestamp": "2020-11-07T15:57:42.411414059Z",
  "spanId": "000000000000004a"
}

절차.


# 上のJSONファイルを保存する
$ tree .
.
└── textPayload.json
└── jsonPayload.json
# 現在の環境を確認する
$ gcloud config list
# トピック一覧を表示する
$ gcloud pubsub topics list
# 対象トピックにtextPayload形式のログメッセージを公開する
$ gcloud pubsub topics publish TOPIC_NAME --message "$(cat textPayload.json | jq -c)"
# 対象トピックにjsonPayload形式のログメッセージを公開する
$ gcloud pubsub topics publish TOPIC_NAME --message "$(cat jsonPayload.json | jq -c)"

참고 자료

  • Cloud Logging의 이벤트를 실시간으로 감지합니다.
  • 바블리시 | Cloud Pub/Sub | Google Cloud
  • 구조화 Log | Cloud Logging | Google Cloud
  • 좋은 웹페이지 즐겨찾기