1.5. 관찰 기능 사용
관찰 기능 서비스를 사용하여 플릿의 클러스터 사용률을 확인합니다.
1.5.1. 관찰 기능 API를 사용하여 메트릭 쿼리
관찰 기능은 OpenShift 경로 rbac-query-proxy
를 통해 쿼리할 메트릭에 대한 외부 API를 제공합니다. rbac-query-proxy
경로에 대한 쿼리를 가져오려면 다음 옵션을 참조하십시오.
다음 명령을 사용하여 경로 세부 정보를 가져올 수 있습니다.
oc get route rbac-query-proxy -n open-cluster-management-observability
-
OpenShift OAuth 액세스 토큰을 사용하여
rbac-query-proxy
경로에 액세스할 수도 있습니다. 토큰은 네임스페이스를 가져올 수 있는 권한이 있는 사용자 또는 서비스 계정과 연결되어야 합니다. 자세한 내용은 사용자 소유 OAuth 액세스 토큰 관리를 참조하십시오.
관찰을 위해 proxy-byo-cert
시크릿을 생성하려면 다음 단계를 완료합니다.
기본 CA 인증서를 가져오고 키
tls.crt
의 콘텐츠를 로컬 파일에 저장합니다. 다음 명령을 실행합니다.oc -n openshift-ingress get secret router-certs-default -o jsonpath="{.data.tls\.crt}" | base64 -d > ca.crt
다음 명령을 실행하여 메트릭을 쿼리합니다.
curl --cacert ./ca.crt -H "Authorization: Bearer {TOKEN}" https://{PROXY_ROUTE_URL}/api/v1/query?query={QUERY_EXPRESSION}
참고:
QUERY_EXPRESSION
은 표준 Prometheus 쿼리 표현식입니다. 예를 들어 이전에 언급한 명령의 URL을https://{PROXY_ROUTE_URL}/api/v1/query?query=
를 쿼리합니다. 자세한 내용은 Prometheus 쿼리를 참조하십시오.cluster_infrastructure_provider
로 교체하여 메트릭 cluster_infrastructure_provider생성된 인증서를 사용하여
proxy-byo-ca
시크릿을 생성하려면 다음 명령을 실행합니다.oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.key
다음 명령을 사용하여 생성된 인증서를 사용하여
proxy-byo-cert
시크릿을 생성합니다.oc -n open-cluster-management-observability create secret tls proxy-byo-cert --cert ./ingress.crt --key ./ingress.key
1.5.2. 메트릭을 외부 끝점으로 내보내기
Prometheus Remote-Write 사양을 실시간으로 지원하는 외부 끝점으로 지표를 내보냅니다. 메트릭을 외부 끝점으로 내보내려면 다음 단계를 완료합니다.
open-cluster-management-observability
네임스페이스에서 외부 끝점의 액세스 정보를 사용하여 외부 끝점에 대한 Kubernetes 시크릿을 생성합니다. 다음 예제 시크릿을 확인합니다.apiVersion: v1 kind: Secret metadata: name: victoriametrics namespace: open-cluster-management-observability type: Opaque stringData: ep.yaml: | url: http://victoriametrics:8428/api/v1/write http_client_config: basic_auth: username: test password: test
ep.yaml
은 콘텐츠의 키이며 다음 단계의MultiClusterObservability
사용자 정의 리소스에서 사용됩니다. 현재 관찰 기능은 기본 인증 또는tls
활성화를 사용하여 보안 검사 없이 엔드포인트로 메트릭을 내보낼 수 있습니다. 지원되는 매개변수의 전체 목록은 다음 표를 확인하십시오.이름 설명 스키마 URL
필요외부 엔드포인트의 URL입니다.
string
http_client_config
optionalHTTP 클라이언트를 위한 고급 구성입니다.
HttpClientConfig
이름 설명 스키마 basic_auth
선택 사항기본 인증을 위한 HTTP 클라이언트 구성
tls_config
optionalTLS에 대한 HTTP 클라이언트 구성
basicauth
이름 설명 스키마 사용자 이름
선택 사항기본 승인을 위한 사용자 이름입니다.
string
암호
선택 사항기본 승인을 위한 암호입니다.
string
TLSConfig
이름
설명
스키마
secret_name
required인증서가 포함된 보안의 이름입니다.
string
ca_file_key
optional시크릿의 CA 인증서 키( insecure_skip_verify 가 true로 설정된 경우에만 선택 사항 )
string
cert_file_key
required시크릿에 있는 클라이언트 인증서의 키입니다.
string
key_file_key
필요시크릿에 있는 클라이언트 키의 키입니다.
string
insecure_skip_verify
optional대상 인증서에 대한 확인을 건너뛰는 매개변수입니다.
bool
내보낼 외부 엔드 포인트 목록을 추가하기 위해
MultiClusterObservability
사용자 정의 리소스에writeStorage
매개변수를 추가합니다. 다음 예제를 확인합니다.spec: storageConfig: writeStorage: 1 - key: ep.yaml name: victoriametrics
- 1
- 각 항목에는 name 과 key 의 두 가지 속성이 있습니다. name은 엔드포인트 액세스 정보가 포함된 Kubernetes 시크릿의 이름이며 key 는 시크릿에 있는 콘텐츠의 키입니다. 목록에 항목을 두 개 이상 추가하면 메트릭이 여러 외부 엔드포인트로 내보내집니다.
acm_remote_write_requests_total
메트릭을 확인하여 메트릭 내보내기를 활성화한 후 지표 내보내기의 상태를 확인합니다.- hub 클러스터의 OpenShift Container Platform 콘솔에서 Observe 섹션에서 Metrics 를 클릭하여 Metrics 페이지로 이동합니다.
-
그런 다음
acm_remote_write_requests_total
메트릭을 쿼리합니다. 해당 메트릭의 값은 하나의 관찰자 API 인스턴스에서 하나의 외부 끝점에 대한 특정 응답이 있는 총 요청 수입니다.name
레이블은 외부 끝점의 이름입니다.코드
레이블은 메트릭 내보내기에 대한 HTTP 요청의 반환 코드입니다.
1.5.3. 대시보드를 사용하여 데이터 보기 및 탐색
hub 클러스터에서 Grafana에 액세스하여 관리 클러스터의 데이터를 확인합니다. 특정 경고를 쿼리하고 쿼리에 대한 필터를 추가할 수 있습니다.
예를 들어 단일 노드 OpenShift 클러스터에서 cluster_infrastructure_provider 경고를 탐색하려면 cluster_infrastructure_provider{clusterType="SNO"}
쿼리 표현식을 사용합니다.
참고: 단일 노드 관리 클러스터에서 관찰 기능이 활성화된 경우 ObservabilitySpec.resources.CPU.limits
매개변수를 설정하지 마십시오. CPU 제한을 설정하면 관리 클러스터의 용량에 대해 관찰 가능 Pod가 계산됩니다. 추가 리소스 섹션에서 Management Workload Partitioning 에 대한 참조를 참조하십시오.
1.5.3.1. 기록 데이터 보기
기록 데이터를 쿼리할 때 쿼리 매개변수 옵션을 수동으로 설정하여 대시보드에서 표시되는 데이터 양을 제어합니다. 다음 단계를 완료합니다.
- 허브 클러스터에서 콘솔 헤더에 있는 Grafana 링크를 선택합니다.
- 패널 편집을 선택하여 클러스터 대시보드를 편집합니다.
- Grafana의 쿼리 프런트 엔드 데이터 소스에서 쿼리 탭을 클릭합니다.
-
$datasource
를 선택합니다. - 더 많은 데이터를 보려면 Step 매개변수 섹션의 값을 늘립니다. Step 매개변수 섹션이 비어 있으면 자동으로 계산됩니다.
-
Custom query parameters 필드를 찾아
max_source_resolution=auto
를 선택합니다. - 데이터가 표시되는지 확인하려면 Grafana 페이지를 새로 고칩니다.
쿼리 데이터는 Grafana 대시보드에서 표시됩니다.
1.5.3.2. Red Hat Advanced Cluster Management 대시보드 보기
Red Hat Advanced Cluster Management observability 서비스를 활성화하면 대시보드 세 개를 사용할 수 있습니다. 다음 대시보드 설명:
- 경고 분석: 관리 클러스터 플릿 내에서 생성되는 경고의 개요입니다.
- Alert별 클러스터: 경고 이름으로 필터링할 수 있는 경고 대시보드입니다.
- 클러스터별 경고 대시보드: 클러스터별로 필터링하고 클러스터 환경 내에서 시작되거나 보류 중인 경고에 대한 실시간 데이터를 볼 수 있습니다.
1.5.3.3. etcd 테이블 보기
Grafana의 허브 클러스터 대시보드에서 etcd 테이블을 보고 데이터 저장소로 etcd의 안정성을 확인할 수도 있습니다. hub 클러스터에서 Grafana 링크를 선택하여 hub 클러스터에서 수집된 etcd 테이블 데이터를 확인합니다. 관리 클러스터에서 리더 선택 변경 사항이 표시됩니다.
1.5.3.4. Kubernetes API 서버 대시보드 보기
Kubernetes API 서버 대시보드를 보려면 다음 옵션을 확인합니다.
Grafana의 허브 클러스터 대시보드에서 클러스터 플릿 Kubernetes API 서비스 수준 개요를 확인합니다.
- Grafana 대시보드로 이동합니다.
Kubernetes > 서비스 수준 개요 > API 서버 를 선택하여 관리 대시보드 메뉴에 액세스합니다. Fleet 개요 및 상위 클러스터 세부 정보가 표시됩니다.
지난 7일 또는 30일 동안 대상 서비스 수준 목표 (SLO) 값을 초과하거나 충족하는 총 클러스터 수, 차단 및 비활성 클러스터, API 서버 요청 기간이 표시됩니다.
Grafana의 허브 클러스터 대시보드에서 Kubernetes API 서비스 수준 개요 테이블을 확인합니다.
- hub 클러스터에서 Grafana 대시보드로 이동합니다.
Kubernetes > 서비스 수준 개요 > API 서버 를 선택하여 관리 대시보드 메뉴에 액세스합니다. Fleet 개요 및 상위 클러스터 세부 정보가 표시됩니다.
지난 7일 또는 30일 동안의 오류 예산으로 나머지 다운타임 및 추세가 표시됩니다.
1.5.4. 추가 리소스
- 자세한 내용은 Prometheus Remote-Write 사양을 참조하십시오.
- 관찰 기능 서비스 활성화를 읽습니다.
- 더 많은 주제를 보려면 Observability 서비스 소개 로 돌아가십시오.
1.5.5. Grafana 대시보드 사용
Grafana 대시보드를 사용하여 허브 클러스터 및 관리 클러스터 지표를 확인합니다. Grafana 경고 대시보드에 표시되는 데이터는 관리 클러스터에서 발생하는 경고
메트릭을 사용합니다. 경고
메트릭은 hub 클러스터의 Red Hat Advanced Cluster Management 경고 관리자에게 경고를 전달하는 관리 클러스터에 영향을 미치지 않습니다. 따라서 지표 및 경고에는 별도의 전파 메커니즘이 있으며 별도의 코드 경로를 따릅니다.
Grafana 경고 대시보드에 데이터가 표시되면 관리 클러스터 경고가 Red Hat Advanced Cluster Management Hub 클러스터 경고 관리자로 성공적으로 전달된다고 보장하지 않습니다. 메트릭이 관리 클러스터에서 전파되는 경우 Grafana 경고 대시보드에 표시된 데이터를 볼 수 있습니다.
개발 요구에 Grafana 대시보드를 사용하려면 다음을 완료합니다.
1.5.5.1. Grafana 개발자 인스턴스 설정
grafana-dev
인스턴스를 생성하여 Grafana 대시보드를 설계할 수 있습니다. 최신 grafana-dev
인스턴스를 사용해야 합니다.
Grafana 개발자 인스턴스를 설정하려면 다음 단계를 완료합니다.
-
툴
폴더에 있는 스크립트를 실행할 수 있도록open-cluster-management/multicluster-observability-operator/
리포지토리를 복제합니다. setup-grafana-dev.sh
를 실행하여 Grafana 인스턴스를 설정합니다. 스크립트를 실행하면secret/grafana-dev-config
,deployment.apps/grafana-dev
,service/grafana-dev
,ingress.extensions/grafana-dev
,persistentvolumeclaim/grafana-dev
:./setup-grafana-dev.sh --deploy secret/grafana-dev-config created deployment.apps/grafana-dev created service/grafana-dev created serviceaccount/grafana-dev created clusterrolebinding.rbac.authorization.k8s.io/open-cluster-management:grafana-crb-dev created route.route.openshift.io/grafana-dev created persistentvolumeclaim/grafana-dev created oauthclient.oauth.openshift.io/grafana-proxy-client-dev created deployment.apps/grafana-dev patched service/grafana-dev patched route.route.openshift.io/grafana-dev patched oauthclient.oauth.openshift.io/grafana-proxy-client-dev patched clusterrolebinding.rbac.authorization.k8s.io/open-cluster-management:grafana-crb-dev patched
switch-to-grafana-admin.sh
스크립트를 사용하여 사용자 역할을 Grafana 관리자로 전환합니다.-
Grafana URL,
https:grafana-dev-open-cluster-management-observability.{OPENSHIFT_INGRESS_DOMAIN}
을 선택하고 로그인합니다. 그런 다음 다음 명령을 실행하여 전환된 사용자를 Grafana 관리자로 추가합니다. 예를 들어
kubeadmin
을 사용하여 로그인한 후 다음 명령을 실행합니다../switch-to-grafana-admin.sh kube:admin User <kube:admin> switched to be grafana admin
-
Grafana URL,
Grafana 개발자 인스턴스가 설정됩니다.
1.5.5.1.1. Grafana 버전 확인
CLI(명령줄 인터페이스) 또는 Grafana 사용자 인터페이스에서 Grafana 버전을 확인합니다.
hub 클러스터에 로그인한 후 observabilty-grafana
Pod 터미널에 액세스합니다. 다음 명령을 실행합니다.
grafana-cli
현재 클러스터 환경 내에 배포된 Grafana 버전이 표시됩니다.
또는 Grafana 대시보드에서 Manage (관리) 탭으로 이동할 수 있습니다. 버전이 나열된 페이지 끝으로 스크롤합니다.
1.5.5.2. Grafana 대시보드 설계
Grafana 인스턴스를 설정한 후 대시보드를 설계할 수 있습니다. Grafana 콘솔을 새로 고치고 대시보드를 설계하려면 다음 단계를 완료합니다.
- Grafana 콘솔에서 탐색 패널에서 Create 아이콘을 선택하여 대시보드를 만듭니다. 대시보드 를 선택한 다음 새 패널 추가 를 클릭합니다.
- 새 대시보드/편집 패널 에서 쿼리 탭으로 이동합니다.
-
데이터 소스 선택기에서
Observatorium
을 선택하고 PromQL 쿼리를 입력하여 쿼리를 구성합니다. - Grafana 대시보드 헤더에서 대시보드 헤더에 있는 저장 아이콘을 클릭합니다.
- 설명이 포함된 이름을 추가하고 저장을 클릭합니다.
1.5.5.2.1. ConfigMap을 사용하여 Grafana 대시보드 설계
ConfigMap을 사용하여 Grafana 대시보드를 설계합니다. generate-dashboard-configmap-yaml.sh
스크립트를 사용하여 대시보드 ConfigMap을 생성하고 ConfigMap을 로컬에 저장할 수 있습니다.
./generate-dashboard-configmap-yaml.sh "Your Dashboard Name" Save dashboard <your-dashboard-name> to ./your-dashboard-name.yaml
이전에 언급한 스크립트를 실행할 수 있는 권한이 없는 경우 다음 단계를 완료합니다.
- 대시보드를 선택하고 대시보드 설정 아이콘을 클릭합니다.
- 탐색 패널에서 JSON 모델 아이콘을 클릭합니다.
-
대시보드 JSON 데이터를 복사하여
data
섹션에 붙여넣습니다. 이름을
수정하고$your-dashboard-name
을 바꿉니다.data.$your-dashboard-name.json.$your_dashboard_json .json
의uid
필드에 UUID(Universally unique identifier)를 입력합니다. uuidegen 과 같은 프로그램을 사용하여 UUID를 생성할 수 있습니다. ConfigMap은 다음 파일과 유사할 수 있습니다.kind: ConfigMap apiVersion: v1 metadata: name: $your-dashboard-name namespace: open-cluster-management-observability labels: grafana-custom-dashboard: "true" data: $your-dashboard-name.json: |- $your_dashboard_json
참고:
대시보드가
grafana-dev
인스턴스 내에 생성되는 경우 대시보드 이름을 가져와서 스크립트에서 인수로 전달할 수 있습니다. 예를 들어 Demo Dashboard 라는 대시보드는grafana-dev
인스턴스에 생성됩니다. CLI에서 다음 스크립트를 실행할 수 있습니다../generate-dashboard-configmap-yaml.sh "Demo Dashboard"
스크립트를 실행한 후 다음 메시지가 표시될 수 있습니다.
Save dashboard <demo-dashboard> to ./demo-dashboard.yaml
대시보드가 일반 폴더에 없는 경우 이 ConfigMap의
annotations
섹션에 폴더 이름을 지정할 수 있습니다.annotations: observability.open-cluster-management.io/dashboard-folder: Custom
ConfigMap에 대한 업데이트를 완료한 후 이를 설치하여 대시보드를 Grafana 인스턴스로 가져올 수 있습니다.
CLI 또는 OpenShift Container Platform 콘솔에서 YAML을 적용하여 YAML 파일이 생성되었는지 확인합니다. open-cluster-management-observability
네임스페이스 내의 ConfigMap이 생성됩니다. CLI에서 다음 명령을 실행합니다.
oc apply -f demo-dashboard.yaml
OpenShift Container Platform 콘솔에서 demo-dashboard.yaml
파일을 사용하여 ConfigMap을 생성합니다. 대시보드는 사용자 지정 폴더에 있습니다.
1.5.5.3. Grafana 개발자 인스턴스 설치 제거
인스턴스를 제거하면 관련 리소스도 삭제됩니다. 다음 명령을 실행합니다.
./setup-grafana-dev.sh --clean secret "grafana-dev-config" deleted deployment.apps "grafana-dev" deleted serviceaccount "grafana-dev" deleted route.route.openshift.io "grafana-dev" deleted persistentvolumeclaim "grafana-dev" deleted oauthclient.oauth.openshift.io "grafana-proxy-client-dev" deleted clusterrolebinding.rbac.authorization.k8s.io "open-cluster-management:grafana-crb-dev" deleted
1.5.5.4. 추가 리소스
- 외부 엔드포인트로 메트릭 내보내기를 참조하십시오.
- UUID를 생성하는 방법은 uuidegen 을 참조하십시오.
- 자세한 내용은 Grafana에서 관리되는 클러스터 레이블 사용을 참조하십시오.
- Grafana 대시보드를 사용하여 페이지 시작 부분으로 돌아갑니다.
- 자세한 내용은 Observing 환경 소개 를 참조하십시오.
1.5.6. Grafana에서 관리되는 클러스터 레이블 사용
관리 클러스터 레이블을 활성화하여 Grafana 대시보드와 함께 사용합니다. hub 클러스터에서 관찰 기능이 활성화되면 open-cluster-management-observability
네임스페이스에 observability-managed-cluster-label-allowlist
ConfigMap이 생성됩니다. ConfigMap에는 ACM - Cluster Overview Grafana 대시보드 내에서 필터링할 레이블 이름 목록을 채울 observabilty-rbac-query-proxy
Pod에서 관리하는 관리 클러스터 레이블 목록이 포함되어 있습니다. 기본적으로 관찰 기능은 observability-managed-cluster-label-allowlist
ConfigMap의 레이블 서브 세트를 무시합니다.
클러스터를 관리형 클러스터 플릿 또는 수정으로 가져올 때 observability-rbac-query-proxy
Pod는 관리 클러스터 라벨에 대한 참조의 변경 사항을 감시하고 변경 사항을 반영하도록 observability-managed-cluster-label-allowlist
ConfigMap을 자동으로 업데이트합니다. ConfigMap에는 ignore_
또는 레이블 목록에 포함된 고유한 레이블 이름만 포함됩니다. labels
observability-managed-cluster-label-allowlist
ConfigMap은 다음 YAML 파일과 유사할 수 있습니다.
data: managed_cluster.yaml: | ignore_labels: 1 - clusterID - cluster.open-cluster-management.io/clusterset - feature.open-cluster-management.io/addon-application-manager - feature.open-cluster-management.io/addon-cert-policy-controller - feature.open-cluster-management.io/addon-cluster-proxy - feature.open-cluster-management.io/addon-config-policy-controller - feature.open-cluster-management.io/addon-governance-policy-framework - feature.open-cluster-management.io/addon-iam-policy-controller - feature.open-cluster-management.io/addon-observability-controller - feature.open-cluster-management.io/addon-search-collector - feature.open-cluster-management.io/addon-work-manager - installer.name - installer.namespace - local-cluster - name labels: 2 - cloud - vendor
+ <1> ConfigMap의 ignore_labels
키 목록에 나열된 모든 레이블은 ACM - Clusters Overview Grafana 대시보드의 드롭다운 필터에서 제거됩니다. <2> 활성화된 레이블은 ACM - Clusters Overview Grafana 대시보드의 드롭다운 필터에 표시됩니다. 선택한 레이블
키 값에 따라 값을 acm_managed_cluster_labels
지표에서 가져옵니다.
Grafana에서 관리 클러스터 레이블을 사용하는 방법을 계속 읽습니다.
1.5.6.1. 관리형 클러스터 레이블 추가
observability-managed-cluster-label-allowlist
ConfigMap에 관리 클러스터 레이블을 추가하면 Grafana에서 라벨을 필터 옵션으로 사용할 수 있습니다. 허브 클러스터 또는 관리 클러스터 플릿과 연결된 관리형 클러스터 오브젝트에 고유한 레이블을 추가합니다. 예를 들어 레이블 department=finance
를 관리 클러스터에 추가하면 ConfigMap이 업데이트되어 다음 변경 사항과 유사할 수 있습니다.
data: managed_cluster.yaml: | ignore_labels: - clusterID - cluster.open-cluster-management.io/clusterset - feature.open-cluster-management.io/addon-application-manager - feature.open-cluster-management.io/addon-cert-policy-controller - feature.open-cluster-management.io/addon-cluster-proxy - feature.open-cluster-management.io/addon-config-policy-controller - feature.open-cluster-management.io/addon-governance-policy-framework - feature.open-cluster-management.io/addon-iam-policy-controller - feature.open-cluster-management.io/addon-observability-controller - feature.open-cluster-management.io/addon-search-collector - feature.open-cluster-management.io/addon-work-manager - installer.name - installer.namespace - local-cluster - name labels: - cloud - department - vendor
1.5.6.2. 관리형 클러스터 라벨 활성화
observability-managed-cluster-label-allowlist
ConfigMap의 ignore_labels
목록에서 레이블을 제거하여 이미 비활성화된 관리형 클러스터 레이블을 활성화합니다.
예를 들어 local-cluster
및 name
레이블을 활성화합니다. observability-managed-cluster-label-allowlist
ConfigMap은 다음 콘텐츠와 유사할 수 있습니다.
data: managed_cluster.yaml: | ignore_labels: - clusterID - installer.name - installer.namespace labels: - cloud - vendor - local-cluster - name
ConfigMap이 30초 후에 다시 동기화되어 클러스터 라벨이 업데이트되었는지 확인합니다. ConfigMap을 업데이트한 후 open-cluster-management-observability
네임스페이스에서 observability-rbac-query-proxy
Pod 로그를 확인하여 라벨이 나열된 위치를 확인합니다. Pod 로그에 다음 정보가 표시될 수 있습니다.
enabled managedcluster labels: <label>
Grafana 대시보드에서 레이블이 Label 드롭다운 메뉴에 값으로 나열되어 있는지 확인합니다.
1.5.6.3. 관리형 클러스터 레이블 비활성화
Label 드롭다운 필터에 관리 클러스터 레이블이 나열되지 않도록 제외합니다. ignore_labels
목록에 레이블 이름을 추가합니다. 예를 들어 local-cluster
및 name
을 ignore_labels
목록에 다시 추가하는 경우 YAML은 다음 파일과 유사할 수 있습니다.
data: managed_cluster.yaml: | ignore_labels: - clusterID - installer.name - installer.namespace - local-cluster - name labels: - cloud - vendor
open-cluster-management-observability
네임스페이스에서 observability-rbac-query-proxy
Pod 로그를 확인하여 라벨이 나열된 위치를 확인합니다. Pod 로그에 다음 정보가 표시될 수 있습니다.
disabled managedcluster label: <label>
1.5.6.4. 추가 리소스
- Grafana 대시보드 사용을 참조하십시오.
- Grafana에서 관리 클러스터 레이블을 사용하여 페이지 시작 부분으로 돌아갑니다.