반응형

gcp 에서 cloud sql 메뉴를 들어가게 되면 인스턴스 생성할 수 있다

 

 

데이터베이스를 선택하자

데이터베이스 버젼 설정

cloud sql 버젼 선택

리젼

asia-northeast3 (서울) 선택하시고

 

영역 가용성

서비스 중단 될 경우 다른 DB 를 올릴지 여부인데, 테스트일 경우 단일만 하자

머신구성

전용 코어랑 공유 코어 가 있는데

공유코아가 더 낮은 사양의 cpu 및 메모리를 사용할 수 있다.

 

저장용량

SSD 를 권장한다고 한다.

하지만 돈 아끼려면 HDD 

연결 

보안 측면적으로는 비공개 IP 로 생성해서 같은 vpc 망에서 db 접속 처리 해야한다.

비공개 IP 설정

 

 

데이터보호

자동백업 기능이 있는데, 개발이면 백업 필요없다.


유지보수

주지적으로 업데이트 되어 인스턴스 재시작 되는 항목이다. 앞서 영역가용성을 단일로 했으면 서비스가 중단 될 수 있을 것 같다.




예상가격 과금

돈 안나오는 구조로만 최소로 만들어보니 시간당 0.02 하루 0.37 달러가 나왔다.

돈 벌어서 스팩을 올리자

 

 

 

DB 인스턴스 생성

 

 

만들고 나서 외부에서 접속할 수 있게끔 승인된 네트워크를 추가해줘야 한다. 

전체로 0.0.0.0/0 으로 해도 되지만 특정 ip 로 할당하는게 그래도 보안에는 좋다. - ALL로 일단 만들고 나중에 ip 허용이든 비공개 ip 든 수정해라

 

완료 클릭 후 저장 버튼 통해 변경 사항 저장하자

 

외부툴에서 DB 접속(DBeaver 기준)

password : cloud sql 생성시 입력했던 암호

포트 : 3306 

드라이버 : mysql

host : 공개IP

 
반응형
반응형

google cloud 에 어플리케이션을 배포하려면 CI/CD 도구가 필요하다.

배포 도구로 github actions 를 통해 구글 클라우드에 어플리케이션을 배포하려면 IAM 이라는 서비스계정 인증절차가 필요한대 이에 대해 포스팅하려고 한다.

 

Github Action 

 최상위 폴더에서 ./github/workflows 폴더에 .yml 파일을 넣어주면 된다. 이 떄 파일명은 상관없다.

 

name: Google Cloud Auth

on:
  push:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    
    - name: Google Auth
      id: auth
      uses: 'google-github-actions/auth@v1'
      with:
        credentials_json: '${{ secrets.GCP_CREDENTIALS }}' 
        
    - name: set up cloud sdk
      uses: 'google-github-actions/setup-gcloud@v1'

    - name: "Use gcloud CLI"
      run: "gcloud info"

위 처럼 github action 파일을 작성해주고, 위의 secrets 텍스트를 GCP IAM 서비스에서 발급 받으면 된다.

 

 

구글 클라우드에 루트 계정이 있겠지만 다른 작업자 및 다른 서비스에서 구글 클라우드를 접근하게 하기 위해서는 IAM 서비스 사용을 해야한다.

github action 처럼 외부 서비스에서 구글클라우드에 접근하게 하려면 

서비스계정을 생성해야 한다.

 

서비스계정 생성

IAM 및 관리자 > 서비스 계정 

계정ID 만 임의로 만들면 끝이다

선택사항 기입할 필요없고 완료 버튼 누른면 완료

 

서비스 계정을 생성하게 되면 리스트에 키 없음이라고 뜨는데, 여기 키를 생성해주게 되면 된다.

해당 줄 맨 우측에 [키관리] 버튼 누르게 되면 키 페이지 로 이동된다.

 

새 키 만들기 

만들기 버튼을 하게되면 json 파일이 다운되는데, 여기서 이 파일의 json 전체를 복사해서

 

github 변수 등록

프로젝트의 settings > Secrets and variables 메뉴에서 Secrets 변수를 넣어주면 된다.

 

 

 

https://cloud.google.com/iam/docs/service-accounts-create?hl=ko

반응형
반응형

