自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Nova 中的系統(tǒng)狀態(tài)分析

云計(jì)算
本文的目的不是指導(dǎo)讀者寫一個(gè)新的類似的工具,而是分析為了配合這些工具,可以使用到的 OpenStack自身能力。當(dāng)然,系統(tǒng)的監(jiān)控運(yùn)維是一個(gè)大的話題,我能力和視野有限,噴不了那么多(沒有真正用過的東西,我也不愿意噴),像主機(jī)的 CPU監(jiān)控、進(jìn)程監(jiān)控、網(wǎng)絡(luò)流量監(jiān)控、存儲(chǔ)監(jiān)控這些,也不在本文的范疇內(nèi)。

寫此文的目的

轉(zhuǎn)眼間OpenStack已經(jīng)發(fā)展到了K,馬上L版本開發(fā)周期也要開始了。記得我最早接觸的是OpenStack的E版本,時(shí)間過去了2年多,OpenStack社區(qū)仍然如火如荼,OpenStack玩家,特別是重量級玩家越來越多,通過每次OpenStack峰會(huì)的報(bào)道、社區(qū)的user survey以及圈里的分享,我們發(fā)現(xiàn)OpenStack的生產(chǎn)環(huán)境部署也越來越多,但是相信很多企業(yè),很多人,在使用OpenStack的過程中仍然很痛苦。安裝部署困難,系統(tǒng)復(fù)雜性,過于靈活的架構(gòu),眼花繚亂的配置項(xiàng),特別是系統(tǒng)搭建好以后,運(yùn)行過程中各種各樣的錯(cuò)誤等,足以讓一個(gè)充滿熱情的人望而卻步。關(guān)于安裝部署,目前已有有很多開源工具在做,像TripleO、Fuel、RDO以及一些像Ansible、Puppet、Chef等更native 的工具,已經(jīng)極大程度的降低了安裝OpenStack的門檻,我就不再過多闡述。而關(guān)于運(yùn)行期間如何排錯(cuò),如何掌握系統(tǒng)的運(yùn)行狀態(tài),在不了解系統(tǒng)實(shí)現(xiàn)原理的情況下,也會(huì)令人一籌莫展。當(dāng)然,已經(jīng)有很多發(fā)行版中包含了這部分功能。

[[134155]]

本文的目的不是指導(dǎo)讀者寫一個(gè)新的類似的工具,而是分析為了配合這些工具,可以使用到的 OpenStack自身能力。當(dāng)然,系統(tǒng)的監(jiān)控運(yùn)維是一個(gè)大的話題,我能力和視野有限,噴不了那么多(沒有真正用過的東西,我也不愿意噴),像主機(jī)的 CPU監(jiān)控、進(jìn)程監(jiān)控、網(wǎng)絡(luò)流量監(jiān)控、存儲(chǔ)監(jiān)控這些,也不在本文的范疇內(nèi)。

言歸正傳,說說本文主要內(nèi)容。OpenStack有很多模塊,但其中最為核心的當(dāng)然是Nova,所以本文就以Nova為例,來看一下如何通過Nova提供的能力來獲取系統(tǒng)運(yùn)行期間的狀態(tài)。我把這些狀態(tài)分為兩類,一類是系統(tǒng)整體情況一覽(系統(tǒng)狀態(tài)),而是虛擬機(jī)相關(guān)的狀態(tài)信息(虛擬機(jī)狀態(tài))。當(dāng)然,以我一貫的風(fēng)格,你會(huì)看到更多的OpenStack實(shí)現(xiàn)原理。

Nova版本:Kilo

系統(tǒng)狀態(tài)

Nova提供這么幾個(gè)資源狀態(tài)的查詢。

Service

Nova中的service有兩類,一類是所謂的control service,一類就是compute service。要想獲取Nova的service詳細(xì)信息,必須要啟用os-extended-services擴(kuò)展。

service的詳細(xì)信息主要包括如下幾項(xiàng):

binary, host, zone, status, state

其中:

  • binary,可以理解為service的名稱,類似于nova-compute。
  • host是service所在的主機(jī)名稱。

