update-hubble-target

수집 대상 클러스터 추가

아래와 같은 주소에 ZooKeeper ensemble이 신규로 구동되었다고 가정합니다.

new.arcus.com:2181
10.0.0.1:2181 10.0.0.2:2181 10.0.0.3:2181

새로 구동된 클러스터를 Arcus Hubble V3의 수집 대상으로 추가하려면, Arcus Exporter, ZooKeeper Exporter를 새로 구동하고 필요 시 각 장비에 Node Exporter를 구동해야 합니다. 그리고 Prometheus, Orbiter를 재구동해주어야 합니다.

Arcus Exporter 구동 (Memcached 서버 메트릭 수집)

설정 파일(/INSTALL_DIR/arcus_exporter/conf/new.json) 작성

  • listen: 기존에 사용 중인 port와 중복되지 않도록 설정합니다.

  • ensemble: ZK 도메인 또는 서버 목록을 입력합니다.

  • log.filename: 설정파일과 동일한 이름으로 설정하는 것을 권장합니다.

  • 기타 설정은 arcus_exporter config 참고 바랍니다.

{
  "listen": "127.0.0.1:13119",
  "ensemble": ["new.arcus.com:2181"],
  // "ensemble": [ "10.0.0.1:2181", "10.0.0.2:2181", "10.0.0.3:2181" ],
  "log": {
    "filename": "/INSTALL_DIR/arcus_exporter/log/new.log"
  }
}

구동

/INSTALL_DIR/arcus_exporter/start.sh new

ZooKeeper Exporter 구동 (ZooKeeper 서버 메트릭 수집)

만약 ZooKeeper Exporter를 구동 중인 상태에서 ZK DNS 변경이 발생했다면 자동 반영되지 않으므로 재구동이 필요합니다.

설정 파일(/INSTALL_DIR/zookeeper_exporter/conf/new.env) 작성

  • LISTEN_PORT: 기존에 사용 중인 port와 중복되지 않도록 설정합니다.

  • ZK_DOMAIN or ZK_SERVERS: domain 주소를 입력하거나, 각 서버 주소를 입력합니다.

LISTEN_PORT=9149
ZK_DOMAIN="new.arcus.com:2181"
#ZK_SERVERS=("10.0.0.1:2181" "10.0.0.2:2181" "10.0.0.3:2181")

구동

/INSTALL_DIR/zookeeper-exporter/start.sh new

Node Exporter 구동 (호스트 장비 메트릭 수집)

수집 대상 장비에 Node Exporter 구동

  • 각 캐시 장비마다 node_exporter 설치 후 구동합니다.

  • NODE_EXPORTER_TARGET: node exporter를 띄울 host를 설정합니다.

cd /INSTALL_DIR/node_exporter
export NODE_EXPORTER_TARGET="10.0.0.1"
scp ./node_exporter.tar.gz $NODE_EXPORTER_TARGET:/INSTALL_DIR/node_exporter.tar.gz
ssh $NODE_EXPORTER_TARGET < ./untar.sh
ssh $NODE_EXPORTER_TARGET /INSTALL_DIR/start.sh

Prometheus 설정 변경 및 reload

설정 변경

  • Arcus Exporter 설정 파일(/INSTALL_DIR/prometheus/conf/exporter/arcus_exporter.json)에 새로 구동한 arcus_exporter 주소를 추가합니다.

[
  {
    "targets": [
      "localhost:13111",
      "localhost:13112",
      ...
      "localhost:13119"  // add
    ]
  }
]
  • ZooKeeper Exporter 설정 파일(/INSTALL_DIR/prometheus/conf/exporter/zookeeper_exporter.json)에 새로 구동한 ZooKeeper Exporter 주소를 추가합니다.

[
  {
    "targets": [ "localhost:9141" ],
    "labels": { "ensemble": "example-1" }
  },
  {
    "targets": [ "localhost:9142" ],
    "labels": { "ensemble": "example-2" }
  },
  ...
  {  // add
    "targets": [ "localhost:9149" ],
    "labels": { "ensemble": "new" }
  },
]
  • Node Exporter 설정 파일(/INSTALL_DIR/prometheus/conf/exporter/node_exporter.json)에 새로 구동한 Node Exporter 주소를 추가합니다.

[
  {
    "targets": [
      "localhost:9100",
      ...
      "10.0.0.1:9100",  // add
      "10.0.0.2:9100",  // add
      "10.0.0.3:9100"   // add
    ],
    "labels": {
      "group": "host"
    }
  }
]

설정 파일 reload

  • 아래와 같이 HTTP 요청을 보내 Prometheus 프로세스를 리로드합니다.

curl -X POST http://localhost:9090/-/reload

Orbiter 설정 변경 및 reload

설정 변경

  • Orbiter 설정 파일(/INSTALL_DIR/orbiter/config.json)에 새로 구동한 ZooKeeper ensemble의 이름과 주소를 추가합니다.

