cloudkitty为openstack计费项目,其项目原理参考https://blog.csdn.net/weixin_42640196/article/details/88046674
计费原理如图
本次安装基于queens版本。
cloudkitty手动安装
yum install centos-release-openstack-queens -y
yum install openstack-cloudkitty-api openstack-cloudkitty-processor openstack-cloudkitty-ui -y
编辑文件/etc/cloudkitty/cloudkitty.conf,其中的IP地址和帐号参考已建成集群,文章Kolla-ansible离线部署queens记录
[DEFAULT]
debug = False
log_dir = /var/log/kolla/cloudkitty
transport_url = rabbit://openstack:N9rN6bepSQE8MXZsJ0bVdVdm6OSR1gexqkQ8P0NZ@10.0.49.131:5672,openstack:N9rN6bepSQE8MXZsJ0bVdVdm6OSR1gexqkQ8P0NZ@10.0.49.132:5672,openstack:N9rN6bepSQE8MXZsJ0bVdVdm6OSR1gexqkQ8P0NZ@10.0.49.133:5672
[database]
connection = mysql+pymysql://cloudkitty:8ZVCQaBdX7Rj0JYpFZNAK2LCX4b179mCBVTffczz@10.0.49.149:3306/cloudkitty
max_retries = -1
[keystone_authtoken]
auth_uri = http://10.0.49.149:5000
auth_url = http://10.0.49.149:35357
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cloudkitty
password = r67E0XiEU9krFAEXORPe28yFEXM9V614mVx97xCf
memcache_security_strategy = ENCRYPT
memcache_secret_key = ORXMCNi8ZJCOk1BOrKcRLfYYL0bWddQdL0hPpfzf
memcached_servers = 10.0.49.131:11211,10.0.49.132:11211,10.0.49.133:11211
[oslo_concurrency]
lock_path = /var/lib/cloudkitty/tmp
[collect]
collector = ceilometer
services = compute,image,volume,network.bw.out,network.bw.in,network.floating
[keystone_fetcher]
keystone_version = 3
auth_section = keystone_authtoken
[ceilometer_collector]
auth_section = keystone_authtoken
[api]
host_ip = 10.0.49.139
port = 8889
[orchestrator]
coordination_url = mysql://cloudkitty:8ZVCQaBdX7Rj0JYpFZNAK2LCX4b179mCBVTffczz@10.0.49.149:3306/cloudkitty
保存退出。
新建文件 /etc/cloudkitty/metrics.yml,内容如下:
- name: OpenStack
collector: ceilometer
period: 3600
wait_periods: 2
window: 1800
services:
- compute
- volume
- network.bw.in
- network.bw.out
- network.floating
- image
services_objects:
compute: instance
volume: volume
network.bw.out: instance_network_interface
network.bw.in: instance_network_interface
network.floating: network
image: image
radosgw.usage: ceph_account
services_metrics:
compute:
- vcpus: max
- memory: max
- cpu: max
- disk.root.size: max
- disk.ephemeral.size: max
volume:
- volume.size: max
network.bw.in:
- network.incoming.bytes: max
network.bw.out:
- network.outgoing.bytes: max
network.floating:
- ip.floating: max
image:
- image.size: max
- image.download: max
- image.serve: max
radosgw.usage:
- radosgw.objects.size: max
metrics_units:
compute:
1:
unit: instance
volume:
volume.size:
unit: GiB
network.bw.in:
network.incoming.bytes:
unit: MB
factor: 1/1000000
network.bw.out:
network.outgoing.bytes:
unit: MB
factor: 1/1000000
network.floating:
1:
unit: ip
image:
image.size:
unit: MiB
factor: 1/1048576
radosgw.usage:
radosgw.objects.size:
unit: GiB
factor: 1/1073741824
default_unit:
1:
unit: unknown
在控制节点创建数据库文件
mysql -uroot -p << EOF
CREATE DATABASE cloudkitty;
GRANT ALL PRIVILEGES ON cloudkitty.* TO 'CK_DBUSER'@'localhost' IDENTIFIED BY 'CK_DBPASSWORD';
EOF
初始化数据
cloudkitty-dbsync upgrade
初始化后端存储
cloudkitty-storage-init
集成keystone认证
openstack user create cloudkitty --password CK_PASSWORD --email cloudkitty@localhost
openstack role add --project service --user cloudkitty admin
openstack role create rating
openstack role add --project XXX --user cloudkitty rating
创建rating服务和端点
openstack service create rating --name cloudkitty \
--description "OpenStack Rating Service"
openstack endpoint create rating --region RegionOne \
public http://localhost:8889
openstack endpoint create rating --region RegionOne \
admin http://localhost:8889
openstack endpoint create rating --region RegionOne \
internal http://localhost:8889
启动服务
systemctl start cloudkitty-processor.service
临时启动API
cloudkitty-api -p 8889
cloudkitty使用
一、以实例类型为费率计费
创建hashmap组
# cloudkitty hashmap-group-create -n instance_uptime_flavor_id
+----------+--------------------------------------+
| Property | Value |
+----------+--------------------------------------+
| group_id | 7a00ca7f-30f1-4558-a27d-4f4280c157e9 |
| name | instance_uptime_flavor_id |
+----------+--------------------------------------+
创建hashmap服务
# cloudkitty hashmap-service-create -n instance
+------------+--------------------------------------+
| Property | Value |
+------------+--------------------------------------+
| name | instance |
| service_id | a89c0416-7b8e-4745-a9ec-cc2cd4e6194f |
+------------+--------------------------------------+
创建hashmap字段
# cloudkitty hashmap-field-create -s a89c0416-7b8e-4745-a9ec-cc2cd4e6194f -n flavor_id
+------------+--------------------------------------+
| Property | Value |
+------------+--------------------------------------+
| field_id | 03df2699-bae2-43c2-91c2-7275627e7087 |
| name | flavor_id |
| service_id | a89c0416-7b8e-4745-a9ec-cc2cd4e6194f |
+------------+--------------------------------------+
查看实例类型ID
# openstack flavor show m1.small
+----------------------------+----------+
| Field | Value |
+----------------------------+----------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| access_project_ids | None |
| disk | 20 |
| id | 2 |
| name | m1.small |
| os-flavor-access:is_public | True |
| properties | |
| ram | 2048 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 1 |
+----------------------------+----------+
创建关联,m1.small类型费率 0.02 m1.tiny类型费率 0.01
# cloudkitty hashmap-mapping-create -c 0.02 -f 03df2699-bae2-43c2-91c2-7275627e7087 -v 2 -g 7a00ca7f-30f1-4558-a27d-4f4280c157e9 -t flat
+------------+--------------------------------------+
| Property | Value |
+------------+--------------------------------------+
| cost | 0.02000000 |
| field_id | 03df2699-bae2-43c2-91c2-7275627e7087 |
| group_id | 7a00ca7f-30f1-4558-a27d-4f4280c157e9 |
| mapping_id | 36af4f6f-eac9-4213-8677-d9d7d35dfb05 |
| service_id | None |
| tenant_id | None |
| type | flat |
| value | 2 |
+------------+--------------------------------------+
# cloudkitty hashmap-mapping-create -c 0.01 -f 03df2699-bae2-43c2-91c2-7275627e7087 -v 1 -g 7a00ca7f-30f1-4558-a27d-4f4280c157e9 -t flat
+------------+--------------------------------------+
| Property | Value |
+------------+--------------------------------------+
| cost | 0.01000000 |
| field_id | 03df2699-bae2-43c2-91c2-7275627e7087 |
| group_id | 7a00ca7f-30f1-4558-a27d-4f4280c157e9 |
| mapping_id | 4e8cc136-e901-44a4-bf40-b7d0493afedc |
| service_id | None |
| tenant_id | None |
| type | flat |
| value | 1 |
+------------+--------------------------------------+
二、以volume容量计费含折扣
# cloudkitty hashmap-group-create -n volume_thresholds
+----------+--------------------------------------+
| Property | Value |
+----------+--------------------------------------+
| group_id | 68748772-eb15-4ef3-8b6d-c2e4fa4d22d8 |
| name | volume_thresholds |
+----------+--------------------------------------+
# cloudkitty hashmap-service-create -n volume.size
+------------+--------------------------------------+
| Property | Value |
+------------+--------------------------------------+
| name | volume.size |
| service_id | 231baaed-c604-456c-aecc-a3279cfdf491 |
+------------+--------------------------------------+
# cloudkitty hashmap-mapping-create -c 0.001 -s 231baaed-c604-456c-aecc-a3279cfdf491 -t flat -g 68748772-eb15-4ef3-8b6d-c2e4fa4d22d8
+------------+--------------------------------------+
| Property | Value |
+------------+--------------------------------------+
| cost | 0.00100000 |
| field_id | None |
| group_id | 68748772-eb15-4ef3-8b6d-c2e4fa4d22d8 |
| mapping_id | 67cd1f05-538f-4074-b242-5da4962025d0 |
| service_id | 231baaed-c604-456c-aecc-a3279cfdf491 |
| tenant_id | None |
| type | flat |
| value | |
+------------+--------------------------------------+
超过50G打98折!
# cloudkitty hashmap-threshold-create -l 50 -c 0.98 -s 231baaed-c604-456c-aecc-a3279cfdf491 -t rate -g 68748772-eb15-4ef3-8b6d-c2e4fa4d22d8
+--------------+--------------------------------------+
| Property | Value |
+--------------+--------------------------------------+
| cost | 0.98000000 |
| field_id | None |
| group_id | 68748772-eb15-4ef3-8b6d-c2e4fa4d22d8 |
| level | 50.00000000 |
| service_id | 231baaed-c604-456c-aecc-a3279cfdf491 |
| tenant_id | None |
| threshold_id | 6de5e876-a81a-4193-bcc8-07c12535a33a |
| type | rate |
+--------------+--------------------------------------+
特殊客户97折
# cloudkitty hashmap-threshold-create -l 50 -c 0.97 -s 231baaed-c604-456c-aecc-a3279cfdf491 -t rate -g 68748772-eb15-4ef3-8b6d-c2e4fa4d22d8 -p 3e919be4cd7249069309e51e99dd976a
+--------------+--------------------------------------+
| Property | Value |
+--------------+--------------------------------------+
| cost | 0.97000000 |
| field_id | None |
| group_id | 68748772-eb15-4ef3-8b6d-c2e4fa4d22d8 |
| level | 50.00000000 |
| service_id | 231baaed-c604-456c-aecc-a3279cfdf491 |
| tenant_id | 3e919be4cd7249069309e51e99dd976a |
| threshold_id | 13870e48-aa4a-40f2-9368-cb056de38411 |
| type | rate |
+--------------+--------------------------------------+
超过200G 95折
# cloudkitty hashmap-threshold-create -l 200 -c 0.95 -s 231baaed-c604-456c-aecc-a3279cfdf491 -t rate -g 68748772-eb15-4ef3-8b6d-c2e4fa4d22d8
+--------------+--------------------------------------+
| Property | Value |
+--------------+--------------------------------------+
| cost | 0.95000000 |
| field_id | None |
| group_id | 68748772-eb15-4ef3-8b6d-c2e4fa4d22d8 |
| level | 200.00000000 |
| service_id | 231baaed-c604-456c-aecc-a3279cfdf491 |
| tenant_id | None |
| threshold_id | 6a3c7538-13c8-45f4-acec-a71d6a761102 |
| type | rate |
+--------------+--------------------------------------+
得到某租户在某时间段的总费用
# cloudkitty summary-get
+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID | Resource Type | Rate | Begin Time | End Time |
+----------------------------------+---------------+------+---------------------+---------------------+
| 6019d748d3a04651a990a3db760c3314 | ALL | 9.1 | 2020-01-01T00:00:00 | 2020-02-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+
使用cloudkitty-dashboad面板插件后,可以在horizon中使用cloudkitty
费用报表
在面板中管理hashmap service
参考文档
https://docs.openstack.org/cloudkitty/latest/user/rating/hashmap.html