zone是service所屬的AZ,其實(shí)就是service所在的主機(jī)所屬的aggregate,只是aggregate的概念不對外呈現(xiàn),所以用戶看到的是AZ。其實(shí),在Nova內(nèi)部,AZ是AG的metadata而已。

zone的確定,涉及到兩個(gè)配置項(xiàng),對于非計(jì)算節(jié)點(diǎn),zone的名稱依賴于配置項(xiàng)internalserviceavailability_zone(默認(rèn)是inte rnal)。

對于計(jì)算節(jié)點(diǎn),如果不屬于任何AG,或者所屬的AG沒有AZ的metadata信息,默認(rèn)的zone依賴于配置項(xiàng)defaultavailabilityzone(默認(rèn)是nova)。

status是服務(wù)disable屬性的體現(xiàn),該屬性可以直接通過API修改;

state是服務(wù)真實(shí)的狀態(tài),是通過servicegroup api獲取。每個(gè)服務(wù)在啟動(dòng)時(shí)會(huì)加入servicegroup,以db后端為例,會(huì)在服務(wù)中啟動(dòng)定時(shí)器,更新service表中的report_count的值,同時(shí)也會(huì)刷新更新時(shí)間,后續(xù)會(huì)根據(jù)這個(gè)更新時(shí)間確定服務(wù)的死活;

當(dāng)然,查詢service信息也支持過濾條件,比如:

查詢某個(gè)host相關(guān)的service;

按binary名稱查詢service。

知道了service的信息后,就至少能夠獲取到Nova各個(gè)服務(wù)的運(yùn)行狀態(tài),從而判斷系統(tǒng)是否健康。

Host

其實(shí)Nova中沒有host這個(gè)獨(dú)立的資源(數(shù)據(jù)庫對象),但是Nova卻有針對host的API操作,其實(shí),在內(nèi)部實(shí)現(xiàn)中,就是通過前面的service信息,間接組裝返回host信息。

即:你可以獲取系統(tǒng)中所有的主機(jī)信息,其中包括:主機(jī)名稱、主機(jī)上的服務(wù)、主機(jī)所屬的AZ。

Hypervisor

hypervisor的概念在OpenStack中其實(shí)不好理解。在使用KVM的環(huán)境中,hypervisor通常是就是只nova- compute進(jìn)程所在的主機(jī);而在類VMware環(huán)境中(之所以說類VMware,是因?yàn)槿A為也有一款虛擬化產(chǎn)品FusionCompute也是類似的架構(gòu)),hypervisor是指nova-compute進(jìn)程下的一個(gè)’node’,對應(yīng)于一個(gè)vCenter集群。換句話說,你可以把一個(gè) hypervisor看成一個(gè)nova-compute下的一個(gè)node,KVM的情況是一個(gè)特例而已。一個(gè)hypervisor,是創(chuàng)建虛擬機(jī)能夠調(diào)度到的最小單元。

Nova中對于hypervisor的查詢情況支持較為豐富。

  1. 查詢所有的hypervisor概要信息。包含一個(gè)id和一個(gè)hypervisor host name,如果啟用了os-hypervisor-status extension,還會(huì)返回hypervisor所屬的nova-compute服務(wù)狀態(tài)。
  2. 查詢所有的hypervisor詳細(xì)信息。除了包含上述信息外,還包含每個(gè)hypervisor的資源使用信息。如果啟用os- extended-hypervisors extension,還會(huì)包含hypervisor所屬的nova-compute所在主機(jī)的IP地址。
  3. 查詢所有hypervisor所使用的系統(tǒng)資源總量。即,系統(tǒng)計(jì)算資源使用量的一個(gè)總覽。
  4. 模糊查詢某些hypervisor的概要信息。
  5. 查詢單個(gè)hypervisor資源使用的詳細(xì)信息。
  6. 模糊查詢某些hypervisor上的虛擬機(jī)信息,包含虛擬機(jī)的ID和名稱。

可見,Nova中的hypervisor給管理員提供了較為豐富系統(tǒng)計(jì)算資源使用情況的查詢接口,通過對hypervisor使用情況的了解,管理員可以更有效地進(jìn)行系統(tǒng)監(jiān)控,并且為系統(tǒng)維護(hù)(擴(kuò)容、減容、動(dòng)態(tài)資源調(diào)整等)提供依據(jù)。