{
    "listen": "0.0.0.0:8084",
    "ensembleByName": {
        "example-1": [ "example-1.arcus.com:2181" ],
        "example-2": [ "example-2.arcus.com:2181" ],
        ...
        "new": [ "new.arcus.com:2181" ]  // add
        // "new": [ "10.0.0.1:2181", "10.0.0.2:2181", "10.0.0.3:2181" ]
    },
    ...
}

설정 파일 reload

  • 아래와 같이 HTTP 요청을 보내 Orbiter 프로세스를 리로드합니다.

curl -X POST http://localhost:8084/reload/config

수집 대상 클러스터 제거

아래와 같은 주소에 구동되어 있던 ZooKeeper ensemble을 제거하기 위해 수집 대상에서 먼저 제거한다고 가정합니다.

new.arcus.com:2181
10.0.0.1:2181 10.0.0.2:2181 10.0.0.3:2181

클러스터를 Arcus Hubble V3의 수집 대상에서 제거하려면, Orbiter, Prometheus를 재구동하고 Arcus Exporter, Node Exporter, ZooKeeper Exporter를 종료해야 합니다.

Orbiter 설정 변경 및 reload

설정 변경

  • Orbiter 설정 파일(/INSTALL_DIR/orbiter/config.json)에서 수집이 필요 없어진 ZooKeeper ensemble의 이름과 주소를 제거합니다.

{
    "listen": "0.0.0.0:8084",
    "ensembleByName": {
        "example-1": [ "example-1.arcus.com:2181" ],
        "example-2": [ "example-2.arcus.com:2181" ],
        ...
        // "new": [ "new.arcus.com:2181" ] remove
    },
    ...
}

설정 파일 reload

  • 아래와 같이 HTTP 요청을 보내 Orbiter 프로세스를 리로드합니다.

curl -X POST http://localhost:8084/reload/config

Prometheus 설정 변경 및 reload

설정 변경

  • Arcus Exporter 설정 파일(/INSTALL_DIR/prometheus/conf/exporter/arcus_exporter.json)에서 제거 대상인 ZooKeeper ensemble 캐시 서버들의 지표를 수집 중인 Arcus Exporter 주소를 제거합니다.

[
  {
    "targets": [
      "localhost:13111",
      "localhost:13112",
      ...
      // "localhost:13119" remove
    ]
  }
]
  • ZooKeeper Exporter 설정 파일(/INSTALL_DIR/prometheus/conf/exporter/zookeeper_exporter.json)에서 제거 대상인 ZooKeeper ensemble의 지표를 수집 중인 ZooKeeper Exporter 주소를 제거합니다.

[
  {
    "targets": [ "localhost:9141" ],
    "labels": { "ensemble": "example-1" }
  },
  {
    "targets": [ "localhost:9142" ],
    "labels": { "ensemble": "example-2" }
  },
  ...
  // remove
  // {
  //   "targets": [ "localhost:9149" ],
  //   "labels": { "ensemble": "new" }
  // },
]
  • node_exporter (/INSTALL_DIR/prometheus/conf/exporter/node_exporter.json)에서 제거 대상인 ZooKeeper ensemble 장비의 지표를 수집 중인 Node Exporter 주소를 제거합니다.

[
  {
    "targets": [
      "localhost:9100",
      ...
      // "10.0.0.1:9100", remove
      // "10.0.0.2:9100", remove
      // "10.0.0.3:9100"  remove
    ],
    "labels": {
      "group": "host"
    }
  }
]

설정 파일 reload

  • 아래와 같이 HTTP 요청을 보내 Prometheus 프로세스를 리로드합니다.

curl -X POST http://localhost:9090/-/reload

Arcus Exporter, ZooKeeper Exporter 프로세스 종료

  • ps -efgrep 명령어를 사용해 제거될 ZooKeeper ensemble의 주소를 담은 exporter 프로세스들의 PID를 찾고 종료시킵니다.

  1. ps -ef | grep hubble | grep new

  2. kill <pid>

캐시 장비 Node Exporter 프로세스 종료

각 ZooKeeper, Arcus 캐시 서버가 구동되었던 장비에 있던 Node Exporter 프로세스의 PID를 찾고 종료시킵니다.

  1. ssh <cache host> "ps -ef | grep node_exporter"

  2. ssh <cache host> "kill <pid>"

Service code 단위 수집 대상 추가/제거

  1. Arcus Exporter는 기본적으로 하나의 ZooKeeper ensemble에 등록된 모든 클러스터 정보를 수집합니다.

  2. 일부 클러스터에 대한 메트릭만 수집하려면 serviceCodes 설정에 수집하려는 클러스터의 service code 목록을 지정합니다.

  3. 그 외 구성 요소의 설정은 상단의 수집 대상 추가/제거 항목을 참고하여 진행합니다.

    • ZooKeeper Exporter

    • Node Exporter

    • Orbiter

    • Prometheus

Last updated