이 포스트는 google cloud shell 커맨드에서 
제공하는 편집기와 터니널을 이용해 docker image 를 생성하고 google cloud 도커이미지 저장소인

Artifact Registry 에 도커이미지를 저장하는 방식에 대한 튜토리얼입니다.

 

  1. Google Cloud API가 사용 설정됩니다.
    • Cloud Build API
    • Artifact Registry API

 

빌드할 소스 파일 준비

  1. Cloud Shell 세션을 엽니다. 
  2. quickstart-docker라는 이름의 새 디렉터리를 만들고 디렉터리로 이동합니다.
    mkdir quickstart-docker cloudshell workspace \ quickstart-docker
     
     
  3. Cloud Shell의 파일 편집기에서 파일 > 새로 만들기를 선택하여 quickstart-docker 디렉터리에서 다음 내용으로 quickstart.sh 파일을 생성합니다.
    #!/bin/sh echo "Hello, world! The time is $(date)."
  4. Cloud Shell의 파일 편집기에서 파일 > 저장을 선택하여 파일을 저장합니다.
  5. 같은 디렉터리에서 다음 내용으로 Dockerfile 파일을 만듭니다.
    FROM alpine
    COPY quickstart
    .sh /
    CMD
    ["/quickstart.sh"]
  6. Cloud Shell의 파일 편집기에서 파일 > 저장을 선택하여 파일을 저장합니다.
  7. 터미널 열기를 클릭하여 터미널 창을 엽니다.
  8. 터미널 창에서 다음 명령어를 실행하여 quickstart.sh를 실행 가능하게 만듭니다.
    chmod +x quickstart.s

Artifact Registry에서 Docker 저장소 만들기

  1. us-west2 위치에 'Docker 저장소' 설명과 함께 quickstart-docker-repo라는 새 Docker 저장소를 만듭니다.
    gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
       
    --location=us-west2 --description="Docker repository"
  2. 저장소가 만들어졌는지 확인합니다.
    gcloud artifacts repositories list
    표시된 저장소 목록에 quickstart-docker-repo가 표시됩니다.

 

화면 

 

빌드 구성 파일을 사용하여 이미지 빌드

  1. quickstart.sh  Dockerfile이 포함된 동일한 디렉터리에서 다음 내용으로 cloudbuild.yaml이라는 파일을 만듭니다.
    steps:
    - name: 'gcr.io/cloud-builders/docker'
     
    args: [ 'build', '-t', 'us-west2-docker.pkg.dev/commerce-api-412314/quickstart-docker-repo/quickstart-image:tag1', '.' ]
    images:
    - 'us-west2-docker.pkg.dev/commerce-api-412314/quickstart-docker-repo/quickstart-image:tag1'
  2. 다음 명령어를 실행하여 빌드를 시작합니다.
    gcloud builds submit \ --region=us-west2 --config \ cloudbuild.yaml
     
     

빌드 구성 파일을 사용하여 quickstart-image를 빌드하고 Artifact Registry에 푸시했습니다.

 

빌드 세부정보 보기

  1. Cloud Build 페이지를 엽니다.빌드 기록 페이지가 표시됩니다.
  2.  Cloud Build
  3. 리전 드롭다운 메뉴에서 us-west2를 선택하여 해당 리전의 빌드를 확인합니다.
  4. 특정 빌드를 클릭하면 빌드 세부정보 페이지가 표시됩니다.
  5. 빌드의 아티팩트를 보려면 빌드 요약에서 빌드 아티팩트를 클릭합니다.
  6. 빌드의 출력이 표시됩니다. 이 페이지에서 Artifact Registry의 빌드 로그를 다운로드하고 이미지 세부정보를 볼 수 있습니다.

 

삭제

이 빠른 시작에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Artifact Registry 페이지를 엽니다.
  2.  Artifact Registry
  3. quickstart-docker-repo를 선택합니다.
  4. 삭제를 클릭합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://cloud.google.com/build/docs/build-push-docker-image?hl=ko 

 
반응형
반응형

 

구글 클라우드 플랫폼(GCP) 시작하기

