반응형

 

Prometheus Query를 몇달만에 수행하면, 나의 기억력이 떨어져서 손이 멈짓하는데

자주 사용하는 PromQL 예제를 여기에 메모하고 참조해야겠다.

 

##
## Kubernetes, OCP(Openshift)의 ETCD Pods CPU 통계 데이터 조회
##

pod:container_cpu_usage:sum{namespace="openshift-etcd", pod=~"etcd.+"}


##
## Kubernetes, OCP(Openshift)의 DNS Pods CPU 통계 데이터 조회
##

pod:container_cpu_usage:sum{namespace="openshift-dns", pod=~"dns-.+"}


##
## Kubernetes, OCP(Openshift)의 API Server Pods CPU 통계 데이터 조회
##
pod:container_cpu_usage:sum{namespace="openshift-apiserver", pod=~"apiserver-.+"}

 

위 예제의 마지막 Query를 실행하면 아래와 같은 챠트가 출력된다.

 

 

 

반응형

 


 

Open Source Project(오픈 소스 프로젝트) 그 자체 또는 그것을 이용한 제품(Project)를 보면,

Upstream(업스트림), Downstream(다운스트림)이라는 표현이 자주 보인다.

 

예를 들어, 아래와 같은 표현을 보자.

OKD는 Upstream 활동으로 만들어진 Open Source Project이고
OCP는 OKD에 대한 Downstream 활동으로 만들어진 Project이다.

Fedora는 Upstream Project이다.
RHEL 8은 Fedora의 Downstream 활동으로 만들어진 OS이다.
RHEL 9은 CentOS Stream의 Downstream 활동으로 만들어진 OS이다.

 

 

Open Source  Project는 Upstream, Downstream으로 이루어진다.

(절대적으로 이렇다는 것은 아니고, 대부분 활성화된 Open Source Project가 이렇다는 뜻이다)

 

Upstream은 그 Project의 Open Source Code에 직접 Contribution하는 것이고,

Downstream은 Upstream 활동으로 만들어진 결과물(Artifact)를 사용해보면서(즉, 테스트하면서) Feedback을 주는 행위를 하거나 자기 사업에 적용하는 행동을 의미한다.

 

 

Upstream, Downstream 활동을 요약해보면, 아래와 같다.

  • Upstream Activity
    • 요구 사항 분석(Requirement Analysis)
    • 설계(Design)
    • 구현(Implementation)
    • 문서(Document) 작성
    • 번역
    • Bug Fix
  • Downstream Activiry
    • Upstream Project에서 배포된 PKG 설치, 사용
    • 사용 후 Feedback을 Upstream Project(Community)에 제공
    • 본인 사업에 적용하여 운영
    • 사례 공유

위 내용은 사전적 정의라기 보다는 나의 주관이 쬐~끔 반영된 것이니까, 너무 찰떡 같이 받아들이지 않기를~~~

 


 

반응형

아래 Web Docs에 간단한 사용법과 예제가 있어서 급하게 MD 작성할 때 참조하기 좋다.

 

 

https://heropy.blog/2017/09/30/markdown/

 

MarkDown 사용법 총정리

마크다운(MarkDown)에 대해서 알고 계신가요?파일 확장자가 .md로 된 파일을 보셨나요?웹 개발을 하면서 아마 README.md라는 이름의 파일을 한 번은 보셨을텐데, ...

heropy.blog

 

반응형

Elastic 가이드 북 (김종민 님)

업무 때문에 1~2일 이내에 잽싸게 Elastic을 스터디하고, ElasticSearch를 설치 및 Client App을 개발해야 하는데 어디서 부터 봐야 하는지 막막했다.

그러다가 찾은 Web Docs가 김종민 님의 "Elastic 가이드 북" 이었다.

 

https://esbook.kimjmin.net/

 

Elastic 가이드 북 - Elastic 가이드북

7. 인덱스 설정과 매핑 - Settings & Mappings

esbook.kimjmin.net

 

위 Elastic 가이드 북을 읽고, Elastic에 관해 두루두루 이해를 하고 깊게 봐야 하는 것만 Elastic 공식 Web Site에서 Document를 보면 딱 좋다.

 

 

Elastic Official Guide Documents

Elasticsearch 및 그 주변의 Stack Tool에 관한 모든 것이 다 설명되어 있다.

게다가 Elasticsearch Client API도 Programming Language 별로 설명 및 Example이 잘 작성되어 있다.

Elasticsearch를 사용하다가 궁금하거나 필요한 정보가 있다면, 이 Official Guide Docs를 보는 것이 좋다.

 

 

 

Welcome to Elastic Docs | Elastic

 

www.elastic.co

 

 

 

 

ElasticSearch REST API Example

내가 많이 사용하는 검색 예시이다. 급할 때 참고해서 작성하면 좋을 듯...

 

## 참고: 아래 HTTP REST API 예시는 Kibana의 [Dev Tools] UI에서 수행하기 !!!


##
## index 목록과 요약 정보(Document 개수, 용량) 조회하기
##
GET _cat/indices?v

