[gRPC] gRPC의 이해

Pinpoint에서 gRPC를 사용해서 통신을 하는 방법이 있기도 하고, 현재 gRPC에 대한 제대로 된 이해조차 없이 무지성 사용중이기에 이를 조금 이해하고자 한다. gRPC와 비교할만한 군이 REST라고 생각하는데, gRPC에 대해 중점적으로 알아봤다. gRPC? RPC? gRPC는 구글이 최초로 개발한 오픈소스 RPC 시스템이다.(참조: https://ko.wikipedia.org/wiki/GRPC) 원격 프로시저 호출(RPC) 모델을 기반으로 한다는데… 사실 이게 무슨 말인지 하나도 이해가 안간다. 먼저 RPC에 … Read more

[Linux] netstat 명령어

현업에서 자주 사용되는 명령어 중 하나인 netstat에 대해 다뤄볼까 한다. 간단한 명령어기도 하고, 자주 쓰이는 옵션들은 한정적이라 깊게 다룰만한 명령어는 아니지만 정말 유용하게 쓰인다. netstat 네트워크 연결에 관한 정보를 표시해주는 명령어인데, 주로 현재 서버에서 열려있는 port 및 해당 port를 물고 있는 프로세스 확인의 용도로 사용하고 있다. 단순하게 netstat을 쳐보면 어지러운 글자들의 향연이 펼쳐진다. 그렇기에 필요한 … Read more

[Kubernetes] VSCode virtualbox 연결하기

virtualbox로 만든 vm에 있는 minikube에 붙는 것이 목적이다. minikube 설치하는 방법은 아래의 링크를 참고하면 좋을 것 같다. VSCode virtualbox 연결하기 먼저 연결할 vm에 네트워크 설정에 들어가 어댑터 1번의 포트포워딩을 추가한다.(로컬 PC의 13222 port를 해당 장비의 22 port로 포워딩하는 규칙이다.) VSCode의 Remote-SSH로 위와 같은 config를 작성한다. 그 후 원격연결을 시도하면 SSH를 통해 해당 VM에 붙는 것을 … Read more

[Kubernetes] minikube 설치 in Windows

Windows에 minikube 설치를 필요로 한 계기는 딱 하나였다. 개발자들이 로컬 PC에서 개발을 할 때, kubernetes의 환경을 미리 접하면 좋을 것 같다라는 의견이 시작이였다. 물론 개인마다 k8s를 줄 수 있다면 좋겠지만, 여러 문제들이 있기에 로컬 PC에 minikube를 설치하여 진행하기로 한 것이다. 개발자들의 PC는 MacOS가 대부분이지만 Windows도 있고, 내 컴퓨터도 마찬가지기에 Windows로 진행을 해보기로 했다. VirtualBox 설치하기 … Read more

[Pinpoint] Collector Starter, Web Starter, Agent 설치

Pinpoint 3.0을 활용하고 싶으면 Pinot, Kafka를 설치해서 Metrics을 수집할 수 있기에 매뉴얼은 위에 기록했다. Pinpoint 3.0에는 일반적인 Collector, Web도 있지만 Pinot와 Kafka를 붙여서 사용하는 Collector Starter, Web Starter라는 것이 있다. 여기서 크게 문제가 됐던 부분이 있어서…. 헤맨 기억이 있다. Collector Starter v3.0 설치하기 위경로에서 jar 파일을 다운 받고 기존에 설치했던 java를 통해 실행만 시켜주면 끝이다. … Read more

[Pinpoint] Pinot, Kafka 설치

Pinpoint 3.0을 사용하려면 Pinot, Kafka 설치 전 HBase를 설치하는 매뉴얼은 위에 기록했다. Pinpoint 3.0부터는 System Metrics를 수집하는 것이 하나의 특징을 보인다. 그렇다면 이러한 System Metrics를 수집해보는 것이 당연하다 느껴져서 이를 도전해보고자 했다. System Metrics 수집은 Pinot와 Kafka를 필요로 하기에 설치를 진행했다.(Pinot는 처음 들어보는…..) Kafka v2.13 설치하기 위 경로에서 2.13 버전을 다운받아 압축을 풀어준 후에는 zookeeper.properties에서 … Read more

[Pinpoint] HBase v2.5.10 설치하기

Naver에서 개발한 오픈소스인 Pinpoint… APM Tool이면서 성능 분석도구로 많이 사용하고 있다. 다른 APM 툴에 비해서 장단점은 명확히 존재하지만, 오픈소스기도 하고 따로 소스코드쪽 수정이 필요없기에 많은 선택을 받고 있다고 생각한다. Pinpoint는 여러가지 서비스(모듈)들이 합쳐지는데 각각의 버전 호환 여부가 중요하다. https://github.com/pinpoint-apm/pinpoint 위 링크를 통해 버전들을 확인해보면서 아직 정식출시되지는 않았지만 어느정도 개발이 완료된 것 같은 Pinpoint 3.0을 채택하였다.(실제 … Read more

[ERROR] k8s spec.initContainers[0].image: Required value

Kubernetes에서 반나절을 귀찮게 했었던 에러가 있었다…. deployment manifest파일을 작성하여 kubectl apply ~를 했지만 왜인지 pod가 계속 생성되지 않았었고, kubectl describe ~로 deployment와 replicaset을 확인한 결과 아래 에러가 계속 발생하고 있었다. 분명히 deployment.yaml에는 Container의 Image를 명시해줬는데 위 에러가 뜨길래 여러 삽질을 했었다….. 에러를 차근차근 분석해야한다. 에러를 확인해보면 일반 Container가 아닌 initContainer의 image를 찾고 있는 것 처럼 … Read more

[Linux] fstab 파일에 대한 이해

서버를 관리하는 엔지니어면 대부분 알고 있는 fstab에 대해서 기록하고자 한다. fstab은 한마디로 “서버 부팅단계에서 마운트되어야 할 볼륨 정보를 담은 파일”이다. 서버 부팅중 에러가 나는 경우의 절반은 fstab이 차지했던 것 같다.(이제는 별로 그럴 일은 없지만..) 먼저 간단하게 fstab에 예는 아래와 같다. fstab 파일 /etc/fstab에 존재하고 있으며 크게 6개의 정보로 이루어진다. 1번 – UUID 또는 /dev/vdb(장치명)으로 표현되는데 … Read more

[ERROR] GitLab Forbidden 에러 발생

갑작스레 호스팅중이였던 GitLab에 Forbidden 에러가 발생했다. 증상은 GitLab에 접속하게 되면 아래와 같이 Forbidden 문구가 출력됐다. 에러 추적 과정 Block IP 해제하기 GitLab Redis에서 Block IP를 해제하는 방법은 생각보다 쉬웠다. 위처럼 redis-cli를 통해 Gitlab Redis에 접속 후 ban되어있는 IP를 확인하여 해당 값을 삭제한다. 갑작스레 에러가 발생하면, 해당 에러의 증상부터 파악하는 것이 원인을 빠르게 찾는 답인 것 … Read more