전체 글 39

Kubernetes 에서 Monitoring System(Prometheus) 운영경험기

필자는 2017년 초부터 현재까지 약 2년 6개월에 가까운 기간동안 kubernetes 기반 모니터링 시스템을 운영하였다.(실제 Prometheus로 운영한 것은 2019년 2월부터) 기간으로만 따지면 매우 긴 기간이지만 그에 비해 경험이 충분하지 않다고 생각한다.(전체 시스템 Scalability에 한계가 있음) 하지만 k8s에서의 모니터링 시스템 운영할 예정이거나 운영하고 계시는 분들에게 미약하게나마 도움이 되고자 사용 경험담(실수, 팁 등)을 공유하고자 한다. 전체를 크게 3개 부분으로 나누었다. 1. Kubernetes 사용 관련 2. Prometheus 설치/운영 관련 3. Prometheus Query, Grafana 사용 관련 각각의 세부 내용은 중요하다고 생각하는 부분을 흐름이나 순서없이 ..

Monitoring 2019.11.27

AWS Lambda로 EC2 Instance 비용 절약하기

필자의 전략은 변동성 돌파가 아닌지라 트레이딩 동작은 매수/매도일때만 한다.이는 EC2 인스턴스를 하루종일 켜둘 필요가 없다는 의미이며, 현재기준으로는 하루 30분 정도면 충분하다. 윈도우 인스턴스는 프리티어로 실행하기에는 다소 무리가 있다. Scale-up이 필요한데 AWS Lambda를 이용하면 매우 적은 비용으로 높은 인스턴스를 운용할 수 있다. https://aws.amazon.com/ko/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/ Cloudwatch의 Crontab rule을 이용하면 정해진 시간에 켜고 끌 수 있다. https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Sch..

System Trading 2019.01.22

Grafana API Call Flow 분석

Grafana는 모니터링 대시보드로서 거의 반표준으로 사용되고 있다. 지원되는 기능이 많아 수정하는 경우가 별로 없지만, 필자의 경우 Grafana에서 지원하는 기본 Multi-Tenant 로는 부족하여 API를 직접 구현/추가하였다. 이를 위해 먼저 Grafana API 호출 흐름을 이해하고 있어야 한다. 여기서는 Grafana Backend의 API Call 흐름을 간단하게 분석해보고자 한다. Grafana의 Backend는 Golang으로 작성되어 있으며, Frontend는 AngularJS로 되어있다.AngularJS는 Framework이라 구조에 대해 별로 평할게 없지만, Backend는 Golang을 모르더라도, 정말 쉽게 이해할수 있도록 가독성 높게 구현되어 있다.Grafana Git Clo..

Monitoring 2019.01.17

시스템 트레이딩 시작

필자는 2018년 3월부터 코인대상 시스템 트레이딩을 시작하였다. 그러다가 9월부터 주식도 하게 되었으며, 거의 매일매일 트레이딩 봇 개발을 하고 있다. 필자의 전략을 모두 공개하면 좋겠으나 난 아직 성공한 트레이더도 아니고 kangcfa나 systrader님처럼 남들이 개미투자자들을 널리 이롭게 하려는 오픈 마인드를 가진 성격도 아닌지라 간단하게만 소개하고 앞으로 트레이딩 개발에 있어서 여러가지 정보들을 기록하려고 한다. 코인의 경우 현재 다음과 같은 컨셉의 봇을 1종 개발해 돌리고 있고, 오픈베타인 헤이비트도 동시 사용하고 있다. 잡코인 대상 + 모멘텀 벡테스트 결과는 다음과 같다 Result (2018-08-02~2018-09-01) - R: 0.13179, D: 4/5(0.8), C: 55/69(..

System Trading 2019.01.06

Prometheus Operator #2 - 설치 및 사용

여기서는 Prometheus Operator를 Helm Chart로 설치해보고 형태를 간략히 살펴보도록 하겠다. Operator를 OLM(Operator Lifecycle Manager)으로 설치/관리할 수도 있겠으나 필자는 현재 해당 방법으로는 해본적이 없고 Harbor, Spinnaker등의 Registry, CD 플랫폼과 연계하려다보니 Helm Chart로 하는게 적합하다 싶어 해당 방법으로만 설명한다.사전 준비조건Kubernetes v1.11HelmPrometheus Operator 다운받기Stable Helm chart를 곧바로 사용하면 좋겠으나, 그대로 사용하기에는 환경에 따라 수정을 해야할 필요가 많기 때문에(예를들어 k8s api 버전에 따라 최신 chart가 동작하지 않음) 해당 char..

Monitoring 2019.01.02

Prometheus Operator #1 - 소개

Operator Framework 란?Prometheus Operator를 소개하기 전에 먼저 Operator Framework를 알아보자. Container의 Lifecycle을 관리하기 위해 Kubernetes(k8s)가 나왔으며, 많은 각광을 받고 있다. 그러나 사람이 직접 유지보수해야 하는 부분은 존재한다. 예를 들어 Configuration 변경이나 stateful application의 scale-out 등이 필요할때, 단순히 Configmap을 수정하고 Pod을 재시작하는 방식으로는 매끄러운 관리가 되지 않는다. 사람이 Manual로 작업해야 하는 부분이 있을 수 있는데, 문제는 이러한 Manual 작업이 반복될 수 밖에 없다는 것이다. 이러한 문제를 해결하기 위해 만들어진 것이 바로 Ope..

Monitoring 2018.12.28

Dockerfile Tips(Best Practice) - 이미지 크기 최소화

Docker가 업계에서 매우 빠르게 퍼지면서 이제는 분야 관계없이 개발자들은 기본적으로 Docker개념을 알고 있어야 한다.프론트엔드 개발자도, 백엔드 개발자도 자신의 어플리케이션을 배포하려면 Dockerfile을 직접 작성해야 한다는 것이다.자신이 만든 어플리케이션의 환경구성이나 서비스 탐색(Service Discovery)은 자신이 직접 해야지 다른 누군가가 해주지 않는다.(서비스를 찾는 탐색기능 자체는 물론 PaaS에서 지원해줘야 하는 거겠지만) 요즘은 docker-compose도 나와서 docker image생성 뿐만 아니라, 테스트/배포 자동화가 더 편리해졌다. Kubernetes같은 PaaS의 장점까지도 흡수하며 발전하는 Docker를 보면 무섭기까지 하다. 처음 Dockerfile을 작성하는..

Docker 2017.01.27