엔지니어들이 면접에서 물어야 할 질문들

이것도 geeknews에 올라온 글. 내가 보기엔 알짜정보가 많다... https://news.hada.io/topic?id=6862&utm_source=slack&utm_medium=bot&utm_campaign=T13KRBZU4 https://posthog.com/blog/what-to-ask-in-interviews "이 질문들은 매우 직설적이긴 하지만, 이에 대해 좋지 않은 반응을 보이는 회사는 좋은 직장이 아닐 수 있습니다" 이 회사는 Product-Market-Fit 한가요? PMF한지 자신에게 질문한 적이 있나요? PMF를 언제 달성했나요? 어떻게 아나요? PMF를 달성하기 위해 뭘 해야 하나요? 매출은 얼마인가요? 1년전에는 얼마였나요? 일 활성사용자(DAU)는 얼마인가요? 피해야 할 회사들 : Pre-PMF를 설명하는데 시간을 많이 쓰지 않는 창업자들 제품이나 그들이 주는 혜택이 뭔지 이해하기 어려운 회사들 문제를 찾는 해결책들 Runway가 얼마나 남아있나요? 지출이 합리적인 것처럼 보이나요? Default Alive 한가요?→ 지금은 수익성이 없지만, 자금이 바닥나기 전에 수익을 낼 수 있을만큼 빠르게 성장 가능한가 Runway는 얼마인가요? 이걸 계산하기 위한 가정은 뭔가요? 펀드레이징 계획은 어떻게 되나요? 피해야 할 회사들 : Default Alive 한지 모르거나, 신경쓰지 않는 회사 시간이 모자르거나 느려서, Default Alive 해질 것 같지 않은 회사 생존을 위해서 단시간내에 매출의 급격한 증가를 가정하는 회사 곧 자금이 바닥나기 때문에 펀드레이징을 하고 있지만, 라운드 클로징을 하지 않은 회사 문화는 어떤가요? 회사의 가치는 뭐고, 왜 그것인가요? 그 가치를 따르는 구체적인 방법들을 알려주실수 있나요? 뭘 만들지 누가 결정하나요 ? 일반적인 하루(근무일)는 어떤 모습인가요? 어떤 미래를 기대하나요 ? 어떤 것이 당신에게 동기를 부여하나요? 지금까지 가장 자랑스러운 것은 뭔가요? 회

AWS에서 zabbix를 이용한 autoscaling ec2 자동등록/자동삭제

 zabbix가 오픈소스로서 참 많은 기능을 제공 하고 있는데, jira와 마찬가지로 되는건 많은데 가려온 곳은 아슬아슬하게 피해가는 재주를 가지고 있는 듯 하다. 필요한 기능은 거의 다 있는데 될듯 하면서도 안되는데 jira와 zabbix. 특히 AWS에서 제공하는 AutoScaling Group을 이용한 EC2의 scale out/in 을 이용하면 zabbix에서 기본으로 제공되는 기능으로는 EC2를 제대로 모니터링 할 수가 없다. 어찌어찌 Host 등록은 한다 하더라도, EC2가 scale in 되어 terminated되었을 경우엔, 그냥 그대로 zabbix agent 와 통신할 수 없다는 에러를 내뿜으며 방치되어 버린다.

인터넷을 뒤져보아도 깔끔하게 처리할 수 있는 방법이 없고, 스크립트와 다른 기능들을 이용하여 scale out/in 에 의한 EC2의 자동등록/자동삭제를 구현하고 있었다. 그러나 이마저도 실제로 해보니 메뉴가 틀리거나 옵션이 없거나, 실제로 동작하지 않는 경우도 많았다. 최종적으로는 여러가지 정보를 취합하여 실제로 동작하는 방법을 찾아 냈으니 참고 삼아 이곳에 남기도록 한다.

시행착오

  • auto discovery 기능을 시도 해보았지만, 24bit 네트웍에 대해 15분 이내로 처리가 끝나지 않아, 다음 discovery가 계속하여 지연되는 현상이 발생했다. 15분 이면 terminated된 인스턴스에대해 agent 통신 에러가 발생하는 타이밍이기 때문에 유효한 방법이 아니라고 생각되어 포기하였다.

※ zabbix version : 4.0TLS
※ 특별한 설정내용이 없는 항목은 디폴트값이나 환경에 맞추어 적절히 설정할 것

 

zabbix_agentd.conf

먼저 ec2의 zabbix_agentd.conf 파일을 수정해 줄 필요가 있다.

//ec2의 instance id를 얻기위해 ec2에서 meta-data를 조회한다.
//meta-data조회를 위한 curl명령어 실행을 위해 지정
EnableRemoteCommands=1

//ec2의 hostname은 hostname_instance-id로 하고 싶으니 주석처리를 하고
//HostnameItem에 system.hostname을 지정해 준다.
//Hostname은 고정 hostname을 지정할때 이용한다.
# Hostname= →이 라인을 주석처리
HostnameItem=system.hostname

//auto scaling group이 여러개 존재할 경우 auto registration에서 구분하기 위한 구분자를 지정한다.
HostMetadata=<mystring>
 

 Template#1

autoscaling이 필요한 ec2도 있을 터이고 그렇지 않은 ec2도 있을 것이다. template에 autoscaling 대응 내용을 설정한 뒤, 필요한 경우에 host 등록을 하면서 template을 추가하면 적용되도록 할 것이다.

Configuration에서 Templates를 선택하여 Template를 생성한다. Template name에 EC2AutoScale 을 지정하고, 필요한 Groups을 지정해준다. Macro와 Item, Trigger등은 나중에 따로 추가한다. 

 

Auto Registrion

scale out에 의해 ec2가 추가 되었을 경우 zabbix_agnetd.conf 를 기반으로 zabbix가 기동된다. 그 설정을 이용하여 zabbix에서 감시대상 host로서 자동으로 추가하게 되는 설정이다. 추가는 아주 간단하다. 추가는.......

  1. Configuration-Action에서 Event source를 Auto registration으로 변경한 뒤, Create action을 클릭
  2. Name에 autoreg-test 등 적당한 이름을 지정
  3. New condition에서 Host metadata contains <mystring> 을 지정한다.
    mystring은 zabbix_agentd.conf 에서 지정한 문자열을 똑같이 지정한다.
    이 conditon은 자기 환경에 맞추어 적절하게 수정해도 문제 없다.
  4. Add버튼을 클릭하여 Conditions에 추가되는 것을 확인
  5. Operations에서 필요한 동작을 추가한다.
    1. Add host
    2. Link to templates : Template#1에서 작성한 EC2AutoScale을 지정
  6. 밑에 있는 Add버튼을 클릭하여 Action을 추가

 

Template#2

  1. Configuration-Templates-Item을 선택후 Create item을 클릭
  2. Type에서 Zabbix agent(active)를 선택
  3. Key에서 curl을 이용한 instance id를 조회하는 명령어를 지정
    system.run[curl -s -f http://169.254.169.254/latest/meta-data/instance-id]
  4. History storage period 를 Storage period를 선택하여 90d로 지정
    instance id가 변경되었나 확인 하기 위해선 history를 반드시 저장해야할 필요성이 있으니 참고.
  5. New application에서 EC2 meta-data를 지정(변경 가능)
  6. Add를 선택하여 Item을 추가

 

Template#3

  1. Configuration-Templates-Item을 선택후 Create item을 클릭
  2. Type에서 External check를 선택
  3. Key에서 나중에 작성할 ec2 status확인용 스크립트를 지정
    get_ec2_status.py[-i,{EC2_INSTANCEID}]
  4. Type of information은 Character를 지정
  5.  History storage period도 Template#2와 동일한 이유로 90를 지정
  6.  New application에서 EC2 meata-data를 지정(변경가능)

댓글

이 블로그의 인기 게시물

curl 명령어 옵션

CISCO 2960s 초기화 후 기본 설정

Macbook M1에서 karabiner를 이용한 영어/한글/일본어 입력 변환