openstack-armada-app/openstack-helm/files/0003-ceilometer-chart-updat...

2114 lines
69 KiB
Diff

From f45bfe9ea150965c011560b500ed6e01886bada3 Mon Sep 17 00:00:00 2001
From: Angie Wang <angie.wang@windriver.com>
Date: Fri, 19 Oct 2018 14:46:27 -0400
Subject: [PATCH 3/3] ceilometer chart updates
This commit includes the following changes:
- add polling process with ipmi function
- run ceilometer-upgrade instead of the obsolete command ceilometer-dbsync
- set ceilometer cache server
- update event_definitions.yaml in values.yaml
- add missing defintion yaml files for meter (meters.yaml, polling.yaml)
- configure messaging_urls option to listen to each rabbitmq vhost
- add the ability to push events to panko
We should try to upstream above changes.
We need to rework a bit once the commit "Openstack: Use k8s secret to store config" is put back.
---
ceilometer/templates/bin/_ceilometer-ipmi.sh.tpl | 13 +
ceilometer/templates/bin/_db-sync.sh.tpl | 2 +-
ceilometer/templates/configmap-bin.yaml | 2 +
ceilometer/templates/configmap-etc.yaml | 8 +
ceilometer/templates/daemonset-compute.yaml | 4 +
ceilometer/templates/daemonset-ipmi.yaml | 105 ++
ceilometer/templates/deployment-central.yaml | 4 +
ceilometer/templates/deployment-notification.yaml | 20 +
ceilometer/values.yaml | 1530 ++++++++++-----------
9 files changed, 902 insertions(+), 786 deletions(-)
create mode 100644 ceilometer/templates/bin/_ceilometer-ipmi.sh.tpl
create mode 100644 ceilometer/templates/daemonset-ipmi.yaml
diff --git a/ceilometer/templates/bin/_ceilometer-ipmi.sh.tpl b/ceilometer/templates/bin/_ceilometer-ipmi.sh.tpl
new file mode 100644
index 0000000..ad280c3
--- /dev/null
+++ b/ceilometer/templates/bin/_ceilometer-ipmi.sh.tpl
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+{{/*
+Copyright (c) 2018 Wind River Systems, Inc.
+
+SPDX-License-Identifier: Apache-2.0
+*/}}
+
+set -ex
+
+exec ceilometer-polling \
+ --polling-namespaces ipmi \
+ --config-file /etc/ceilometer/ceilometer.conf
diff --git a/ceilometer/templates/bin/_db-sync.sh.tpl b/ceilometer/templates/bin/_db-sync.sh.tpl
index 02f6f5d..ba7c1d8 100644
--- a/ceilometer/templates/bin/_db-sync.sh.tpl
+++ b/ceilometer/templates/bin/_db-sync.sh.tpl
@@ -18,4 +18,4 @@ limitations under the License.
set -ex
-exec ceilometer-dbsync
+exec ceilometer-upgrade --skip-metering-database
diff --git a/ceilometer/templates/configmap-bin.yaml b/ceilometer/templates/configmap-bin.yaml
index 6c7d59a..558f24e 100644
--- a/ceilometer/templates/configmap-bin.yaml
+++ b/ceilometer/templates/configmap-bin.yaml
@@ -53,6 +53,8 @@ data:
{{ tuple "bin/_ceilometer-collector.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
ceilometer-compute.sh: |
{{ tuple "bin/_ceilometer-compute.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
+ ceilometer-ipmi.sh: |
+{{ tuple "bin/_ceilometer-ipmi.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
ceilometer-notification.sh: |
{{ tuple "bin/_ceilometer-notification.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
rabbit-init.sh: |
diff --git a/ceilometer/templates/configmap-etc.yaml b/ceilometer/templates/configmap-etc.yaml
index d7d9653..14105f5 100644
--- a/ceilometer/templates/configmap-etc.yaml
+++ b/ceilometer/templates/configmap-etc.yaml
@@ -32,6 +32,10 @@ limitations under the License.
{{- $_ := set .Values.conf.ceilometer.keystone_authtoken "memcache_secret_key" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}
{{- end -}}
+{{- if empty .Values.conf.ceilometer.cache.memcache_servers -}}
+{{- $_ := tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" | set .Values.conf.ceilometer.cache "memcache_servers" -}}
+{{- end -}}
+
{{- if empty .Values.conf.ceilometer.database.connection -}}
{{- $_ := tuple "oslo_db" "internal" "ceilometer" "mysql" . | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup"| set .Values.conf.ceilometer.database "connection" -}}
{{- end -}}
@@ -127,5 +131,9 @@ data:
{{ toYaml .Values.conf.event_definitions | indent 4 }}
gnocchi_resources.yaml: |
{{ toYaml .Values.conf.gnocchi_resources | indent 4 }}
+ meters.yaml: |
+{{ toYaml .Values.conf.meters | indent 4 }}
+ polling.yaml: |
+{{ toYaml .Values.conf.polling | indent 4 }}
{{- include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.wsgi_ceilometer "key" "wsgi-ceilometer.conf" ) | indent 2 }}
{{- end }}
diff --git a/ceilometer/templates/daemonset-compute.yaml b/ceilometer/templates/daemonset-compute.yaml
index cf31840..d2fd9ea 100644
--- a/ceilometer/templates/daemonset-compute.yaml
+++ b/ceilometer/templates/daemonset-compute.yaml
@@ -91,6 +91,10 @@ spec:
mountPath: /etc/ceilometer/gnocchi_resources.yaml
subPath: gnocchi_resources.yaml
readOnly: true
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/polling.yaml
+ subPath: polling.yaml
+ readOnly: true
- name: ceilometer-bin
mountPath: /tmp/ceilometer-compute.sh
subPath: ceilometer-compute.sh
diff --git a/ceilometer/templates/daemonset-ipmi.yaml b/ceilometer/templates/daemonset-ipmi.yaml
new file mode 100644
index 0000000..9a7d72b
--- /dev/null
+++ b/ceilometer/templates/daemonset-ipmi.yaml
@@ -0,0 +1,105 @@
+{{/*
+Copyright (c) 2018 Wind River Systems, Inc.
+
+SPDX-License-Identifier: Apache-2.0
+*/}}
+
+{{- if .Values.manifests.daemonset_ipmi }}
+{{- $envAll := . }}
+
+{{- $mounts_ceilometer_ipmi := .Values.pod.mounts.ceilometer_ipmi.ceilometer_ipmi }}
+{{- $mounts_ceilometer_ipmi_init := .Values.pod.mounts.ceilometer_ipmi.init_container }}
+
+{{- $serviceAccountName := "ceilometer-ipmi" }}
+{{ tuple $envAll "ipmi" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
+---
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+ name: ceilometer-ipmi
+ annotations:
+ {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
+ labels:
+{{ tuple $envAll "ceilometer" "ipmi" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
+spec:
+ selector:
+ matchLabels:
+{{ tuple $envAll "ceilometer" "ipmi" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
+{{ tuple $envAll "ipmi" | include "helm-toolkit.snippets.kubernetes_upgrades_daemonset" | indent 2 }}
+ template:
+ metadata:
+ labels:
+{{ tuple $envAll "ceilometer" "ipmi" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
+ annotations:
+ configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
+ configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
+ spec:
+ serviceAccountName: {{ $serviceAccountName }}
+ affinity:
+{{ tuple $envAll "ceilometer" "ipmi" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
+ hostNetwork: true
+ hostPID: true
+ dnsPolicy: ClusterFirstWithHostNet
+ nodeSelector:
+ {{ .Values.labels.ipmi.node_selector_key }}: {{ .Values.labels.ipmi.node_selector_value }}
+ initContainers:
+{{ tuple $envAll "ipmi" $mounts_ceilometer_ipmi_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
+ containers:
+ - name: ceilometer-ipmi
+{{ tuple $envAll "ceilometer_ipmi" | include "helm-toolkit.snippets.image" | indent 10 }}
+{{ tuple $envAll $envAll.Values.pod.resources.ipmi | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
+ command:
+ - /tmp/ceilometer-ipmi.sh
+ volumeMounts:
+ - name: pod-etc-ceilometer
+ mountPath: /etc/ceilometer
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/ceilometer.conf
+ subPath: ceilometer.conf
+ readOnly: true
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/api_paste.ini
+ subPath: api_paste.ini
+ readOnly: true
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/policy.json
+ subPath: policy.json
+ readOnly: true
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/event_definitions.yaml
+ subPath: event_definitions.yaml
+ readOnly: true
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/event_pipeline.yaml
+ subPath: event_pipeline.yaml
+ readOnly: true
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/pipeline.yaml
+ subPath: pipeline.yaml
+ readOnly: true
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/gnocchi_resources.yaml
+ subPath: gnocchi_resources.yaml
+ readOnly: true
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/polling.yaml
+ subPath: polling.yaml
+ readOnly: true
+ - name: ceilometer-bin
+ mountPath: /tmp/ceilometer-ipmi.sh
+ subPath: ceilometer-ipmi.sh
+ readOnly: true
+{{ if $mounts_ceilometer_ipmi.volumeMounts }}{{ toYaml $mounts_ceilometer_ipmi.volumeMounts | indent 12 }}{{ end }}
+ volumes:
+ - name: pod-etc-ceilometer
+ emptyDir: {}
+ - name: ceilometer-etc
+ configMap:
+ name: ceilometer-etc
+ defaultMode: 0444
+ - name: ceilometer-bin
+ configMap:
+ name: ceilometer-bin
+ defaultMode: 0555
+{{ if $mounts_ceilometer_ipmi.volumes }}{{ toYaml $mounts_ceilometer_ipmi.volumes | indent 8 }}{{ end }}
+{{- end }}
diff --git a/ceilometer/templates/deployment-central.yaml b/ceilometer/templates/deployment-central.yaml
index 2fe7ed3..06121f2 100644
--- a/ceilometer/templates/deployment-central.yaml
+++ b/ceilometer/templates/deployment-central.yaml
@@ -89,6 +89,10 @@ spec:
mountPath: /etc/ceilometer/gnocchi_resources.yaml
subPath: gnocchi_resources.yaml
readOnly: true
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/polling.yaml
+ subPath: polling.yaml
+ readOnly: true
- name: ceilometer-bin
mountPath: /tmp/ceilometer-central.sh
subPath: ceilometer-central.sh
diff --git a/ceilometer/templates/deployment-notification.yaml b/ceilometer/templates/deployment-notification.yaml
index 2eeb571..f61c5e8 100644
--- a/ceilometer/templates/deployment-notification.yaml
+++ b/ceilometer/templates/deployment-notification.yaml
@@ -89,14 +89,30 @@ spec:
mountPath: /etc/ceilometer/gnocchi_resources.yaml
subPath: gnocchi_resources.yaml
readOnly: true
+ - name: etc-ceilometer-meters
+ mountPath: /etc/ceilometer/meters.d
+ - name: ceilometer-etc
+ mountPath: /etc/ceilometer/meters.d/meters.yaml
+ subPath: meters.yaml
+ readOnly: true
- name: ceilometer-bin
mountPath: /tmp/ceilometer-notification.sh
subPath: ceilometer-notification.sh
readOnly: true
+ - name: etcpanko
+ mountPath: /etc/panko
+ - name: panko-etc
+ mountPath: /etc/panko/panko.conf
+ subPath: panko.conf
+ readOnly: true
{{ if $mounts_ceilometer_notification.volumeMounts }}{{ toYaml $mounts_ceilometer_notification.volumeMounts | indent 12 }}{{ end }}
volumes:
- name: pod-etc-ceilometer
emptyDir: {}
+ - name: etc-ceilometer-meters
+ emptyDir: {}
+ - name: etcpanko
+ emptyDir: {}
- name: ceilometer-etc
configMap:
name: ceilometer-etc
@@ -105,5 +121,9 @@ spec:
configMap:
name: ceilometer-bin
defaultMode: 0555
+ - name: panko-etc
+ configMap:
+ name: panko-etc
+ defaultMode: 0444
{{ if $mounts_ceilometer_notification.volumes }}{{ toYaml $mounts_ceilometer_notification.volumes | indent 8 }}{{ end }}
{{- end }}
diff --git a/ceilometer/values.yaml b/ceilometer/values.yaml
index 4e7f104..54d1e5a 100644
--- a/ceilometer/values.yaml
+++ b/ceilometer/values.yaml
@@ -29,6 +29,9 @@ labels:
central:
node_selector_key: openstack-control-plane
node_selector_value: enabled
+ ipmi:
+ node_selector_key: openstack-node
+ node_selector_value: enabled
collector:
node_selector_key: openstack-control-plane
node_selector_value: enabled
@@ -113,1041 +116,971 @@ conf:
auth_type: password
interface: internal
notification:
- messaging_urls: null
+ messaging_urls:
+ type: multistring
+ values:
+ - rabbit://rabbitmq:password@rabbitmq.openstack.svc.cluster.local:5672/ceilometer
+ - rabbit://rabbitmq:password@rabbitmq.openstack.svc.cluster.local:5672/cinder
+ - rabbit://rabbitmq:password@rabbitmq.openstack.svc.cluster.local:5672/glance
+ - rabbit://rabbitmq:password@rabbitmq.openstack.svc.cluster.local:5672/nova
+ - rabbit://rabbitmq:password@rabbitmq.openstack.svc.cluster.local:5672/keystone
+ - rabbit://rabbitmq:password@rabbitmq.openstack.svc.cluster.local:5672/neutron
+ - rabbit://rabbitmq:password@rabbitmq.openstack.svc.cluster.local:5672/heat
oslo_messaging_notifications:
driver: messagingv2
topics:
- notifications
- profiler
+ cache:
+ enabled: true
+ backend: dogpile.cache.memcached
event_definitions:
- - event_type: compute.instance.*
- traits:
- deleted_at:
- fields: payload.deleted_at
- type: datetime
+ - event_type: 'compute.instance.*'
+ traits: &instance_traits
+ tenant_id:
+ fields: payload.tenant_id
+ user_id:
+ fields: payload.user_id
+ instance_id:
+ fields: payload.instance_id
+ resource_id:
+ fields: payload.instance_id
+ host:
+ fields: publisher_id.`split(., 1, 1)`
+ service:
+ fields: publisher_id.`split(., 0, -1)`
+ memory_mb:
+ type: int
+ fields: payload.memory_mb
disk_gb:
+ type: int
fields: payload.disk_gb
+ root_gb:
type: int
+ fields: payload.root_gb
ephemeral_gb:
+ type: int
fields: payload.ephemeral_gb
+ vcpus:
type: int
- host:
- fields: 'publisher_id.`split(., 1, 1)`'
- instance_id:
- fields: payload.instance_id
- instance_type:
- fields: payload.instance_type
+ fields: payload.vcpus
instance_type_id:
- fields: payload.instance_type_id
- type: int
- launched_at:
- fields: payload.launched_at
- type: datetime
- memory_mb:
- fields: payload.memory_mb
type: int
+ fields: payload.instance_type_id
+ instance_type:
+ fields: payload.instance_type
+ state:
+ fields: payload.state
os_architecture:
fields: payload.image_meta.'org.openstack__1__architecture'
- os_distro:
- fields: payload.image_meta.'org.openstack__1__os_distro'
os_version:
fields: payload.image_meta.'org.openstack__1__os_version'
- root_gb:
- fields: payload.root_gb
- type: int
- service:
- fields: 'publisher_id.`split(., 0, -1)`'
- state:
- fields: payload.state
- tenant_id:
- fields: payload.tenant_id
- user_id:
- fields: payload.user_id
- vcpus:
- fields: payload.vcpus
- type: int
+ os_distro:
+ fields: payload.image_meta.'org.openstack__1__os_distro'
+ launched_at:
+ type: datetime
+ fields: payload.launched_at
+ deleted_at:
+ type: datetime
+ fields: payload.deleted_at
+ - event_type: compute.instance.update
+ traits:
+ <<: *instance_traits
+ old_state:
+ fields: payload.old_state
- event_type: compute.instance.exists
traits:
+ <<: *instance_traits
audit_period_beginning:
- fields: payload.audit_period_beginning
type: datetime
+ fields: payload.audit_period_beginning
audit_period_ending:
- fields: payload.audit_period_ending
- type: datetime
- deleted_at:
- fields: payload.deleted_at
- type: datetime
- disk_gb:
- fields: payload.disk_gb
- type: int
- ephemeral_gb:
- fields: payload.ephemeral_gb
- type: int
- host:
- fields: 'publisher_id.`split(., 1, 1)`'
- instance_id:
- fields: payload.instance_id
- instance_type:
- fields: payload.instance_type
- instance_type_id:
- fields: payload.instance_type_id
- type: int
- launched_at:
- fields: payload.launched_at
type: datetime
- memory_mb:
- fields: payload.memory_mb
- type: int
- os_architecture:
- fields: payload.image_meta.'org.openstack__1__architecture'
- os_distro:
- fields: payload.image_meta.'org.openstack__1__os_distro'
- os_version:
- fields: payload.image_meta.'org.openstack__1__os_version'
- root_gb:
- fields: payload.root_gb
- type: int
- service:
- fields: 'publisher_id.`split(., 0, -1)`'
- state:
- fields: payload.state
- tenant_id:
- fields: payload.tenant_id
+ fields: payload.audit_period_ending
+ - event_type: ['volume.exists', 'volume.create.*', 'volume.delete.*', 'volume.resize.*', 'volume.attach.*', 'volume.detach.*', 'volume.update.*', 'snapshot.exists', 'snapshot.create.*', 'snapshot.delete.*', 'snapshot.update.*']
+ traits: &cinder_traits
user_id:
fields: payload.user_id
- vcpus:
- fields: payload.vcpus
- type: int
- - event_type:
- - volume.exists
- - volume.create.*
- - volume.delete.*
- - volume.resize.*
- - volume.attach.*
- - volume.detach.*
- - volume.update.*
- - snapshot.exists
- - snapshot.create.*
- - snapshot.delete.*
- - snapshot.update.*
- traits:
+ project_id:
+ fields: payload.tenant_id
availability_zone:
fields: payload.availability_zone
- created_at:
- fields: payload.created_at
display_name:
fields: payload.display_name
- project_id:
- fields: payload.tenant_id
replication_status:
fields: payload.replication_status
status:
fields: payload.status
- user_id:
- fields: payload.user_id
- - event_type:
- - volume.exists
- - volume.create.*
- - volume.delete.*
- - volume.resize.*
- - volume.attach.*
- - volume.detach.*
- - volume.update.*
- traits:
- availability_zone:
- fields: payload.availability_zone
created_at:
fields: payload.created_at
- display_name:
- fields: payload.display_name
- host:
- fields: payload.host
- project_id:
- fields: payload.tenant_id
- replication_status:
- fields: payload.replication_status
+ - event_type: ['volume.exists', 'volume.create.*', 'volume.delete.*', 'volume.resize.*', 'volume.attach.*', 'volume.detach.*', 'volume.update.*']
+ traits:
+ <<: *cinder_traits
resource_id:
fields: payload.volume_id
+ host:
+ fields: payload.host
size:
fields: payload.size
- status:
- fields: payload.status
type:
fields: payload.volume_type
+ replication_status:
+ fields: payload.replication_status
+ - event_type: ['share.create.*', 'share.delete.*', 'share.extend.*', 'share.shrink.*']
+ traits: &share_traits
+ share_id:
+ fields: payload.share_id
user_id:
fields: payload.user_id
- - event_type:
- - snapshot.exists
- - snapshot.create.*
- - snapshot.delete.*
- - snapshot.update.*
- traits:
+ project_id:
+ fields: payload.tenant_id
+ snapshot_id:
+ fields: payload.snapshot_id
availability_zone:
fields: payload.availability_zone
+ status:
+ fields: payload.status
created_at:
fields: payload.created_at
- display_name:
- fields: payload.display_name
- project_id:
- fields: payload.tenant_id
- replication_status:
- fields: payload.replication_status
+ share_group_id:
+ fields: payload.share_group_id
+ size:
+ fields: payload.size
+ name:
+ fields: payload.name
+ proto:
+ fields: payload.proto
+ is_public:
+ fields: payload.is_public
+ description:
+ fields: payload.description
+ host:
+ fields: payload.host
+ - event_type: ['snapshot.exists', 'snapshot.create.*', 'snapshot.delete.*', 'snapshot.update.*']
+ traits:
+ <<: *cinder_traits
resource_id:
fields: payload.snapshot_id
- status:
- fields: payload.status
- user_id:
- fields: payload.user_id
volume_id:
fields: payload.volume_id
- - event_type:
- - image_volume_cache.*
+ - event_type: ['image_volume_cache.*']
traits:
- host:
- fields: payload.host
image_id:
fields: payload.image_id
- - event_type:
- - image.create
- - image.update
- - image.upload
- - image.delete
- traits:
- created_at:
- fields: payload.created_at
- deleted_at:
- fields: payload.deleted_at
- name:
- fields: payload.name
+ host:
+ fields: payload.host
+ - event_type: ['image.create', 'image.update', 'image.upload', 'image.delete']
+ traits: &glance_crud
project_id:
fields: payload.owner
resource_id:
fields: payload.id
- size:
- fields: payload.size
+ name:
+ fields: payload.name
status:
fields: payload.status
+ created_at:
+ fields: payload.created_at
user_id:
fields: payload.owner
+ deleted_at:
+ fields: payload.deleted_at
+ size:
+ fields: payload.size
- event_type: image.send
- traits:
- bytes_sent:
- fields: payload.bytes_sent
- type: int
- destination_ip:
- fields: payload.destination_ip
- image_id:
- fields: payload.image_id
+ traits: &glance_send
receiver_project:
fields: payload.receiver_tenant_id
receiver_user:
fields: payload.receiver_user_id
user_id:
fields: payload.owner_id
+ image_id:
+ fields: payload.image_id
+ destination_ip:
+ fields: payload.destination_ip
+ bytes_sent:
+ type: int
+ fields: payload.bytes_sent
- event_type: orchestration.stack.*
- traits:
+ traits: &orchestration_crud
project_id:
fields: payload.tenant_id
+ user_id:
+ fields: ['ctxt.trustor_user_id', 'ctxt.user_id']
resource_id:
fields: payload.stack_identity
- user_id:
- fields:
- - _context_trustor_user_id
- - _context_user_id
- event_type: sahara.cluster.*
- traits:
+ traits: &sahara_crud
project_id:
fields: payload.project_id
+ user_id:
+ fields: ctxt.user_id
resource_id:
fields: payload.cluster_id
- user_id:
- fields: _context_user_id
- event_type: sahara.cluster.health
- traits:
- created_at:
- fields: payload.created_at
- type: datetime
- health_check_description:
- fields: payload.health_check_description
- health_check_name:
- fields: payload.health_check_name
+ traits: &sahara_health
+ <<: *sahara_crud
+ verification_id:
+ fields: payload.verification_id
health_check_status:
fields: payload.health_check_status
- project_id:
- fields: payload.project_id
- resource_id:
- fields: payload.cluster_id
+ health_check_name:
+ fields: payload.health_check_name
+ health_check_description:
+ fields: payload.health_check_description
+ created_at:
+ type: datetime
+ fields: payload.created_at
updated_at:
- fields: payload.updated_at
type: datetime
- user_id:
- fields: _context_user_id
- verification_id:
- fields: payload.verification_id
- - event_type:
- - identity.user.*
- - identity.project.*
- - identity.group.*
- - identity.role.*
- - 'identity.OS-TRUST:trust.*'
- - identity.region.*
- - identity.service.*
- - identity.endpoint.*
- - identity.policy.*
- traits:
- domain_id:
- fields: payload.initiator.domain_id
+ fields: payload.updated_at
+ - event_type: ['identity.user.*', 'identity.project.*', 'identity.group.*', 'identity.role.*', 'identity.OS-TRUST:trust.*',
+ 'identity.region.*', 'identity.service.*', 'identity.endpoint.*', 'identity.policy.*']
+ traits: &identity_crud
+ resource_id:
+ fields: payload.resource_info
initiator_id:
fields: payload.initiator.id
project_id:
fields: payload.initiator.project_id
- resource_id:
- fields: payload.resource_info
+ domain_id:
+ fields: payload.initiator.domain_id
- event_type: identity.role_assignment.*
- traits:
- domain:
- fields: payload.domain
- group:
- fields: payload.group
- project:
- fields: payload.project
+ traits: &identity_role_assignment
role:
fields: payload.role
+ group:
+ fields: payload.group
+ domain:
+ fields: payload.domain
user:
fields: payload.user
+ project:
+ fields: payload.project
- event_type: identity.authenticate
- traits:
- action:
- fields: payload.action
- eventTime:
- fields: payload.eventTime
- eventType:
- fields: payload.eventType
+ traits: &identity_authenticate
+ typeURI:
+ fields: payload.typeURI
id:
fields: payload.id
- initiator_host_addr:
- fields: payload.initiator.host.address
- initiator_host_agent:
- fields: payload.initiator.host.agent
+ action:
+ fields: payload.action
+ eventType:
+ fields: payload.eventType
+ eventTime:
+ fields: payload.eventTime
+ outcome:
+ fields: payload.outcome
+ initiator_typeURI:
+ fields: payload.initiator.typeURI
initiator_id:
fields: payload.initiator.id
initiator_name:
fields: payload.initiator.name
- initiator_typeURI:
- fields: payload.initiator.typeURI
- observer_id:
- fields: payload.observer.id
- observer_typeURI:
- fields: payload.observer.typeURI
- outcome:
- fields: payload.outcome
- target_id:
- fields: payload.target.id
+ initiator_host_agent:
+ fields: payload.initiator.host.agent
+ initiator_host_addr:
+ fields: payload.initiator.host.address
target_typeURI:
fields: payload.target.typeURI
+ target_id:
+ fields: payload.target.id
+ observer_typeURI:
+ fields: payload.observer.typeURI
+ observer_id:
+ fields: payload.observer.id
+ - event_type: objectstore.http.request
+ traits: &objectstore_request
typeURI:
fields: payload.typeURI
- - event_type: objectstore.http.request
- traits:
+ id:
+ fields: payload.id
action:
fields: payload.action
- eventTime:
- fields: payload.eventTime
eventType:
fields: payload.eventType
- id:
- fields: payload.id
+ eventTime:
+ fields: payload.eventTime
+ outcome:
+ fields: payload.outcome
+ initiator_typeURI:
+ fields: payload.initiator.typeURI
initiator_id:
fields: payload.initiator.id
initiator_project_id:
fields: payload.initiator.project_id
- initiator_typeURI:
- fields: payload.initiator.typeURI
- observer_id:
- fields: payload.observer.id
- outcome:
- fields: payload.outcome
- target_action:
- fields: payload.target.action
+ target_typeURI:
+ fields: payload.target.typeURI
target_id:
fields: payload.target.id
- target_metadata_container:
- fields: payload.target.metadata.container
- target_metadata_object:
- fields: payload.target.metadata.object
+ target_action:
+ fields: payload.target.action
target_metadata_path:
fields: payload.target.metadata.path
target_metadata_version:
fields: payload.target.metadata.version
- target_typeURI:
- fields: payload.target.typeURI
- typeURI:
- fields: payload.typeURI
- - event_type:
- - network.*
- - subnet.*
- - port.*
- - router.*
- - floatingip.*
- - pool.*
- - vip.*
- - member.*
- - health_monitor.*
- - healthmonitor.*
- - listener.*
- - loadbalancer.*
- - firewall.*
- - firewall_policy.*
- - firewall_rule.*
- - vpnservice.*
- - ipsecpolicy.*
- - ikepolicy.*
- - ipsec_site_connection.*
- traits:
- project_id:
- fields: _context_tenant_id
+ target_metadata_container:
+ fields: payload.target.metadata.container
+ target_metadata_object:
+ fields: payload.target.metadata.object
+ observer_id:
+ fields: payload.observer.id
+ - event_type: ['network.*', 'subnet.*', 'port.*', 'router.*', 'floatingip.*', 'pool.*', 'vip.*', 'member.*', 'health_monitor.*', 'healthmonitor.*', 'listener.*', 'loadbalancer.*', 'firewall.*', 'firewall_policy.*', 'firewall_rule.*', 'vpnservice.*', 'ipsecpolicy.*', 'ikepolicy.*', 'ipsec_site_connection.*']
+ traits: &network_traits
user_id:
- fields: _context_user_id
+ fields: ctxt.user_id
+ project_id:
+ fields: ctxt.tenant_id
- event_type: network.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.network.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.network.id', 'payload.id']
- event_type: subnet.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.subnet.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.subnet.id', 'payload.id']
- event_type: port.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.port.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.port.id', 'payload.id']
- event_type: router.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.router.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.router.id', 'payload.id']
- event_type: floatingip.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.floatingip.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.floatingip.id', 'payload.id']
- event_type: pool.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.pool.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.pool.id', 'payload.id']
- event_type: vip.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.vip.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.vip.id', 'payload.id']
- event_type: member.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.member.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.member.id', 'payload.id']
- event_type: health_monitor.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.health_monitor.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.health_monitor.id', 'payload.id']
- event_type: healthmonitor.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.healthmonitor.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.healthmonitor.id', 'payload.id']
- event_type: listener.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.listener.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.listener.id', 'payload.id']
- event_type: loadbalancer.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.loadbalancer.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.loadbalancer.id', 'payload.id']
- event_type: firewall.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.firewall.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.firewall.id', 'payload.id']
- event_type: firewall_policy.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.firewall_policy.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.firewall_policy.id', 'payload.id']
- event_type: firewall_rule.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.firewall_rule.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.firewall_rule.id', 'payload.id']
- event_type: vpnservice.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.vpnservice.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.vpnservice.id', 'payload.id']
- event_type: ipsecpolicy.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.ipsecpolicy.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.ipsecpolicy.id', 'payload.id']
- event_type: ikepolicy.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.ikepolicy.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.ikepolicy.id', 'payload.id']
- event_type: ipsec_site_connection.*
traits:
- project_id:
- fields: _context_tenant_id
+ <<: *network_traits
resource_id:
- fields:
- - payload.ipsec_site_connection.id
- - payload.id
- user_id:
- fields: _context_user_id
+ fields: ['payload.ipsec_site_connection.id', 'payload.id']
- event_type: '*http.*'
- traits:
- action:
- fields: payload.action
- eventTime:
- fields: payload.eventTime
- eventType:
- fields: payload.eventType
- id:
- fields: payload.id
- initiator_host_address:
- fields: payload.initiator.host.address
- initiator_id:
- fields: payload.initiator.id
- initiator_name:
- fields: payload.initiator.name
- initiator_typeURI:
- fields: payload.initiator.typeURI
- observer_id:
- fields: payload.observer.id
- outcome:
- fields: payload.outcome
+ traits: &http_audit
project_id:
fields: payload.initiator.project_id
- requestPath:
- fields: payload.requestPath
- target_id:
- fields: payload.target.id
- target_name:
- fields: payload.target.name
- target_typeURI:
- fields: payload.target.typeURI
- typeURI:
- fields: payload.typeURI
user_id:
fields: payload.initiator.id
- - event_type: '*http.response'
- traits:
- action:
- fields: payload.action
- eventTime:
- fields: payload.eventTime
+ typeURI:
+ fields: payload.typeURI
eventType:
fields: payload.eventType
- id:
- fields: payload.id
- initiator_host_address:
- fields: payload.initiator.host.address
- initiator_id:
- fields: payload.initiator.id
- initiator_name:
- fields: payload.initiator.name
- initiator_typeURI:
- fields: payload.initiator.typeURI
- observer_id:
- fields: payload.observer.id
+ action:
+ fields: payload.action
outcome:
fields: payload.outcome
- project_id:
- fields: payload.initiator.project_id
- reason_code:
- fields: payload.reason.reasonCode
+ id:
+ fields: payload.id
+ eventTime:
+ fields: payload.eventTime
requestPath:
fields: payload.requestPath
+ observer_id:
+ fields: payload.observer.id
target_id:
fields: payload.target.id
- target_name:
- fields: payload.target.name
target_typeURI:
fields: payload.target.typeURI
- typeURI:
- fields: payload.typeURI
- user_id:
+ target_name:
+ fields: payload.target.name
+ initiator_typeURI:
+ fields: payload.initiator.typeURI
+ initiator_id:
fields: payload.initiator.id
- - event_type:
- - dns.domain.create
- - dns.domain.update
- - dns.domain.delete
+ initiator_name:
+ fields: payload.initiator.name
+ initiator_host_address:
+ fields: payload.initiator.host.address
+ - event_type: '*http.response'
traits:
- action:
- fields: payload.action
- created_at:
- fields: payload.created_at
- description:
- fields: payload.description
- email:
- fields: payload.email
- expire:
- fields: payload.expire
- name:
- fields: payload.name
- parent_domain_id:
- fields: parent_domain_id
- resource_id:
- fields: payload.id
- retry:
- fields: payload.retry
- serial:
- fields: payload.serial
+ <<: *http_audit
+ reason_code:
+ fields: payload.reason.reasonCode
+ - event_type: ['dns.domain.create', 'dns.domain.update', 'dns.domain.delete']
+ traits: &dns_domain_traits
status:
fields: payload.status
- ttl:
- fields: payload.ttl
- updated_at:
- fields: payload.updated_at
- version:
- fields: payload.version
- - event_type: dns.domain.exists
- traits:
- action:
- fields: payload.action
- audit_period_beginning:
- fields: payload.audit_period_beginning
- type: datetime
- audit_period_ending:
- fields: payload.audit_period_ending
- type: datetime
- created_at:
- fields: payload.created_at
+ retry:
+ fields: payload.retry
description:
fields: payload.description
- email:
- fields: payload.email
expire:
fields: payload.expire
- name:
- fields: payload.name
- parent_domain_id:
- fields: parent_domain_id
- resource_id:
- fields: payload.id
- retry:
- fields: payload.retry
- serial:
- fields: payload.serial
- status:
- fields: payload.status
+ email:
+ fields: payload.email
ttl:
- fields: payload.ttl
- updated_at:
- fields: payload.updated_at
- version:
- fields: payload.version
- - event_type: trove.*
- traits:
- created_at:
- fields: payload.created_at
- type: datetime
- instance_name:
- fields: payload.instance_name
- instance_type:
- fields: payload.instance_type
- instance_type_id:
- fields: payload.instance_type_id
- launched_at:
- fields: payload.launched_at
- type: datetime
- nova_instance_id:
- fields: payload.nova_instance_id
- region:
- fields: payload.region
- resource_id:
- fields: payload.instance_id
- service_id:
- fields: payload.service_id
- state:
- fields: payload.state
- user_id:
- fields: payload.user_id
- - event_type:
- - trove.instance.create
- - trove.instance.modify_volume
- - trove.instance.modify_flavor
- - trove.instance.delete
- traits:
- availability_zone:
- fields: payload.availability_zone
- instance_size:
- fields: payload.instance_size
- type: int
- name:
- fields: payload.name
- nova_volume_id:
- fields: payload.nova_volume_id
- volume_size:
- fields: payload.volume_size
- type: int
- - event_type: trove.instance.create
- traits:
- availability_zone:
- fields: payload.availability_zone
- created_at:
- fields: payload.created_at
- type: datetime
- instance_name:
- fields: payload.instance_name
- instance_size:
- fields: payload.instance_size
- type: int
- instance_type:
- fields: payload.instance_type
- instance_type_id:
- fields: payload.instance_type_id
- launched_at:
- fields: payload.launched_at
- type: datetime
- name:
- fields: payload.name
- nova_instance_id:
- fields: payload.nova_instance_id
- nova_volume_id:
- fields: payload.nova_volume_id
- region:
- fields: payload.region
- resource_id:
- fields: payload.instance_id
- service_id:
- fields: payload.service_id
- state:
- fields: payload.state
- user_id:
- fields: payload.user_id
- volume_size:
- fields: payload.volume_size
- type: int
- - event_type: trove.instance.modify_volume
- traits:
- availability_zone:
- fields: payload.availability_zone
- created_at:
- fields: payload.created_at
- type: datetime
- instance_name:
- fields: payload.instance_name
- instance_size:
- fields: payload.instance_size
- type: int
- instance_type:
- fields: payload.instance_type
- instance_type_id:
- fields: payload.instance_type_id
- launched_at:
- fields: payload.launched_at
- type: datetime
- modify_at:
- fields: payload.modify_at
- type: datetime
- name:
- fields: payload.name
- nova_instance_id:
- fields: payload.nova_instance_id
- nova_volume_id:
- fields: payload.nova_volume_id
- old_volume_size:
- fields: payload.old_volume_size
- type: int
- region:
- fields: payload.region
- resource_id:
- fields: payload.instance_id
- service_id:
- fields: payload.service_id
- state:
- fields: payload.state
- user_id:
- fields: payload.user_id
- volume_size:
- fields: payload.volume_size
- type: int
- - event_type: trove.instance.modify_flavor
- traits:
- availability_zone:
- fields: payload.availability_zone
+ fields: payload.ttl
+ action:
+ fields: payload.action
+ name:
+ fields: payload.name
+ resource_id:
+ fields: payload.id
created_at:
fields: payload.created_at
+ updated_at:
+ fields: payload.updated_at
+ version:
+ fields: payload.version
+ parent_domain_id:
+ fields: parent_domain_id
+ serial:
+ fields: payload.serial
+ - event_type: dns.domain.exists
+ traits:
+ <<: *dns_domain_traits
+ audit_period_beginning:
type: datetime
- instance_name:
- fields: payload.instance_name
- instance_size:
- fields: payload.instance_size
- type: int
+ fields: payload.audit_period_beginning
+ audit_period_ending:
+ type: datetime
+ fields: payload.audit_period_ending
+ - event_type: trove.*
+ traits: &trove_base_traits
+ state:
+ fields: payload.state_description
instance_type:
fields: payload.instance_type
+ user_id:
+ fields: payload.user_id
+ resource_id:
+ fields: payload.instance_id
instance_type_id:
fields: payload.instance_type_id
launched_at:
- fields: payload.launched_at
- type: datetime
- modify_at:
- fields: payload.modify_at
type: datetime
- name:
- fields: payload.name
+ fields: payload.launched_at
+ instance_name:
+ fields: payload.instance_name
+ state:
+ fields: payload.state
nova_instance_id:
fields: payload.nova_instance_id
- nova_volume_id:
- fields: payload.nova_volume_id
- old_instance_size:
- fields: payload.old_instance_size
- type: int
- region:
- fields: payload.region
- resource_id:
- fields: payload.instance_id
service_id:
fields: payload.service_id
- state:
- fields: payload.state
- user_id:
- fields: payload.user_id
- volume_size:
- fields: payload.volume_size
- type: int
- - event_type: trove.instance.delete
- traits:
- availability_zone:
- fields: payload.availability_zone
created_at:
- fields: payload.created_at
- type: datetime
- deleted_at:
- fields: payload.deleted_at
type: datetime
- instance_name:
- fields: payload.instance_name
+ fields: payload.created_at
+ region:
+ fields: payload.region
+ - event_type: ['trove.instance.create', 'trove.instance.modify_volume', 'trove.instance.modify_flavor', 'trove.instance.delete']
+ traits: &trove_common_traits
+ name:
+ fields: payload.name
+ availability_zone:
+ fields: payload.availability_zone
instance_size:
+ type: int
fields: payload.instance_size
+ volume_size:
type: int
- instance_type:
- fields: payload.instance_type
- instance_type_id:
- fields: payload.instance_type_id
- launched_at:
- fields: payload.launched_at
- type: datetime
- name:
- fields: payload.name
- nova_instance_id:
- fields: payload.nova_instance_id
+ fields: payload.volume_size
nova_volume_id:
fields: payload.nova_volume_id
- region:
- fields: payload.region
- resource_id:
- fields: payload.instance_id
- service_id:
- fields: payload.service_id
- state:
- fields: payload.state
- user_id:
- fields: payload.user_id
- volume_size:
- fields: payload.volume_size
- type: int
- - event_type: trove.instance.exists
+ - event_type: trove.instance.create
traits:
- audit_period_beginning:
- fields: payload.audit_period_beginning
+ <<: [*trove_base_traits, *trove_common_traits]
+ - event_type: trove.instance.modify_volume
+ traits:
+ <<: [*trove_base_traits, *trove_common_traits]
+ old_volume_size:
+ type: int
+ fields: payload.old_volume_size
+ modify_at:
type: datetime
- audit_period_ending:
- fields: payload.audit_period_ending
+ fields: payload.modify_at
+ - event_type: trove.instance.modify_flavor
+ traits:
+ <<: [*trove_base_traits, *trove_common_traits]
+ old_instance_size:
+ type: int
+ fields: payload.old_instance_size
+ modify_at:
type: datetime
- created_at:
- fields: payload.created_at
+ fields: payload.modify_at
+ - event_type: trove.instance.delete
+ traits:
+ <<: [*trove_base_traits, *trove_common_traits]
+ deleted_at:
type: datetime
+ fields: payload.deleted_at
+ - event_type: trove.instance.exists
+ traits:
+ <<: *trove_base_traits
display_name:
fields: payload.display_name
- instance_name:
- fields: payload.instance_name
- instance_type:
- fields: payload.instance_type
- instance_type_id:
- fields: payload.instance_type_id
- launched_at:
- fields: payload.launched_at
+ audit_period_beginning:
type: datetime
- nova_instance_id:
- fields: payload.nova_instance_id
- region:
- fields: payload.region
- resource_id:
- fields: payload.instance_id
- service_id:
- fields: payload.service_id
- state:
- fields: payload.state
- user_id:
- fields: payload.user_id
+ fields: payload.audit_period_beginning
+ audit_period_ending:
+ type: datetime
+ fields: payload.audit_period_ending
- event_type: profiler.*
traits:
- base_id:
- fields: payload.base_id
- db.params:
- fields: payload.info.db.params
- db.statement:
- fields: payload.info.db.statement
- host:
- fields: payload.info.host
- method:
- fields: payload.info.request.method
+ project:
+ fields: payload.project
+ service:
+ fields: payload.service
name:
fields: payload.name
+ base_id:
+ fields: payload.base_id
+ trace_id:
+ fields: payload.trace_id
parent_id:
fields: payload.parent_id
+ timestamp:
+ fields: payload.timestamp
+ host:
+ fields: payload.info.host
path:
fields: payload.info.request.path
- project:
- fields: payload.project
query:
fields: payload.info.request.query
+ method:
+ fields: payload.info.request.method
scheme:
fields: payload.info.request.scheme
- service:
- fields: payload.service
- timestamp:
- fields: payload.timestamp
- trace_id:
- fields: payload.trace_id
- - event_type: magnum.bay.*
- traits:
- action:
- fields: payload.action
- eventTime:
- fields: payload.eventTime
- eventType:
- fields: payload.eventType
+ db.statement:
+ fields: payload.info.db.statement
+ db.params:
+ fields: payload.info.db.params
+ - event_type: 'magnum.bay.*'
+ traits: &magnum_bay_crud
id:
fields: payload.id
- initiator_host_address:
- fields: payload.initiator.host.address
- initiator_host_agent:
- fields: payload.initiator.host.agent
+ typeURI:
+ fields: payload.typeURI
+ eventType:
+ fields: payload.eventType
+ eventTime:
+ fields: payload.eventTime
+ action:
+ fields: payload.action
+ outcome:
+ fields: payload.outcome
initiator_id:
fields: payload.initiator.id
- initiator_name:
- fields: payload.initiator.name
initiator_typeURI:
fields: payload.initiator.typeURI
- observer_id:
- fields: payload.observer.id
- observer_typeURI:
- fields: payload.observer.typeURI
- outcome:
- fields: payload.outcome
+ initiator_name:
+ fields: payload.initiator.name
+ initiator_host_agent:
+ fields: payload.initiator.host.agent
+ initiator_host_address:
+ fields: payload.initiator.host.address
target_id:
fields: payload.target.id
target_typeURI:
fields: payload.target.typeURI
- typeURI:
- fields: payload.typeURI
+ observer_id:
+ fields: payload.observer.id
+ observer_typeURI:
+ fields: payload.observer.typeURI
+ meters:
+ metric:
+ # Image
+ - name: "image.size"
+ event_type:
+ - "image.upload"
+ - "image.delete"
+ - "image.update"
+ type: "gauge"
+ unit: B
+ volume: $.payload.size
+ resource_id: $.payload.id
+ project_id: $.payload.owner
+ - name: "image.download"
+ event_type: "image.send"
+ type: "delta"
+ unit: "B"
+ volume: $.payload.bytes_sent
+ resource_id: $.payload.image_id
+ user_id: $.payload.receiver_user_id
+ project_id: $.payload.receiver_tenant_id
+ - name: "image.serve"
+ event_type: "image.send"
+ type: "delta"
+ unit: "B"
+ volume: $.payload.bytes_sent
+ resource_id: $.payload.image_id
+ project_id: $.payload.owner_id
+ - name: 'volume.size'
+ event_type:
+ - 'volume.exists'
+ - 'volume.create.*'
+ - 'volume.delete.*'
+ - 'volume.resize.*'
+ - 'volume.attach.*'
+ - 'volume.detach.*'
+ - 'volume.update.*'
+ type: 'gauge'
+ unit: 'GB'
+ volume: $.payload.size
+ user_id: $.payload.user_id
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.volume_id
+ metadata:
+ display_name: $.payload.display_name
+ volume_type: $.payload.volume_type
+ - name: 'snapshot.size'
+ event_type:
+ - 'snapshot.exists'
+ - 'snapshot.create.*'
+ - 'snapshot.delete.*'
+ type: 'gauge'
+ unit: 'GB'
+ volume: $.payload.volume_size
+ user_id: $.payload.user_id
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.snapshot_id
+ metadata:
+ display_name: $.payload.display_name
+ - name: 'backup.size'
+ event_type:
+ - 'backup.exists'
+ - 'backup.create.*'
+ - 'backup.delete.*'
+ - 'backup.restore.*'
+ type: 'gauge'
+ unit: 'GB'
+ volume: $.payload.size
+ user_id: $.payload.user_id
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.backup_id
+ metadata:
+ display_name: $.payload.display_name
+ # Magnum
+ - name: $.payload.metrics.[*].name
+ event_type: 'magnum.bay.metrics.*'
+ type: 'gauge'
+ unit: $.payload.metrics.[*].unit
+ volume: $.payload.metrics.[*].value
+ user_id: $.payload.user_id
+ project_id: $.payload.project_id
+ resource_id: $.payload.resource_id
+ lookup: ['name', 'unit', 'volume']
+ # Swift
+ - name: $.payload.measurements.[*].metric.[*].name
+ event_type: 'objectstore.http.request'
+ type: 'delta'
+ unit: $.payload.measurements.[*].metric.[*].unit
+ volume: $.payload.measurements.[*].result
+ resource_id: $.payload.target.id
+ user_id: $.payload.initiator.id
+ project_id: $.payload.initiator.project_id
+ lookup: ['name', 'unit', 'volume']
+ - name: 'memory'
+ event_type: 'compute.instance.*'
+ type: 'gauge'
+ unit: 'MB'
+ volume: $.payload.memory_mb
+ user_id: $.payload.user_id
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.instance_id
+ user_metadata: $.payload.metadata
+ metadata: &instance_meta
+ host: $.payload.host
+ flavor_id: $.payload.instance_flavor_id
+ flavor_name: $.payload.instance_type
+ display_name: $.payload.display_name
+ host: $.payload.host
+ image_ref: $.payload.image_meta.base_image_ref
+ - name: 'vcpus'
+ event_type: 'compute.instance.*'
+ type: 'gauge'
+ unit: 'vcpu'
+ volume: $.payload.vcpus
+ user_id: $.payload.user_id
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.instance_id
+ user_metadata: $.payload.metadata
+ metadata:
+ <<: *instance_meta
+ - name: 'compute.instance.booting.time'
+ event_type: 'compute.instance.create.end'
+ type: 'gauge'
+ unit: 'sec'
+ volume:
+ fields: [$.payload.created_at, $.payload.launched_at]
+ plugin: 'timedelta'
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.instance_id
+ user_metadata: $.payload.metadata
+ metadata:
+ <<: *instance_meta
+ - name: 'disk.root.size'
+ event_type: 'compute.instance.*'
+ type: 'gauge'
+ unit: 'GB'
+ volume: $.payload.root_gb
+ user_id: $.payload.user_id
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.instance_id
+ user_metadata: $.payload.metadata
+ metadata:
+ <<: *instance_meta
+ - name: 'disk.ephemeral.size'
+ event_type: 'compute.instance.*'
+ type: 'gauge'
+ unit: 'GB'
+ volume: $.payload.ephemeral_gb
+ user_id: $.payload.user_id
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.instance_id
+ user_metadata: $.payload.metadata
+ metadata:
+ <<: *instance_meta
+ - name: 'bandwidth'
+ event_type: 'l3.meter'
+ type: 'delta'
+ unit: 'B'
+ volume: $.payload.bytes
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.label_id
+ - name: 'compute.node.cpu.frequency'
+ event_type: 'compute.metrics.update'
+ type: 'gauge'
+ unit: 'MHz'
+ volume: $.payload.metrics[?(@.name='cpu.frequency')].value
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.frequency')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.frequency')].source
+ - name: 'compute.node.cpu.user.time'
+ event_type: 'compute.metrics.update'
+ type: 'cumulative'
+ unit: 'ns'
+ volume: $.payload.metrics[?(@.name='cpu.user.time')].value
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.user.time')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.user.time')].source
+ - name: 'compute.node.cpu.kernel.time'
+ event_type: 'compute.metrics.update'
+ type: 'cumulative'
+ unit: 'ns'
+ volume: $.payload.metrics[?(@.name='cpu.kernel.time')].value
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.kernel.time')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.kernel.time')].source
+ - name: 'compute.node.cpu.idle.time'
+ event_type: 'compute.metrics.update'
+ type: 'cumulative'
+ unit: 'ns'
+ volume: $.payload.metrics[?(@.name='cpu.idle.time')].value
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.idle.time')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.idle.time')].source
+ - name: 'compute.node.cpu.iowait.time'
+ event_type: 'compute.metrics.update'
+ type: 'cumulative'
+ unit: 'ns'
+ volume: $.payload.metrics[?(@.name='cpu.iowait.time')].value
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.iowait.time')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.iowait.time')].source
+ - name: 'compute.node.cpu.kernel.percent'
+ event_type: 'compute.metrics.update'
+ type: 'gauge'
+ unit: 'percent'
+ volume: $.payload.metrics[?(@.name='cpu.kernel.percent')].value * 100
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.kernel.percent')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.kernel.percent')].source
+ - name: 'compute.node.cpu.idle.percent'
+ event_type: 'compute.metrics.update'
+ type: 'gauge'
+ unit: 'percent'
+ volume: $.payload.metrics[?(@.name='cpu.idle.percent')].value * 100
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.idle.percent')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.idle.percent')].source
+ - name: 'compute.node.cpu.user.percent'
+ event_type: 'compute.metrics.update'
+ type: 'gauge'
+ unit: 'percent'
+ volume: $.payload.metrics[?(@.name='cpu.user.percent')].value * 100
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.user.percent')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.user.percent')].source
+ - name: 'compute.node.cpu.iowait.percent'
+ event_type: 'compute.metrics.update'
+ type: 'gauge'
+ unit: 'percent'
+ volume: $.payload.metrics[?(@.name='cpu.iowait.percent')].value * 100
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.iowait.percent')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.iowait.percent')].source
+ - name: 'compute.node.cpu.percent'
+ event_type: 'compute.metrics.update'
+ type: 'gauge'
+ unit: 'percent'
+ volume: $.payload.metrics[?(@.name='cpu.percent')].value * 100
+ resource_id: $.payload.host + "_" + $.payload.nodename
+ timestamp: $.payload.metrics[?(@.name='cpu.percent')].timestamp
+ metadata:
+ event_type: $.event_type
+ host: $.publisher_id
+ source: $.payload.metrics[?(@.name='cpu.percent')].source
+ # Identity
+ # NOTE(gordc): hack because jsonpath-rw-ext can't concat starting with string.
+ - name: $.payload.outcome - $.payload.outcome + 'identity.authenticate.' + $.payload.outcome
+ type: 'delta'
+ unit: 'user'
+ volume: 1
+ event_type:
+ - 'identity.authenticate'
+ resource_id: $.payload.initiator.id
+ user_id: $.payload.initiator.id
+ # DNS
+ - name: 'dns.domain.exists'
+ event_type: 'dns.domain.exists'
+ type: 'cumulative'
+ unit: 's'
+ volume:
+ fields: [$.payload.audit_period_beginning, $.payload.audit_period_ending]
+ plugin: 'timedelta'
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.id
+ user_id: $.ctxt.user
+ metadata:
+ status: $.payload.status
+ pool_id: $.payload.pool_id
+ host: $.publisher_id
+ # Trove
+ - name: 'trove.instance.exists'
+ event_type: 'trove.instance.exists'
+ type: 'cumulative'
+ unit: 's'
+ volume:
+ fields: [$.payload.audit_period_beginning, $.payload.audit_period_ending]
+ plugin: 'timedelta'
+ project_id: $.payload.tenant_id
+ resource_id: $.payload.instance_id
+ user_id: $.payload.user_id
+ metadata:
+ nova_instance_id: $.payload.nova_instance_id
+ state: $.payload.state
+ service_id: $.payload.service_id
+ instance_type: $.payload.instance_type
+ instance_type_id: $.payload.instance_type_id
+ # Manila
+ - name: 'manila.share.size'
+ event_type:
+ - 'share.create.*'
+ - 'share.delete.*'
+ - 'share.extend.*'
+ - 'share.shrink.*'
+ type: 'gauge'
+ unit: 'GB'
+ volume: $.payload.size
+ user_id: $.payload.user_id
+ project_id: $.payload.project_id
+ resource_id: $.payload.share_id
+ metadata:
+ name: $.payload.name
+ host: $.payload.host
+ status: $.payload.status
+ availability_zone: $.payload.availability_zone
+ protocol: $.payload.proto
event_pipeline:
sinks:
- name: event_sink
@@ -1620,6 +1553,22 @@ dependencies:
service: mongodb
- endpoint: internal
service: metric
+ ipmi:
+ jobs:
+ - ceilometer-db-init-mongodb
+ - ceilometer-db-sync
+ - ceilometer-rabbit-init
+ - ceilometer-ks-user
+ - ceilometer-ks-endpoints
+ services:
+ - endpoint: internal
+ service: identity
+ - endpoint: internal
+ service: oslo_db
+ - endpoint: internal
+ service: mongodb
+ - endpoint: internal
+ service: metric
collector:
jobs:
- ceilometer-db-init-mongodb
@@ -1928,6 +1877,9 @@ pod:
ceilometer_central:
init_container: null
ceilometer_central:
+ ceilometer_ipmi:
+ init_container: null
+ ceilometer_ipmi:
ceilometer_collector:
init_container: null
ceilometer_collector:
@@ -1996,6 +1948,13 @@ pod:
limits:
memory: "1024Mi"
cpu: "2000m"
+ ipmi:
+ requests:
+ memory: "124Mi"
+ cpu: "100m"
+ limits:
+ memory: "1024Mi"
+ cpu: "2000m"
jobs:
db_init:
requests:
@@ -2068,6 +2027,7 @@ manifests:
deployment_central: true
deployment_collector: true
daemonset_compute: true
+ daemonset_ipmi: true
deployment_notification: true
ingress_api: true
job_bootstrap: true
--
1.8.3.1