#p#

租戶視角的系統(tǒng)狀態(tài)

上面的幾個(gè)資源,默認(rèn)都是管理員有權(quán)限查詢,普通租戶是看不到的。那么作為租戶,能夠?qū)ο到y(tǒng)使用狀態(tài)有一個(gè)什么樣的了解呢?

租戶的資源配額

租戶可以查詢自己的資源配額限制和使用情況,管理員(admin)可以查詢普通租戶的資源配額使用情況(os-used-limits-for-admin extension)。參見這里, 這里和這里。

如下是租戶查到的自己的資源配額限制和使用情況(片段):

  1.  
  2. "limits": { 
  3.  
  4. "absolute": { 
  5.  
  6. "maxImageMeta"128
  7.  
  8. "maxPersonality"5
  9.  
  10. "maxPersonalitySize"10240
  11.  
  12. "maxSecurityGroupRules"20
  13.  
  14. "maxSecurityGroups"10
  15.  
  16. "maxServerMeta"128
  17.  
  18. "maxTotalCores"20
  19.  
  20. "maxTotalFloatingIps"10
  21.  
  22. "maxTotalInstances"10
  23.  
  24. "maxTotalKeypairs"100
  25.  
  26. "maxTotalRAMSize"51200
  27.  
  28. "maxServerGroups"10
  29.  
  30. "maxServerGroupMembers"10
  31.  
  32. "totalCoresUsed"0
  33.  
  34. "totalInstancesUsed"0
  35.  
  36. "totalRAMUsed"0
  37.  
  38. "totalSecurityGroupsUsed"0
  39.  
  40. "totalFloatingIpsUsed"0
  41.  
  42. "totalServerGroupsUsed"
  43.  
  44. ... 

租戶的資源使用量

管理員可以查詢所有租戶對計(jì)算資源的使用量,也可以查詢某個(gè)租戶的計(jì)算資源使用量(包括每個(gè)虛擬機(jī)計(jì)算資源使用信息),參見這里。

示例1,管理員查詢租戶對計(jì)算資源的使用量:

  1.  
  2. "tenant_usages": [ 
  3.  
  4.  
  5. "start""2012-10-08T21:10:44.587336"
  6.  
  7. "stop""2012-10-08T22:10:44.587336"
  8.  
  9. "tenant_id""openstack"
  10.  
  11. "total_hours"1.0
  12.  
  13. "total_local_gb_usage"1.0
  14.  
  15. "total_memory_mb_usage"512.0
  16.  
  17. "total_vcpus_usage"1.0 
  18.  
  19.  
  20.  

示例2,查詢某個(gè)租戶的計(jì)算資源使用量:

  1.  
  2. "tenant_usage": { 
  3.  
  4. "server_usages": [ 
  5.  
  6.  
  7. "ended_at"null
  8.  
  9. "flavor""m1.tiny"
  10.  
  11. "hours"1.0
  12.  
  13. "instance_id""1f1deceb-17b5-4c04-84c7-e0d4499c8fe0"
  14.  
  15. "local_gb"1
  16.  
  17. "memory_mb"512
  18.  
  19. "name""new-server-test"
  20.  
  21. "started_at""2012-10-08T20:10:44.541277"
  22.  
  23. "state""active"
  24.  
  25. "tenant_id""openstack"
  26.  
  27. "uptime"3600
  28.  
  29. "vcpus"1 
  30.  
  31.  
  32. ], 
  33.  
  34. "start""2012-10-08T20:10:44.587336"
  35.  
  36. "stop""2012-10-08T21:10:44.587336"
  37.  
  38. "tenant_id""openstack"
  39.  
  40. "total_hours"1.0
  41.  
  42. "total_local_gb_usage"1.0
  43.  
  44. "total_memory_mb_usage"512.0
  45.  
  46. "total_vcpus_usage"1.0 
  47.  
  48.  

#p#

虛擬機(jī)狀態(tài)

說到底,作為IaaS,OpenStack玩的還是虛擬機(jī),因?yàn)楦鞣N資源(存儲(chǔ)、網(wǎng)絡(luò))都是為了更好的使用虛擬機(jī)服務(wù)。所以對虛擬機(jī)狀態(tài)的掌握就顯得格外重要。

虛擬機(jī)操作事件通知

用戶對虛擬機(jī)的每個(gè)操作(開始和結(jié)束),都會(huì)通過消息隊(duì)列向外部發(fā)送通知,外部系統(tǒng)可以通過接收通知,了解系統(tǒng)的運(yùn)行過程。使用通知的另外一個(gè)好處,就是可以與Nova解耦,作為外部系統(tǒng)的數(shù)據(jù)源,實(shí)現(xiàn)系統(tǒng)的監(jiān)控分析。Ceilometer、StackTach和Monasca都用到了Nova的通知作為自己的數(shù)據(jù)源。

與此同時(shí),虛擬機(jī)state或task_state發(fā)生變化時(shí),也會(huì)向外部發(fā)送通知。前提是配置項(xiàng)notify_on_state_change要配置為vm_state或vm_and_task_state。

另外,Nova中除了上述說的操作事件通知外,還有一種審計(jì)通知,即在一段時(shí)間內(nèi)的系統(tǒng)資源狀態(tài),相關(guān)的配置項(xiàng) instance_usage_audit_period,目前Nova中只有event_type類型為 compute.instance.exists一種審計(jì)通知,這種通知可以讓你對一段周期內(nèi)系統(tǒng)中存在的虛擬機(jī)有一個(gè)全局的了解。

虛擬機(jī)操作事件記錄

Nova中的虛擬機(jī)每個(gè)操作(啟動(dòng)、停止、暫停、恢復(fù)等),都會(huì)在db中保存相關(guān)的操作記錄,給用戶提供查詢。利用這個(gè)功能,用戶對自己的虛擬機(jī)整個(gè)生命周期的過程和狀態(tài)都會(huì)了如指掌,便于用戶的管理。參見這里。示例如下:

  1.  
  2. "instanceActions": [ 
  3.  
  4.  
  5. "action""resize"
  6.  
  7. "instance_uuid""b48316c5-71e8-45e4-9884-6c78055b9b13"
  8.  
  9. "message"""
  10.  
  11. "project_id""842"
  12.  
  13. "request_id""req-25517360-b757-47d3-be45-0e8d2a01b36a"
  14.  
  15. "start_time""2012-12-05 01:00:00.000000"
  16.  
  17. "user_id""789" 
  18.  
  19. }, 
  20.  
  21.  
  22. "action""reboot"
  23.  
  24. "instance_uuid""b48316c5-71e8-45e4-9884-6c78055b9b13"
  25.  
  26. "message"""
  27.  
  28. "project_id""147"
  29.  
  30. "request_id""req-3293a3f1-b44c-4609-b8d2-d81b105636b8"
  31.  
  32. "start_time""2012-12-05 00:00:00.000000"
  33.  
  34. "user_id""789" 
  35.  
  36.  
  37.  

在內(nèi)部實(shí)現(xiàn)中,nova-api層會(huì)記錄action開始的記錄,在nova-compute層,則會(huì)添加event開始和結(jié)束的信息,action和event根據(jù)request id(一次消息請求的標(biāo)識(shí))關(guān)聯(lián)。

虛擬機(jī)錯(cuò)誤信息記錄

因?yàn)镺penStack的安裝部署復(fù)雜性,或者操作過程對環(huán)境、配置等要求比較苛刻,稍不注意,就有可能發(fā)生錯(cuò)誤。一旦發(fā)生錯(cuò)誤,除了從日志中獲取錯(cuò)誤信息外,還有什么比較方便、快捷的方式能夠迅速定位錯(cuò)誤呢?

在API層發(fā)生錯(cuò)誤,用戶會(huì)立即看到錯(cuò)誤碼和錯(cuò)誤信息。但如果是在conductor,scheduler或compute層發(fā)生錯(cuò)誤呢?

OpenStack智慧的社區(qū)開發(fā)者們已經(jīng)為我們提供了這種能力。其實(shí)還是利用DB和通知機(jī)制來實(shí)現(xiàn)。

先說通知,虛擬機(jī)操作異常時(shí),一般都會(huì)發(fā)送error通知,通知中包含異常的函數(shù)名稱、異常時(shí)函數(shù)的參數(shù)以及異常信息。

再說db,虛擬機(jī)操作異常時(shí),無論是在conductor, scheduler還是compute層,除了會(huì)發(fā)送通知外,還會(huì)記錄異常信息到數(shù)據(jù)庫(instance_faults表),當(dāng)查詢虛擬機(jī)信息時(shí),會(huì)返回虛擬機(jī)的異常信息。

虛擬機(jī)診斷信息

租戶可以查詢虛擬機(jī)使用過程中的一些統(tǒng)計(jì)信息,比如虛擬機(jī)磁盤的讀寫情況、網(wǎng)絡(luò)的IO情況等,對于KVM來講,這些信息都是通過libvirt接口獲取。

API示例參見這里。返回消息示例:

  1.  
  2. "vnet0_tx_errors"0
  3.  
  4. "vda_errors": -1
  5.  
  6. "vda_read"4447232
  7.  
  8. "vda_write"4347904
  9.  
  10. "vnet0_tx_packets"1259
  11.  
  12. "vda_write_req"3523
  13.  
  14. "memory-actual"524288
  15.  
  16. "cpu0_time"195230000000
  17.  
  18. "vnet0_tx"364840
  19.  
  20. "vnet0_rx_drop"0
  21.  
  22. "vnet0_rx_packets"1423
  23.  
  24. "vnet0_rx_errors"0
  25.  
  26. "memory"524288
  27.  
  28. "memory-rss"243188
  29.  
  30. "vda_read_req"291
  31.  
  32. "vnet0_rx"363725
  33.  
  34. "vnet0_tx_drop"0 
  35.  

參考鏈接

https://wiki.openstack.org/wiki/SystemUsageData

https://wiki.openstack.org/wiki/NotificationEventExamples

https://github.com/rackerlabs/yagi

http://www.stacktach.com/

作者簡介

孔令賢,華為技術(shù)有限公司云計(jì)算領(lǐng)域OpenStack社區(qū)團(tuán)隊(duì)技術(shù)主管,2011年加入華為西安研究所,一直從事云計(jì)算相關(guān)方向的研發(fā)工作。于2012年開始研究OpenStack,其個(gè)人博客(CSDN博客:http://blog.csdn.net/lynn_kong,Github博客:http://lingxiankong.github.io/多次被業(yè)內(nèi)人士學(xué)習(xí)和轉(zhuǎn)載。同時(shí),積極組織和推動(dòng)OpenStack在國內(nèi)的技術(shù)交流和活動(dòng),多次以主講人的身份參加OpenStack西安meetup。

原文鏈接:http://www.openstack.cn/?p=3521

責(zé)任編輯:Ophira 來源: OpensStack中國社區(qū)
相關(guān)推薦

2011-11-29 10:24:17

OpenStackNova

2015-03-16 10:16:33

協(xié)同并發(fā)NovaOpenstack

2015-05-12 10:31:25

openstack開源新特性分析

2024-04-30 11:14:19

KubernetesReplicaSet數(shù)量

2011-09-07 10:42:38

cloudopenstack n

2021-02-11 14:36:13

入侵防御系統(tǒng)

2021-04-15 09:18:57

鴻蒙HarmonyOS應(yīng)用

2017-03-16 12:08:09

OpenstackCompute DriLibvirt

2018-02-07 17:32:54

情感分析

2020-06-30 08:41:38

HTTP無狀態(tài)協(xié)議

2023-01-13 09:06:01

mock方案多狀態(tài)

2014-01-06 11:26:38

ApacheMesos

2014-01-06 17:41:44

ApacheMesos

2014-12-11 11:30:11

openstacknovadocker

2009-10-27 17:28:05

linux系統(tǒng)中配置A

2022-06-20 09:01:50

SwiftUI狀態(tài)管理系統(tǒng)

2019-10-08 11:10:18

React自動(dòng)保存前端

2009-07-20 17:21:43

Session狀態(tài)ASP.NET

2015-04-27 13:34:03

OpenStackNova在線升級

2012-02-03 09:22:57

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)