3.10. 원격 분석 서비스를 사용한 용량 미터링
OpenStack 원격 분석 서비스에서는 청구, 차지백 및 표시 목적으로 사용할 수 있는 사용량 지표를 제공합니다. 또한 타사 애플리케이션에서 이러한 지표 데이터를 사용하여 클러스터에서 용량을 계획할 수 있으며 OpenStack Heat을 사용하여 가상 인스턴스 자동 확장에도 활용할 수 있습니다. 자세한 내용은 인스턴스의 자동 확장을 참조하십시오.
모니터링 및 알람을 위해 Ceilometer와 Gnocchi의 조합을 사용할 수 있습니다. 이는 소규모 클러스터와 알려진 제한사항에서 지원됩니다. 실시간 모니터링을 위해 Red Hat OpenStack Platform에는 지표 데이터를 제공하는 에이전트가 포함되어 있으며 별도의 모니터링 인프라 및 애플리케이션에서 사용할 수 있습니다. 자세한 내용은 Monitoring Tools Configuration을 참조하십시오.
3.10.1. 측정값 보기 링크 복사링크가 클립보드에 복사되었습니다!
특정 리소스에 대한 모든 측정값을 나열합니다.
# openstack metric measures show --resource-id UUID METER_NAME
타임스탬프 범위 내에서 특정 리소스에 대한 측정값만 나열합니다.
# openstack metric measures show --aggregation mean --start <START_TIME> --stop <STOP_TIME> --resource-id UUID METER_NAME
타임스탬프 변수 <startT_TIME> 및 <STOP_TIME>은 iso-dateThh:mm:ss 형식을 사용합니다.
3.10.2. 새 측정값 생성 링크 복사링크가 클립보드에 복사되었습니다!
측정값을 사용하여 원격 분석 서비스로 데이터를 전송할 수 있으며 이전에 정의한 미터에 해당하지 않아도 됩니다. 예를 들면 다음과 같습니다.
# openstack metrics measures add -m 2015-01-12T17:56:23@42 --resource-id UUID METER_NAME
3.10.3. 예제: 클라우드 사용량 측정값 보기 링크 복사링크가 클립보드에 복사되었습니다!
이 예에서는 각 프로젝트의 모든 인스턴스의 평균 메모리 사용량을 보여줍니다.
# openstack metric measures aggregation --resource-type instance --groupby project_id -m memory
3.10.4. 기존 알람 보기 링크 복사링크가 클립보드에 복사되었습니다!
기존 원격 분석 알람을 나열하려면 aodh 명령을 사용합니다. 예를 들면 다음과 같습니다.
# aodh alarm list
+--------------------------------------+--------------------------------------------+----------------------------+-------------------+----------+---------+
| alarm_id | type | name | state | severity | enabled |
+--------------------------------------+--------------------------------------------+----------------------------+-------------------+----------+---------+
| 922f899c-27c8-4c7d-a2cf-107be51ca90a | gnocchi_aggregation_by_resources_threshold | iops-monitor-read-requests | insufficient data | low | True |
+--------------------------------------+--------------------------------------------+----------------------------+-------------------+----------+---------+
리소스에 할당된 미터를 나열하려면 리소스의 UUID (인스턴스, 이미지 또는 볼륨)를 지정합니다. 예를 들면 다음과 같습니다.
# gnocchi resource show 5e3fcbe2-7aab-475d-b42c-a440aa42e5ad
3.10.5. 알람 만들기 링크 복사링크가 클립보드에 복사되었습니다!
aodh 를 사용하여 임계값에 도달하면 활성화되는 알람을 만들 수 있습니다. 이 예에서 알람은 개별 인스턴스의 평균 CPU 사용률이 80%를 초과할 때 로그 항목을 활성화하고 추가합니다. 쿼리는 모니터링 목적으로 특정 인스턴스의 ID(94619081-abf5-4f1f-81c7-9cedaa872403)를격리하는 데 사용됩니다.
# aodh alarm create --type gnocchi_aggregation_by_resources_threshold --name cpu_usage_high --metric cpu_util --threshold 80 --aggregation-method sum --resource-type instance --query '{"=": {"id": "94619081-abf5-4f1f-81c7-9cedaa872403"}}' --alarm-action 'log://'
+---------------------------+-------------------------------------------------------+
| Field | Value |
+---------------------------+-------------------------------------------------------+
| aggregation_method | sum |
| alarm_actions | [u'log://'] |
| alarm_id | b794adc7-ed4f-4edb-ace4-88cbe4674a94 |
| comparison_operator | eq |
| description | gnocchi_aggregation_by_resources_threshold alarm rule |
| enabled | True |
| evaluation_periods | 1 |
| granularity | 60 |
| insufficient_data_actions | [] |
| metric | cpu_util |
| name | cpu_usage_high |
| ok_actions | [] |
| project_id | 13c52c41e0e543d9841a3e761f981c20 |
| query | {"=": {"id": "94619081-abf5-4f1f-81c7-9cedaa872403"}} |
| repeat_actions | False |
| resource_type | instance |
| severity | low |
| state | insufficient data |
| state_timestamp | 2016-12-09T05:18:53.326000 |
| threshold | 80.0 |
| time_constraints | [] |
| timestamp | 2016-12-09T05:18:53.326000 |
| type | gnocchi_aggregation_by_resources_threshold |
| user_id | 32d3f2c9a234423cb52fb69d3741dbbc |
+---------------------------+-------------------------------------------------------+
기존 임계값 알람을 편집하려면 aodh alarm update 명령을 사용합니다. 예를 들어 알람 임계값을 75%로 늘리려면 다음을 수행합니다.
# aodh alarm update --name cpu_usage_high --threshold 75
3.10.6. 알람 비활성화 또는 삭제 링크 복사링크가 클립보드에 복사되었습니다!
알람을 비활성화하려면 다음을 수행합니다.
# aodh alarm update --name cpu_usage_high --enabled=false
알람을 삭제하려면 다음을 수행합니다.
# aodh alarm delete --name cpu_usage_high
3.10.7. 예제: 인스턴스의 디스크 활동 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 Aodh 알람을 사용하여 특정 프로젝트에 포함된 모든 인스턴스의 누적 디스크 활동을 모니터링하는 방법을 보여줍니다.
1. 기존 프로젝트를 검토하고 모니터링해야 하는 프로젝트의 적절한 UUID를 선택합니다. 이 예에서는 admin 프로젝트를 사용합니다.
$ openstack project list
+----------------------------------+----------+
| ID | Name |
+----------------------------------+----------+
| 745d33000ac74d30a77539f8920555e7 | admin |
| 983739bb834a42ddb48124a38def8538 | services |
| be9e767afd4c4b7ead1417c6dfedde2b | demo |
+----------------------------------+----------+
2. 프로젝트의 UUID를 사용하여 admin 프로젝트에서 인스턴스에서 생성한 모든 읽기 요청의 sum() 을 분석하는 알람을 생성합니다( --query 매개 변수로 쿼리를 좀 더 제한할 수 있음).
# aodh alarm create --type gnocchi_aggregation_by_resources_threshold --name iops-monitor-read-requests --metric disk.read.requests.rate --threshold 42000 --aggregation-method sum --resource-type instance --query '{"=": {"project_id": "745d33000ac74d30a77539f8920555e7"}}'
+---------------------------+-----------------------------------------------------------+
| Field | Value |
+---------------------------+-----------------------------------------------------------+
| aggregation_method | sum |
| alarm_actions | [] |
| alarm_id | 192aba27-d823-4ede-a404-7f6b3cc12469 |
| comparison_operator | eq |
| description | gnocchi_aggregation_by_resources_threshold alarm rule |
| enabled | True |
| evaluation_periods | 1 |
| granularity | 60 |
| insufficient_data_actions | [] |
| metric | disk.read.requests.rate |
| name | iops-monitor-read-requests |
| ok_actions | [] |
| project_id | 745d33000ac74d30a77539f8920555e7 |
| query | {"=": {"project_id": "745d33000ac74d30a77539f8920555e7"}} |
| repeat_actions | False |
| resource_type | instance |
| severity | low |
| state | insufficient data |
| state_timestamp | 2016-11-08T23:41:22.919000 |
| threshold | 42000.0 |
| time_constraints | [] |
| timestamp | 2016-11-08T23:41:22.919000 |
| type | gnocchi_aggregation_by_resources_threshold |
| user_id | 8c4aea738d774967b4ef388eb41fef5e |
+---------------------------+-----------------------------------------------------------+
3.10.8. 예제: CPU 사용량 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
인스턴스의 성능을 모니터링하려면 먼저 gnocchi 데이터베이스를 검사하여 메모리 또는 CPU 사용량과 같은 모니터링할 수 있는 지표를 식별합니다. 예를 들어, gnocchi 리소스를 인스턴스에 표시하여 모니터링할 수 있는 지표를 확인합니다.
특정 인스턴스 UUID에 사용할 수 있는 지표를 쿼리합니다.
$ gnocchi resource show --type instance d71cdf9a-51dc-4bba-8170-9cd95edd3f66 --------------------------------------------------------------------------------------------+ | Field | Value | --------------------------------------------------------------------------------------------+ | created_by_project_id | 44adccdc32614688ae765ed4e484f389 | | created_by_user_id | c24fa60e46d14f8d847fca90531b43db | | creator | c24fa60e46d14f8d847fca90531b43db:44adccdc32614688ae765ed4e484f389 | | display_name | test-instance | | ended_at | None | | flavor_id | 14c7c918-df24-481c-b498-0d3ec57d2e51 | | flavor_name | m1.tiny | | host | overcloud-compute-0 | | id | d71cdf9a-51dc-4bba-8170-9cd95edd3f66 | | image_ref | e75dff7b-3408-45c2-9a02-61fbfbf054d7 | | metrics | compute.instance.booting.time: c739a70d-2d1e-45c1-8c1b-4d28ff2403ac | | | cpu.delta: 700ceb7c-4cff-4d92-be2f-6526321548d6 | | | cpu: 716d6128-1ea6-430d-aa9c-ceaff2a6bf32 | | | cpu_l3_cache: 3410955e-c724-48a5-ab77-c3050b8cbe6e | | | cpu_util: b148c392-37d6-4c8f-8609-e15fc15a4728 | | | disk.allocation: 9dd464a3-acf8-40fe-bd7e-3cb5fb12d7cc | | | disk.capacity: c183d0da-e5eb-4223-a42e-855675dd1ec6 | | | disk.ephemeral.size: 15d1d828-fbb4-4448-b0f2-2392dcfed5b6 | | | disk.iops: b8009e70-daee-403f-94ed-73853359a087 | | | disk.latency: 1c648176-18a6-4198-ac7f-33ee628b82a9 | | | disk.read.bytes.rate: eb35828f-312f-41ce-b0bc-cb6505e14ab7 | | | disk.read.bytes: de463be7-769b-433d-9f22-f3265e146ec8 | | | disk.read.requests.rate: 588ca440-bd73-4fa9-a00c-8af67262f4fd | | | disk.read.requests: 53e5d599-6cad-47de-b814-5cb23e8aaf24 | | | disk.root.size: cee9d8b1-181e-4974-9427-aa7adb3b96d9 | | | disk.usage: 4d724c99-7947-4c6d-9816-abbbc166f6f3 | | | disk.write.bytes.rate: 45b8da6e-0c89-4a6c-9cce-c95d49d9cc8b | | | disk.write.bytes: c7734f1b-b43a-48ee-8fe4-8a31b641b565 | | | disk.write.requests.rate: 96ba2f22-8dd6-4b89-b313-1e0882c4d0d6 | | | disk.write.requests: 553b7254-be2d-481b-9d31-b04c93dbb168 | | | memory.bandwidth.local: 187f29d4-7c70-4ae2-86d1-191d11490aad | | | memory.bandwidth.total: eb09a4fc-c202-4bc3-8c94-aa2076df7e39 | | | memory.resident: 97cfb849-2316-45a6-9545-21b1d48b0052 | | | memory.swap.in: f0378d8f-6927-4b76-8d34-a5931799a301 | | | memory.swap.out: c5fba193-1a1b-44c8-82e3-9fdc9ef21f69 | | | memory.usage: 7958d06d-7894-4ca1-8c7e-72ba572c1260 | | | memory: a35c7eab-f714-4582-aa6f-48c92d4b79cd | | | perf.cache.misses: da69636d-d210-4b7b-bea5-18d4959e95c1 | | | perf.cache.references: e1955a37-d7e4-4b12-8a2a-51de4ec59efd | | | perf.cpu.cycles: 5d325d44-b297-407a-b7db-cc9105549193 | | | perf.instructions: 973d6c6b-bbeb-4a13-96c2-390a63596bfc | | | vcpus: 646b53d0-0168-4851-b297-05d96cc03ab2 | | original_resource_id | d71cdf9a-51dc-4bba-8170-9cd95edd3f66 | | project_id | 3cee262b907b4040b26b678d7180566b | | revision_end | None | | revision_start | 2017-11-16T04:00:27.081865+00:00 | | server_group | None | | started_at | 2017-11-16T01:09:20.668344+00:00 | | type | instance | | user_id | 1dbf5787b2ee46cf9fa6a1dfea9c9996 | --------------------------------------------------------------------------------------------+이 결과
지표값은 Aodh 알람(예:cpu_util)을 사용하여 모니터링할 수 있는 구성 요소를 나열합니다.CPU 사용량을 모니터링하려면
cpu_util지표가 필요합니다. 이 메트릭에 대한 자세한 내용을 보려면 다음을 수행합니다.$ gnocchi metric show --resource d71cdf9a-51dc-4bba-8170-9cd95edd3f66 cpu_util -------------------------------------------------------------------------------------------------------+ | Field | Value | -------------------------------------------------------------------------------------------------------+ | archive_policy/aggregation_methods | std, count, min, max, sum, mean | | archive_policy/back_window | 0 | | archive_policy/definition | - points: 8640, granularity: 0:05:00, timespan: 30 days, 0:00:00 | | archive_policy/name | low | | created_by_project_id | 44adccdc32614688ae765ed4e484f389 | | created_by_user_id | c24fa60e46d14f8d847fca90531b43db | | creator | c24fa60e46d14f8d847fca90531b43db:44adccdc32614688ae765ed4e484f389 | | id | b148c392-37d6-4c8f-8609-e15fc15a4728 | | name | cpu_util | | resource/created_by_project_id | 44adccdc32614688ae765ed4e484f389 | | resource/created_by_user_id | c24fa60e46d14f8d847fca90531b43db | | resource/creator | c24fa60e46d14f8d847fca90531b43db:44adccdc32614688ae765ed4e484f389 | | resource/ended_at | None | | resource/id | d71cdf9a-51dc-4bba-8170-9cd95edd3f66 | | resource/original_resource_id | d71cdf9a-51dc-4bba-8170-9cd95edd3f66 | | resource/project_id | 3cee262b907b4040b26b678d7180566b | | resource/revision_end | None | | resource/revision_start | 2017-11-17T00:05:27.516421+00:00 | | resource/started_at | 2017-11-16T01:09:20.668344+00:00 | | resource/type | instance | | resource/user_id | 1dbf5787b2ee46cf9fa6a1dfea9c9996 | | unit | None | -------------------------------------------------------------------------------------------------------+-
archive_policy-std, count, min, max, sum, mean값을 계산하기 위해 집계 간격을 정의합니다.
-
Aodh를 사용하여
cpu_util을 쿼리하는 모니터링 작업을 생성합니다. 이 작업은 지정한 설정에 따라 이벤트를 트리거합니다. 예를 들어 인스턴스의 CPU가 연장된 기간 동안 80%를 초과할 때 로그 항목을 늘리려면 다음을 수행합니다.aodh alarm create \ --project-id 3cee262b907b4040b26b678d7180566b \ --name high-cpu \ --type gnocchi_resources_threshold \ --description 'High CPU usage' \ --metric cpu_util \ --threshold 80.0 \ --comparison-operator ge \ --aggregation-method mean \ --granularity 300 \ --evaluation-periods 1 \ --alarm-action 'log://' \ --ok-action 'log://' \ --resource-type instance \ --resource-id d71cdf9a-51dc-4bba-8170-9cd95edd3f66 +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | aggregation_method | mean | | alarm_actions | [u'log://'] | | alarm_id | 1625015c-49b8-4e3f-9427-3c312a8615dd | | comparison_operator | ge | | description | High CPU usage | | enabled | True | | evaluation_periods | 1 | | granularity | 300 | | insufficient_data_actions | [] | | metric | cpu_util | | name | high-cpu | | ok_actions | [u'log://'] | | project_id | 3cee262b907b4040b26b678d7180566b | | repeat_actions | False | | resource_id | d71cdf9a-51dc-4bba-8170-9cd95edd3f66 | | resource_type | instance | | severity | low | | state | insufficient data | | state_reason | Not evaluated yet | | state_timestamp | 2017-11-16T05:20:48.891365 | | threshold | 80.0 | | time_constraints | [] | | timestamp | 2017-11-16T05:20:48.891365 | | type | gnocchi_resources_threshold | | user_id | 1dbf5787b2ee46cf9fa6a1dfea9c9996 | +---------------------------+--------------------------------------+-
comparison-operator-ge연산자는 CPU 사용량이 80%보다 크거나 같은 경우 알람이 트리거되도록 정의합니다. -
세분성 - 측정값에는 연결된 보관 정책이 있습니다. 정책에는 다양한 단위(예: 1시간 + 1시간 동안 5분 집계)가 있을 수 있습니다.granularity값은 보관 정책에 설명된 기간과 일치해야 합니다. -
evaluation-periods- 알람이 트리거되기 전에 통과해야 하는세분성 기간 수입니다. 예를 들어 이 값을2로 설정하면 알람이 트리거되기 전에 두 폴링 기간 동안 CPU 사용량이 80%를 초과해야 합니다. [U'log://']- 이 값은 이벤트를 Aodh 로그 파일에 기록합니다.참고알람이 트리거될 때( alarm
_actions) 및 웹 후크 URL과 같은 일반 상태(ok_actions)로 반환되는 경우 실행되도록 다양한 작업을 정의할 수 있습니다.
-
알람이 트리거되었는지 확인하려면 알람의 기록을 쿼리합니다.
aodh alarm-history show 1625015c-49b8-4e3f-9427-3c312a8615dd --fit-width +----------------------------+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+ | timestamp | type | detail | event_id | +----------------------------+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+ | 2017-11-16T05:21:47.850094 | state transition | {"transition_reason": "Transition to ok due to 1 samples inside threshold, most recent: 0.0366665763", "state": "ok"} | 3b51f09d-ded1-4807-b6bb-65fdc87669e4 | +----------------------------+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+
3.10.9. 리소스 유형 관리 링크 복사링크가 클립보드에 복사되었습니다!
이전에 하드 코딩되었던 원격 분석 리소스 유형은 이제 gnocchi 클라이언트에서 관리할 수 있습니다. gnocchi 클라이언트를 사용하여 리소스 유형을 생성, 보기 및 삭제할 수 있으며 gnocchi API를 사용하여 속성을 업데이트하거나 삭제할 수 있습니다.
1. 새 리소스 유형을 생성합니다.
$ gnocchi resource-type create testResource01 -a bla:string:True:min_length=123
+----------------+------------------------------------------------------------+
| Field | Value |
+----------------+------------------------------------------------------------+
| attributes/bla | max_length=255, min_length=123, required=True, type=string |
| name | testResource01 |
| state | active |
+----------------+------------------------------------------------------------+
2. resource-type 의 구성을 검토합니다.
$ gnocchi resource-type show testResource01
+----------------+------------------------------------------------------------+
| Field | Value |
+----------------+------------------------------------------------------------+
| attributes/bla | max_length=255, min_length=123, required=True, type=string |
| name | testResource01 |
| state | active |
+----------------+------------------------------------------------------------+
3. resource-type 을 삭제합니다.
$ gnocchi resource-type delete testResource01
리소스를 사용하는 경우 리소스 유형을 삭제할 수 없습니다.