arcus-hubble 설치 후 일부API 무한대기 오류 문의

83 views
Skip to first unread message

정명주

unread,
Aug 3, 2015, 8:38:17 AM8/3/15
to openarcus
안녕하세요.

arcus를 설치해서 현재 어플리케이션에 잘 사용하고 있습니다.
그러던 중 모니터링이 필요하다고 판단되어서 arcus-hubble를 설치시도하였습니다.
- 라이브러리 의존성 때문에 설치하다가 죽는줄 알았습니다.

어떻게 설치를 다 완료하고 나서 구동을 시키는데

http://[arcus-hubble-아이피]:25832/api/v1/rrd?callback=angular.callbacks._1i&auth=arcus&from=1438602707&interval=5s&until=1438604507&value=%2C%2C%2C%2C%2C%2C%2C

위와 같이 rrd를 호출하는 API가 무한대기가 걸리는 현상이 있어서 화면에서 보여지는게 없습니다.
참고로 좌측 상단 서비스코드 콤보박스, 캐시노드 콤보박스는 정상노출됩니다.
캐시노드 까지 선택하고 sum arcus 탭을 클릭하는 순간에 위 API를 ajax로 호출하는데 무한지연이 걸리면서 브라우저가 아무런 액션이 없싑니다.


~/.forever 경로에 로그 파일이 생성되는 거 같아서 해당 파일을 확인하면
/home/계정명/hubble_data/캐시노드아이피.141
/home/계정명/hubble_data/캐시노드아이피.142
/home/계정명/hubble_data/캐시노드아이피.144
/home/계정명/hubble_data/캐시노드아이피.151
/home/계정명/hubble_data/캐시노드아이피.141
/home/계정명/hubble_data/캐시노드아이피.142
/home/계정명/hubble_data/캐시노드아이피.144
/home/계정명/hubble_data/캐시노드아이피.151
/home/계정명/hubble_data/캐시노드아이피.141
....
이렇게 로그가 찍힐 뿐입니다.

~/hubble-data/cache01/arcus_stat-11211 경로를 확인하면
[tlink@arcus-m arcus_stat-11211]$ ll
total 30512
-rw-rw-r--. 1 계정명 계정명 1752048 Aug 3 21:25 arcus_stats_attr.rrd
-rw-rw-r--. 1 계정명 계정명 9335312 Aug 3 21:25 arcus_stats_btree.rrd
-rw-rw-r--. 1 계정명 계정명 585392 Aug 3 21:25 arcus_stats_cpu.rrd
-rw-rw-r--. 1 계정명 계정명 585392 Aug 3 21:25 arcus_stats_item.rrd
-rw-rw-r--. 1 계정명 계정명 4085360 Aug 3 21:25 arcus_stats_kv.rrd
-rw-rw-r--. 1 계정명 계정명 3793696 Aug 3 21:25 arcus_stats_list.rrd
-rw-rw-r--. 1 계정명 계정명 2043712 Aug 3 21:25 arcus_stats_memory.rrd
-rw-rw-r--. 1 계정명 계정명 585392 Aug 3 21:25 arcus_stats_network.rrd
-rw-rw-r--. 1 계정명 계정명 585392 Aug 3 21:25 arcus_stats_process.rrd
-rw-rw-r--. 1 계정명 계정명 3210368 Aug 3 21:25 arcus_stats_qos.rrd
-rw-rw-r--. 1 계정명 계정명 4668688 Aug 3 21:25 arcus_stats_set.rrd
[tlink@arcus-m arcus_stat-11211]$ date
Mon Aug 3 21:25:43 KST 2015
...
위와 같이 조회되는 것으로 봐서는 collectd, rrdtool를 통해서 데이터 수집은 잘되는 것 같습니다.

/home/계정명/apps/arcus-hubble/log
경로에 hubble-orbiter.log 로그 파일을 확인하면 zookeeper 확인도 잘 되는 거 같습니다.
...
{"level":"info","message":"ZK session[24c0dc643fe106c] established on 주키퍼아이피.146:2181,주키퍼아이피.147:2181,주키퍼아이피.148:2181","timestamp":"2015-08-03T12:17:20.619Z"}

정명주

unread,
Aug 3, 2015, 9:18:08 AM8/3/15
to openarcus
tracing를 해본 결과


lib/hubble-rrd.js를 소스를 확인하던 중
아래 // no data를 타버리게 됩니다.
아무래도 제가 무슨 설정이 누락된 거 같습니다.

