找回密码
 注册
查看: 2785|回复: 1

kolla安装collectd+influxdb+grafana监控虚拟机状态

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-2 17:00:28 | 显示全部楼层 |阅读模式
collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。6 W5 P, n2 ~+ ?) b. {" [9 J2 A9 u
influxdb 是一个时序数据库。* `+ r- @2 I( Y8 b6 \
grafana是一个前端展示工具。
可以使用collectd 的virt插件通过Libvirtd 的API 收集虚拟机的数据,然后保存到时序数据库influxdb。最后通过grafana将influxdb中存储的数据以图标的形式展示出来。
一、部署 collectd influxdb grafana prometheus
' e' k# t! o8 D6 ?; X/ D" i( k1.修改全局配置globals.yml文件,设置部署监控相关文件。
vim /etc/kolla/globals.yml& f& ?1 C! y3 m: W/ Z% m; F3 P
7 Z3 c% s4 \* f2 a
enable_collectd: "yes"
1 N; u( B0 }# y# {- Penable_grafana: "yes"
7 }8 E0 o* x2 _enable_influxdb: "yes"& s4 U8 ~+ o  ~/ \
enable_prometheus: "yes"* |. t$ {2 F6 Q# a: ?2 F0 j
prometheus_cmdline_extras: "-storage.local.retention 720h"% X5 b8 Q9 W, Q1 b# @" y4 N

/ z: w) }9 U6 N5 X) ]prometheus-server 数据保存30天 单位d无法识别。可以附加的参数 可参考https://blog.csdn.net/dengxiangbao3167/article/details/102365367
相应的prometheus的exporter包含
#enable_prometheus_haproxy_exporter: "{{ enable_haproxy | bool }}"
/ d! M' ]+ |& \: o. m#enable_prometheus_mysqld_exporter: "{{ enable_mariadb | bool }}"
6 |  a) d3 e3 X% F. _8 x; r; V#enable_prometheus_node_exporter: "{{ enable_prometheus | bool }}"
4 L& z* E" B' l! e#enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}"
" }- O5 b; k7 U. v/ p' n#enable_prometheus_memcached: "{{ enable_prometheus | bool }}"
; h# R% C5 _0 [( M- P* `8 Y#enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"
0 M# u' H1 i, _1 X9 x#enable_prometheus_ceph_mgr_exporter: "{{ enable_prometheus | bool and enable_ceph | bool }}"
7 }/ b5 y0 o0 g/ M3 K/ f#enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"
* t* l6 d# t8 h#enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}"
( T  y% S7 E4 u2 |( u#enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}"
3 ?1 C3 W- q" Z. a/ {' P) @/ I5 L# |  v% e' r: E- X3 v
2.安装部署相应的容器组件
kolla-ansible deploy -i /etc/kolla/all-in-one   C& E, o( O0 v% f: E6 u# I( l
11 |! _- b* z2 H1 J% f* Y! w& K% c
3.完成后查看相关组件docker容器是否部署完成
docker ps -a | grep -e collectd -e influxdb -e grafana -e prometheus
# E4 f8 j6 }4 R/ a9 X  L; F1
( F) a: ^' G0 F* x6 j
二、修改相应配置文件,通过libvirt监控虚拟机
/ B+ W$ E7 p( I3 p  y4 M# O2 d) T自定义的配置文件位置,该位置的配置文件会取代默认配置文件。
# The directory to merge custom config files the kolla's config files( e& J( D9 s1 T7 X9 m7 `* [" c
node_custom_config: "/etc/kolla/config", h2 ?! e! r% O

9 b5 B, ^0 e1 |: _8 e, N% Tmkdir /etc/kolla/config
$ q4 H  A6 S1 Q$ D- J' t1  P, Y; e+ t& ^1 [" j" \) c% l( ]
使用kolla部署完成后。默认配置文件是/etc/kolla/<< service name >>/<< config file >>。/ [3 n" V' m! ?8 i6 F. ^1 [
自定义配置文件路径是/etc/kolla/config/,且自定义配置文件一旦设置,就会覆盖且替换原配置文件。
/ h! q) v; A) U* U: a9 I路径可以是
/etc/kolla/config/<< config file >>,
9 v; `! [4 {+ m/etc/kolla/config/<< service name >>/<< config file >>,
# G! i# @* _  I! Q/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>
) H( W* U# j2 f% N' f  I# R3 O4 e! H! V: Y% Q1 B( q
1.collectd 配置4 o0 r( g% r3 k1 V$ J" `. Y$ L8 n
libvirt有不同的虚拟机库, 通过API可以访问控制虚拟机。OpenStack也是通过libvirt的API也控制底层的虚拟机的。
cp /etc/kolla/collectd/collectd.conf /etc/kolla/config/" T; q; U* b2 ~/ `  ?. ?5 ?! ~
vim /etc/kolla/config/collectd.conf
8 T; G; @9 M3 c' ~1
  N* y( \" ~$ L3 }5 i5 c. j1 u2
7 V- I2 N( g7 R8 vFQDNLookup false3 u% p+ g2 B8 u) H5 M
LoadPlugin syslog0 g$ o7 `3 a) D( w
LoadPlugin cpu' d  Z# X5 W8 m( }7 z
LoadPlugin interface
# T3 ~& I2 x8 n7 wLoadPlugin load: X7 F/ H, i' w
LoadPlugin memory
LoadPlugin network
LoadPlugin logfile
" H1 [/ N# X9 D: h- bLoadPlugin virt

7 |! A8 K0 U- K; o# a) `2 y<Plugin network>
4 Y' r9 |; i$ `* H        Server "192.168.199.90" "25826"
- J2 K, V1 b5 ^2 F' ]: c) [, J</Plugin>
7 `* c$ p9 s1 _! Y( H$ j6 L
<Plugin logfile>
- f1 V1 {& U# _        LogLevel info
1 g( r% u8 N& Y* L" U2 ?        File "/var/log/kolla/collectd/collectd.log"
7 A! _: e2 N& U* O( c& m. Z        Timestamp true
  y+ Z) d/ v5 ^- c" v7 }# l& `        PrintSeverity false
# G% b) {( c) W  l% t* }# R</Plugin>

3 i5 w) ]) l$ X9 f9 R" B  u/ [<Plugin virt>; J; h- p0 d5 Y3 {
        Connection "qemu+tcp://192.168.199.90/system"  O1 a5 o4 D/ [. C
        HostnameFormat hostname! t5 U( n1 g. N. u4 B& N
        PluginInstanceFormat uuid  G; f9 K% W$ g6 U3 z, }
        BlockDeviceFormat target
# B0 S' r# c1 }" `        InterfaceFormat name
' f- W/ c: V  j& q4 i! g        ExtraStats "cpu_util"
* h0 n3 Q1 e5 U; i6 d</Plugin>  
5 O) V2 k7 m& a4 n+ `8 p5 i0 `. v6 T" e+ W7 x  B
启用了插件 logfile virt network。logfile是日志插件,virt就是与libvirtd的API通信的插件,network网络插件将收集的数据通过网络发送出去。
network插件设置。
Server "192.168.199.90" "25826"
4 _( q/ E7 _9 _% U1
  c7 K# k: f3 |/ |3 G表示将数据发送到192.168.199.90主机的25826端口。就是下一步设置的influxdb收集collectd数据的主机 端口。
LoadPlugin cpu
$ q+ y, {7 v: D/ O: P1 BLoadPlugin interface
' z) m. b$ D7 M! e! x0 RLoadPlugin load9 x) T* O3 A8 z, r1 h7 X
LoadPlugin memory) U' L! g& o. w5 K9 i$ X/ d
8 @5 O( ^1 d; N" r7 d
这四个插件是用来收集宿主机的信息的。interface可能还会监听了虚拟机虚拟网卡的信息,如果不希望通过interface插件收集虚拟网卡信息(virt插件会收集)。可以设置interface只监听想要监听的网卡名。
<Plugin "interface">
! `+ @2 c* ^" `  Interface "ens33"' l. y* h( y  A# X. e& `
  Interface "ens34"
: [* S/ N% k# j. P+ z</Plugin>* S2 i# l! _9 l. q% B6 y

/ `; u8 z0 D$ Z( j6 q- G) u/ Evirt 插件设置
<Plugin virt>( G- |4 ^  v# ?. J/ M0 a! N
        Connection "qemu+tcp://192.168.199.90/system"- E: G( d; U* Z: N: E- y: {/ I
        HostnameFormat hostname" Q5 ~6 q( B4 a7 J
        PluginInstanceFormat uuid
5 J8 n* ]' G, b6 B) x3 `0 ]+ {        BlockDeviceFormat source
# J! E1 I9 |" v- D% ~; w        BlockDeviceFormatBasename false  }4 j: a  T" A$ j
        InterfaceFormat name
* t' M# a3 l6 l+ T! K3 B        ExtraStats "cpu_util"
1 o# d( T" f: O% |</Plugin>  
; }3 c5 W1 `8 V$ W0 z% o# l. m4 b) X9 e6 }
具体参数详情可以看官网- o  Q0 X3 y) m+ K) v
https://collectd.org/documentati ... 5.shtml#plugin_virt
Connection 表示连接的libvirt API服务。
/ n4 X. h. ^8 `5 `   就像使用qemu+kvm创建虚拟机时使用virsh管理时使用virsh -c qemu+tcp://192.168.199.90:16509/system 8 |* ?: M1 G( d! E$ U( h9 u1 B
   即可连接到libvirtd服务控制虚拟机相关。由于16509是默认端口号,可以省略" J( |* @+ H3 T- N( l: s7 i
   由于是ALLInOne 所以collectd设置只有一个,多个主机部署时,需要每个计算节点上安装collectd指向本机的libvirt。
% K, {* v1 Q5 w   因此每个collectd设置文件都不相同。
HostnameFormat name|uuid|hostname|...
6 P) J/ r- H! X, _8 e% g( m   当virt插件记录数据时,会根据此设置设置所收集数据的主机名。4 |9 ^/ V% a0 K; m
   默认的做法是使用hypervisor提供的来宾名称,这等于设置为虚拟机name。8 l& a! ]! Z/ |5 p
   UUID 意味着使用虚拟机的UUID。如果您想跨迁移跟踪同一个客户,这是很有用的。  a, X7 w7 K9 _$ r
   hostname 意味着使用“全局主机名”设置,这本身可能并不有用,因为所有来宾似乎都有相同的名称。
" z9 t9 {+ u' }" m0 @  \* G   hostname就是宿主机名。。。这个其实挺重要的(在有多个宿主机的虚拟机数剧都保存到一个数据库时,可以通过hostname来确定不同虚拟机在哪一个主机。)
3 y- V& x" a( N3 Q  ]( r" h7 c   至于实例的 名称或UUID 可以使用PluginInstanceFormat来设置
PluginInstanceFormat name|uuid|none. v9 ^. f2 T% j7 O
   当virt插件记录数据时,它会根据此设置设置所收集数据的plugin_instance。默认情况是不设置plugin_instance。(只有一个宿主机时可以直接设置HostnameFormat name来代替PluginInstanceForma的设置)
. @) [; Y0 w3 o$ a$ W! Q! R; k   name是指使用管理程序提供的虚拟机名称。UUID意味着使用虚拟机的UUID。
) \. g6 r! x  B+ S4 n0 ~   OpenStack中是根据uuid来管理虚拟机的,虚拟机在libvirtd中的name和OpenStack中设置的并不一致。libvirtd底层管理是自动生成的,OpenStack中创建时手动命名的。6 o+ }) [* q. K3 b5 W  B- ]+ x
   HostnameFormat和PluginInstanceFormat都可以使用多个fields。如name uuid。会同时显示名称和uuid中间使用 : 分隔。如foo:1234-1234-1234-1234
BlockDeviceFormat target|source
  ?7 p  z: \( f( [  w* v3 x   挂载到虚拟机中的磁盘设备名设置。
0 O7 P: X% j0 \- U   virsh # domblklist instance-0000000a
5 B& e. \: p; \/ C+ @7 m   Target     Source2 |$ N0 p, \  B3 r7 j7 J$ P
   ------------------------------------------------! h( P' ~2 l7 _
   vda        /var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk
7 ^+ f- @, j+ `   vdb        /dev/sdc2 F; \, C0 @  U- J' u% m7 {
   target  是映射到实例中的磁盘名 vda vdb。即实例中可以通过lsblk看到的。7 a. x& S  O; p! U- |2 @3 `7 v0 @- Q
   source 虚拟磁盘对应的路径及磁盘文件名。/var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk /dev/sdc, p! W% o% X' j' S
   如果设置BlockDeviceFormatBasename设置为true,则只显示文件名 不显示前面的路径。 默认未设置BlockDeviceFormatBasename,是false即显示前面路径

+ M$ w9 }" v, _1 V4 {InterfaceFormat name|address) q* G8 {& g" }* J8 J' j4 \( v
   虚拟机的网卡显示 name或者address。name网卡名,address网卡mac地址。
+ `$ z" k( ?6 P( f" b5 d: _6 c     o5 ~9 y: C# u
ExtraStats "cpu_util"
5 l; `- Y  ~( x   virt额外记录的数据。此处只设置了一个cpu_util 即CPU的利用率。* ^/ q* X+ C! v: o) g; f
   virsh # domiflist instance-00000002
$ J$ r) ^8 F% `/ Z% t- }. ]   Interface  Type       Source      Model       MAC' A1 N; N& t( I0 H) Q/ V) T
   -------------------------------------------------------  l( M* @* D4 S. q
   tap97caffeb-9a bridge    qbr97caffeb-9a virtio      fa:16:3e:64:5f:c02 r+ A4 o5 _, M
   interface就是name ,MAC就是address
8 w5 k. K0 S# |' `$ a7 D
这是单个主机ALLinOne下设置配置文件的情况,如果多个计算节点,每个计算节点的collectd的配置文件是不同的,需要单独设置(主要不同就是连接的libvirtd API的IP不同),每个计算节点需要一个collectd收集本计算节点的相应libvirt 数据。
很奇怪的一点,似乎使用kolla部署的collectd容器收集虚拟机数据时无法收集虚拟机的内存信息,只能获取虚拟机全部内存。 直接使用yum安装的collectd却可以收集used,availble 等。。。不知道原因
2.influxdb 配置7 y  _( a7 U0 C7 T/ O
cp /etc/kolla/influxdb/influxdb.conf /etc/kolla/config/# S- W- ^1 y1 R$ X; S
vim /etc/kolla/config/influxdb.conf
5 c* [4 \$ K; L1
1 K2 ]7 @: f) {. n- T! [  V. n2
8 Z' z: N' s+ G; L  h8 [+ B) R7 qreporting-disabled = true
$ N' S( s- L2 L) w, P2 f- T- C[logging]
" d1 g* T- i; X! t, M  level = "info"
. v1 ^4 ~& Z+ A% G  file = "/var/log/kolla/influxdb/influxdb.log"
! V& i" E* Q- E" r( _[meta]' u% z& p% I% a- e
  dir = "/var/lib/influxdb/meta"( g/ O8 [9 s9 g. u- _1 X
  retention-autocreate = true/ m3 z+ u* r% p0 t7 G
  logging-enabled = true
: Z5 J( i( z: E* A, O[data]
% {, C4 Y( `' L0 A; J: v  dir = "/var/lib/influxdb/data"
* `4 j, d) b  u" p/ t+ G* ^8 [  wal-dir = "/var/lib/influxdb/wal"
( u/ i3 J( k) E0 a. @% Q$ |  wal-logging-enabled = true0 @% R2 S1 Z( Q7 u
  data-logging-enabled = true5 |& z  @  ]* {: v7 R
  index-version = "tsi1"
3 V6 a. |3 Q, b; k[coordinator]3 o6 j1 G& k8 p& @
  write-timeout = "10s"
3 \; b2 l8 Q6 o  max-concurrent-queries = 0
' h0 @% l/ r3 t* E) z2 A  query-timeout = "0s"
  {6 t1 |' B) B6 @. ^  max-select-point = 0) H; \1 g8 {% D" ?! P1 Z+ c
  max-select-series = 0
4 l; E% B$ r* [3 h7 M* \! [  max-select-buckets = 0
3 F% H- i5 ~& c+ K' C$ A8 U# L# B9 j[retention]7 G3 R2 Q% P7 e4 n
  enabled = true
# Y6 B0 {4 k+ b3 F  |  check-interval = "30m"
1 e5 O+ c/ H9 v5 b& x[shard-precreation]' c: f* t" {( o/ B
  enabled = true
8 d! o' J2 b, q8 V5 V1 X  check-interval = "10m"/ `4 ~) Z( b2 W3 z1 }5 h, H- y( y
  advance-period = "30m"
! z0 L# i2 K& e  E3 w[monitor]
  R# M6 `1 l$ l% j) m  store-enabled = true
* X3 S( B- _& f5 O( H  store-database = "_internal"# M6 z' {* B$ m3 ~+ x% _
  store-interval = "10s"
& d8 r. e/ Y7 D4 g6 h[http]
# i. N) d- K/ x5 A. b- z# D1 }6 Z  enabled = true
: @/ f. u/ [0 a3 l- k  bind-address = "192.168.199.90:8086": P4 s* i0 M+ e. P8 h, G
  auth-enabled = false2 c, t, K8 S7 V
  log-enabled = true
+ N; L8 n3 l7 s$ J0 }3 p$ ~- a  write-tracing = false
' R9 K' f* e5 W, k$ x/ |  pprof-enabled = false
& t8 {( ~/ B7 Z" Y* r7 I: b) C  https-enabled = false
+ r1 C7 s2 P2 \9 e7 B! ^[[graphite]]
; V5 X) j3 G$ C  p) K' A# ~  enabled = false
1 `0 v4 V5 P; o8 }[[opentsdb]]
0 Y% f2 z( _8 j' A! U0 s9 g( h  enabled = false
$ L3 Y4 d3 P" b5 n[[udp]]! Q. C" T3 P6 H
  enabled = false: l6 ^' [4 D" z% h. i
[continuous_queries]6 o# a9 ^4 Q1 H4 p* y3 _5 x
  log-enabled = true
4 n$ Y. s( n4 c3 P  enabled = true
[[collectd]]
. f" r. H# d, c" g  enabled = true( ^) D) _. ]5 o' a% K
  bind-address = "192.168.199.90:25826"
/ f' @0 V' c: }$ c! r. n  database = "collectd"
, n* s* H& e& X  typesdb = "/var/lib/influxdb/types.db"! ]( G* k" U1 u; j
+ u" V4 U% q7 i* \8 u
主要是添加了 末尾一段。influxdb是可以作为collectd的network Server,可以将collectd发送的数据保存起来。前提是有对应的type.db数据格式。
- j5 C; n) q( F3 Chttps://download.csdn.net/download/dandanfengyun/14989445
[[collectd]]
  g; D7 h( C' ~5 P. ?3 ^  enabled = true4 X" ^8 y4 Z2 [4 {
  bind-address = "192.168.199.90:25826") v: s6 b6 T/ Z/ Y6 P6 `' V4 u# p
  database = "collectd"
. _- s: a4 L7 b, n; t1 ~7 g1 k: q  typesdb = "/var/lib/influxdb/types.db"
4 {" d+ }  U; r, d. i0 l" e# _# L6 m
bind-address = "192.168.199.90:25826"表示监听192.168.199.90主机25827端口的数据。然后保存到库collectd中。数据格式typesdb = “/var/lib/influxdb/types.db”
数据格式文件需要手动添加。部署OpenStack时,对于一些特别的需要存储数据的组件docker,都有相应的docker volume附加卷。直接映射到容器内。 influxdb容器附加卷在宿主机中对应位置
            {% |1 [, u" u' w7 Y" I
                "Type": "volume",
. I$ z0 p+ I1 q5 t5 ^0 a                "Name": "influxdb",3 Z6 X4 |3 }2 `3 j1 g5 R! O  E0 p
                "Source": "/var/lib/docker/volumes/influxdb/_data",
0 Z1 y2 _+ L0 |" ?( @; D2 v8 z                "Destination": "/var/lib/influxdb",
' R' V. b  D( X' [$ m  c                "Driver": "local",. h* l/ ~- i" u) E- h
                "Mode": "rw",8 _% P  S( `* ~8 \) P  g/ L
                "RW": true,
: a1 ]; e: i( m' j& i" b3 X, X                "Propagation": ""% ]/ ^! J0 T; T
            },

' X; L4 O3 G1 ]3 w0 D将文件types.db保存到/var/lib/docker/volumes/influxdb/_data,容器内即可在/var/lib/influxdb位置找到该文件。
docker exec collectd cat /usr/share/collectd/types.db > /var/lib/docker/volumes/influxdb/_data/types.db
. Q/ Z7 q# y* ?) x! _$ ~, P$ X1: D2 q* p$ @9 ~5 c3 g
[root@ALLInOne-Kolla ~]# ls /var/lib/docker/volumes/influxdb/_data/2 w( |& B# j( _3 b7 O( }% f# l3 `: k
data  meta  types.db  wal6 q6 U7 w% A* L9 F8 W2 K% ^* \$ _
1( O. i% i$ V. I- S0 e5 K
2+ y* y( @3 J- R( c! W: Q
3.加载个人配置。
" \0 o, @! S/ b9 c; T/ Fkolla-ansible reconfigure -i /etc/kolla/all-in-one
/ \' k1 N- ]8 T' p1  ?) O! J, k( \5 f1 z# M0 A! h& C
完成后,会使用个人配置替代默认配置。并重启相应的组件容器加载新的配置。
新配置生效之后,最好将influxdb数据库原数据清除一下,因为原数据中会包含一些不符合新配置的数据。
删除库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'
& l! F5 P" V$ `* D  d. v1' g. z9 v5 E4 t0 {9 v
新建库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd '
/ D8 V0 a  n1 \" u6 b. p13 f% z% T; o+ c: q7 i* D# h
有一些配置是无法通过配置文件设置的。如数据保存时间等。可以使用influxdb的api来设置。
, N$ h. U3 x- hhttps://archive.docs.influxdata. ... .2/tools/api/#query
创建库collectd (如果有数据存入,该库会被自动创建的)
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd'
0 i$ a, a3 [$ Q8 @; {; v, P) v+ s1
( R  ?( ], E3 ]9 w查看存储策略 一般是永久保存
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=SHOW RETENTION POLICIES ON collectd'
( [+ L9 x9 ^8 m9 `4 f: E/ q% y2 y17 R9 q' w, {7 P( l; y9 U+ D& a  X
设置新的保存策略 30天 并设置为默认策略
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE RETENTION POLICY "train" ON "collectd" DURATION 720h REPLICATION 1 DEFAULT'% ]& k1 F  C& w
10 ~- l+ u8 C5 |3 e( C5 R
删除旧策略
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP RETENTION POLICY "autogen" ON "collectd"';
11 d9 A& S" u" G8 L6 d8 \( l, v
2
4 \' z8 l8 I, p4.influxdb一些其它的api。
. n1 p) \+ M4 k5 a8 t! s0 v+ `1 X删除数据库
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'* ~! _# s0 u- q4 I
1
0 p8 f1 i$ m) V3 |5 ?1 k9 y查看库 列表
curl -G 'http://192.168.199.90:8086/query?q=SHOW+DATABASES'
$ R+ L" z! w% _" J  z6 N1* O$ `; M4 K+ _+ B
查看库measurements 可以理解为表
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=show measurements'
( N( [) g/ ]0 w# C' v% j12 C9 R) L+ ]! W2 ^* G
查看具体数据
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=select * from virt_rx  limit 10'
# c# j: m2 C8 j" f3 a3 Z/ D: g6 q1
9 S1 R7 Z$ f) r7 d5 T  _prometheus和grafana等暂不需额外配置文件。
三、grafana 根据influxdb中数据生成图表。
+ a2 [8 h& K( Z3 r' K" d9 W8 U和普通的监控虚拟机基本一致。https://blog.csdn.net/dandanfengyun/article/details/112269935
不过由于直接通过libvirt的API监控虚拟机状态。没有经过OpenStack,所以虚拟机的名称无法对应。需要通过虚拟机的UUID来确定。
/ Z7 H) P8 B* \( H8 K连接的是libvirt,也就是计算节点的libvirt。一个collectd只能监听一个计算节点livirtd,多节点部署多个计算节点,需要在每个计算节点安装collectd连接本节点libvirtd。
/ {8 @0 s" X/ R& ^7 U3 H对OpenStack的整体信息,如虚拟机数量等也无法统计。且虚拟机移除后,数据不会随之消失,只是无有新的数据统计。保存策略是永久。
所以需要配合prometheus使用。prometheus_openstack_exporter会获取OpenStack的整体信息。如vm数量,cinder数量,glance的镜像数量等。但是没有具体虚拟机的具体信息 。
1.设置数据源。
/ [! i  P( H7 O# Q+ G登录进grafana http://192.168.199.90:3000 192.168.199.90即grafana组件所在主机IP。
用户 admin。密码可在grafana /etc/kolla/passwords.yml 中找grafana_admin_password
egrep grafana /etc/kolla/passwords.yml
3 ~; B1 Q$ k5 J/ q8 k4 J4 k1" g# f/ X  |, X+ T
登录成功后设置数据源
1.influxdb的collectd数据源
Name:collectd (这个是自定义的grafana数据源名)" l9 F3 e9 u# ^8 I$ o+ G: p
URL : 192.168.199.90:8086
4 ?2 L5 `6 v2 D' n! zDatabase:collectd
完成点Save & Test 即可,成功的话是 Data source is working9 f' y8 p1 i4 k  m3 k
失败查看一下influxdb组件docker容器是否启动,IP端口对不对等。。。
2.prometheus数据源
Name:Prometheus
4 ]# E. s: o1 _- x$ p$ MURL:http://192.168.199.90:9091

/ A& a/ U5 h+ H8 C
2.设置dashboard的变量; y& f4 U2 H( O4 q2 Y+ A1 a
基本上不可能只有一个 虚拟机,且把多个虚拟机的信息一起展示也不合理。所以设置一些变量来确定当前展示的数据是哪一个虚拟机的。

( j0 v" @% d9 R* O6 D9 zhost    SHOW TAG VALUES WITH KEY=host+ L3 ^7 E5 a% @5 t2 \" j3 _
instance_uuid  SHOW TAG VALUES WITH KEY=instance WHERE host='$host': a1 W7 G: u$ q5 Q$ w$ \7 }  F0 q
virt_interface  SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
& V0 P8 j& d/ q4 ]9 \virt_disk   SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
! t% W6 n' d8 W1 e8 j6 Hinstance_name  label_values(openstack_nova_server_status{id="$instance_uuid"}, name)& m6 _6 X& ^& x5 B
- ?! S7 k+ X4 i' s3 J
分别设置宿主机名 虚拟实例uuid 虚拟网卡 虚拟磁盘 以及实例名# X. C2 m" V* P, h2 f9 j
宿主机变量
虚拟机实例uuid变量
: |3 ?7 m" Q- T5 Z
虚拟网卡变量

% y- T' x$ c) R4 K/ c6 X虚拟磁盘变量
实例名

" j: j% V7 i2 `( q/ y5 ohost instance_uuid virt_interface virt_disk都是根据collectd库中数据查询产生
最后一个比较特殊,不应该称之为变量。而应该作为一个展示的文字。是根据host_uuid根据prometheus查询而来。(一个dashboard当然可以使用多个数据源)
由于Libvirtd 的API中显示的实例名是类似于instance-000001这种的,与OpenStack创建时设置的实例名并不一致(UUID一致),所以通过collectd收集的数据 上没有真实的OpenStack的实例名,可以通过Prometheus来获取对应uuid的实例名, 仅在此处使用一次Prometheus数据源。
因此最后一个变量并不能称为变量,实际上是根据uuid通过prometheus查询出的一个值。
3.设置panel。! }, |1 j4 O/ C) n
这个根据influxdb查询语句和grafana使用个人创建即可。

+ e/ \" t9 k  A2 V
4.相关dashboard的json示例。$ ?. Y) R1 E$ q# p1 ^* N  z7 T5 R
这个只是个人保存使用的一个dashboard示例,应该是无法通用的。4 n6 \" u; D+ p
不用重新每次都再重复一遍2,3。导入数据源collectd后直接import该json文件即可
" O4 v+ v. U% c, H1 c! n+ whttps://download.csdn.net/download/dandanfengyun/15073272
创建数据源 略。
点击import导入模板
2 g) [# l! s. g$ c
选择模板文件
& X) {9 ?" A1 b
最终导入

& [' G, l7 f, ?7 V  T8 t5 D
5 f+ X- j7 R% Y7 z9 @+ o
如果Prometheus和influxdb中collectd数据 实例 基本一致,可以设置更多的变量信息。
9 B* _" h8 Y# O, `+ l如 实例不同状态根据Prometheus数据库查询。+ @) h4 r8 s4 E4 W
uuid也使用Prometheus 数据库根据实例状态查询。
+ j7 @2 Z: C4 k  ~其他的数据根据uuid在influxdb的collectd库中查询。
. N; [$ d! X7 B, c" i一致的是,实例名依然只能作为一个展示数据,而不能作为真正变量影响数据展示。
结合了prometheus展示了虚拟机的状态,根据状态查询实例uuid,选择ACTIVE可以避免查询到已经废弃的实例,也可选择SHUTOFF查询已停止运行实例的状态 不好的是也会查到状态是BUILD的实例
不过实例状态查询 重要的就是查询最近一段时间内 活动实例 的状态,因此状态变量选择基本是ACTIVE,只用于筛选出活动的变量即可。& w7 P- d  |2 @$ h  g+ G
且BUILD 状态的实例BUILD状态只会存在很短的时间,最终会转化成ACTIVE。
grafana变量设置
host    宿主机名(influxdb)7 q1 s/ Y+ I7 W6 M  R
SHOW TAG VALUES WITH KEY=host
instance_status  实例状态(prometheus)% R$ b8 I) g4 S5 k
label_values(openstack_nova_server_status{hypervisor_hostname="$host"}, status)
instance_uuid  实例uuid(prometheus)因为此处使用prometheus查询uuid可以根据实例状态查询7 i) J4 b5 l5 K4 T
label_values(openstack_nova_server_status{hypervisor_hostname="$host",status="$instance_status"}, uuid)
virt_interface  实例虚拟网卡(influxdb)
' a' ?5 H. H4 _' ]7 G+ Y SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
virt_disk   实例虚拟磁盘(influxdb)$ A; C# Q) U/ B1 Q- \1 S2 Q. Z
SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
instance_name  实例名(prometheus)& {9 A  V* o/ l$ K2 r  f, p3 G' i
label_values(openstack_nova_server_status{id="$instance_uuid"}, name), R3 A/ L1 z8 C) n

& d& J. i9 o0 Opanel都不用改变。。。。。。
https://download.csdn.net/download/dandanfengyun/15137036
这里有一个问题 不知道理解的对不对。。。1 t% P. v0 K0 C: |; i, @$ a" q
prometheus和collectd都是时序数据库。% A; k; m; F# d6 E# ^1 ^
Prometheus记录的实例信息也是按时间存放多个的。(隔一段时间存放当时的实例状态信息)
grafana变量也是和时间相关的(也就是grafana变量不仅和其他变量相关,也和时间相关)6 I% S1 a2 e' K0 }
也就是说,一个实例的状态信息选择时间段不同,是可能有多个不同的变量的。
, F0 g7 J/ u7 U( ]2 l0 R如变量为实例运行状态 15分钟前关闭了该实例。假设只有两个实例,一个运行 一个15分钟前关闭。
那么选择5分钟前到现在的时间段,变量就有active和shutoff。active的实例只有一个,shutoff的实例也只有一个。
被删除的实例则没有ACTIVE或SHUT OFF状态,但是prometheus和influxdb中都记录了被删除前虚拟实例的运行状况。
但是当选择30分钟前到现在的时间段,变量就有active和shutoff。shutoff的实例还是只有一个,但是active的实例有两个(这个听起来有点那啥),只要记住 prometheus是时序数据库,不能把该变量当成真正的纯粹记录当前实例状态的布尔值。 30前到15分钟前,该实例是active的,15分钟前到现在,该实例是shutoff的,所以该实例有两个运行状态。。。
问题  P6 K6 q9 t9 c( N/ V
collectd 无法通过OpenStack获取用户等信息。如果要使用grafana展示可能要通过prometheus。
4 {8 y! ]! S6 S3 a' f  G) z9 Y  Bgrafana需要通过prometheus和influxdb两个数据源才能展示实例的状态信息。
collectd也无法收集实例 内空间使用占用情况。# Q+ ?0 L6 ^9 u3 i

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-7-2 17:00:29 | 显示全部楼层

ceilometer与gnocchi

ceilometer项目是openstack中用来做计量计费功能的一个组件,后来又逐步发展增加了部分监控采集、告警的功能。由于种种原因,ceilometer项目在Openstack中已经处于一种没落的状态,基本没有什么新的特性开发了,原本该项目的PTL也另起炉灶开始在做Gnocchi项目(ceilometer的后端存储系统)。虽然该项目已经没有前几年活跃,但是还是在很多公有云场景中有比较多的应用,而生产环境中,可能很多公司还用的是M、N版本。1 I% A8 |( O% H1 B. N# U- h
转自

https://blog.csdn.net/mengalong/article/details/81196481

gnocchi解决的问题是大规模地存储和索引时间序列数据和资源。8 h$ f  L( c! [% J( q  A
http://gnocchi.xyz

ceilometer收集虚拟机数据然后将数据存储到gnocchi数据库,最后由grafana 前端展示数据图表。

不过grafana高版本似乎对gnocchi的兼容不足,3-6版本之间的可以实现兼容。grafana6以上的似乎无法兼容 gnocchi 数据源。因此部署时需重新安装6版本以下的grafana实现 gnocchi数据源的添加展示。
) N* g" j/ H+ k8 e: u且ceilometer有时在主机重启后需要重新启动相关服务 才会继续收集数据。

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1
    / ^8 {- Q5 \4 U3 T$ w$ v
部署相关组件

train版本自动安装的grafana 版本7.3.7。无法添加gnocchi的dataresource。。。(一致testing无法成功)% R; n9 K1 Z* p7 l6 {2 w! C
因此想要使用grafana展示gnocchi中数据的话。需要安装更低版本的grafana。  i4 l) t9 J, K$ |* N$ R
如安装6.3.4版本的grafana,端口号设置为3002避免和通过kolla部署的冲突。

编辑配置文件。

vim /etc/kolla/globals.yml
  • 1" c; x+ {" k8 H$ ^/ I( Z# s
enable_ceilometer: "yes"enable_ceilometer_ipmi: "yes"enable_gnocchi: "yes"enable_grafana: "yes"
  • 1
  • 2
  • 3
  • 4
    4 B5 Q6 C2 M: J. d7 X6 O

部署安装

kolla-ansible deploy -i /etc/kolla/all-in-one
  • 1
    * N5 w. E! B4 f7 w" L6 Z

安装完成查看相关容器运行

[root@ALLInOne-Kolla ~]# docker ps -a | grep -e ceilometer -e gnocchi -e grafana0bec855b4a25   kolla/centos-binary-grafana:train                         "dumb-init --single-…"   2 weeks ago   Up 53 minutes             grafanae7edc514bbc8   kolla/centos-binary-ceilometer-ipmi:train                 "dumb-init --single-…"   2 weeks ago   Up 54 minutes             ceilometer_ipmi7f198cc0757e   kolla/centos-binary-ceilometer-compute:train              "dumb-init --single-…"   2 weeks ago   Up 54 minutes             ceilometer_computeddf54797e3ee   kolla/centos-binary-ceilometer-central:train              "dumb-init --single-…"   2 weeks ago   Up 55 minutes             ceilometer_centrald8d3bdb576f3   kolla/centos-binary-ceilometer-notification:train         "dumb-init --single-…"   2 weeks ago   Up 17 minutes             ceilometer_notificationd6c90a4b3bd6   kolla/centos-binary-gnocchi-statsd:train                  "dumb-init --single-…"   2 weeks ago   Up 55 minutes             gnocchi_statsd899e3458d32b   kolla/centos-binary-gnocchi-metricd:train                 "dumb-init --single-…"   2 weeks ago   Up 55 minutes             gnocchi_metricd0e0de420ca0b   kolla/centos-binary-gnocchi-api:train                     "dumb-init --single-…"   2 weeks ago   Up 55 minutes             gnocchi_api

  • ; A: g. z  {  F7 M3 |
安装gnocchiclient 查看数据。

默认部署 ceilometer 数据保存到gnocchi中保存策略是low。基本上5分钟保存一次数据。。。所以数据有时候需要等一下。, T5 N% E) N( I; W
长时间无数据且查看相关容器正常运行后 或者宿主机重启后 建议重启ceilometer_notification容器 可能解决问题。

docker restart ceilometer_notification
  • 1$ x" I) U0 j3 c' j. y- S/ c

或者重启 ceilemeter 相关所有容器

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1
    ; b# K0 u/ J6 [% G! p

1.安装gnocchiclient

pip install gnocchiclient
  • 17 D; [% L0 K) o8 r+ e7 Z/ [3 |5 C

2.加载认证

source /etc/kolla/admin-openrc.sh
  • 1
    ! ^# u! Z* ?  k0 @3 z; n

3.通过gnocchi-api查看gnocchi中存储数据。
* a* s5 a8 i, P3 I5 ^当前采集的资源列表

gnocchi resource list
  • 1
    4 S0 Z* ^; ^7 M8 `; o! V

列出支持资源类别列表

gnocchi resource-type list
  • 1
    6 W% K' Q  n; c1 b" Q: t

列出某个资源的数据采集单元 (resource_ID)

gnocchi metric list | grep 511483be-89a2-4b7e-91b8-41adf4276651
  • 1
    $ _3 p" F9 z1 ^2 s& k  z

显示单个metric的记录数据,(metric_ID)

gnocchi measures show e45156e4-7544-49a1-ab9a-a22fdc1f56e2
  • 1( w/ \$ m7 k  L, i' O3 N

查看帮助

gnocchi --help
  • 1
    4 ~7 P+ |+ H2 f2 j9 Z

或者官网查看http://gnocchi.xyz

[root@ALLInOne-Kolla ~]# gnocchi measures show e45156e4-7544-49a1-ab9a-a22fdc1f56e2+---------------------------+-------------+-----------+| timestamp                 | granularity |     value |+---------------------------+-------------+-----------+| 2021-02-25T13:35:00+08:00 |       300.0 |   82311.0 || 2021-02-25T13:40:00+08:00 |       300.0 |  112481.0 || 2021-02-25T13:45:00+08:00 |       300.0 |  142721.0 || 2021-02-25T13:50:00+08:00 |       300.0 |  172247.0 || 2021-02-25T13:55:00+08:00 |       300.0 |  202557.0 || 2021-02-25T14:00:00+08:00 |       300.0 |  232643.0 || 2021-02-25T14:05:00+08:00 |       300.0 |  262617.0 || 2021-02-25T14:10:00+08:00 |       300.0 |  292409.0 |+---------------------------+-------------+-----------+

  • ( m# n" x6 z' y* {4 R8 ?

数据保存完成且可查看,下一步是通过grafana展示

Grafana展示

安装完成添加gnocchi数据源后使用dashboard模板展示数据。' f# E- }& N, z/ R1 Q8 ~' ?- U4 b
https://grafana.com/grafana/dashboards/12536

使用kolla部署的grafana版本过高 似乎不再支持gnocchi 的数据源插件了。
! F: j1 D  T" d! `9 A  i只好额外安装一个更低版本的grafana软件。6.4.3。。。

yum -y install wgetwget https://dl.grafana.com/oss/release/grafana-6.4.3-1.x86_64.rpm sudo yum -y install grafana-6.4.3-1.x86_64.rpm

  • : q3 g% k$ [+ D) W& g9 y* ^( x

修改 端口为3002,因为kolla部署的grafana容器组件占用了3000

vim /etc/grafana/grafana.ini
  • 14 I3 W) K9 H3 h1 b; `: @1 Z* P
[server]http_port = 3002
  • 1
  • 25 s5 [) m4 x( p5 b! e% B/ J0 [

修改完成 保存。启动grafana6.4.3

systemctl enable grafana-serversystemctl start grafana-server
  • 1
  • 2
    ( a2 }4 c9 d8 k% q/ l5 C

grafana安装gnocchi 数据源插件

sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource
  • 1
    $ j0 Q* Q& E8 J5 W' P

安装 完成 重启grafana

systemctl restart grafana-server
  • 1
    5 R, j( N0 r' Y, G. |0 F
设置配置文件,允许grafana6.4.3读取gnocchi数据。
cp /etc/kolla/keystone/keystone.conf /etc/kolla/config/cp /etc/kolla/gnocchi-api/gnocchi.conf /etc/kolla/config/
  • 1
  • 2; x+ t" {7 p9 O/ _5 S+ d8 f' X

配置gnocchi

vim /etc/kolla/config/gnocchi.conf
  • 1
    - Z, L, W2 f8 w6 x& h

原来是默认设置了 3000端口,但是默认的grafana 添加gnocchi数据源时一直testing 无法成功。只好使用6.4.3版本grafana的3002 端口。

[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    1 L1 R* p# u2 s0 ]) |

配置 keystone

vim /etc/kolla/config/keystone.conf
  • 1
    ( z) t6 m7 @( c1 `7 K
[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 29 Z$ V  D# x! q& P3 H/ q( `" h

设置完成 kolla重新加载配置

kolla-ansible reconfigure -i /etc/kolla/all-in-one
  • 1
    2 {& B; ^* s6 U  b* C' Z
设置gnocchi数据源。使用dashboard模板展示数据。

等待配置重新加载完成后。网页登录进入grafana6.4.3
6 e' s, \, x8 ~# s: T192.168.199.90:3002

由于这个grafana不是通过kolla 部署的,所以未设置密码。初次登录的话,账户密码都是admin。

添加数据源 Add data source 选择gnocchi
# D2 F* {- X0 b

https://img-blog.csdnimg.cn/20210225143324795.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbmRhbmZlbmd5dW4=,size_16,color_FFFFFF,t_70#pic_centerName GnocchiHTTP        URL http://192.168.199.90:5000Gnocchi Details        Auth Mode        keystone        Domain                default        Project        User 和Password可以根据根据gnocchi配置文件中的认证填写        也可以是Project和User选择填写admin, password填写Openstack中admin用户的登录密码

  • ' G  @/ U" G! X! ^+ Y
[root@ALLInOne-Kolla ~]# cat /etc/kolla/gnocchi-api/gnocchi.conf 。。。。。。[keystone_authtoken]www_authenticate_uri = http://192.168.199.90:5000/v3project_domain_id = defaultproject_name = serviceuser_domain_id = defaultusername = gnocchipassword = 928futiqdqBWBzcmjN7lRTr6HesCEz259rtthtIZauth_url = http://192.168.199.90:35357auth_type = passwordmemcache_security_strategy = ENCRYPTmemcache_secret_key = TA1Zu3xlEbytDYCNyKhyWa1PWaGYOxRzB6oyDH50memcached_servers = 192.168.199.90:11211
  • / `! Q- e- K: Q

认证没问题即可成功添加 gnocchi的数据源。
$ L+ a1 j* V: M0 Mhttps://img-blog.csdnimg.cn/20210225144053399.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbmRhbmZlbmd5dW4=,size_16,color_FFFFFF,t_70#pic_center

选择导入相应的 dashboard 模板。

由于个人对 gnocchi的查询语法不熟悉,所以使用了grafana公开的gnocchi dashboard模板来展示

https://grafana.com/grafana/dashboards?dataSource=gnocchixyz-gnocchi-datasource

使用的是模板 12536
! e1 h+ L3 |) O  Q  R3 J9 Y. A* ahttps://img-blog.csdnimg.cn/20210225144609582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbmRhbmZlbmd5dW4=,size_16,color_FFFFFF,t_70#pic_center& v# Q' ]2 n; _; C- a/ R/ I
输入模板ID 后按enter 。等待一会后即可导入模板,会让选择数据源,选择刚添加的gnocchi数据源 即可。
" s  |: B+ V% r  K8 z# R: F6 C当然可以自己根据数据源设置dashboard,只是我gnocchi查询不熟。所以直接使用他人的模板了。

效果大致如下0 g9 ^: e% k. f+ z0 @
https://img-blog.csdnimg.cn/20210225144839675.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbmRhbmZlbmd5dW4=,size_16,color_FFFFFF,t_70#pic_center
4 P/ ~# ]9 b" b* R. }https://img-blog.csdnimg.cn/20210225144853367.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbmRhbmZlbmd5dW4=,size_16,color_FFFFFF,t_70#pic_center

设置保存策略。

5分钟记录一次数据太慢尝试修改保存策略。- f2 ]+ M( h2 w5 k8 f( |
通过gnocchi查看 已知的保存策略

[root@ALLInOne-Kolla ~]# gnocchi archive-policy list+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+| name                 | back_window | definition                                                            | aggregation_methods             |+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+| bool                 |        3600 | - points: 31536000, granularity: 0:00:01, timespan: 365 days, 0:00:00 | last                            || ceilometer-high      |           0 | - points: 3600, granularity: 0:00:01, timespan: 1:00:00               | mean                            ||                      |             | - points: 1440, granularity: 0:01:00, timespan: 1 day, 0:00:00        |                                 ||                      |             | - points: 8760, granularity: 1:00:00, timespan: 365 days, 0:00:00     |                                 || ceilometer-high-rate |           0 | - points: 3600, granularity: 0:00:01, timespan: 1:00:00               | rate:mean, mean                 ||                      |             | - points: 1440, granularity: 0:01:00, timespan: 1 day, 0:00:00        |                                 ||                      |             | - points: 8760, granularity: 1:00:00, timespan: 365 days, 0:00:00     |                                 || ceilometer-low       |           0 | - points: 8640, granularity: 0:05:00, timespan: 30 days, 0:00:00      | mean                            || ceilometer-low-rate  |           0 | - points: 8640, granularity: 0:05:00, timespan: 30 days, 0:00:00      | rate:mean, mean                 || high                 |           0 | - points: 3600, granularity: 0:00:01, timespan: 1:00:00               | std, count, min, max, sum, mean ||                      |             | - points: 10080, granularity: 0:01:00, timespan: 7 days, 0:00:00      |                                 ||                      |             | - points: 8760, granularity: 1:00:00, timespan: 365 days, 0:00:00     |                                 || low                  |           0 | - points: 8640, granularity: 0:05:00, timespan: 30 days, 0:00:00      | std, count, min, max, sum, mean || medium               |           0 | - points: 10080, granularity: 0:01:00, timespan: 7 days, 0:00:00      | std, count, min, max, sum, mean ||                      |             | - points: 8760, granularity: 1:00:00, timespan: 365 days, 0:00:00     |                                 |+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+
  • 2 M% k# B0 _: Q! h/ j% E9 V% x' \- R

查看当前各个metric的保存策略

[root@ALLInOne-Kolla ~]# gnocchi metric list+--------------------------------------+---------------------+--------------------------------------------+---------+--------------------------------------+| id                                   | archive_policy/name | name                                       | unit    | resource_id                          |+--------------------------------------+---------------------+--------------------------------------------+---------+--------------------------------------+| 10cadca4-56b2-4175-9892-4e8b94cc78ad | ceilometer-low-rate | cpu                                        | ns      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 2524130a-cdad-4ccf-9ad6-e3db9aa12ada | ceilometer-low      | volume.provider.pool.capacity.virtual_free | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || 3027d217-e5dd-491c-8e27-29f692bad0cd | ceilometer-low      | disk.root.size                             | GB      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 38fe2c09-389f-4ffe-98d4-edd4770ebc4f | ceilometer-low      | memory.usage                               | MB      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 43cbf7b9-ca4d-44c2-acaf-2be058327981 | ceilometer-low      | volume.provider.capacity.provisioned       | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || 43ed1a45-ccc0-4201-a22e-c21707009989 | ceilometer-low-rate | network.incoming.bytes                     | B       | 2d492809-8e0a-533a-a141-487714121eca || 4526c626-f610-415e-8f94-23b23c63c541 | ceilometer-low      | volume.provider.capacity.virtual_free      | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || 58f02ba7-cd3e-44cd-8117-49ac58c3738f | ceilometer-low      | volume.provider.pool.capacity.allocated    | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || 646c800a-c725-4902-a47b-783d3820ae22 | ceilometer-low      | memory                                     | MB      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 65030467-6b2f-45b6-a51c-26b512ecd90a | ceilometer-low      | volume.provider.pool.capacity.total        | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || 7373abe7-250f-4552-9cd3-dcbf5e1dbf13 | ceilometer-low      | volume.provider.capacity.total             | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || 7705fc61-906b-4490-aae0-7219b41f535f | ceilometer-low      | volume.provider.pool.capacity.free         | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || 864995bd-f0b5-427d-888c-92af9e95b886 | ceilometer-low      | volume.provider.capacity.allocated         | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || 8a7d44e5-9f02-4101-bb1e-32dc33ab6b86 | ceilometer-low      | disk.ephemeral.size                        | GB      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 8dc58d4a-958e-4686-b90b-7f9099385226 | ceilometer-low-rate | disk.device.write.requests                 | request | 7b7454da-6681-5a3b-9b17-817d6e6a0af5 || 9efccb23-e90c-4baf-873f-898679c3b169 | ceilometer-low-rate | network.outgoing.bytes                     | B       | 2d492809-8e0a-533a-a141-487714121eca || b11ee54e-ead1-4c7d-b1b7-8cf654b091ba | ceilometer-low-rate | network.outgoing.packets                   | packet  | 2d492809-8e0a-533a-a141-487714121eca || b8799978-fed4-42ff-9ecc-1ecd1b304c4b | ceilometer-low-rate | network.incoming.packets                   | packet  | 2d492809-8e0a-533a-a141-487714121eca || c1f0d462-91de-4758-b0f9-f0a2d01442a1 | ceilometer-low      | volume.provider.pool.capacity.provisioned  | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || c2e8d5e6-5c3c-4dfd-bcc0-4d20203fbe52 | ceilometer-low-rate | disk.device.read.requests                  | request | 7b7454da-6681-5a3b-9b17-817d6e6a0af5 || dcbcd2c7-bd06-4610-946d-02a9f490671f | ceilometer-low      | volume.provider.capacity.free              | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || e0a4affd-57aa-4c9b-8065-6fa0c40310b6 | ceilometer-low      | vcpus                                      | vcpu    | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || e2af0940-f633-427b-9a67-23386b9970da | ceilometer-low-rate | disk.device.read.bytes                     | B       | 7b7454da-6681-5a3b-9b17-817d6e6a0af5 || f28055ff-ee55-4b22-904b-e23d16c39a22 | ceilometer-low-rate | disk.device.write.bytes                    | B       | 7b7454da-6681-5a3b-9b17-817d6e6a0af5 |+--------------------------------------+---------------------+--------------------------------------------+---------+--------------------------------------+

  • , ?+ i8 `# O* ^

基本保存策略都是ceilometer,特别的如网络磁盘等数据累加的使用ceilometer-low-rate策略。

修改保存策略

通过docker exec 命令进入ceilometer 相应的容器,查看保存策略的设置。。。0 `( J! d* Q7 z6 C" E: p
ceilometer相关容器

[root@ALLInOne-Kolla ~]# docker ps -a | grep ceilometere7edc514bbc8   kolla/centos-binary-ceilometer-ipmi:train                 "dumb-init --single-…"   3 weeks ago   Up 3 hours                ceilometer_ipmi7f198cc0757e   kolla/centos-binary-ceilometer-compute:train              "dumb-init --single-…"   3 weeks ago   Up 31 minutes             ceilometer_computeddf54797e3ee   kolla/centos-binary-ceilometer-central:train              "dumb-init --single-…"   3 weeks ago   Up 32 minutes             ceilometer_centrald8d3bdb576f3   kolla/centos-binary-ceilometer-notification:train         "dumb-init --single-…"   3 weeks ago   Up 32 minutes             ceilometer_notification
  • 1
  • 2
  • 3
  • 4
  • 5
    ' d2 W2 i5 F4 z3 L, n, e

进入ceilometer_notification 查看保存策略

[root@ALLInOne-Kolla ~]# docker exec -it ceilometer_notification bash(ceilometer-notification)[ceilometer@ALLInOne-Kolla /]$
  • 1
  • 2
    9 w2 [% b% H- H- C8 R

查看保存策略

cat /etc/ceilometer/gnocchi_resources.yaml
  • 1* @) x  q2 _2 I  C- N! o
---archive_policy_default: ceilometer-lowarchive_policies:  # NOTE(sileht): We keep "mean" for now to not break all gating that  # use the current tempest scenario.  - name: ceilometer-low    aggregation_methods:      - mean    back_window: 0    definition:      - granularity: 5 minutes        timespan: 30 days  - name: ceilometer-low-rate    aggregation_methods:      - mean      - rate:mean    back_window: 0    definition:      - granularity: 5 minutes        timespan: 30 days  - name: ceilometer-high    aggregation_methods:      - mean    back_window: 0    definition:      - granularity: 1 second        timespan: 1 hour      - granularity: 1 minute        timespan: 1 day      - granularity: 1 hour        timespan: 365 days  - name: ceilometer-high-rate    aggregation_methods:      - mean      - rate:mean    back_window: 0    definition:      - granularity: 1 second        timespan: 1 hour      - granularity: 1 minute        timespan: 1 day      - granularity: 1 hour        timespan: 365 daysresources:  - resource_type: identity    metrics:      identity.authenticate.success:      identity.authenticate.pending:      identity.authenticate.failure:      identity.user.created:      identity.user.deleted:      identity.user.updated:      identity.group.created:      identity.group.deleted:      identity.group.updated:      identity.role.created:      identity.role.deleted:      identity.role.updated:      identity.project.created:      identity.project.deleted:      identity.project.updated:      identity.trust.created:      identity.trust.deleted:      identity.role_assignment.created:      identity.role_assignment.deleted:        ......

  • , f$ P3 r1 y. q

可以看到默认的保存策略 为ceilometer-low,特别的metric 有单独的保存策略设置。" T5 M* Q, u0 @. w( X4 K6 E
可以将该配置文件复制到宿主机的config 配置目录中。修改一定的保存策略设置,然后kolla重新加载配置,即可设置ceilometer新的保存策略。: t& c! b5 s- w3 e$ C" y) p( w
gnocchi_resources.yaml 配置文件。
% Q% k  M/ j- y! \https://download.csdn.net/download/dandanfengyun/15501637

mkdir -p /etc/kolla/config/ceilometercd /etc/kolla/config/ceilometer
  • 1
  • 2
    - @) p. H" A* }* z- q/ T

将gnocchi_resources.yaml配置文件复制进去并设置。

vim /etc/kolla/config/ceilometer/gnocchi_resources.yaml
  • 1
    - V" |4 Y; f9 v2 w2 c2 f) I0 P+ O  Y

只修改网络相关 保存策略 为ceilometer-high-rate,其余配置不变。

archive_policy_default: ceilometer-lowarchive_policies:......resources:        ......  - resource_type: instance_network_interface    metrics:      network.outgoing.packets:        archive_policy_name: ceilometer-high-rate      network.incoming.packets:        archive_policy_name: ceilometer-high-rate      network.outgoing.packets.drop:        archive_policy_name: ceilometer-high-rate      network.incoming.packets.drop:        archive_policy_name: ceilometer-high-rate      network.outgoing.packets.error:        archive_policy_name: ceilometer-high-rate      network.incoming.packets.error:        archive_policy_name: ceilometer-high-rate      network.outgoing.bytes:        archive_policy_name: ceilometer-high-rate      network.incoming.bytes:        archive_policy_name: ceilometer-high-rate    attributes:      name: resource_metadata.vnic_name      instance_id: resource_metadata.instance_id

  • 1 C3 U/ M3 o4 s+ \9 G: ~! y) b

kolla重启加载配置策略

kolla-ansible reconfigure /etc/kolla/all-in-one
  • 1+ O0 C) B6 Z3 B4 F2 Y! t+ H

配置完成后,已经存在得metric保存策略不变,新建的虚拟实例的相关 metric 保存策略使用新的。5 i/ d- ?- ?. `6 R! _1 r% t4 f& m

[root@ALLInOne-Kolla ~]# gnocchi metric list+--------------------------------------+----------------------+--------------------------------------------+---------+--------------------------------------+| id                                   | archive_policy/name  | name                                       | unit    | resource_id                          |+--------------------------------------+----------------------+--------------------------------------------+---------+--------------------------------------+| 044ef065-fc1b-4908-a309-9e9cef87ccc1 | ceilometer-low-rate  | disk.device.read.bytes                     | B       | 384cab92-3a03-5abb-943e-5c405335c923 || 0b7348ee-ecf1-4fdd-878f-1c6ecc46d04c | ceilometer-low       | disk.root.size                             | GB      | cc56761d-4afd-425a-a108-4b279271d6d2 || 10cadca4-56b2-4175-9892-4e8b94cc78ad | ceilometer-low-rate  | cpu                                        | ns      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 1d288b8d-ae3b-417d-9314-4375af250299 | ceilometer-low       | volume.size                                | GB      | a1283de6-ba99-48c5-9e43-9bf1f1b4d274 || 2524130a-cdad-4ccf-9ad6-e3db9aa12ada | ceilometer-low       | volume.provider.pool.capacity.virtual_free | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || 3027d217-e5dd-491c-8e27-29f692bad0cd | ceilometer-low       | disk.root.size                             | GB      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 346bd2ec-3d28-4b24-9397-50a7a2329e83 | ceilometer-low       | memory.usage                               | MB      | cc56761d-4afd-425a-a108-4b279271d6d2 || 38fe2c09-389f-4ffe-98d4-edd4770ebc4f | ceilometer-low       | memory.usage                               | MB      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 43cbf7b9-ca4d-44c2-acaf-2be058327981 | ceilometer-low       | volume.provider.capacity.provisioned       | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || 43ed1a45-ccc0-4201-a22e-c21707009989 | ceilometer-low-rate  | network.incoming.bytes                     | B       | 2d492809-8e0a-533a-a141-487714121eca || 4526c626-f610-415e-8f94-23b23c63c541 | ceilometer-low       | volume.provider.capacity.virtual_free      | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || 49357c46-602f-4d20-a2a2-04ef7683c275 | ceilometer-low       | disk.ephemeral.size                        | GB      | cc56761d-4afd-425a-a108-4b279271d6d2 || 5291ce4e-62a8-4b9d-b2b7-2328ae27c45f | ceilometer-low-rate  | disk.device.read.requests                  | request | 384cab92-3a03-5abb-943e-5c405335c923 || 5370f16e-3c97-49a4-95a4-87197838884d | ceilometer-high-rate | network.incoming.packets                   | packet  | 122f64c7-318a-511e-857c-412f69a0fae5 || 58f02ba7-cd3e-44cd-8117-49ac58c3738f | ceilometer-low       | volume.provider.pool.capacity.allocated    | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || 5f620b1b-3233-44bc-a4e2-3c59aafe2a75 | ceilometer-low-rate  | disk.device.write.requests                 | request | 384cab92-3a03-5abb-943e-5c405335c923 || 646c800a-c725-4902-a47b-783d3820ae22 | ceilometer-low       | memory                                     | MB      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 65030467-6b2f-45b6-a51c-26b512ecd90a | ceilometer-low       | volume.provider.pool.capacity.total        | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || 7373abe7-250f-4552-9cd3-dcbf5e1dbf13 | ceilometer-low       | volume.provider.capacity.total             | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || 738b387d-e34e-449b-8263-2dfca1ec994b | ceilometer-high-rate | network.incoming.bytes                     | B       | 122f64c7-318a-511e-857c-412f69a0fae5 || 7705fc61-906b-4490-aae0-7219b41f535f | ceilometer-low       | volume.provider.pool.capacity.free         | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || 864995bd-f0b5-427d-888c-92af9e95b886 | ceilometer-low       | volume.provider.capacity.allocated         | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || 875be171-48f6-4ebe-8767-afb92efa1ba3 | ceilometer-low       | vcpus                                      | vcpu    | cc56761d-4afd-425a-a108-4b279271d6d2 || 8a7d44e5-9f02-4101-bb1e-32dc33ab6b86 | ceilometer-low       | disk.ephemeral.size                        | GB      | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || 8dc58d4a-958e-4686-b90b-7f9099385226 | ceilometer-low-rate  | disk.device.write.requests                 | request | 7b7454da-6681-5a3b-9b17-817d6e6a0af5 || 9efccb23-e90c-4baf-873f-898679c3b169 | ceilometer-low-rate  | network.outgoing.bytes                     | B       | 2d492809-8e0a-533a-a141-487714121eca || b11ee54e-ead1-4c7d-b1b7-8cf654b091ba | ceilometer-low-rate  | network.outgoing.packets                   | packet  | 2d492809-8e0a-533a-a141-487714121eca || b8799978-fed4-42ff-9ecc-1ecd1b304c4b | ceilometer-low-rate  | network.incoming.packets                   | packet  | 2d492809-8e0a-533a-a141-487714121eca || c1f0d462-91de-4758-b0f9-f0a2d01442a1 | ceilometer-low       | volume.provider.pool.capacity.provisioned  | GB      | 0b354884-f2f9-5427-b4ec-362e0aaa0940 || c2e8d5e6-5c3c-4dfd-bcc0-4d20203fbe52 | ceilometer-low-rate  | disk.device.read.requests                  | request | 7b7454da-6681-5a3b-9b17-817d6e6a0af5 || c5ebcf1a-a1fc-4920-ad47-12d02e8c4046 | ceilometer-low-rate  | cpu                                        | ns      | cc56761d-4afd-425a-a108-4b279271d6d2 || d0d482b5-982e-4894-bbf3-addee51e898f | ceilometer-low-rate  | disk.device.write.bytes                    | B       | 384cab92-3a03-5abb-943e-5c405335c923 || d47f2b13-1800-4669-ad86-b9ef4c4ee862 | ceilometer-high-rate | network.outgoing.bytes                     | B       | 122f64c7-318a-511e-857c-412f69a0fae5 || d8434709-82bd-42ae-98a6-31accb6710c9 | ceilometer-high-rate | network.outgoing.packets                   | packet  | 122f64c7-318a-511e-857c-412f69a0fae5 || dcbcd2c7-bd06-4610-946d-02a9f490671f | ceilometer-low       | volume.provider.capacity.free              | GB      | 3973b2b8-8e6c-5b5f-982e-d56b399ce688 || ddf190a2-4b99-42c0-9f20-e219c768fe00 | ceilometer-low       | compute.instance.booting.time              | sec     | cc56761d-4afd-425a-a108-4b279271d6d2 || e0a4affd-57aa-4c9b-8065-6fa0c40310b6 | ceilometer-low       | vcpus                                      | vcpu    | f99e98bd-afd4-43ac-9d74-dc77dc498a7a || e2af0940-f633-427b-9a67-23386b9970da | ceilometer-low-rate  | disk.device.read.bytes                     | B       | 7b7454da-6681-5a3b-9b17-817d6e6a0af5 || f25d3e5d-8c08-4082-acd1-1b0a0a481902 | ceilometer-low       | memory                                     | MB      | cc56761d-4afd-425a-a108-4b279271d6d2 || f28055ff-ee55-4b22-904b-e23d16c39a22 | ceilometer-low-rate  | disk.device.write.bytes                    | B       | 7b7454da-6681-5a3b-9b17-817d6e6a0af5 |+--------------------------------------+----------------------+--------------------------------------------+---------+--------------------------------------+
  • ' z7 q0 `' d+ B: F  ^5 e: O0 O

可以看到 有保存策略是 ceilometer-high-rate的metric

| 5370f16e-3c97-49a4-95a4-87197838884d | ceilometer-high-rate | network.incoming.packets                   | packet  | 122f64c7-318a-511e-857c-412f69a0fae5 || 738b387d-e34e-449b-8263-2dfca1ec994b | ceilometer-high-rate | network.incoming.bytes                     | B       | 122f64c7-318a-511e-857c-412f69a0fae5 || d47f2b13-1800-4669-ad86-b9ef4c4ee862 | ceilometer-high-rate | network.outgoing.bytes                     | B       | 122f64c7-318a-511e-857c-412f69a0fae5 || d8434709-82bd-42ae-98a6-31accb6710c9 | ceilometer-high-rate | network.outgoing.packets                   | packet  | 122f64c7-318a-511e-857c-412f69a0fae5 |
  • 1
  • 2
  • 3
  • 4
    7 S' p( f5 L4 S, N. f

尽管修改了保存策略,新创建实例 的metric的保存策略也使用的新的策略。但是数据保存还是有问题,还是五分钟保存一次,只是有三个不同的 granularity。。。这好像没什么用。

[root@ALLInOne-Kolla ~]# gnocchi metric list | grep 122f64c7-318a-511e-857c-412f69a0fae5| 5370f16e-3c97-49a4-95a4-87197838884d | ceilometer-high-rate | network.incoming.packets                   | packet  | 122f64c7-318a-511e-857c-412f69a0fae5 || 738b387d-e34e-449b-8263-2dfca1ec994b | ceilometer-high-rate | network.incoming.bytes                     | B       | 122f64c7-318a-511e-857c-412f69a0fae5 || d47f2b13-1800-4669-ad86-b9ef4c4ee862 | ceilometer-high-rate | network.outgoing.bytes                     | B       | 122f64c7-318a-511e-857c-412f69a0fae5 || d8434709-82bd-42ae-98a6-31accb6710c9 | ceilometer-high-rate | network.outgoing.packets                   | packet  | 122f64c7-318a-511e-857c-412f69a0fae5 |[root@ALLInOne-Kolla ~]# gnocchi measures show 738b387d-e34e-449b-8263-2dfca1ec994b+---------------------------+-------------+---------------+| timestamp                 | granularity |         value |+---------------------------+-------------+---------------+| 2021-03-01T16:00:00+08:00 |      3600.0 | 41144.6666667 || 2021-03-01T16:03:00+08:00 |        60.0 |       11726.0 || 2021-03-01T16:08:00+08:00 |        60.0 |       41112.0 || 2021-03-01T16:13:00+08:00 |        60.0 |       70596.0 || 2021-03-01T16:03:33+08:00 |         1.0 |       11726.0 || 2021-03-01T16:08:32+08:00 |         1.0 |       41112.0 || 2021-03-01T16:13:32+08:00 |         1.0 |       70596.0 |+---------------------------+-------------+---------------+

  • 1 @: R) k0 y% _+ [0 N. ]
问题

gnocchi相应的dashboard模板不太好用。且数据保存总是 5min保存一次。

似乎还是使用collectd收集数据到influxdb更合适。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:19 , Processed in 0.028383 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表