앱 정보 확인하기
Fly App을 런칭한 뒤에도 flyctl은 앱에 대한 다양한 정보를 확인할 수 있는 도구를 제공해요. Fly.io 대시보드에서도 많은 정보를 찾을 수 있어요. 이 문서에서는 앱 목록 조회부터 로그 확인까지, flyctl로 앱 정보를 확인하는 방법을 하나씩 안내해 드릴게요.
출처: 문서
본문
Fly App이 런칭되면 flyctl에는 앱 정보를 얻기 위한 다양한 도구가 있어요. Fly.io 대시보드에서도 많은 정보를 찾을 수 있어요.
모든 앱 찾기
모든 Fly App의 목록을 볼 수 있어요:
```bash cmd fly apps list ```NAME OWNER STATUS PLATFORM LATEST DEPLOY
testrun personal deployed machines 21h17m ago
my-app personal suspended machines 2023-11-15T23:33:07Z
앱 개요
해당 앱의 Machine 목록과 현재 상태를 포함한 간단한 앱 개요를 원한다면 fly status를 사용하세요:
App
Name = testrun
Owner = personal
Hostname = testrun.fly.dev
Platform = machines
ID STATE REGION HEALTH CHECKS IMAGE CREATED UPDATED
06e82d43ad1587 started yyz 1 total, 1 passing testrun:deployment-01GQ0HKV6TDT7DX0G50MT50FZD 2023-01-17T17:54:04Z 2023-01-17T21:42:33Z
많은 flyctl 명령처럼 -a 플래그를 생략하면, fly status는 작업 디렉토리의 fly.toml 파일이 있으면 그 파일에서 앱 이름을 추론해요.
fly machine list는 각 Machine에 대해 다른 정보 집합을 보여주는데, Machine의 내부 IPv6 주소도 포함돼요:
1 machines have been retrieved from app testrun.
View them in the UI here (https://fly.io/apps/testrun/machines/)
testrun
ID NAME STATE REGION IMAGE IP ADDRESS VOLUME CREATED LAST UPDATED APP PLATFORM PROCESS GROUP
178115db494e18 holy-waterfall-9884 started lhr testrun:deployment-01GTYFV11PM7D7B30AWZSH1FZE fdaa:0:3b99:a7b:a98:6c48:67c5:2 2023-03-07T16:52:59Z 2023-03-07T16:53:06Z v2 app
특정 Machine 살펴보기
fly machine status로 특정 Machine을 자세히 들여다보고 개요를 볼 수 있어요. 여기서 Machine의 CPU 크기와 RAM 설정을 찾을 수 있어요.
Machine ID: e286065f969386
Instance ID: 01GQR4GR5TPQC65T5RMKR0HS87
State: started
Machine
ID = e286065f969386
Instance ID = 01GQR4GR5TPQC65T5RMKR0HS87
State = started
Image = testrun:deployment-01GQR4GN7EA8G12VE1DBRQG4KQ
Name = rough-tree-1360
Private IP = fdaa:0:3b99:a7b:8aeb:fea3:148b:2
Region = iad
Process Group =
Memory = 256
CPUs = 1
Created = 2023-01-25T21:35:32Z
Updated = 2023-01-26T22:52:36Z
Command =
Event Logs
STATE EVENT SOURCE TIMESTAMP INFO
started start flyd 2023-01-26T17:52:36.678-05:00
created launch user 2023-01-26T17:52:33.348-05:00
서비스
fly services list로 구성된 서비스를 확인하세요.
Services
PROTOCOL PORTS FORCE HTTPS
TCP 80 => 8080 [HTTP] True
443 => 8080 [TLS,HTTP] False
공용 IP 주소
fly ips list로 앱의 공용 Anycast IP와 프라이빗 Flycast IP를 찾을 수 있어요.
VERSION IP TYPE REGION CREATED AT
v6 2a09:8280:1::2d:678b public (dedicated) global Sep 1 2023 19:47
v6 fdaa:2:45b:0:1::23 private global Mar 16 2024 18:20
v4 66.241.124.63 public (shared) Jan 1 0001 00:00
공용 네트워킹과 프라이빗 네트워킹에 대해 더 알아보세요.
내부에서 확인하기
fly ssh console을 사용하면 앱의 Machine에서 프롬프트를 얻을 수 있어요(Machine의 Docker 이미지에 sh가 포함된 경우). 특정 Machine에 연결하고 싶다면 fly ssh console -s로 연결할 수 있어요:
? Select Machine: iad: e286065f969386 fdaa:0:3b99:a7b:8aeb:fea3:148b:2 rough-tree-1360
Connecting to fdaa:0:3b99:a7b:8aeb:fea3:148b:2... complete
#
특정 명령을 실행하고 싶다면 -C 플래그를 사용해 바로 실행하는 게 더 빠를 수 있어요. 예를 들어 Machine 파일시스템의 여유 공간을 확인하려면 다음을 실행할 수 있어요:
Connecting to fdaa:0:3b99:a7b:7e:3155:9844:2... complete
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 103068 0 103068 0% /dev
/dev/vda 8191416 172748 7582856 3% /
shm 113224 0 113224 0% /dev/shm
tmpfs 113224 0 113224 0% /sys/fs/cgroup
/dev/vdb 1011672 2564 940500 1% /storage
셸, IEx, Django 관리 명령, Rails 콘솔 등 대화형 명령을 실행한다면 `--pty` 플래그를 사용해야 할 수 있어요. 이 플래그는 SSH 서버가 명령을 의사 터미널(pseudo-terminal)에서 실행하도록 지시해요. (OpenSSH에 익숙하다면 `ssh`의 `-t` 플래그와 비슷해요.)
배포된 앱 또는 Machine의 현재 구성 확인하기
Machine은 개별적으로 구성할 수 있지만, Fly Launch는 fly deploy 시 앱이 관리하는 모든 Machine에 앱 구성을 적용해요. fly config show로 앱 구성을 JSON 형식으로 표시할 수 있어요.
앱 구성 표시하기
fly config show -a testrun
Machine의 구성 표시하기
fly machine status 출력에 특정 Machine의 현재 구성을 붙이려면 -d 플래그를 추가하세요. Fly App에 속한 Machine은 보통 fly deploy로 관리되므로 앱과 동일한 구성을 가져요.
Machine ID: e784459b655483
Instance ID: 01GQTQV0EMGV8XY4NYJN68247W
State: started
VM
ID = e784459b655483
Instance ID = 01GQTQV0EMGV8XY4NYJN68247W
State = started
Image = testrun:deployment-01GQTQTJB5RCS03FKGX9K2H60B
Name = red-feather-7761
Private IP = fdaa:0:3b99:a7b:92:9336:667f:2
Region = iad
Process Group =
Memory = 256
CPUs = 1
Created = 2023-01-27T23:08:41Z
Updated = 2023-01-27T23:09:10Z
Command =
Event Logs
STATE EVENT SOURCE TIMESTAMP INFO
started start flyd 2023-01-27T18:09:10.855-05:00
created launch user 2023-01-27T18:08:41.361-05:00
Config:
{
"init": {},
"image": "registry.fly.io/testrun:deployment-01GQTQTJB5RCS03FKGX9K2H60B",
"metadata": {
"fly_platform_version": "v2",
"fly_release_id": "QgDeJ3o11V2D7fkXVQGvPBON",
"fly_release_version": "1"
},
"restart": {},
"services": [
{
"protocol": "tcp",
"internal_port": 4999,
"ports": [
{
"port": 80,
"handlers": [
"http"
],
"force_https": true
},
{
"port": 443,
"handlers": [
"tls",
"http"
]
}
],
"checks": [
{
"type": "tcp",
"interval": "15s",
"timeout": "2s"
}
],
"concurrency": {
"type": "connections",
"hard_limit": 25,
"soft_limit": 20
}
}
],
"guest": {
"cpu_kind": "shared",
"cpus": 1,
"memory_mb": 256
}
}
앱 로그 보기
fly logs를 실행하면 앱의 로그가 발생하는 즉시 표시돼요. 로그에는 애플리케이션의 모든 인스턴스 콘솔 출력이 포함돼요. 다음은 아무것도 하지 않고 그냥 대기하지만 볼륨이 마운트되어 ssh로 접속해 파일을 만들 수 있는 앱의 로그예요.
2023-03-07T16:17:48Z runner[5683606c41098e] lhr [info]Pulling container image
2023-03-07T16:17:51Z runner[5683606c41098e] lhr [info]Unpacking image
2023-03-07T16:18:00Z runner[5683606c41098e] lhr [info]Setting up volume 'data'
2023-03-07T16:18:00Z runner[5683606c41098e] lhr [info]Uninitialized volume 'data', initializing...
2023-03-07T16:18:00Z runner[5683606c41098e] lhr [info]Encrypting volume
2023-03-07T16:18:05Z runner[5683606c41098e] lhr [info]Opening encrypted volume
2023-03-07T16:18:07Z runner[5683606c41098e] lhr [info]Formatting volume
2023-03-07T16:18:08Z runner[5683606c41098e] lhr [info]Configuring firecracker
2023-03-07T16:18:08Z app[5683606c41098e] lhr [info]Starting init (commit: 08b4c2b)...
2023-03-07T16:18:08Z app[5683606c41098e] lhr [info]Mounting /dev/vdb at /storage w/ uid: 0, gid: 0 and chmod 0755
2023-03-07T16:18:08Z app[5683606c41098e] lhr [info]Preparing to run: `sleep infinity` as root
2023-03-07T16:18:08Z app[5683606c41098e] lhr [info]2023/03/07 16:18:08 listening on [fdaa:0:3b99:a7b:7e:3155:9844:2]:22 (DNS: [fdaa::3]:53)
fly logs는 중지할 때까지(ctrl-C) 계속 열려 로그를 지켜봐요.
Fly.io의 로깅에 대해 더 알아보세요.