function rrd_fetch(result, path, res, size) {
....
// no data
if (!data) {
if (r.length > 0) {
var entry = [time, null, null, null];
for (var j=0; j<r.length; j++) {
r[j].data.push(entry);
}
}
return;
}

2015년 8월 3일 월요일 오후 9시 38분 17초 UTC+9, 정명주 님의 말:

WookHwan Choi

unread,
Aug 5, 2015, 4:21:18 AM8/5/15
to openarcus
hubble 에 접속하신 후 캐시 노드 콤보박스에 나와있는 이름과, 
hubble_data 아래에 있는 디렉토리 이름을 알 수 있을까요?


2015년 8월 3일 월요일 오후 9시 38분 17초 UTC+9, 정명주 님의 말:
안녕하세요.

정명주

unread,
Aug 5, 2015, 4:54:43 AM8/5/15
to openarcus
메일로만 발송이 되어서 같은 내용을 쓰레드에도 올립니다.

콤보박스의 노드명은 [캐시노드아이피].141 로 IP 기반으로 되어 있으며,
hubble_data 아래 디렉토리 명은 cache01 이라는 호스트명으로 되어 있습니다.

두개 명칭이 일치하지 않아서 발생하는 이슈인지요?



2015년 8월 5일 수요일 오후 5시 21분 18초 UTC+9, WookHwan Choi 님의 말:

WookHwan Choi

unread,
Aug 5, 2015, 5:00:16 AM8/5/15
to openarcus
네. 맞습니다. rrd 데이터를 가져올 때 콤보박스에 있는 노드명을 이용해 hubble_data 아래에서 디렉토리를 찾게 됩니다.
실제 hubble_data 가 저장된 위치와 읽으려는 위치가 달라서 발생하는 문제입니다.
위에 lib/hubble-rrd.js 의 로그를 보면 hubble_data/캐시노드아이피.141 등과 같이 hubble_data 아래에 있는 데이터에 접근하려고 하는데
실제로 필요한 데이터는 cache01 과 같이 호스트명으로 되어있는 디렉토리에 있기 때문입니다.


http://github.com/naver/arcus-hubble 의 readme 에 아래처럼 안내가 되어있습니다.
"Hubble needs to get hostname or FQDN(or fully quallified domain name) from cache node IP. To enable this reverse DNS lookup, you must register < IP, hostname, FQDN > information into /etc/hosts file for all cache nodes."

hosts 에 설정을 해주신 후 arcus-hubble 을 재기동하시면 문제가 해결될 것으로 보입니다.




2015년 8월 3일 월요일 오후 9시 38분 17초 UTC+9, 정명주 님의 말:
안녕하세요.

WookHwan Choi

unread,
Aug 5, 2015, 5:51:08 AM8/5/15
to openarcus
설명이 잘못되어 있는 부분이 있어서 추가로 답변 드립니다.
hubble UI 에 보여지는 cluster name 은 zk 를 통해서 가져오게 되는데 이곳에 "캐시노드아이피"로 hostname 이 등록되어 있기 떄문입니다.

이것 역시 /etc/hosts 에 hostname 을 등록하신 후 cache node 재기동하시면 될 것 같습니다.


2015년 8월 5일 수요일 오후 6시 0분 16초 UTC+9, WookHwan Choi 님의 말:

정명주

unread,
Aug 6, 2015, 1:09:52 AM8/6/15
to openarcus
아 자세한 설명 감사합니다.

저희 IDC 내 개발 장비들이 사설DNS 가 관리되지 않는지라, IP와 장비 호스트명을 혼용해서 사용하다보니 위와 같은 이슈가 발생한 거 같네요.
readme.md 첫번째 항목에서 왜 HOST에 대한 중요성을 강조하는지 몸소 체감을 했습니다.

그런데 궁금한 점은 arcus 환경설정 jons(arcus.json) 에서

arcus.json
{
    "serviceCode": "[서비스코드]"
  , "servers": [
        { "hostname": "cache01", "ip": "[캐시01노드아이피]",
          "config": {
              "threads"    : "6"
            , "memlimit"   : "6000"
            , "port"       : "11211"
            , "connections": "4000"
          }
        }
      , { "hostname": "cache01", "ip": "[캐시01노드아이피]",
          "config": {
              "threads"    : "6"
            , "memlimit"   : "6000"
            , "port"       : "11212"
            , "connections": "4000"
          }
        }
      , { "hostname": "cache02", "ip": "[캐시02노드아이피]",
          "config": {
              "threads"    : "6"
            , "memlimit"   : "6000"
            , "port"       : "11211"
            , "connections": "4000"
          }
        }
...
위와 같이 설정되어 있습니다.

즉  "hostname": "cache01", "ip": "[캐시01노드아이피]",

에서 hostsname에는 장비호스가 등록되어 있고 IP에는 IP가 설정되어 있는데 왜 IP가 나오냐 입니다.
arcus hubble UI 좌측상단 [서비스코드]에 해당 하는 캐시노드 콤보박스를 조회 시에는 hostname이 조회되는 것이 아니라 ip로 노출되는지 궁금합니다.
 * ZK 장비에서 /etc/hosts 확인 결과 해당 캐시노드들 장비 hosts 가 등록되지 않았기 때문에 IP가 노출되지 않냐 예상해봅니다.



정리해서 제가 해결방안을 아래에 서술해보면

 ZK 앙상블 각 장비에서 캐시노드에 대한 이름을 IP로 되어있는데 

각 ZK 장비 /etc/hosts 에 모든 등록된 캐시서버에 대해서 다음과 같이 "캐시노드아이피 캐시노드장비명" (ex:10.10.10.11 cache01)으로 hosts를 등록하고
ZK 장비를 restart하면 문제 해결이 된다고 보면 되는지 확인해봅니다.

* ZK 장비를 restart 하면 모든 서비스에서 캐시 연결 때문에 장애가 예상되므로 이슈최소화를 위해 정기점검 시간이 진행해야할 거 같기 때문에 조심스럽게 문의드립니다

답변 감사드립니다 (__)


2015년 8월 5일 수요일 오후 6시 51분 8초 UTC+9, WookHwan Choi 님의 말:

WookHwan Choi

unread,
Aug 6, 2015, 2:18:28 AM8/6/15
to openarcus
안녕하세요.

먼저 말씀하신 방법으로는 현상을 해결하실 수 없으시며, 몇 가지 정보를 더 확인해보고 진행해야 할 것 같습니다.
아래 정보를 알려주시면 확인 후 정확한 해결 방법을 알려드릴 수 있도록 하겠습니다.
알려주시는 정보 중에 보안과 관련된 부분은 적당히 숨기신 후 알려주셔도 됩니다.

1. arcus-hubble 이 설치된 장비의 /etc/hosts 파일 내용
2. zookeeper 의 /arcus/cache_list/<service_code>/<cache_node> 아래에 보시면 hostname 이 들어가 있습니다. 각 cache_node 의 hostname 정보
3. 각 cache_node 장비의 /etc/hosts 파일 내용
4. 각 cache_node 장비의 shell 에서 hostname 명령어 수행 결과

위 내용을 알려주시면 확인 후 다시 답변 드리겠습니다.

2015년 8월 6일 목요일 오후 2시 9분 52초 UTC+9, 정명주 님의 말:

WookHwan Choi

unread,
Aug 6, 2015, 3:03:36 AM8/6/15
to openarcus
2번 내용이 잘못되어서 수정하고 추가 요청 드립니다.
2. /arcus/cach_list/<service_code> 아래의 node 정보와 /arcus/cache_server_mapping/<service_code> 아래의 정보

추가
5. memcached 를 구동할 때 사용한 zk ensemble list 정보
   - 만일 arcus.sh memcached start <service_code> 를 이용해 구동하셨다면 arcus.sh 에 설정한 ensemble list 를 알려주시면 됩니다.


2015년 8월 6일 목요일 오후 3시 18분 28초 UTC+9, WookHwan Choi 님의 말:

정명주

unread,
Aug 7, 2015, 1:19:00 AM8/7/15
to openarcus
현재 아커스 시스템구조도

* 현재 위 구조도에서 L7 레이어 제거된 상태입니다.
  Arcus 클라이언트 설정에서 모든 ZK 서버 정보를 기입하는 방식으로 수정했습니다.


* 내부 아이피는 앞 3자리만 1.1.1 로 표기하였으며, IP 구분을 위해 뒷 3자리는 남겨두었습니다. - 이거 바꾸는게 귀찮네요 ㅎ

1. arcus-hubble 이 설치된 장비의 /etc/hosts 파일 내용
    
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
1.1.1.133  arcus-m arcus-hubble.ticketlink.co.kr
1.1.1.141  cache01
1.1.1.142  cache02
1.1.1.151  cache03
1.1.1.144  cache04

* 참고로 위 내용은 기존부터 있었던 것은 아니며 여기 쓰레드를 통해서 해결을 하면서 최근에 추가한 내용입니다.

    

2. zookeeper 의 /arcus/cache_list/<service_code>/아래의 node 정보

하위자식노드 : ls /arcus/cache_list/[SERVICE_CODE]
[
  1.1.1.144:11211-cache04, 
  1.1.1.144:11212-cache04, 
  1.1.1.141:11212-cache01, 
  1.1.1.151:11212-cache03, 
  1.1.1.142:11212-cache02, 
  1.1.1.141:11211-cache01, 
  1.1.1.142:11211-cache02, 
  1.1.1.151:11211-cache03
]


2-1. /arcus/cache_server_mapping/<service_code> 아래의 노드정보

* 위 경우  get /arcus/cache_server_mapping/[SERVICE_CODE]
Node does not exist: /arcus/cache_server_mapping/[SERVICE_CODE]
로 뜨면서 조회가 되지 않습니다.

그래서 ls /arcus/cache_server_mapping 를 확인해보니
[
]
이렇게 확인됩니다.


3. 각 cache_node 장비의 /etc/hosts 파일 내용

  • cache01 (1.1.1.141)
    • 1.1.1.141  cache01
  • cache02 (1.1.1.142)
    • 1.1.1.142  cache02
  • cache03 (1.1.1.151)
    • 1.1.1.151  cache03
  • cache04 (1.1.1.144)
    • 1.1.1.144  cache04


4. 각 cache_node 장비의 shell 에서 hostname 명령어 수행 결과

  • cache01 (1.1.1.141)
    • cache01
  • cache02 (1.1.1.142)
    • cache02
  • cache03 (1.1.1.151)
    • cache03
  • cache04 (1.1.1.144)
    • cache04

5. memcached 를 구동할 때 사용한 zk ensemble list 정보

* arcus.sh memcached start <service_code>를 이용해서 구동
* vi arcus.sh
...
# default zookeeper list


감사합니다.



2015년 8월 6일 목요일 오후 4시 3분 36초 UTC+9, WookHwan Choi 님의 말:
...

jhpark816

unread,
Aug 7, 2015, 3:29:40 AM8/7/15
to openarcus
안녕하세요...
먼저, 많은 정보 알려주셔서 감사드리고, 잠시 논의에 끼어듭니다..

hubble 설치 장비의 /etc/hosts 파일에 cache node 정보를 최근에 추가한 상태이므로,
hubble의 node processes를 restart한 후에, 
chrome 브라우저에서 다시 확인해 보시면 좋겠습니다..

정명주

unread,
Aug 7, 2015, 3:35:52 AM8/7/15
to openarcus
아 이거 제가 공유드렸어야했는데요.

말씀하신대로 이미 시도를 했고 다시 hubble을 재기동하니
우측 상단 캐시노드 목록이 노출되는 콤보박스에서
undefined 로 노출되고 있습니다.


ajax 호출을 확인하면
/**/ typeof angular.callbacks._0 === 'function' && angular.callbacks._0({
  "tl-release": {
    "servers": {
      "undefined": {
        "ip": "10.1.1.141",
        "port": null
      }
    },
    "hubble": "10.1.1.133:25832",
    "port": "11212"
  }
});


2015년 8월 7일 금요일 오후 4시 29분 40초 UTC+9, jhpark816 님의 말:

WookHwan Choi

unread,
Aug 7, 2015, 4:28:44 AM8/7/15
to openarcus

지난번에 말씀 드린 내용 중에 아래 내용이 있는데.

Hubble needs to get hostname or FQDN(or fully quallified domain name) from cache node IP. To enable this reverse DNS lookup, you must register < IP, hostname, FQDN > information into/etc/hosts file for all cache nodes.

FQDN(fully quallified domain name) 을 등록하지 않는 경우 undefined 라고 뜨게 됩니다.
arcus-hubble 장비에 /etc/hosts 에 <IP, hostsname, FQDN> 양식으로 등록하시고 arcus-hubble 만 재기동 해주시면 해결 되실 것 같습니다.

말씀하신 /etc/hosts 정보를 기반으로 하면
1.1.1.141 cache01 cache01 
로 하시면 됩니다.


2015년 8월 7일 금요일 오후 2시 19분 0초 UTC+9, 정명주 님의 말:
...

정명주

unread,
Aug 7, 2015, 4:43:55 AM8/7/15
to openarcus
정말 감사합니다.
성공적으로 해결 했습니다.

답변 주신대로 하니 잘 되네요.
제가 hosts 설정에 무지해서 번거롭게 해드렸네요




2015년 8월 7일 금요일 오후 5시 28분 44초 UTC+9, WookHwan Choi 님의 말:
...
Reply all
Reply to author
Forward
0 new messages