## 응답은 이렇다.
health status index           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   example-index-0 Up1jqY3PTG2pLHdOLJcLGQ   1   1   18126912          739      2.9gb          2.9gb
yellow open   test-index      nGaLdNNORHKfJF1maBlNvw   1   1          2            0     11.2kb         11.2kb




##
## "ALARM" 문자열이 있는 Document를 탐색
##

GET _search?size=50
{
  "query": {
    "match": {
      "message": "ALARM"
    }
  }
}


##
## "kubernetes.container_name": "apiserver" 인 Document를 탐색
##

GET _search?size=50
{
  "query": {
    "match": {
      "kubernetes.container_name": "apiserver"
    }
  }
}


##
## Pod labels에 "vendor=KingSejong" 설정된 Pod가 출력만 로그(즉, Docs)만 검색
##

GET app-*/_search?size=30
{
  "query": {
    "match": {
      "kubernetes.flat_labels": "vendor=KingSejong",
    }
  }
}


##
## Index가 app-000051인 문서 전체를 열람
##

GET app-000051/_search
{
  "query": {
    "match_all": {}
  }
}


##
## Pod의 labels에 "app=my-test-app"가 설정되어 있는 Pod가 출력한 로그 중에서
## 로그의 내용이 "CREATE" 문자열을 포함하는 Document만 검색
##

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "kubernetes.flat_labels": "app=my-test-app"
          }
        },
        {
          "match_phrase": {
            "message": "CREATE"
          }
        }
      ]
    }
  }
}

 

 

 

 

CURL 명령으로 Elasticsearch의 Index, Document를 조회, 생성하는 예제

아래 Blog에 작성된 예제 코드를 그대로 따라하면,

  • Index
    • 생성, 삭제, 리스트를 조회, 특정 Index를 조회하는 것을 할 수 있다.
  • Document
    • 생성, 삭제, 리스트를 조회, 특정 Document를 조회하는 것을 할 수 있다.

 

https://twofootdog.tistory.com/55

 

Elasticsearch REST API 사용하기(인덱스, 도큐먼트 CRUD)

Elasticsearch에서 인덱스(index)와 도큐먼트(document)를 조회/등록/변경/삭제 등을 수행하기 위해서는 REST API를 호출하게 된다. 이번 글에서는 Elasticsearch에서 사용하는 API에 대해 알아보고자 한다. 1.

twofootdog.tistory.com

 

반응형

작성일: 2024년 1월 4일

 

 

HW, SW를 개발해서 고객사에 납품하는 회사라면, BMT, SVT, DVT, CVT, UAT 등과 같은 Test  관련 용어를 자주 사용할 것이다.

그런데 내가 이 용어가 어떤 단어의 축약어인지 몰라서 같이 일하는 동료에게 물어보니..

이 축약된 용어의 Full Name과 정확한 의미를 모르더라... ㅠㅠ

그래서 여기 저기 찾아서 메모를 해본다.

 


 

BMT ( Benchmark Test )

고객이 요구하는 기능과 성능/용량이 제공 가능한지 가늠해보기 위한 벤치마크 테스트

 

 

SVT ( System Validation Test,   Supplier[Self] Validation Test)

일반적으로 SI, IT업계에서는 HW 같은 물리 장비를 고객사 사이트에 설치하고, 기능 및 성능 검증.

(HW, OS, Platform를 고객사 사이트에 납품 및 설치하고 잘 동작하는지 테스트하는 것을 SVT라고 한다.)

그런데, 내가 일하는 네트워크 산업 분야에서는 Supplier[Self] Validation Test로 사용하는 경우가 있다.

즉, 개발/공급하는 회사가 고객사에 시스템 및 Software를 납품하기 전 단계에서 자체적으로 종합 테스트하는 것을 일컫는다.

 

 

DVT ( Developer Validation Test)

내가 일하는 통신 업계에서는 Developer Validation 이라고 하는데, 다른 산업에서는 Design Validation이라고 하는 것 같다.

 

 

CVT ( Customer Validation Test )

고객이 직접 인수할 장비의 기능과 품질을 검증한다. (물론 공급사 담당자를 옆에 앉혀 놓고 하는 것이 일발적인 업무 프로세스이다.)

 

UAT ( 인수자(Underwriter?) Validation Test )

인수자(고객사)가 테스트를 한다는 것은 상용 서비스를 가정하고 테스트하는 것이기 때문에 실제 상용 환경도 100% 동일한 환경에서 기능, 성능, 용량 검증 테스트한다.

 

 

EVT ( Engineering Validation Test )

과부하, 과용량 상태를 만들어서 문제 없이 기능, 서비스(즉, Feature)가 제공되는지 확인한다.

Stress를 팍팍 주면서 Aging Test(에이징, 장시간 테스트)를 하는 것이 일반적이다.

 

 

블로그 작성자: sejong.jeonjo@gmail.com

 

 

 

반응형

 

요즘 새 프로젝트를 시작하면서, 이전에 설계했던 방식과 다르게 운영 시스템을 만들게 되었다.

