Contrail Insights 컨테이너형 OpenStack 설치(OpenStack Kolla, Red Hat OpenStack Platform 13)
컨테이너화된 OpenStack 설정에서 Contrail Insights OpenStack 리소스와 OpenStack 서비스가 구축된 컨테이너를 모니터링합니다. 이 주제는 컨테이너 오케스트레이션 엔진 없이 OpenStack 서비스를 Contrail Insights Docker 컨테이너 내에서 실행될 때 구축하는 단계를 제공합니다. Kubernetes(OpenStack Helm)로 오케스트레이션된 컨테이너에서 OpenStack이 실행되는 설정은 openStack Helm의 Contrail Insights Installation을 참조하세요.
아키텍처
Contrail Insights Agent는 OpenStack 컴퓨팅 노드의 리소스 사용량을 모니터링합니다.
Contrail Insights 플랫폼은 시스템을 구성하는 REST API를 제공합니다.
Contrail Insights DataManager는 여러 에이전트의 데이터를 저장합니다.
Contrail Insights 대시보드는 웹 기반 사용자 인터페이스를 제공합니다.
OpenStack 어댑터가 OpenStack 클러스터에서 실행되는 가상 머신(VM)을 발견합니다.
Contrail Insights OpenStack 서비스가 실행 중인 Docker 컨테이너를 검색합니다.
요구 사항
플랫폼이 설치된 각 호스트의 경우 Contrail Insights 소프트웨어 요구 사항에 대한 Contrail Insights 일반 요구 사항을 참조하십시오. 에이전트 지원 Contrail Insights 목록은 Contrail Insights Agent Requirements를 참조하세요.
OpenStack 서비스에 대한 API 액세스. Contrail Insights 다양한 OpenStack 서비스가 제공하는 API를 통해 OpenStack 클러스터에 대한 정보를 읽습니다. 구성 중에 제공되는 사용자 자격 증명은 읽기 전용 API 호출에 충분한 권한을 제공해야 합니다. 또한 Contrail Insights 플랫폼은 API 서버가 실행되는 호스트 및 포트에 대한 연결을 열 수 있어야 합니다.
-
참고:
업그레이드 공지: Contrail Insights 3.2.6에서 시작하여 라이선스 파일에 대한 요구 사항이 제거됩니다. 3.2.6보다 일찍 버전을 설치하는 경우 설치 전에 라이선스가 필요합니다.
라이선스 키를 에서 얻을 수 mailto:APPFORMIX-KEY-REQUEST@juniper.net. 요청 시 다음과 같은 정보를 제공합니다.
Group name: Target customers or use: Cluster type: Containerized OpenStack Number of hosts: Number of instances:
연결
플랫폼 호스트를 위한 하나의 IP 주소.
플랫폼 호스트는 컴퓨팅 노드에 도달하려면 IP 연결이 있어야 합니다.
플랫폼 호스트를 설치하는 동안 인터넷 연결이 필요합니다.
컨트롤 플레인 서비스는 자사에 호스팅된 레지스트리에서 검색되는 Docker 이미지로 Contrail Insights. 선택적으로 Docker 이미지를 다운로드하여 로컬 레지스트리에서 사용할 수 있습니다.
대시보드 클라이언트(브라우저에서)는 플랫폼 호스트에 IP 연결이 있어야 합니다.
워크플로
설치에는 다음과 같은 워크플로우가 포함됩니다.
최초 설정.
Agent 설치를 위한 사전 사전 전제
Configuring OpenStack.
Contrail Insights 설치합니다.
옵션 구성.
최초 설정
초기 설정을 완료하려면 다음을 제공합니다.
Ansible 및 기타 필수 패키지를 노드에
appformix_controller
설치합니다.#Ubuntu apt-get update apt-get install python-pip python-dev build-essential libssl-dev libffi-dev pip install ansible==2.3.0.0 markupsafe httplib2
#RHEL/CentOS yum install epel-release #Enable EPEL repository In case the above command does not work, manually download and install the epel-release package with one of the below commands, depending on your system’s version. yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm yum groupinstall 'Development Tools' #Install development tools yum install openssl-devel libffi libffi-devel #Dependencies yum install python-pip python-devel #Install Pip pip install ansible==2.3.0 #Install Ansible 2.3 pip install markupsafe httplib2 #Dependencies
참고:RHEL의 경우, 포트
iptables
9000에 액세스하기 위해 다음 규칙이 필요합니다.iptables -t filter -A IN_public_allow -p tcp --dport 9000 -j ACCEPT
다음 명령을 사용하여 컴퓨팅
libvirt
노드에 설치합니다.yum -y install libvirt
커널 기반 가상 머신(KVM)과 컴퓨팅 노드에서 실행되는 가상 머신에서 데이터를 수집하기 위한 관련 패키지를 설치합니다.
VRouter 컴퓨팅 노드에 Python을 설치하면 Contrail Insights
virtualenv
에이전트가 실행됩니다.#Ubuntu apt-get install -y python-pip pip install virtualenv
#RHEL/CentOS yum install -y python-pip pip install virtualenv
Contrail Insights 플랫폼 노드와 OpenStack 클러스터 노드 간에 암호가 없는 SSH를 설정합니다. 다음 명령을 실행하여 SSH 공용 키를 모든 노드에 생성하고 복사합니다.
ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<openstack-node-1> ... ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<appformix-platform-node>
Agent 설치를 위한 사전 전제
Contrail Insights 라이브러리를 사용하여 OpenStack 컴퓨팅 노드에서 실행되는 가상 머신에서 데이터를 libvirt
수집합니다. 모든 OpenStack 컴퓨팅에서 다음 명령을 실행하여 라이브러리를 설치합니다.
On Ubuntu hosts: sudo apt-get install libvirt0:amd64 On Centos hosts: sudo yum install libvirt-client
OpenStack 구성
Contrail Insights OpenStack 클러스터에 구성된 모든 프로젝트에 대한 정보를 읽습니다. 소프트웨어는 관리자 권한을 요구합니다. 새 관리자 계정을 생성하여 Contrail Insights. 새 관리자 계정을 생성하지 않는 경우 새 관리자 계정을 구성하는 동안 기존 관리자 계정의 사용자 이름과 암호를 Contrail Insights.
운영자에 대한 관리자 Contrail Insights OpenStack Horizon 대시보드에서 다음 단계를 수행합니다.
사용자 계정을 생성하고 이름을
appformix
지정합니다.사용자 계정에 대한 새 프로젝트를 선택합니다.
으로 역할을
admin
선택합니다.
설치 Contrail Insights
설치 Contrail Insights:
소프트웨어 다운로드에서 Contrail Insights 플랫폼 노드로 배포하는 Contrail Insights 패키지를 다운로드하십시오. 아래 파일 다운로드:
contrail-insights-<version>.tar.gz contrail-insights-dependencies-images-<version>.tar.gz contrail-insights-openstack-images-<version>.tar.gz contrail-insights-platform-images-<version>.tar.gz
3.2.6보다 일찍 버전을 설치하는 경우 Contrail Insights 플랫폼 노드에 Contrail Insights 라이선스 파일을 복사합니다.
을
contrail-insights-<version>.tar.gz
언지프(Unzip) 이 패키지에는 설치에 필요한 모든 Ansible 플레이북이 Contrail Insights.tar -xvzf contrail-insights-<version>.tar.gz cd contrail-insights-<version>/
참고:나머지 단계는 디렉토리 내에서
contrail-insights-<version>/
실행됩니다. 제품 이름이 "AppFormix"에서 "Contrail Insights"로 변경됐지만, UI 및 내부 명령 경로는 계속 AppFormix 표시되고 나중에 새 이름을 반영합니다.템플릿으로
sample_inventory
사용하여 설치를 위한 인벤토리 파일을 만듭니다. 섹션에 OpenStack 컴퓨팅 노드와 섹션의 Contrail Insightscompute
플랫폼 노드를appformix_controller
설명합니다. 섹션에서 OpenStack 컨트롤러 서비스를 실행하는 노드를openstack_controller
설명합니다.# List all Compute Nodes [compute] <openstack-compute-node1-ip-or-hostname> <openstack-compute-node2-ip-or-hostname> ... # appformix_controller host [appformix_controller] <appformix-controller-node-ip-or-hostname> [openstack_controller] <openstack-controller-node-ip-or-hostname>
인벤토리 파일에 언급된 모든 호스트가 Contrail Insights 플랫폼에서 도달할 수 있도록 합니다.
export ANSIBLE_HOST_KEY_CHECKING=False ansible -i inventory -m ping all
으로 불리는 디렉토리를
group_vars
생성합니다. 에서 요구하는 구성 변수를 사용하여 이 디렉토리 내부에all
이름을 Contrail Insights.mkdir group_vars vi group_vars/all appformix_docker_images: - /path/to/contrail-insights-platform-images-<version>.tar.gz - /path/to/contrail-insights-dependencies-images-<version>.tar.gz - /path/to/contrail-insights-openstack-images-<version>.tar.gz - /path/to/contrail-insights-network_device-images-<version>.tar.gz appformix_dns_version: 2 openstack_platform_enabled: true appformix_docker_container_discovery: true openstack_deployment_mode: containerized_openstack
3.2. Contrail Insights 6보다 일찍 버전을 설치하는 경우
group_vars/all
appformix_license: path/to/<contrail-insights-license-file>.sig
클러스터에서 네트워크 디바이스 모니터링을 활성화하려면파일에 다음을
group_vars/all
포함하십시오.# For enabling prerequisites for package installation. appformix_install_snmp_dependencies: true appformix_install_jti_dependencies: true # For running the appformix-network-device-adapter network_device_discovery_enabled: true appformix_plugins: '{{ appformix_network_device_factory_plugins }}' # After 3.1, SNMP Traps can be enabled also so appformix_plugins can be specified as below: # appformix_plugins: '{{ appformix_network_device_factory_plugins }} + {{ appformix_snmp_trap_factory_plugins }}'
OpenStack 컨트롤러 노드 ()에서 플레이북이 Contrail Insights 플랫폼 노드로 파일을
openrc
/etc/contrail/openstackrc
소스화합니다. 파일에는 다음과 같이 표시됩니다.$ cat openrc export OS_USERNAME=admin export OS_PASSWORD=<admin-password> export OS_AUTH_URL=http://172.16.80.2:5000/v2.0/ export OS_NO_CACHE=1 export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=admin export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 $ source openrc
생성된 인벤토리 파일로 Ansible을 실행합니다.
ansible-playbook -i inventory appformix_openstack.yml
플레이북은 오류 없이 실행될 수 있습니다.
Log in to the Contrail Insights Dashboard:
http://<contrail-insights-platform-node-ip>:9000
Auth Service 대화 상자에는 두 가지 옵션이 제공됩니다.
OpenStack OpenStack 자격 증명으로 로그인합니다.
AppFormix Contrail Insights 플랫폼 노드에서 사용할 수 있는 자격 증명을 Contrail Insights
/opt/appformix/etc/appformix_token.rst
로그인합니다.
옵션 구성
클러스터에 Contrail Insights 인증된 플러그인을 설치하려면 파일에 다음과 같은 변수를 group_vars/all
포함합니다.
appformix_plugins: <list of certified plugins to be installed> appformix_openstack_log_plugins: <list of OpenStack log plugins to be installed>
예제:
appformix_plugins: - { plugin_info: 'certified_plugins/cassandra_node_usage.json' } - { plugin_info: 'certified_plugins/contrail_vrouter.json' } - { plugin_info: 'certified_plugins/zookeeper_usage.json' } - { plugin_info: 'certified_plugins/heavy_hitters.json' } appformix_openstack_log_plugins: - { plugin_info: 'certified_plugins/cinder_api_logparser.json', log_file_path: '/var/log/cinder/cinder-api.log' } - { plugin_info: 'certified_plugins/glance_logparser.json', log_file_path: '/var/log/glance/glance-api.log' } - { plugin_info: 'certified_plugins/keystone_logparser.json', log_file_path: '/var/log/apache2/keystone_access.log,/var/log/httpd/keystone_wsgi_admin_access.log,/var/log/keystone/keystone.log' }
설치할 수 Contrail Insights 인증 받은 플러그인의 목록은 파일에서 시작하는 항목을 plugin_info
찾아야 roles/appformix_defaults/defaults/main.yml
합니다.
OpenStack 로그 파서 플러그인은 각 OpenStack 서비스의 API 로그 파일을 파서 분석하여 API 통화 및 응답 상태 코드에 대한 메트릭을 수집합니다. 위의 예제와 같이 이러한 플러그인을 설치하려면 해당 플러그인을 변수에 appformix_openstack_log_plugins
group_vars/all
추가하십시오. 이 목록의 각 플러그인 엔트리에는 지정해야 하는 매개 log_file_path
변수가 필요합니다. 이 매개 변수는 OpenStack Controller 노드의 서비스 API 로그 파일에 대한 전체 경로로 설정해야 합니다. 여러 콤마 분리된 경로를 지정할 수 있습니다.
에 지정될 올바른 로그 파일을 식별하려면 클라이언트 IP 주소, REST 호출 유형 및 응답 상태 코드를 포함하는 다음과 같은 항목을 log_file_path
찾아야 합니다.
2019-04-02 06:50:13.103 3465 INFO nova.osapi_compute.wsgi.server [req-d07e953a-6921-4224-a056-afb6ff69adde 953ea56a96b944b3b170a299af9e87bd 10c9e8809feb4bd1b55955d9c2ed5aba - - -] 172.18.0.6 "GET /v2/10c9e8809feb4bd1b55955d9c2ed5aba/os-hypervisors/detail HTTP/1.1" status: 200 len: 1427 time: 0.0208740 2019-04-02 06:50:13.183 3465 INFO nova.osapi_compute.wsgi.server [req-34b2f686-9eb5-4112-b3fc-e0b37798a302 953ea56a96b944b3b170a299af9e87bd 10c9e8809feb4bd1b55955d9c2ed5aba - - -] 172.18.0.6 "GET /v2/10c9e8809feb4bd1b55955d9c2ed5aba/servers/detail?all_tenants=1&status=SHELVED_OFFLOADED HTTP/1.1" status: 200 len: 211 time: 0.0754580
이들 파일의 기본 위치는 의 변수에 appformix_openstack_log_factory_plugins
나열되어 roles/appformix_defaults/defaults/main.yml
있습니다.
컨테이너화된 OpenStack 환경에서는 OpenStack 서비스를 실행하는 컨테이너 내부에서 로그 파일이 생성됩니다. 그러나 이 컨트롤러는 openStack 컨트롤러 호스트에서 Contrail Insights 플러그인을 읽을 수 있도록 제공해야 합니다. 지정된 경로는 OpenStack Controller 호스트의 파일 위치 log_file_path
입니다.
버전 3.Contrail Insights 경우, 모든 OpenStack 로그 파서 플러그인을 변수에 지정해야 appformix_openstack_log_plugins
합니다. 이전 버전에서 3.0으로 업그레이드할 때 에서 정의된 모든 OpenStack 로그 파서 플러그인을 으로 이동해야 appformix_plugins
appformix_openstack_log_plugins
합니다. 또한, Contrail Insights 3.0에서 위에서 설명한 대로 이 목록의 모든 엔트리를 값으로 log_file_path
지정해야 합니다.
노드를 다른 노드에서 Contrail Insights
다음에서 노드를 Contrail Insights.
인벤토리 파일을 편집하고 제거하려는 각 노드에
appformix_state=absent
Contrail Insights.# Example naming schemes are as below: # hostname ansible_ssh_user='username' ansible_sudo_pass='password' # List all Compute Nodes [compute] 172.16.70.5 appformix_state=absent 172.16.70.17
편집된 인벤토리 파일로 Ansible을 실행합니다.
ansible-playbook -i inventory appformix_openstack.yml
그러면 노드와 모든 리소스가 Contrail Insights.