구글 클라우드 플랫폼(GCP)를 사용하려면 먼저 계정을 등록시켜야 합니다. Gmail에 사용하는 구글 계정이 있는경우 이를 통해 로그인을 진행 할 수 있지만 클라우드 계정이 없다면 클라우드 계정에 가입해야합니다. 구글 클라우드 플랫폼은 90일간 $300을 사용할 수 있는 무료 크레딧을 제공해 주기 때문에 이를 통해 구글 클라우드 플랫폼을 체험해 볼수도 있습니다.

 

구글 클라우드 플랫폼 등록을 맞추면 클라우드 콘솔로 이동하고 My First Project라는 새로운 프로젝트가 자동으로 만들어 줍니다. 또한 페이지의 왼편에는 컴퓨팅, 서버리스, 저장소등과 같이 구글 클라우드 플랫폼이 제공하는 서비스가 속한 카테고리와 프로젝트별 구성란이 있습니다.

 

1. 프로젝트 선택하기

 

2. cloud shell

cloud shell 활성화하기

cloud shell 로 한 프로젝트에 속한 application 들을 관리

 

gcloud auth list

 

gcloud config set account `이메일계정`

 

다음과 같이 output 이 나오면 인증 되었고, 아래 명령어로 프로젝트를 확인하면 된다.

gcloud config list project

 

정상 output 이다 

안된다면 아래 명령어로 project 를 설정하자

gcloud config set project <PROJECT_ID>



참고

https://codelabs.developers.google.com/codelabs/cloud-app-engine-springboot#0

반응형
반응형

Go 설치 방법

go 현재 버전 1.19.4입니다. 타르볼을 다운로드하기 전에 공식 이동 다운로드 페이지를 방문하여 버젼을 확인한다.

 

01. 파일 다운로드

Go 바이너리를 다운로드하려면 wget 또는 curl을 사용한다.

wget https://dl.google.com/go/go1.19.4.linux-amd64.tar.gz

 

 

02. 압축 풀기

이전 go 파일 삭제 후 tar 명령을 사용하여 /usr/local 디렉토리에 설치한다.

$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.19.4.linux-amd64.tar.gz

 

해당 경로에 go 폴더가 생긴다. 

$ cd /usr/local/go/bin
$ ./go version
go version go1.19.4 linux/amd64

 

go 실행을 환경변수에 지정하기

go 실행을 아무 경로에서 자유롭게 실행하기 위해서 ~/.bash_profile 에 경로와 GOPATH를 지정합니다.

$ vi ~/.bash_profile
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:/usr/local/go/bin

지정한 것만으로는 바로 반영이 아니되므로, 재로그인 아니면

$ source ~/.bash_profile

파일을 저장하고 다음 명령을 사용하여 새 PATH 환경 변수를 현재 셸 세션에 로드합니다.

source ~/.bash_profile

 

공식문서

https://go.dev/doc/install

 

Download and install - The Go Programming Language

Download and install Download and install Go quickly with the steps described here. For other content on installing, you might be interested in: 1. Go download. Click the button below to download the Go installer. Download Go Don't see your operating syste

go.dev

 

반응형
반응형

circuit breaker 가 오픈되었는지 닫혀있는지를 확인하려면 대시보드가 필요하다는 생각이 든다.

예전에 histrix 를 이용할때는 turbin 이라는 모니터링이 있던거로 기억하는데, spring cloud gateway 의 circuit breaker 인 

Resilience4j 는 없다.

Resilience4j 에는 모니터링 툴이 존재 하지 않아 micormeter 로 metric 제공하는 내용으로 모니터링을 직접 구성해야 한다.

메트릭을 수집하고 표현하는 대시보드는 prometheus 와 grafana 로 모니터링을 할 수 있다.

 

준비 

1. Prometheus 설치

2. grafana 설치

 

스프링 yml

cloud:
  gateway:
    routes:
      - id: test
        uri: http://localhost:9091
        predicates:
          - Path=/circuit/**
        filters:
          - name: Retry
            args:
              retries: 3
              method: GET
              backoff:
                firstBackoff: 50ms
                maxBackoff: 500ms
          - name: CircuitBreaker
            args:
              name: myCircuitBreaker #서킷브레이커 명.
              fallbackUri: forward:/fallback
              statusCodes:
                - 500

예시로, 요청하려는 서버의 응답코드가 500 이면 서킷브레이커가 가동되고, 서킷브레이커의 네이밍을 지정할 수 있다. 이 네이밍 myCircuitBreaker 는 dashboard 에 찾을 수 있다.

스프링 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency> <!-- 모니터링 -->

모니터링을 위해 필요한 metric 을 제공하는 라이브러리는 micrometer-registry-prometheus 이다.

 

그리고 actuator 가 있어야, prometheus 가 데이터를 수집해줄 수 있다.

actuator 엔드포인트 /actuator/prometheus 로 데이터 수집한다.

 

http://localhost:포트/actuator/prometheus

과 같이 나온다.

 

프로메테우스 구성법

https://juntcom.tistory.com/188

 

프로메테우스 Prometheus 시작하기(docker)

프로메테우스란 - prometheus 란 오픈소스 모니터링 툴로 지표 수집을 통한 모니터링이 주요 기능이다. 쿠버네티스 뿐만 아니라 애플리케이션이나 서버, OS등 다양한 대상으로부터 지표(Metric)를 수

juntcom.tistory.com

prometheus.yml 

서버에서 실행시

vi /etc/prometheus/prometheus.yml

global:
  scrape_interval: 10s # 10초마다 매트릭을 수집 default 1분
  evaluation_interval: 1m # 1분마다 규칙을 평가 default 1분

  external_labels: # 외부 시스템에 표시할 이 서버의 레이블
    monitor: 'monitor'

rule_files: # 규칙을 로딩하고 evaluation_interval 설정에 따라 정기적으로 평가한다.
# - "first.rules"
# - "second.rules"

scrape_configs:
  - job_name: 'circuit-breaker' 
    metrics_path: '/actuator/prometheus' # 메트릭을 수집할 path 설정
    static_configs:
      - targets: [‘ip:포트’] #로컬도커인 경우 'host.docker.internal:포트'

도커 실행
docker run -d -p 9090:9090 -v /etc/prometheus:/etc/prometheus --name prometheus prom/prometheus

프로메테우스 실행 하면 
http://localhost:9090/targets  에 수집하고 있는 target 들 현황을 볼 수 있다.

 

위의 데이터 수집까지 되었으면 prometheus 로 수집한 데이터를 grafana 로 데이터 보여주면 된다.

grafana 설치까지 하면 인프라 구성은 완료 

grafana 설치했으면 prometheus 를 datasource 추가하자.

다음에

https://resilience4j.readme.io/docs/grafana-1 대시보드 설치해주면된다.

https://github.com/resilience4j/resilience4j/blob/master/grafana_dashboard.json 

 

GitHub - resilience4j/resilience4j: Resilience4j is a fault tolerance library designed for Java8 and functional programming

Resilience4j is a fault tolerance library designed for Java8 and functional programming - GitHub - resilience4j/resilience4j: Resilience4j is a fault tolerance library designed for Java8 and functi...

github.com

위 json 파일을 대시보드로 import 해주면 끝.


혹 데이터가 보이지 않으면, datasource 를 방금 추가해준 prometheus 설정으로 수정 하면 된다.

반응형

'인프라 > 모니터링' 카테고리의 다른 글

[ELK] logstash 설치 및 실행하기  (0) 2022.07.13
telegraf 시작하기  (0) 2022.01.04
Burrow 시작하기  (0) 2021.12.30
ZIPKIN 시작하기  (0) 2021.11.25
프로메테우스 Prometheus 시작하기(docker)  (0) 2021.11.04
반응형

logstasth 로 elasticsearch 에 데이터를 넣어줄 수 있다.

나는 kafka 데이터를 logstash 로 컨슘하고 output 저장소로 elasticsearch 에 넣으려고 한다.

 

https://www.elastic.co/guide/en/logstash/6.6/installing-logstash.html

 

Installing Logstash | Logstash Reference [6.6] | Elastic

Use the echo method described above to add the Logstash repository. Do not use add-apt-repository as it will add a deb-src entry as well, but we do not provide a source package. If you have added the deb-src entry, you will see an error like the following:

www.elastic.co

이거대로만 하면 logstash 설치 가능하다.

 

요약하자면

centos 기준, elasticsearch version 6 기준

1. 퍼블릭키를 다운

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2. 경로 /etc/yum.repos.d/ 에서 logstash.repo 라는 파일 생성 후 아래 코드 작성

[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

3. 설치

sudo yum install logstash
 

 

conf 파일 작성.

/etc/logstash/conf.d/ 경로에 logstasth.conf 파일 생성 후 

내용 작성한다.

input 및 output 설정해주면 된다. -> Pipline.yml 에 

path.config: "/etc/logstash/conf.d/*.conf"

과 같이 파이프라인 파일에 conf 파일을 읽는 거로 설정되어 있기 때문에 저 경로에 파일 생성해준다.

input {
    kafka {
        bootstrap_servers =>  "172.11.11.11:9092"
        group_id => "logstash"
        topics => [“test-topic”]
        consumer_threads => 1
    }
}

filter {
}

output {
    stdout {
        codec => rubydebug
    }    
    elasticsearch {
        hosts => "172.11.22.22:9200"
        index => "kafka-test-%{+YYYY-MM-dd}"
        document_type => "_doc"
    }
}

 

 

로그스태시 실행(start, restart, stop)

 systemctl restart logstash

 

- 로그 스테이스 설정 파일의 변경 사항을 적용하려면 재시작을 한다.

로그스테이시 로그

$ tail -f /var/log/logstash/logstash-plain.log

 

https://medium.com/geekculture/data-pipeline-from-kafka-to-elastic-search-using-logstash-5edca8d44d82

filter {
  mutate {
  add_field => {
  "id" => "%{[data][id]}"
  }
  add_field => {
  "firstName" => "%{[data][firstName]}"
  }
  add_field => {
  "lastName" => "%{[data][lastName]}"
  }
  add_field => {
  "city" => "%{[data][city]}"
  }
  add_field => {
  "country" => "%{[data][country]}"
  }
  add_field => {
  "email" => "%{[data][email]}"
  }
  add_field => {
  "phoneNumber" => "%{[data][phoneNumber]}"
  }
  add_field => {
  "createdAt" => "%{[data][createdAt]}"
  }
  remove_field => ["data", "@version", "@timestamp", "message", "event", "globalId"]
  }
  }
 
반응형

'인프라 > 모니터링' 카테고리의 다른 글

spring cloud resilience4j 모니터링  (0) 2022.11.03
telegraf 시작하기  (0) 2022.01.04
Burrow 시작하기  (0) 2021.12.30
ZIPKIN 시작하기  (0) 2021.11.25
프로메테우스 Prometheus 시작하기(docker)  (0) 2021.11.04
반응형

Telegraf 설정

Telegraf는 agent application으로서 burrow의 rest api데이터를 일정주기로 ES에 전달하는 역할을 합니다.

 

설치

centos 다운

# influxdb.key GPG Fingerprint: 05CE15085FC09D18E99EFB22684A14CF2582E0C5
cat <https://repos.influxdata.com/stable/\$basearch/main
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
sudo yum install telegraf

위 두 명령어 입력하면 다운된다. os 별 다운로드는 하기 링크에 있다.
https://portal.influxdata.com/downloads/

 

시작하기

systemctl start telegraf <-- 시작하기
sudo systemctl status telegraf  <-- 확인하기 

 

설정확인 후 재시작

systemctl restart telegraf

 

telegraf.conf

[[inputs.burrow]]
  servers = ["http://버로우:8000"]
  topics_exclude = [ "__consumer_offsets" ]
  groups_exclude = ["console-*"]

[[outputs.elasticsearch]]
  urls = [ "http://엘라스틱서치:9200" ] 
  timeout = "5s"
  enable_sniffer = false
  health_check_interval = "10s"
  index_name = "burrow-%Y.%m.%d" 
  manage_template = false

https://runebook.dev/ko/docs/influxdata/telegraf/v1.3/introduction/getting_started/index

 

 

 

반응형

'인프라 > 모니터링' 카테고리의 다른 글

spring cloud resilience4j 모니터링  (0) 2022.11.03
[ELK] logstash 설치 및 실행하기  (0) 2022.07.13
Burrow 시작하기  (0) 2021.12.30
ZIPKIN 시작하기  (0) 2021.11.25
프로메테우스 Prometheus 시작하기(docker)  (0) 2021.11.04

+ Recent posts