로깅, 모니터링 및 문제 해결 가이드
OpenStack Logging, 모니터링 및 문제 해결을 위한 In-Depth 가이드
초록
머리말 링크 복사링크가 클립보드에 복사되었습니다!
이 문서에서는 Red Hat OpenStack Platform 환경에서 사용할 수 있는 로깅 및 모니터링 기능과 가능한 문제를 해결하는 방법을 간략하게 설명합니다.
1장. 로깅 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform은 특정 로그 파일에 정보 메시지를 작성합니다. 이러한 메시지를 사용하여 시스템 이벤트 문제 해결 및 모니터링할 수 있습니다.
개별 로그 파일을 지원 케이스에 수동으로 첨부할 필요는 없습니다. 필요한 모든 정보는 3장. 문제 해결 에 설명된 sosreport 유틸리티에 의해 자동으로 수집됩니다.
1.1. OpenStack 서비스의 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
각 OpenStack 구성 요소에는 실행 중인 서비스와 관련된 파일이 포함된 별도의 로깅 디렉터리가 있습니다.
1.1.1. Bare Metal Provisioning (ironic) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| OpenStack Ironic API | openstack-ironic-api.service | /var/log/ironic/ironic-api.log |
| OpenStack Ironic Conductor | openstack-ironic-conductor.service | /var/log/ironic/ironic-conductor.log |
1.1.2. Block Storage(cinder) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| 블록 스토리지 API | openstack-cinder-api.service | /var/log/cinder/api.log |
| 블록 스토리지 백업 | openstack-cinder-backup.service | /var/log/cinder/backup.log |
| 정보 메시지 | cinder-manage 명령 | /var/log/cinder/cinder-manage.log |
| 블록 스토리지 스케줄러 | openstack-cinder-scheduler.service | /var/log/cinder/scheduler.log |
| 블록 스토리지 볼륨 | openstack-cinder-volume.service | /var/log/cinder/volume.log |
1.1.3. 컴퓨팅(nova) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| OpenStack Compute API 서비스 | openstack-nova-api.service | /var/log/nova/nova-api.log |
| OpenStack Compute 인증서 서버 | openstack-nova-cert.service | /var/log/nova/nova-cert.log |
| OpenStack Compute 서비스 | openstack-nova-compute.service | /var/log/nova/nova-compute.log |
| OpenStack Compute Conductor 서비스 | openstack-nova-conductor.service | /var/log/nova/nova-conductor.log |
| OpenStack Compute VNC 콘솔 인증 서버 | openstack-nova-consoleauth.service | /var/log/nova/nova-consoleauth.log |
| 정보 메시지 | nova-manage 명령 | /var/log/nova/nova-manage.log |
| OpenStack Compute NoVNC Proxy 서비스 | openstack-nova-novncproxy.service | /var/log/nova/nova-novncproxy.log |
| OpenStack Compute Scheduler 서비스 | openstack-nova-scheduler.service | /var/log/nova/nova-scheduler.log |
1.1.4. 대시보드(horizon) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| 특정 사용자 상호 작용 로그 | 대시보드 인터페이스 | /var/log/horizon/horizon.log |
Apache HTTP 서버는 웹 브라우저 또는 명령줄 클라이언트(keystone, nova)를 사용하여 액세스할 수 있는 대시보드 웹 인터페이스에 몇 가지 추가 로그 파일을 사용합니다. 다음 로그 파일은 대시보드 사용 및 진단 오류를 추적하는 데 유용할 수 있습니다.
| 목적 | 로그 경로 |
|---|---|
| 처리된 모든 HTTP 요청 | /var/log/httpd/horizon_access.log |
| HTTP 오류 | /var/log/httpd/horizon_error.log |
| admin-role API 요청 | /var/log/httpd/keystone_wsgi_admin_access.log |
| admin-role API 오류 | /var/log/httpd/keystone_wsgi_admin_error.log |
| member-role API 요청 | /var/log/httpd/keystone_wsgi_main_access.log |
| member-role API 오류 | /var/log/httpd/keystone_wsgi_main_error.log |
동일한 호스트에서 실행 중인 다른 웹 서비스에서 보고한 오류를 저장하는 /var/log/httpd/default_error.log 도 있습니다.
1.1.5. 데이터 처리(sahara) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| Sahara API Server |
openstack-sahara-all.service |
/var/log/sahara/sahara-all.log |
| Sahara Engine Server | openstack-sahara-engine.service | /var/log/messages |
1.1.6. 서비스(trove) 로그 파일로서의 데이터베이스 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| OpenStack Trove API Service | openstack-trove-api.service | /var/log/trove/trove-api.log |
| OpenStack Trove Conductor Service | openstack-trove-conductor.service | /var/log/trove/trove-conductor.log |
| OpenStack Trove guestagent Service | openstack-trove-guestagent.service | /var/log/trove/logfile.txt |
| OpenStack Trove taskmanager Service | openstack-trove-taskmanager.service | /var/log/trove/trove-taskmanager.log |
1.1.7. ID 서비스(keystone) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| OpenStack ID 서비스 | openstack-keystone.service | /var/log/keystone/keystone.log |
1.1.8. Image 서비스(glance) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| OpenStack Image Service API 서버 | openstack-glance-api.service | /var/log/glance/api.log |
| OpenStack 이미지 서비스 레지스트리 서버 | openstack-glance-registry.service | /var/log/glance/registry.log |
1.1.9. 네트워킹(neutron) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| OpenStack Neutron DHCP 에이전트 | neutron-dhcp-agent.service | /var/log/neutron/dhcp-agent.log |
| OpenStack Networking 계층 3 에이전트 | neutron-l3-agent.service | /var/log/neutron/l3-agent.log |
| 메타데이터 에이전트 서비스 | neutron-metadata-agent.service | /var/log/neutron/metadata-agent.log |
| 메타데이터 네임스페이스 프록시 | 해당 없음 | /var/log/neutron/neutron-ns-metadata-proxy-UUID.log |
| Open vSwitch 에이전트 | neutron-openvswitch-agent.service | /var/log/neutron/openvswitch-agent.log |
| OpenStack Networking 서비스 | neutron-server.service | /var/log/neutron/server.log |
1.1.10. Object Storage(swift) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
OpenStack Object Storage는 시스템 로깅 기능에만 로그를 보냅니다.
기본적으로 local0, local1, local2 syslog 기능을 사용하여 모든 Object Storage 로그 파일을 /var/log/swift/swift.log에 기록합니다.
오브젝트 스토리지의 로그 메시지는 REST API 서비스 및 백그라운드 데몬의 두 가지 범주로 분류됩니다. API 서비스 메시지에는 널리 사용되는 HTTP 서버와 유사한 방식으로 API 요청당 한 행이 포함됩니다. frontend(Proxy)와 백엔드(Account, 컨테이너, 오브젝트) 서비스 모두 이러한 메시지를 게시합니다. 데몬 메시지는 체계적이지 않으며 일반적으로 주기적인 작업을 수행하는 데몬에 대한 사람이 읽을 수 있는 정보를 포함합니다. 그러나 Object Storage의 어떤 부분에서 메시지를 생성하는지와 관계없이 소스 ID는 항상 행의 시작 부분에 있습니다.
프록시 메시지의 예:
Apr 20 15:20:34 rhev-a24c-01 proxy-server: 127.0.0.1 127.0.0.1 20/Apr/2015/19/20/34 GET /v1/AUTH_zaitcev%3Fformat%3Djson%26marker%3Dtestcont HTTP/1.0 200 - python-swiftclient-2.1.0 AUTH_tk737d6... - 2 - txc454fa8ea4844d909820a-0055355182 - 0.0162 - - 1429557634.806570053 1429557634.822791100
Apr 20 15:20:34 rhev-a24c-01 proxy-server: 127.0.0.1 127.0.0.1 20/Apr/2015/19/20/34 GET /v1/AUTH_zaitcev%3Fformat%3Djson%26marker%3Dtestcont HTTP/1.0 200 - python-swiftclient-2.1.0 AUTH_tk737d6... - 2 - txc454fa8ea4844d909820a-0055355182 - 0.0162 - - 1429557634.806570053 1429557634.822791100
백그라운드 데몬의 임시 메시지의 예:
1.1.11. 오케스트레이션(heat) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| OpenStack Heat API 서비스 | openstack-heat-api.service | /var/log/heat/heat-api.log |
| OpenStack Heat Engine Service | openstack-heat-engine.service | /var/log/heat/heat-engine.log |
| 오케스트레이션 서비스 이벤트 | 해당 없음 | /var/log/heat/heat-manage.log |
1.1.13. Telemetry(ceilometer) 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| OpenStack ceilometer 알림 에이전트 | openstack-ceilometer-notification.service | /var/log/ceilometer/agent-notification.log |
| OpenStack ceilometer 알람 평가 | openstack-ceilometer-alarm-evaluator.service | /var/log/ceilometer/alarm-evaluator.log |
| OpenStack ceilometer 경보 알림 | openstack-ceilometer-alarm-notifier.service | /var/log/ceilometer/alarm-notifier.log |
| OpenStack ceilometer API | openstack-ceilometer-api.service | /var/log/ceilometer/api.log |
| 정보 메시지 | MongoDB 통합 | /var/log/ceilometer/ceilometer-dbsync.log |
| OpenStack ceilometer 중앙 에이전트 | openstack-ceilometer-central.service | /var/log/ceilometer/central.log |
| OpenStack ceilometer 컬렉션 | openstack-ceilometer-collector.service | /var/log/ceilometer/collector.log |
| OpenStack ceilometer 컴퓨팅 에이전트 | openstack-ceilometer-compute.service | /var/log/ceilometer/compute.log |
1.1.14. 서비스 지원을 위한 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
다음 서비스는 핵심 OpenStack 구성 요소에서 사용하며 자체 로그 디렉터리와 파일이 있습니다.
| 서비스 | 서비스 이름 | 로그 경로 |
|---|---|---|
| 메시지 브로커(RabbitMQ) | rabbitmq-server.service |
/var/log/rabbitmq/rabbit@short_hostname.log |
| 데이터베이스 서버(MariaDB) | mariadb.service | /var/log/mariadb/mariadb.log |
| 문서 지향 데이터베이스(MongoDB) | mongod.service | /var/log/mongodb/mongodb.log |
| 가상 네트워크 스위치(Open vSwitch) | openvswitch-nonetwork.service |
/var/log/openvswitch/ovsdb-server.log |
1.2. 로깅 옵션 구성 링크 복사링크가 클립보드에 복사되었습니다!
각 구성 요소는 각 구성 파일에 별도의 로깅 구성을 유지 관리합니다. 예를 들어 Compute에서 이러한 옵션은 /etc/nova/nova.conf 에 설정됩니다.
디버깅을 활성화하여 정보 로깅 수준을 높입니다. 이 옵션은 캡처된 정보의 양을 크게 늘리므로 일시적으로만 사용하거나 로그 순환 설정을 먼저 검토하는 것이 좋습니다.
debug=True
debug=TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 자세한 로깅을 활성화합니다.
verbose=True
verbose=TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 로그 파일 경로를 변경합니다.
log_dir=/var/log/nova
log_dir=/var/log/novaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 로그를 중앙 syslog 서버로 보냅니다.
use_syslog=True syslog_log_facility=LOG_USER
use_syslog=True syslog_log_facility=LOG_USERCopy to Clipboard Copied! Toggle word wrap Toggle overflow
옵션은 타임스탬프 구성 및 로그 형식에도 사용할 수 있습니다. 추가 로깅 옵션은 구성 요소의 구성 파일을 검토합니다.
1.3. 원격 로깅 설치 및 구성 링크 복사링크가 클립보드에 복사되었습니다!
1.3.1. 원격 로깅 소개 링크 복사링크가 클립보드에 복사되었습니다!
모든 시스템은 로그 파일을 생성하고 업데이트합니다. 해당 작업과 발생하는 모든 문제가 기록됩니다. 많은 시스템을 포함하는 분산 또는 클라우드 컴퓨팅 환경에서는 중앙 위치에서 이러한 로그 파일을 수집하면 디버깅을 단순화할 수 있습니다.
rsyslog 서비스는 중앙 집중식 로깅 서버를 실행하고 개별 시스템을 구성하여 로그 파일을 중앙 집중식 로깅 서버로 전송할 수 있는 기능을 제공합니다. 이를 원격 로깅 을 위한 시스템 구성이라고 합니다.
1.3.2. rsyslog 서버 설치 링크 복사링크가 클립보드에 복사되었습니다!
rsyslog 패키지는 중앙 집중식 로깅 서버로 사용하려는 시스템과 로그를 전송하도록 구성된 모든 시스템에 설치해야 합니다. 이렇게 하려면 root 사용자로 로그인하여 rsyslog 패키지를 설치합니다.
yum install rsyslog
# yum install rsyslog
rsyslog 패키지가 설치되고 구성할 준비가 되었습니다.
1.3.3. 중앙 집중식 로깅 서버에서 rsyslog 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 절차의 단계를 중앙 집중식 로깅 서버로 사용하려는 시스템에서 따라야 합니다. 이 절차의 모든 단계는 root 사용자로 로그인하는 동안 실행해야 합니다.
rsyslog트래픽을 허용하도록 SELinux를 구성합니다.semanage port -a -t syslogd_port_t -p udp 514
# semanage port -a -t syslogd_port_t -p udp 514Copy to Clipboard Copied! Toggle word wrap Toggle overflow 텍스트 편집기에서
/etc/rsyslog.conf파일을 엽니다.파일에 다음 행을 추가하고 위치 로그를 정의하는 방법은 다음과 같습니다.
$template TmplMsg, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" $template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" authpriv.* ?TmplAuth *.info,mail.none,authpriv.none,cron.none ?TmplMsg
$template TmplMsg, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" $template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" authpriv.* ?TmplAuth *.info,mail.none,authpriv.none,cron.none ?TmplMsgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 파일에서 다음 줄의 시작 부분에서 주석 문자(
#)를 제거합니다.#$ModLoad imudp #$UDPServerRun 514
#$ModLoad imudp #$UDPServerRun 514Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
/etc/rsyslog.conf파일에 변경 사항을 저장합니다.
이제 환경의 다른 시스템에서 로그 파일을 수신하고 저장하도록 중앙 집중식 로그 서버가 구성되어 있습니다.
1.3.4. 개별 노드에서 rsyslog 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 절차에 나열된 단계를 각 시스템에 적용하여 로그를 중앙 집중식 로그 서버로 전송하도록 구성합니다. 이 절차에 나열된 모든 단계는 root 사용자로 로그인하는 동안 수행해야 합니다.
/etc/rsyslog.conf를 편집하고 다음을 추가하여 중앙 집중식 로그 서버의 주소를 지정합니다.*.* @YOURSERVERADDRESS:YOURSERVERPORT
*.* @YOURSERVERADDRESS:YOURSERVERPORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow SERVERADDRESS 를 중앙 집중식 로깅 서버의 주소로 바꿉니다. SERVERPORT 를 rsyslog 서비스가 수신 대기하는 포트로 바꿉니다. 예를 들면 다음과 같습니다.
*.* @192.168.20.254:514
*.* @192.168.20.254:514Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는 다음을 수행합니다.
*.* @@log-server.example.com:514
*.* @@log-server.example.com:514Copy to Clipboard Copied! Toggle word wrap Toggle overflow 단일
@기호는 전송을 위한 UDP 프로토콜을 지정합니다.@@을 사용하여 전송을 위한 TCP 프로토콜을 지정합니다.중요이러한 예제 구성에서 와일드카드(
*) 문자를 사용하면 모든 로그 기능 및 모든 로그 우선 순위의 로그 항목이 원격 rsyslog 서버로 전송되어야 함을 rsyslog에 나타냅니다.보다 정확한 로그 파일 필터링을 적용하는 방법에 대한 자세한 내용은 rsyslog 구성 파일
rsyslog.conf의 매뉴얼 페이지를 참조하십시오.man rsyslog.conf를 실행하여 도움말 페이지에 액세스합니다.- rsyslog 서비스가 시작되거나 재시작되면 시스템은 모든 로그 메시지를 중앙 집중식 로깅 서버로 전송합니다.
1.3.5. rsyslog 서버 시작 링크 복사링크가 클립보드에 복사되었습니다!
rsyslog 서비스는 중앙 집중식 로깅 서버와 로그인하려는 시스템에서 실행 중이어야 합니다.
이 절차의 단계는 root 사용자로 로그인하는 동안 수행해야 합니다.
rsyslog 서비스를 시작합니다.
service rsyslog start
# service rsyslog startCopy to Clipboard Copied! Toggle word wrap Toggle overflow 나중에 rsyslog 서비스가 자동으로 시작되는지 확인합니다.
chkconfig rsyslog on
# chkconfig rsyslog onCopy to Clipboard Copied! Toggle word wrap Toggle overflow
rsyslog 서비스가 시작되었습니다. 서비스는 로컬 구성에 따라 로그 메시지를 보내거나 받기 시작합니다.
2장. 원격 분석 서비스를 사용하여 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
ceilometer 명령에 대한 도움말을 보려면 다음을 사용합니다.
ceilometer help
# ceilometer help
하위 명령에 대한 도움말을 보려면 다음을 사용합니다.
ceilometer help subcommand
# ceilometer help subcommand
2.1. 기존 경보 보기 링크 복사링크가 클립보드에 복사되었습니다!
구성된 Telemetry 알람을 나열하려면 다음을 사용합니다.
ceilometer alarm-list
# ceilometer alarm-list
리소스의 구성된 미터를 나열하려면 다음을 사용합니다.
여기서 UUID 는 기존 리소스의 리소스 ID입니다(예: 인스턴스, 이미지 또는 볼륨).
2.2. 알람 구성 링크 복사링크가 클립보드에 복사되었습니다!
임계값이 교차될 때 활성화되도록 알람을 구성하려면 다음 구문과 함께 ceilometer alarm-threshold-create 명령을 사용합니다.
ceilometer alarm-threshold-create --name alarm-name [--description alarm-text] --meter-name meter-name --threshold value
# ceilometer alarm-threshold-create --name alarm-name [--description alarm-text] --meter-name meter-name --threshold value
예
개별 인스턴스의 평균 CPU 사용률이 3개의 연속 600(10분) 기간 동안 50%를 초과하면 활성화되는 알람을 구성하려면 다음을 사용합니다.
ceilometer alarm-threshold-create --name cpu_high --description 'CPU usage high' --meter-name cpu_usage_high --threshold 50 --comparison-operator gt --statistic avg --period 600 --evaluation-periods 3 --alarm-action 'log://' --query resource_id=5056eda6-8a24-4f52-9cc4-c3ddb6fb4a69
# ceilometer alarm-threshold-create --name cpu_high --description 'CPU usage high' --meter-name cpu_usage_high --threshold 50 --comparison-operator gt --statistic avg --period 600 --evaluation-periods 3 --alarm-action 'log://' --query resource_id=5056eda6-8a24-4f52-9cc4-c3ddb6fb4a69
이 예제에서 알림 작업은 로그 메시지입니다.
기존 임계값 알람을 편집하려면 ceilometer alarm-threshold-update 명령을 알람 ID와 함께 사용한 다음 하나 이상의 옵션을 업데이트합니다.
예
알람 임계값을 75%로 늘리려면 다음을 사용합니다.
ceilometer alarm-threshold-update 35addb25-d488-4a74-a038-076aad3a3dc3 --threshold=75
# ceilometer alarm-threshold-update 35addb25-d488-4a74-a038-076aad3a3dc3 --threshold=75
2.3. 알람 비활성화 또는 삭제 링크 복사링크가 클립보드에 복사되었습니다!
알람을 비활성화하려면 다음을 사용합니다.
ceilometer alarm-threshold-update --enabled False ALARM_ID
# ceilometer alarm-threshold-update --enabled False ALARM_ID
알람을 삭제하려면 다음을 사용합니다.
ceilometer alarm-delete ALARM_ID
# ceilometer alarm-delete ALARM_ID
2.4. 샘플 보기 링크 복사링크가 클립보드에 복사되었습니다!
특정 측정 이름에 대한 모든 샘플을 나열하려면 다음을 사용합니다.
ceilometer sample-list --meter METER_NAME
# ceilometer sample-list --meter METER_NAME
타임스탬프 범위 내에서 특정 리소스에 대한 샘플만 나열하려면 다음을 사용합니다.
ceilometer sample-list --meter METER_NAME --query 'resource_id=INSTANCE_ID;timestamp>_START_TIME_;timestamp>=END_TIME'
# ceilometer sample-list --meter METER_NAME --query 'resource_id=INSTANCE_ID;timestamp>_START_TIME_;timestamp>=END_TIME'
여기서 START_TIME 및 END_TIME 은 iso-dateThh:mm:ss 형식으로 되어 있습니다.
예
13:10:00 과 14:25:00 사이에 수행된 샘플의 인스턴스를 쿼리하려면 다음을 사용합니다.
2.5. 샘플 생성 링크 복사링크가 클립보드에 복사되었습니다!
샘플은 원격 분석 서비스로 전송하기 위해 생성할 수 있으며 이전에 정의한 미터와 일치하지 않아도 됩니다. 다음 구문을 사용합니다.
ceilometer sample-create --resource_id RESOURCE_ID --meter-name METER_NAME --meter-type METER_TYPE --meter-unit METER_UNIT --sample-volume SAMPLE_VOLUME
# ceilometer sample-create --resource_id RESOURCE_ID --meter-name METER_NAME --meter-type METER_TYPE --meter-unit METER_UNIT --sample-volume SAMPLE_VOLUME
여기서 METER_TYPE 는 다음 중 하나일 수 있습니다.
- 누적 - 실행 중인 합계
- Cryostat - 시간에 따른 변경 또는 차이점
- 게이지 - 불연속 값
예
여기서 volume (일반적으로 샘플링 작업 결과로 얻은 값은 이 경우 명령으로 생성되는 값입니다.
샘플이 생성되는 시점이 원격 분석 서비스로 전송되므로 샘플이 업데이트되지 않습니다. 샘플은 기본적으로 메시지입니다. 따라서 메시지 ID가 있습니다. 새 샘플을 생성하려면 sample-create 명령을 반복하고 --sample-volume 값을 업데이트합니다.
2.6. 클라우드 사용량 통계 보기 링크 복사링크가 클립보드에 복사되었습니다!
OpenStack 관리자는 대시보드를 사용하여 클라우드 통계를 볼 수 있습니다.
- 대시보드에서 관리자 권한으로 관리자 > 시스템 > 리소스 사용을 선택합니다.
다음 중 하나를 클릭합니다.
- 일별 보고서 - 프로젝트당 일일 사용량 보고서를 표시합니다. 프로젝트 수에 대한 날짜 범위 및 제한을 선택하고 Generate Report 를 클릭합니다. 일일 사용량 보고서가 표시됩니다.
- stats - 프로젝트별로 그룹화된 지표 그래프 보기. 드롭다운 메뉴를 사용하여 값과 기간을 선택합니다. 표시된 그래프는 자동으로 업데이트됩니다.
ceilometer 명령줄 클라이언트를 사용하여 클라우드 사용량 정적을 볼 수도 있습니다.
예
cpu_util 측정기의 모든 통계를 보려면 다음을 사용합니다.
예
통계는 --query 옵션을 통해 특정 리소스로 제한되고 타임스탬프 옵션을 통해 특정 범위로 제한할 수 있습니다.
2.7. Time-Series-Database-as-a-Service 사용 링크 복사링크가 클립보드에 복사되었습니다!
time-Series-Database-as-a-Service(gnocchi)는 다중 테넌트, 지표 및 리소스 데이터베이스입니다. Operator 및 사용자에게 메트릭 및 리소스 정보에 대한 액세스를 제공하는 동시에 매우 큰 규모로 메트릭을 저장하도록 설계되었습니다.
현재 TSDaaS는 인증에 ID 서비스를 사용하고 Ceph, Object Storage를 사용하여 데이터를 저장합니다.
TDSaaS는 statsd 프로토콜과 호환되는 statsd deamon을 제공하며, gnocchi- 라는 네트워크를 통해 전송되는 메트릭을 수신할 수 있습니다. TDSaaS에서 statsd statsd 지원을 활성화하려면 구성 파일에서 [statsd] 옵션을 구성해야 합니다. resource ID 매개변수는 모든 지표가 연결된 기본 일반 리소스, 리소스 및 메트릭과 연결된 사용자 및 프로젝트 ID, 지표를 생성하는 데 사용되는 아카이브 정책 이름으로 사용됩니다.
지표가 gnocchi-statsd 으로 전송되고 구성된 리소스 ID에 제공된 이름으로 연결되므로 모든 메트릭이 동적으로 생성됩니다. TSDaaS 설치 및 구성에 대한 자세한 내용은 설치 참조 가이드의 Time-Series-Database-as-a-Service 설치 장을 참조하십시오. https://access.redhat.com/documentation/en/red-hat-enterprise-linux-openstack-platform/
Time-Series-Database-as-a-Service(gnocchi)는 Red Hat OpenStack Platform 8의 기술 프리뷰로 표시됩니다.
기술 프리뷰로 표시된 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview/을 참조하십시오.
2.7.1. Time-Series-Database-as-a-Service 실행 링크 복사링크가 클립보드에 복사되었습니다!
HTTP 서버 및 메트릭 데몬을 실행하여 Time-Series-Database-as-a-Service(TSDaaS)를 실행합니다.
gnocchi-api gnocchi-metricd
# gnocchi-api
# gnocchi-metricd
2.7.2. WSGI 애플리케이션으로 실행 링크 복사링크가 클립보드에 복사되었습니다!
mod_wsgi 또는 다른 WSGI 애플리케이션과 같은 WSGI 서비스를 통해 TSDaaS를 실행할 수 있습니다. TSDaaS와 함께 제공되는 gnocchi/rest/app.wsgi 파일을 사용하면 Gnocchi를 WSGI 애플리케이션으로 활성화할 수 있습니다.
TSDaaS API 계층은 WSGI를 사용하여 실행됩니다. 즉, Apache httpd 및 mod_wsgi 또는 uwsgi 와 같은 다른 HTTP 데몬을 사용하여 실행할 수 있습니다. CPU 수(일반적으로 1.5 × CPU 수)에 따라 프로세스 및 스레드 수를 구성해야 합니다. 하나의 서버가 충분하지 않으면 여러 새 API 서버를 생성하여 다른 시스템에서도 Gnocchi out를 확장할 수 있습니다.
2.7.3. 메트릭된 작업자 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 gnocchi-metricd 데몬은 컴퓨팅 지표 집계 시 CPU 사용률을 극대화하기 위해 모든 CPU 성능을 확장합니다. gnocchi status 명령을 사용하여 HTTP API를 쿼리하고 지표 처리의 클러스터 상태를 가져올 수 있습니다. 이 명령은 gnocchi-metricd 의 처리 백로그라고 하는 프로세스 지표 수를 표시합니다. 이 백로그가 지속적으로 증가하지 않는 한, 이는 gnocchi-metricd 가 전송되는 메트릭의 양에 대처할 수 있음을 의미합니다. 처리할 측정값 수가 지속적으로 증가하는 경우 gnocchi-metricd 데몬의 수를 늘릴 수 있습니다. 여러 서버에서 메트릭된 데몬 수를 실행할 수 있습니다.
2.7.4. Time-Series-Database-as-a-Service 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
HTTP API의 /v1/status 끝점은 쉽게 모니터링할 측정값 수(정상 백로그)와 같은 다양한 정보를 반환합니다. HTTP 서버와 gnocchi-metricd 데몬이 실행 중이고 로그에 어떤 알람도 쓰지 않는지 확인하는 것은 전체 시스템의 정상 상태를 나타내는 신호입니다.
2.7.5. Time-Series-Database-as-a-Service 백업 및 복원 링크 복사링크가 클립보드에 복사되었습니다!
untunate 이벤트에서 복구하려면 인덱스와 스토리지를 모두 백업해야 합니다. 즉, 데이터베이스 덤프(PostgreSQL 또는 MySQL)를 만들고 데이터 스토리지의 스냅샷 또는 복사본(Ceph, Swift 또는 파일 시스템)을 수행합니다. 복원 절차: 인덱스 및 스토리지 백업을 복원하고 필요한 경우 TSDaaS를 다시 설치한 후 다시 시작합니다.
3장. 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
이 장에서는 Red Hat OpenStack Platform 배포 문제를 해결하기 위한 로깅 및 지원 정보를 설명합니다.
3.1. 지원 링크 복사링크가 클립보드에 복사되었습니다!
클라이언트 명령이 실패하거나 다른 문제로 실행되는 경우, Red Hat 기술 지원팀에 어떤 일이 발생했는지, 전체 콘솔 출력, 콘솔 출력에서 참조되는 모든 로그 파일, 문제(또는) 노드의 sosreport 에 문의하십시오. 예를 들어, 계산 수준에서 문제가 발생하면 Nova 노드에서 sosreport 를 실행하거나 네트워킹 문제인 경우 Neutron 노드에서 유틸리티를 실행합니다. 일반적인 배포 문제의 경우 클라우드 컨트롤러에서 sosreport 를 실행하는 것이 가장 좋습니다.
sosreport 명령(sos 패키지)에 대한 자세한 내용은 What is a sosreport and how to create one in Red Hat Enterprise Linux 4.6 이상에서 참조하십시오.
모든 팁에 대해 /var/log/messages 파일도 확인합니다.
3.2. Identity Client(keystone) 연결 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
ID 클라이언트(keystone)가 ID 서비스에 연결할 수 없는 경우 오류를 반환합니다.
Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
이러한 일반적인 원인에 대한 문제를 디버깅하려면 다음을 수행합니다.
- ID 서비스가 다운됨
Identity 서비스를 호스팅하는 시스템에서 서비스 상태를 확인합니다.
openstack-status | grep keystone
# openstack-status | grep keystone openstack-keystone: activeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스가 실행되지 않으면 root 사용자로 로그인하여 시작합니다.
service openstack-keystone start
# service openstack-keystone startCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 방화벽이 올바르게 구성되지 않았습니다.
-
포트
5000및35357에서 TCP 트래픽을 허용하도록 방화벽을 구성하지 못할 수 있습니다. 이 문제를 해결하는 방법에 대한 지침은 설치 참조 에서 ID 서비스 트래픽을 허용하도록 방화벽 구성 을 참조하십시오. - Service Endpoints not defined correctly
Identity 서비스를 호스팅하는 시스템에서 끝점이 올바르게 정의되었는지 확인합니다.
관리 토큰을 가져옵니다.
grep admin_token /etc/keystone/keystone.conf
# grep admin_token /etc/keystone/keystone.conf admin_token = 0292d404a88c4f269383ff28a3839ab4Copy to Clipboard Copied! Toggle word wrap Toggle overflow ID 서비스에 대한 올바른 관리 끝점을 확인합니다.
http://IP:35357/VERSION
http://IP:35357/VERSIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow IP 를 ID 서비스를 호스팅하는 시스템의 IP 주소 또는 호스트 이름으로 바꿉니다. VERSION 을 사용 중인 API 버전(
v2.0또는v3)으로 바꿉니다.사전 정의된 ID 서비스 관련 환경 변수를 설정 해제합니다.
unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URL
# unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 관리 토큰 및 엔드포인트를 사용하여 ID 서비스로 인증합니다. Identity 서비스 엔드 포인트가 올바른지 확인합니다.
keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-list# keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 나열된
publicurl,internalurl및adminurl이 ID 서비스에 적합한지 확인합니다. 특히 각 엔드포인트에 나열된 IP 주소와 포트 번호가 올바르며 네트워크를 통해 연결할 수 있는지 확인합니다.이러한 값이 올바르지 않으면 올바른 엔드포인트를 추가하는 방법에 대한 자세한 내용은 설치 참조에서 ID 서비스 끝점 만들기 를 참조하십시오. 올바른 엔드포인트가 추가되면
keystone명령의endpoint-delete작업을 사용하여 잘못된 엔드포인트를 제거합니다.keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-delete ID# keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-delete IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow TOKEN 및 ENDPOINT 를 이전에 식별한 값으로 바꿉니다. ID 를
endpoint-list작업에 나열된 대로 제거하려면 ID를 끝점의 ID로 바꿉니다.
3.3. OpenStack Networking 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 OpenStack Networking 서비스 문제를 해결하기 위해 사용할 수 있는 다양한 명령과 절차를 설명합니다.
- 네트워킹 장치 디버깅
-
ip a명령을 사용하여 모든 물리적 및 가상 장치를 표시합니다. -
ovs-vsctl show명령을 사용하여 가상 스위치의 인터페이스와 브리지를 표시합니다. -
ovs-dpctl show명령을 사용하여 스위치의 datapaths를 표시합니다.
-
- 네트워킹 패킷 추적
tcpdump명령을 사용하여 패킷이 통과되지 않는 위치를 확인합니다.tcpdump -n -i INTERFACE -e -w FILENAME
# tcpdump -n -i INTERFACE -e -w FILENAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow INTERFACE 를 네트워크 인터페이스 이름으로 교체하여 패킷이 통과되지 않는 위치를 확인합니다. 인터페이스 이름은 브리지의 이름 또는 호스트 이더넷 장치일 수 있습니다.
-e플래그를 사용하면 링크 수준 헤더가 덤프됩니다(vlan태그가 표시됩니다).-w플래그는 선택 사항입니다. 출력을 파일에 작성하려는 경우에만 사용할 수 있습니다. 그렇지 않은 경우 출력은 표준 출력(stdout)에 작성됩니다.tcpdump에 대한 자세한 내용은man tcpdump를 실행하여 수동 페이지를 참조하십시오.
- 네트워크 네임스페이스 디버깅
-
ip netns list명령을 사용하여 알려진 모든 네트워크 네임스페이스를 나열합니다. ip netns exec명령을 사용하여 특정 네임스페이스 내에 라우팅 테이블을 표시합니다.ip netns exec NAMESPACE_ID bash route -n
# ip netns exec NAMESPACE_ID bash # route -nCopy to Clipboard Copied! Toggle word wrap Toggle overflow bash 쉘에서
ip netns exec명령을 시작하여ip netns exec명령 없이 후속 명령을 호출할 수 있습니다.
-
3.4. 네트워크 및 경로 탭 문제 해결 대시보드의 문제 표시 링크 복사링크가 클립보드에 복사되었습니다!
네트워크 및 라우터 탭은 환경이 OpenStack Networking을 사용하도록 구성된 경우에만 대시보드에 표시됩니다. 특히 기본적으로 Cryostat 유틸리티는 현재 Nova Networking을 배포하고 이러한 방식으로 배포된 환경에서 탭이 표시되지 않습니다.
OpenStack Networking이 환경에 배포되었지만 탭이 계속 나타나지 않으면 서비스 엔드포인트가 ID 서비스에서 올바르게 정의되고 방화벽이 엔드포인트에 대한 액세스를 허용하고 서비스가 실행 중인지 확인합니다.
3.5. 대시보드에서 인스턴스 시작 오류 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
작업이 실패하면 대시보드를 사용하여 인스턴스를 시작할 때 일반적인 ERROR 메시지가 표시됩니다. 실패의 실제 원인을 확인하려면 명령줄 툴을 사용해야 합니다.
nova list 명령을 사용하여 인스턴스의 고유 식별자를 찾습니다. 그런 다음 이 식별자를 nova show 명령에 대한 인수로 사용합니다. 반환된 항목 중 하나가 오류 상태입니다. 가장 일반적인 값은 NoValidHost 입니다.
이 오류는 인스턴스를 호스팅할 수 있는 충분한 리소스가 있는 유효한 호스트를 찾을 수 없음을 나타냅니다. 이 문제를 해결하려면 더 작은 인스턴스 크기를 선택하거나 환경에 대한 오버 커밋 허용 범위를 늘리는 것이 좋습니다.
지정된 인스턴스를 호스팅하려면 계산 노드에 사용 가능한 CPU 및 RAM 리소스뿐만 아니라 인스턴스와 연결된 임시 스토리지에 충분한 디스크 공간이 있어야 합니다.
3.6. Keystone v3 대시보드 인증 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
django_openstack_auth는 OpenStack ID 서비스 API에 대해 사용자를 인증하기 위해 Django의 contrib.auth 프레임워크와 함께 작동하는 플러그형 Django 인증 백엔드입니다. Django_openstack_auth는 토큰 오브젝트를 사용하여 사용자 및 Keystone 관련 정보를 캡슐화합니다. 대시보드는 토큰 오브젝트를 사용하여 Django 사용자 오브젝트를 다시 빌드합니다.
현재 토큰 오브젝트는 다음을 저장합니다.
- Keystone 토큰
- 사용자 정보
- 범위
- 역할
- 서비스 카탈로그
대시보드는 사용자 세션 데이터를 처리하기 위해 Django의 세션 프레임워크를 사용합니다. 다음은 사용할 수 있는 다양한 세션 백엔드 목록으로, local_settings.py 파일의 SESSION_ENGINE 설정을 통해 제어됩니다.
- 로컬 메모리 캐시
- Memcached
- 데이터베이스
- 캐시된 데이터베이스
- 쿠키
특히 서명된 쿠키 세션 백엔드가 사용되고, 한 번에 여러 또는 모든 서비스를 동시에 활성화하면 쿠키 크기가 제한에 도달하고 대시보드가 로그인하지 못할 수 있습니다. 쿠키 크기가 증가한 이유 중 하나는 서비스 카탈로그입니다. 더 많은 서비스가 등록되면 서비스 카탈로그의 크기가 커집니다.
이러한 시나리오에서는 세션 토큰 관리를 개선하기 위해 특히 Keystone v3 인증을 사용할 때 대시보드에 로그인하기 위한 다음 구성 설정을 포함합니다.
/usr/share/openstack-dashboard/openstack_dashboard/settings.py에서 다음 구성을 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 동일한 파일에서 SESSION_ENGINE을 다음과 같이 변경합니다.
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql 명령을 사용하여 데이터베이스 서비스에 연결하고 USER를 연결할 사용자 이름으로 교체합니다. USER는 root 사용자여야 합니다(또는 적어도 올바른 권한이 있는 사용자인 경우: db 생성).
mysql -u USER -p
# mysql -u USER -pCopy to Clipboard Copied! Toggle word wrap Toggle overflow Horizon 데이터베이스를 만듭니다.
mysql > create database horizondb;
mysql > create database horizondb;Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql 클라이언트를 종료합니다.
mysql > exit
mysql > exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack_dashboard 디렉터리로 변경하고 다음을 사용하여 데이터베이스를 동기화합니다.
cd /usr/share/openstack-dashboard/openstack_dashboard ./manage.py syncdb
# cd /usr/share/openstack-dashboard/openstack_dashboard $ ./manage.py syncdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 슈퍼유저를 생성할 필요가 없으므로 질문에 'n'으로 응답합니다.
Apache http 서버를 다시 시작합니다. Red Hat Enterprise Linux의 경우:
#service httpd restart
#service httpd restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow