수집 대상 클러스터 추가
아래와 같은 주소에 ZooKeeper ensemble이 신규로 구동되었다고 가정합니다.
Copy 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
: 설정파일과 동일한 이름으로 설정하는 것을 권장합니다.
Copy {
"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"
}
}
구동
Copy /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 주소를 입력하거나, 각 서버 주소를 입력합니다.
Copy 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")
구동
Copy /INSTALL_DIR/zookeeper-exporter/start.sh new
Node Exporter 구동 (호스트 장비 메트릭 수집)
수집 대상 장비에 Node Exporter 구동
각 캐시 장비마다 node_exporter 설치 후 구동합니다.
NODE_EXPORTER_TARGET
: node exporter를 띄울 host를 설정합니다.
Copy 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
systemd service로 Node Exporter 구동
node_exporter.service
파일과 node_exporter.socket
파일을 /etc/systemd/system
하위에 복사합니다.
User와 INSTALL_DIR 값을 적절히 변경합니다.
systemctl
명령을 통해 node_exporter.socket
을 실행합니다.
Copy sudo systemctl daemon-reload
sudo systemctl enable node_exporter.socket
sudo systemctl start node_exporter.socket
Prometheus 설정 변경 및 reload
설정 변경
Arcus Exporter 설정 파일(/INSTALL_DIR/prometheus/conf/exporter/arcus_exporter.json
)에 새로 구동한 arcus_exporter 주소를 추가합니다.
Copy [
{
"targets": [
"localhost:13111",
"localhost:13112",
...
"localhost:13119" // add
]
}
]
ZooKeeper Exporter 설정 파일(/INSTALL_DIR/prometheus/conf/exporter/zookeeper_exporter.json
)에 새로 구동한 ZooKeeper Exporter 주소를 추가합니다.
Copy [
{
"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 주소를 추가합니다.
Copy [
{
"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 프로세스를 리로드합니다.
Copy curl -X POST http://localhost:9090/-/reload
Orbiter 설정 변경 및 reload
설정 변경
Orbiter 설정 파일(/INSTALL_DIR/orbiter/config.json
)에 새로 구동한 ZooKeeper ensemble의 이름과 주소를 추가합니다.
Copy {
"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 프로세스를 리로드합니다.
Copy curl -X POST http://localhost:8084/reload/config
수집 대상 클러스터 제거
아래와 같은 주소에 구동되어 있던 ZooKeeper ensemble을 제거하기 위해 수집 대상에서 먼저 제거한다고 가정합니다.
Copy 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의 이름과 주소를 제거합니다.
Copy {
"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 프로세스를 리로드합니다.
Copy curl -X POST http://localhost:8084/reload/config
Prometheus 설정 변경 및 reload
설정 변경
Arcus Exporter 설정 파일(/INSTALL_DIR/prometheus/conf/exporter/arcus_exporter.json
)에서 제거 대상인 ZooKeeper ensemble 캐시 서버들의 지표를 수집 중인 Arcus Exporter 주소를 제거합니다.
Copy [
{
"targets": [
"localhost:13111",
"localhost:13112",
...
// "localhost:13119" remove
]
}
]
ZooKeeper Exporter 설정 파일(/INSTALL_DIR/prometheus/conf/exporter/zookeeper_exporter.json
)에서 제거 대상인 ZooKeeper ensemble의 지표를 수집 중인 ZooKeeper Exporter 주소를 제거합니다.
Copy [
{
"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 주소를 제거합니다.
Copy [
{
"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 프로세스를 리로드합니다.
Copy curl -X POST http://localhost:9090/-/reload
Arcus Exporter, ZooKeeper Exporter 프로세스 종료
ps -ef
와 grep
명령어를 사용해 제거될 ZooKeeper ensemble의 주소를 담은 exporter 프로세스들의 PID를 찾고 종료시킵니다.
ps -ef | grep hubble | grep new
캐시 장비 Node Exporter 프로세스 종료
각 ZooKeeper, Arcus 캐시 서버가 구동되었던 장비에 있던 Node Exporter 프로세스의 PID를 찾고 종료시킵니다.
ssh <cache host> "ps -ef | grep node_exporter"
ssh <cache host> "kill <pid>"
systemd service로 등록된 Node Exporter 종료
Copy sudo systemctl stop node_exporter.socket
sudo systemctl disable node_exporter.socket
sudo rm /etc/systemd/system/node_exporter.*
sudo systemctl daemon-reload
Service code 단위 수집 대상 추가/제거
Arcus Exporter는 기본적으로 하나의 ZooKeeper ensemble에 등록된 모든 클러스터 정보를 수집합니다.
그 외 구성 요소의 설정은 상단의 수집 대상 추가/제거 항목을 참고하여 진행합니다.