참고로, 내가 일하고 있는 분야(Core Network 시스템, IP Network 시스템)는 개발 방식이 20년 전이나 지금이나 크게 변한게 없다.

그래서 기왕에 새로 개발하는 거라면, 요즘 API 트렌드를 공부하고 설계하는 것이 좋겠다는 생각이 들어서 서점에 가서 최근 2년 사이에 출간한 IT 도서를 몇권 구입해서 왔다.

그 중에서 Arnaud Lauret이 쓴 The Design of Web APIs를 읽어보니 API 설계를 쉽게 설명해줘서 재미있게 읽었다.

 

회사에서 API 설계할 일이 있어서, 그 동안 통밥으로 API를 설계/구현한 일이 몇번 있지만, 내가 잘 알고 한 일이 아니라서 항상 협업하는 동료한테 미안한 마음이 있었다.

 

책을 읽고 좀더 API 설계에 대한 기준이 세워진 것 같아서 좋았다.

 

그리고 책 중간 중간에 유용한 도구를 소개해주고 있는데, API 관련 개발 도구 목록도 있어서 메모를 해본다.

 

 

https://OpenAPI.tools

 

 

 

 

 

 

OpenAPI Generator

 

OAS (OpenAPI Specification) 문서를 이용해서 OpenAPI Source Code를 프로그래밍 언어별로 생성해주는 Tool

 

https://openapi-generator.tech/docs/generators/go

 

OpenAPI Generator · Generate clients, servers, and documentation from OpenAPI 2.0/3.x documents

## METADATA

openapi-generator.tech

 

반응형

 

 


 

Network Programming을 하다보면, curl을 이용해서 간단하게 테스트할 일이 종종 있다.

맨날 사용하는 개발자라면, 머릿속에 curl 사용법이 있어서 금방 명령어를 만들어서 사용하겠지만 나처럼 1년에 5번 정도 사용하는 사람은 매번 검색하는 것도 일이고 시간 낭비이다. 

그래서 자주 사용하는 명령 패턴을 메모를 좀 남겨놓고 필요할 때마다 Copy & Paste 해볼까 한다.

 

설치

아래 명령처럼 설치한다.

##
## Ubuntu 리눅스
##

$ apt install curl


## CentOS, RedHat Linux(RHEL)

$ yum install curl

 

 

CURL 명령의 주요 옵션

-X  (--request)

    HTTP Method.

    예를 들어 GET(조회), POST(데이터 생성), PUT(전체 내용 변경), DELETE, PATCH(일부 내용 변경)

 

-d  (--data)

   POST, PUT 메소드로 요청시 HTTP Body에 담아서 보낼 데이터

 

-H  (--header)

   HTTP Header 항목과 값을 정의

 

 

CURL 명령 예제

 

GET Method 예제

 

##
## Example - OCP에서 Node 정보를 가져오는 명령
##

TOKEN=$(oc whoami -t)
ENDPOINT="https://api.ocp.mycluster.io:6443"
NAME="worker1.ocp.mycluster.io"

curl -k \
    -H "Authorization: Bearer $TOKEN" \
    -H 'Accept: application/json' \
    -X GET  $ENDPOINT/api/v1/nodes/$NAME/status  
    
    
##
## Example - 요청 메시지에 Data를 포함하여 전송하기
##

curl -d "mykey1=myvalue1&mykey2=myvalue2" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -X GET http://mywebserver.example/api/v1
     
     
     
##
## Example - Query Parameter 형태로 요청 메시지를 전송하는 경우
##           이 때는 특수문자 또는 공백 문자 때문에 urlencode 처리를 해야 한다.
##
## 참고로, 아래 예시는 OCP Pod의 Memory 사용량 조회하는 API를 Call하는 것이다.
##

RESPONSE_FILE=curl-metric-node-cpu.json

curl -s -k -o $RESPONSE_FILE\
    -H "Authorization: Bearer $TOKEN" \
    -H 'Accept: application/json' \
    --data-urlencode "query=instance:node_memory_utilisation:ratio{job=\"node-exporter\", instance=\"worker4.ocp.mycluster.io\", cluster=\"\"} != 0" \
    $ENDPOINT/api/v1/query

 

POST Method 예제

 

##
## Example - URL 형식의 Data 전송
##

$  curl -d "mykey1=myvalue1&key2=myvalue2" \
        -H "Content-Type: application/x-www-form-urlencoded" \
        -X POST  http://my.webserver.example/api


##
## Example - JSON 형식의 Data 전송
##
$  curl -d '{"mykey1":"myvalue1", "mykey2":"myvalue2"}' \
        -H "Content-Type: application/json" \
        -X POST  http://my.webserver.example/api

 

 

 

반응형

 

Framework란 무엇인가?

Software의 설계와 구현을 재사용이 가능하도록 협업화된 형태로 Software PKG를 제공하는 것

 

 

JavaScript Client Side Framework

  • React.js
  • Angular.js
  • Vue.js

 

JavaScript Server Side Framework

  • Node.js의 Express

+ Recent posts