Openstack
OpenStack 是一个美国国家航空航天局和 Rackspace 合作研发的云端运算软件,以 Apache 许可证授权,并且是一个自由软件和开放源代码项目。
OpenStack 是 IaaS 软件,让任何人都可以自行建立和提供云端运算服务。此外,OpenStack 也用作建立防火墙内的私有云,提供机构或企业内各部门共享资源。
配置 Openstack 监控
登录认证服务器创建角色和用户
使用 Cloud Insight 监控 Openstak 前,需要在 Openstack 为 Cloud Insight Agent 创建单独的角色,确保 Keystone 模块可以让 Agent 访问指标数据。
使用以下指令为 Cloud Insight 创建角色。
openstack role create Cloud Insight_monitoring
openstack user create Cloud Insight --password my_password --project my_project_name
openstack role add Cloud Insight_monitoring --project my_project_name --user Cloud Insight
由以上指令可知,您创建了 Cloud Insight_monitoring
的角色。
注:您可以根据实际情况,来修改 `my_password` 和 `my_project_name`。但请注意在之后的指令,请将相应的字段修改过来。
更新 policy.json 文件来获得必要的权限
需要编辑 Openstack 3 个模块 Nova, Neutron, Keystone 来让 role:Cloud Insight_monitoring
获取相应权限。
一般来说,Nova 的权限文件会在 /etc/nova/policy.json
路径下。打开并新增如下权限。
Nova
- "compute_extension:aggregates",
- "compute_extension:hypervisors",
- "compute_extension:server_diagnostics",
- "compute_extension:v3:os-hypervisors",
- "compute_extension:v3:os-server-diagnostics",
- "compute_extension:availability_zone:detail",
- "compute_extension:v3:availability_zone:detail",
- "compute_extension:used_limits_for_admin",
- "os_compute_api:os-aggregates:index",
- "os_compute_api:os-aggregates:show",
- "os_compute_api:os-hypervisors",
- "os_compute_api:os-hypervisors:discoverable",
- "os_compute_api:os-server-diagnostics",
- "os_compute_api:os-used-limits"
一条完整的权限配置方法,是需要在权限后跟上角色信息。如:
- "compute_extension:aggregates" : "role:Cloud Insight_monitoring"
注:请根据以上列举的权限和方法,逐个添加权限。若您修改过角色名称 `role:Cloud Insight_monitoring`,请修改角色名称为您自定义的名称。
Neutron
Neutron 同理可以使用以上的方法,添加如下权限。而权限配置文件一般在 /etc/neutron/policy.json
。
- "get_network"
Keystone
Keystone 同理可以使用以上的方法,添加如下权限。而权限配置文件一般在 /etc/keystone/policy.json
。
- "identity:get_project"
- "identity:list_projects"
保存所有的 policy.json
文件后,需要重启 Keystone, Neutron 和 Nova API 来应用新的权限配置。
配置 Cloud Insight Agent 连接到 Keystone
接下来,需要前往 Cloud Insight Agent 的平台服务配置文件中,新增 Openstack 相关配置。
不熟悉的如何配置情况下,请查看 开始使用 Cloud Insight 。
切换路径至 /etc/CiAgent
。
cd /etc/CiAgent
开启配置文件 conf.d/openstack.yaml
。
cp conf.d/openstack.yaml.example conf.d/openstack.yaml
修改 keystone_server_url
配置项。通常来说,默认的端口号为 5000
。
init_config:
keystone_server_url: "https://my-keystone-server.com:port/"
除此之外,您还需要前往 <yourHorizonserver>/identity
查询您的 Project ID 来修改配置项 id
。以下是示例:
instances:
- name: instance_1 # A required unique identifier for this instance
# The authorization scope that will be used to request a token from Identity API v3
# The auth scope must resolve to 1 of the following structures:
# {'project': {'name': 'my_project', 'domain': 'my_domain} OR {'project': {'id': 'my_project_id'}}
auth_scope:
project:
id: b9d363ac9a5b4cceae228e03639357ae
前往配置项的 # User credentials
部分,修改角色的账户和密码:
# User credentials
# Password authentication is the only auth method supported right now
# User expects username, password, and user domain id
# `user` should resolve to a structure like {'password': 'my_password', 'name': 'my_name', 'domain$
user:
password: my_password
name: Cloud Insight
domain:
id: default
注:若您在第一步修改过角色的默认账户 `cloud insight` 和密码 `my_password`,请在此处改为对应的。
配置 RabbitMQ 服务
有关 RabbitMQ 的监控配置可以查阅文档:平台服务示例 • RabbitMQ。
想要快速开启 RabbitMQ,可以使用以下指令安装 RabbitMQ 监控插件:
rabbitmq-plugins enable rabbitmq_management
重启 Rabbit 使插件生效。安装成功后,插件为您创建 URL: http://localhost:15672/api/
来展示指标数据,而 Cloud Insight 也是通过该地址采集指标数据。
service rabbitmq-server restart
在 etc/conf.d/rabbitmq.yaml
中添加该地址:
instances:
- rabbitmq_api_url: http://localhost:15672/api/
rabbitmq_user: guest # defaults to 'guest'
rabbitmq_pass: guest # defaults to 'guest'
注:若您的 RabbitMQ 已经自定义 API URL 或者用户名和密码,请修改相应配置项。
重启 Agent
重启 Cloud Insight Agent,使配置生效 。
/etc/init.d/CiAgent restart
您也可以通过查看 Agent Info 信息,来验证配置是否成功 。
/etc/init.d/CiAgent info
当出现以下信息,则代表安装成功 。
Checks
======
[...]
openstack
------
- instance #0 [OK]
- Collected 8 metrics & 0 events
性能指标
Cloud Insight 采集 Openstack 以下性能指标:
指标 | 单位 | 具体含义 |
---|---|---|
openstack.nova.current_workload | Hypervisor 当前运行的任务数量 | |
openstack.nova.disk_available_least | gibibytes | Hypervisor 剩余可用磁盘空间,默认单位 GB |
openstack.nova.free_disk_gb | gibibytes | Hypervisor 当前可用的磁盘空间,默认单位 GB |
openstack.nova.free_ram_mb | mebibytes | Hypervisor 当前可用的 RAM 大小,默认单位 MB |
openstack.nova.hypervisor_load.1 | Hypervisor 在过去 1 分钟内的平均负载 | |
openstack.nova.hypervisor_load.15 | Hypervisor 在过去 15 分钟内的平均负载 | |
openstack.nova.hypervisor_load.5 | Hypervisor 在过去 5 分钟内的平均负载 | |
openstack.nova.limits.max_image_meta | 分配给租户的最大 image metadata 定义数 | |
openstack.nova.limits.max_personality | 分配给租户的最大 personality 数量 | |
openstack.nova.limits.max_personality_size | 分配给租户的最大单个 personality 大小 | |
openstack.nova.limits.max_security_group_rules | 分配给租户的最大安全组规则数量 | |
openstack.nova.limits.max_security_groups | 分配给租户的最大安全组数量 | |
openstack.nova.limits.max_server_meta | 分配给租户的最大 server metadata 定义数 | |
openstack.nova.limits.max_total_cores | 分配给租户的最大 core 数量 | |
openstack.nova.limits.max_total_floating_ips | 分配给租户的最大浮动 IP 数量 | |
openstack.nova.limits.max_total_instances | 分配给租户的最大 instance 数量 | |
openstack.nova.limits.max_total_keypairs | 分配给租户的最大 keypair 数量 | |
openstack.nova.limits.max_total_ram_size | gibibytes | 分配给租户的最大 RAM 大小 |
openstack.nova.limits.total_cores_used | 租户当前使用的 core 数量 | |
openstack.nova.limits.total_floating_ips_used | 租户当前使用的浮动 IP 数量 | |
openstack.nova.limits.total_instances_used | 租户当前使用 instance 数量 | |
openstack.nova.limits.total_ram_used | gibibytes | 租户当前使用 RAM 大小 |
openstack.nova.limits.total_security_groups_used | 租户当前使用的安全组总数 | |
openstack.nova.local_gb | gibibytes | Hypervisor 主机当前临时磁盘大小,默认单位 GB |
openstack.nova.local_gb_used | gibibytes | Hypervisor 主机当前磁盘使用量,默认单位 GB |
openstack.nova.memory_mb | mebibytes | Hypervisor 主机当前 RAM 大小,默认单位 MB |
openstack.nova.memory_mb_used | mebibytes | Hypervisor 主机当前 RAM 使用量,默认单位 MB |
openstack.nova.running_vms | Hypervisor 主机当前运行的虚拟机数量 | |
openstack.nova.server.cpu0_time | nanoseconds | 虚拟 CPU 的 CPU 时间,默认单位 ns |
openstack.nova.server.hdd_errors | Sever 访问 HDD 设备时看到的的错误数 | |
openstack.nova.server.hdd_read | bytes | Sever 从 HDD 设备读取的字节数 |
openstack.nova.server.hdd_read_req | Sever 向 HDD 设备发出的读请求数 | |
openstack.nova.server.hdd_write | bytes | Sever 写入 HDD 设备的字节数 |
openstack.nova.server.hdd_write_req | Sever 向 HDD 设备发出的写请求数 | |
openstack.nova.server.memory | mebibytes | 为当前 sever 配置的内存量 |
openstack.nova.server.memory_actual | mebibytes | 为当前 sever 配置的内存量 |
openstack.nova.server.memory_rss | mebibytes | Sever 进程当前使用的内存量,即与磁盘页面没有关联(例如堆栈和对内存) |
openstack.nova.server.vda_errors | Sever 访问 VDA 设备时的错误数 | |
openstack.nova.server.vda_read | bytes | Sever 从 VDA 设备读取的字节数 |
openstack.nova.server.vda_read_req | Sever 向 VDA 设备发出的读请求数 | |
openstack.nova.server.vda_write | bytes | Sever 写入 VDA 设备的字节数 |
openstack.nova.server.vda_write_req | Sever 向 VDA 设备发出的写请求数 | |
openstack.nova.vcpus | Hypervisor 主机的 vCPU 配额 | |
openstack.nova.vcpus_used | Hypervisor 主机当前使用的 vCPU 数量 |
常见问题
- 若要在同一个服务器上监控多个相同的平台服务,参考如何监控多个平台服务。
- 有任何关于产品的使用疑惑,参考常见问题。