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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-2 17:00:28 | 显示全部楼层 |阅读模式
collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。
2 R. x  o: c. }& p) {3 B2 ainfluxdb 是一个时序数据库。
% S( N$ z; S1 f' m6 _% i9 dgrafana是一个前端展示工具。
可以使用collectd 的virt插件通过Libvirtd 的API 收集虚拟机的数据,然后保存到时序数据库influxdb。最后通过grafana将influxdb中存储的数据以图标的形式展示出来。
一、部署 collectd influxdb grafana prometheus- G$ `* y8 l9 Z0 f- x# v+ t
1.修改全局配置globals.yml文件,设置部署监控相关文件。
vim /etc/kolla/globals.yml
: D6 B8 @$ E, p* R  E. \& |3 K& g6 X1 n
enable_collectd: "yes"6 Z( T$ r  p' E
enable_grafana: "yes"
- z8 `: j' n/ o( f! C0 j0 zenable_influxdb: "yes"
* {0 m7 q2 ]% T! fenable_prometheus: "yes"6 K+ X7 _! A3 l4 e
prometheus_cmdline_extras: "-storage.local.retention 720h"
8 M9 l3 T7 Q) R. k  A* x3 ]
) `7 d! u) M. h2 t0 Gprometheus-server 数据保存30天 单位d无法识别。可以附加的参数 可参考https://blog.csdn.net/dengxiangbao3167/article/details/102365367
相应的prometheus的exporter包含
#enable_prometheus_haproxy_exporter: "{{ enable_haproxy | bool }}"
4 j/ U  h9 F& g  @* C! N" s$ `; j#enable_prometheus_mysqld_exporter: "{{ enable_mariadb | bool }}". I4 [' x1 i( |2 ~9 m
#enable_prometheus_node_exporter: "{{ enable_prometheus | bool }}"
! W3 E  E, _& p( ]- X$ B#enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}"
, ~) q7 X. a* l0 x% g# ~3 J#enable_prometheus_memcached: "{{ enable_prometheus | bool }}"
1 G% B) m1 v6 z: j. S' H, I#enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"
; J0 {$ w( ~- v0 Y( l#enable_prometheus_ceph_mgr_exporter: "{{ enable_prometheus | bool and enable_ceph | bool }}"
( z5 K: ?# C. P; m9 I* C#enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"5 M6 m( ^! D- a! ]5 n
#enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}"& ~: \; |4 ]# q* R0 X- Z
#enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}"
# c6 ?$ y; D0 U* A2 s" C, S& ?& D0 U: S( P. E  a$ L0 m& H! ~* C
2.安装部署相应的容器组件
kolla-ansible deploy -i /etc/kolla/all-in-one 6 C0 u' c# J: g- {: i/ G6 P% y9 t
1# i. H! y: r, f% J& x' q4 o. e+ ~
3.完成后查看相关组件docker容器是否部署完成
docker ps -a | grep -e collectd -e influxdb -e grafana -e prometheus
& [0 V- [& \* d7 |4 i$ V: T/ [1

0 w6 X, [& m8 M- V二、修改相应配置文件,通过libvirt监控虚拟机! C5 w' J, C7 w
自定义的配置文件位置,该位置的配置文件会取代默认配置文件。
# The directory to merge custom config files the kolla's config files$ W5 v0 b7 I/ ~, N! W
node_custom_config: "/etc/kolla/config"! `% e7 q1 k5 |3 P
' u& w6 O/ x/ a: R
mkdir /etc/kolla/config
4 E9 u, f  t1 t1 r) P- t9 v1! N  i/ D' m, c) ]: C
使用kolla部署完成后。默认配置文件是/etc/kolla/<< service name >>/<< config file >>。
1 _. T' b8 m. p9 A7 D自定义配置文件路径是/etc/kolla/config/,且自定义配置文件一旦设置,就会覆盖且替换原配置文件。5 a1 ]7 J! h0 u' Y. p
路径可以是
/etc/kolla/config/<< config file >>,
) Y# B- ]/ \/ Z' H' o- F' e/etc/kolla/config/<< service name >>/<< config file >>,
  |8 p$ B$ U6 k! l1 n8 j1 G# \/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>
! C4 l0 g( p+ u5 p4 M# l! B3 o9 N  @6 [% Q! |9 k
1.collectd 配置' k) ]) [' J* R/ \+ q  v
libvirt有不同的虚拟机库, 通过API可以访问控制虚拟机。OpenStack也是通过libvirt的API也控制底层的虚拟机的。
cp /etc/kolla/collectd/collectd.conf /etc/kolla/config/
; v7 r( @7 k& [- `vim /etc/kolla/config/collectd.conf
, W  \- n- e/ ?2 ^* W15 [. z0 ^- F: m2 f$ N
2+ ~  o% l( q0 k1 h
FQDNLookup false
" ]* M) z2 o  s0 c, [! ~LoadPlugin syslog$ I. s4 [7 @# X( `! o8 G  A
LoadPlugin cpu
2 o* ^' k1 d( a: }5 `" [LoadPlugin interface
$ {# B4 O3 |) p+ NLoadPlugin load# G" s4 P7 _/ S' Q7 z! r
LoadPlugin memory
LoadPlugin network
LoadPlugin logfile
5 {+ Q0 K; I  q; i0 s4 kLoadPlugin virt
% K8 M5 k3 F. L7 j. |
<Plugin network>
, f* k9 `0 k- R/ ?) _+ ^. i6 @- t        Server "192.168.199.90" "25826"/ K# h+ S# r# i7 _, r* F
</Plugin>
; h- I4 x9 `6 g5 X, j% @& s
<Plugin logfile>  K0 C$ O4 t- }) H
        LogLevel info
, j4 e/ v$ j5 d; L8 m( q        File "/var/log/kolla/collectd/collectd.log"7 r2 Z, q3 u2 J: h
        Timestamp true
, D# N. s' M' F6 I2 Z& M; p        PrintSeverity false$ Y5 c- I: {# O5 l) F* P9 B* {1 i- V
</Plugin>
3 Q4 o$ U# c) R
<Plugin virt>: z+ b# ]; D. I5 Z9 l; i
        Connection "qemu+tcp://192.168.199.90/system"
: X) ?% [: W5 y+ c! T/ ]5 p" a        HostnameFormat hostname4 B, O/ S: r& n- U1 s" y
        PluginInstanceFormat uuid$ z; U$ D, t8 ^1 c9 u8 m
        BlockDeviceFormat target$ ^0 |6 y8 V8 ~. o' }
        InterfaceFormat name
$ ]! |: s( K' _9 v: G7 x        ExtraStats "cpu_util"
$ K' p  r, s& F  d4 G6 Q  N" M9 ^' W. u</Plugin>  
7 s; x* ~2 H1 `' Z; g4 Q7 N7 ~7 p& @1 H5 n5 k5 `6 i1 a9 {; L
启用了插件 logfile virt network。logfile是日志插件,virt就是与libvirtd的API通信的插件,network网络插件将收集的数据通过网络发送出去。
network插件设置。
Server "192.168.199.90" "25826"# @: r& `2 T2 m, V; d# w) X9 t
1
5 c: Z- Y% k7 f5 V; P0 ^( T表示将数据发送到192.168.199.90主机的25826端口。就是下一步设置的influxdb收集collectd数据的主机 端口。
LoadPlugin cpu
$ `; z9 j; }, ?# f/ Q. x0 W+ N# gLoadPlugin interface
9 W6 M/ F+ r, I3 E5 D1 ~LoadPlugin load
/ k- o9 [. _% P. m2 H, n5 T) [LoadPlugin memory
. T3 I' ?2 h9 Z, f; i
+ j' Z! o5 b$ h* S. R这四个插件是用来收集宿主机的信息的。interface可能还会监听了虚拟机虚拟网卡的信息,如果不希望通过interface插件收集虚拟网卡信息(virt插件会收集)。可以设置interface只监听想要监听的网卡名。
<Plugin "interface">
5 h  i/ _' J: \3 ]8 D  Interface "ens33"( E4 U  ~) ]+ `# n7 f
  Interface "ens34"
- a6 Q2 r+ P- T5 b</Plugin>
0 J" S+ ]7 S9 C+ v- k  Y7 q! Z5 m1 g. V
. O9 X: I! ]; j7 M. Evirt 插件设置
<Plugin virt>
6 x8 @' X  m7 R        Connection "qemu+tcp://192.168.199.90/system"
9 L0 v9 ^- m3 S3 P: r        HostnameFormat hostname
# Z. T$ s& ^6 e  \        PluginInstanceFormat uuid
7 T9 u5 V" G3 N8 ^  o, H+ U        BlockDeviceFormat source, v% p) f4 ~$ J, j8 M
        BlockDeviceFormatBasename false5 J: S; c$ H8 z+ [. j6 ?8 V9 U& d: T& C4 P
        InterfaceFormat name
0 `9 R7 p- O  H. B        ExtraStats "cpu_util"2 |  v/ W/ K' o4 P8 U
</Plugin>  
* Z% Y: T+ u, J* t9 o) W2 h* X% p. O# y' w7 ~0 w/ y
具体参数详情可以看官网
" e1 p% j8 g* q, O6 s! ohttps://collectd.org/documentati ... 5.shtml#plugin_virt
Connection 表示连接的libvirt API服务。7 K+ X4 u; z7 p7 x) N- o  D
   就像使用qemu+kvm创建虚拟机时使用virsh管理时使用virsh -c qemu+tcp://192.168.199.90:16509/system
# S- ?- h) N: D   即可连接到libvirtd服务控制虚拟机相关。由于16509是默认端口号,可以省略
0 E; L: Q4 V8 i- o# D   由于是ALLInOne 所以collectd设置只有一个,多个主机部署时,需要每个计算节点上安装collectd指向本机的libvirt。
/ v. ?9 [. M' ~) h+ w0 K+ L# s   因此每个collectd设置文件都不相同。
HostnameFormat name|uuid|hostname|...
; R! W$ W! ^$ {0 L% h) e   当virt插件记录数据时,会根据此设置设置所收集数据的主机名。
+ R) o1 S  R- h: V1 I1 s3 l   默认的做法是使用hypervisor提供的来宾名称,这等于设置为虚拟机name。7 s+ V! t6 `0 S' e9 u3 g+ I1 K
   UUID 意味着使用虚拟机的UUID。如果您想跨迁移跟踪同一个客户,这是很有用的。
/ |5 r5 n2 H5 d3 s7 s. s: m   hostname 意味着使用“全局主机名”设置,这本身可能并不有用,因为所有来宾似乎都有相同的名称。
/ r- v' S0 b+ |   hostname就是宿主机名。。。这个其实挺重要的(在有多个宿主机的虚拟机数剧都保存到一个数据库时,可以通过hostname来确定不同虚拟机在哪一个主机。): o' b2 `  c" C* d
   至于实例的 名称或UUID 可以使用PluginInstanceFormat来设置
PluginInstanceFormat name|uuid|none
  ~) d5 m; A$ [/ C9 @6 g   当virt插件记录数据时,它会根据此设置设置所收集数据的plugin_instance。默认情况是不设置plugin_instance。(只有一个宿主机时可以直接设置HostnameFormat name来代替PluginInstanceForma的设置)8 }! x, q  A$ h
   name是指使用管理程序提供的虚拟机名称。UUID意味着使用虚拟机的UUID。& ^6 r" Y3 `9 s# h9 o- C9 j
   OpenStack中是根据uuid来管理虚拟机的,虚拟机在libvirtd中的name和OpenStack中设置的并不一致。libvirtd底层管理是自动生成的,OpenStack中创建时手动命名的。
1 y, `% H$ Z8 c$ _9 \   HostnameFormat和PluginInstanceFormat都可以使用多个fields。如name uuid。会同时显示名称和uuid中间使用 : 分隔。如foo:1234-1234-1234-1234
BlockDeviceFormat target|source& F! c: |/ I9 U  M( A4 z
   挂载到虚拟机中的磁盘设备名设置。' Y9 _2 r& y  b) P
   virsh # domblklist instance-0000000a/ _* l! F- O' P* L$ p
   Target     Source- E+ I2 s8 B( u' i( y7 Y
   ------------------------------------------------0 ]4 a4 ^6 W; `
   vda        /var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk
& f4 \/ p3 S/ P/ Y   vdb        /dev/sdc; \) A5 @& n. s& d" w% u, {9 r3 z
   target  是映射到实例中的磁盘名 vda vdb。即实例中可以通过lsblk看到的。3 i( a2 v2 |$ [8 q  F: b
   source 虚拟磁盘对应的路径及磁盘文件名。/var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk /dev/sdc8 M3 p* R1 ]$ `( n) l5 F
   如果设置BlockDeviceFormatBasename设置为true,则只显示文件名 不显示前面的路径。 默认未设置BlockDeviceFormatBasename,是false即显示前面路径

" F* k( O3 d& |4 L/ m/ \InterfaceFormat name|address% ^$ j& [+ F; X- o# c5 _
   虚拟机的网卡显示 name或者address。name网卡名,address网卡mac地址。' ]# w( C* C, n
   ) _0 l; h9 h: f6 H
ExtraStats "cpu_util"
: k% k6 ^  [! f7 j5 E% {   virt额外记录的数据。此处只设置了一个cpu_util 即CPU的利用率。
( p, a' ?2 S/ A   virsh # domiflist instance-00000002 7 K$ p- C/ L$ N3 i- c! n  b
   Interface  Type       Source      Model       MAC
6 c$ d  O' }( S; {" r/ K( ?   -------------------------------------------------------* w9 {, M. q$ k
   tap97caffeb-9a bridge    qbr97caffeb-9a virtio      fa:16:3e:64:5f:c0
# f# I- ?/ ?" J2 x5 ~. W   interface就是name ,MAC就是address
0 Z  b- b3 j: ]8 j2 W# W' r# t
这是单个主机ALLinOne下设置配置文件的情况,如果多个计算节点,每个计算节点的collectd的配置文件是不同的,需要单独设置(主要不同就是连接的libvirtd API的IP不同),每个计算节点需要一个collectd收集本计算节点的相应libvirt 数据。
很奇怪的一点,似乎使用kolla部署的collectd容器收集虚拟机数据时无法收集虚拟机的内存信息,只能获取虚拟机全部内存。 直接使用yum安装的collectd却可以收集used,availble 等。。。不知道原因
2.influxdb 配置* |5 T: g6 Y$ l
cp /etc/kolla/influxdb/influxdb.conf /etc/kolla/config/
% L* ~! h! V; D1 h$ Z- U( H: Ovim /etc/kolla/config/influxdb.conf ! B, e6 J' e% t: S, u! d4 z+ B
1
8 v+ j  c* j& e0 q) e21 t5 o* C$ z8 @* Z1 t
reporting-disabled = true6 S& m) z' @/ p6 K
[logging]
4 X6 t: E$ U3 C9 R, l; Q, h2 L* N9 j  level = "info": y8 N# U+ P5 G
  file = "/var/log/kolla/influxdb/influxdb.log"6 z1 o& V; K6 Y2 Z( J$ v( C
[meta]
2 _( v; X' |# r! p  dir = "/var/lib/influxdb/meta"5 g) ^& G: B5 O2 {  v% g: m
  retention-autocreate = true9 d3 b/ Y" I# Y( E# s/ j  H5 B
  logging-enabled = true
& `! Z+ R# z& |7 ~% N+ r[data]8 \" E( @2 S2 D* ^
  dir = "/var/lib/influxdb/data"1 x# z% U$ E' s8 e9 \- H
  wal-dir = "/var/lib/influxdb/wal"
# D6 e' j  M' \1 Z! i  wal-logging-enabled = true
  L8 U6 {, u5 h  data-logging-enabled = true' p  M' H. q& j
  index-version = "tsi1", N  D9 k3 `2 G& }9 X+ Q0 D
[coordinator]
0 I! ]4 ]1 D! H' l  write-timeout = "10s"0 V% N8 m' E8 B
  max-concurrent-queries = 07 g. `; _# ^& m) w4 e
  query-timeout = "0s"" ]& v' R2 E. S+ S" W1 G( Y
  max-select-point = 0
9 L3 m( |& a$ W, l7 m7 l' a" D7 E  max-select-series = 08 S' F  w! q3 O0 Z; Z$ O7 _/ U
  max-select-buckets = 0' o1 D( S/ h2 f! l, y
[retention]6 b0 U1 S& W3 i8 ]0 f
  enabled = true) P1 Y* |  I; v
  check-interval = "30m"" ?/ \" |4 Y# v% P1 C
[shard-precreation]
0 n4 u/ D2 g6 Z; q& z; n; O& z7 c$ c  enabled = true% d+ W* c! r) q, ]* h
  check-interval = "10m"
* X* f4 d, R) U7 ]0 P; z  advance-period = "30m"
" b9 Q  m! W+ Y[monitor]
. T$ |+ m: [1 L' q" d  store-enabled = true; E! U5 I' q4 r
  store-database = "_internal"
  D& R1 {; |, F( V; D: g# w  store-interval = "10s"
: W! @: O( m* K" s- [3 F5 Q( _[http]* ~; Q" g" V/ y1 z
  enabled = true
# Q4 u- m/ Y6 s4 F; V; g8 S( }' `  bind-address = "192.168.199.90:8086"
( D! C% J8 z5 B  G3 F  auth-enabled = false9 C2 i; F& L7 x7 l0 |
  log-enabled = true: d3 C! k; i& H" ?4 Z
  write-tracing = false, n- `2 D7 W5 b6 D  m5 S# J& {7 C
  pprof-enabled = false
, \  \( P  S6 x  https-enabled = false4 I% ^1 t( o7 m
[[graphite]]- N; V1 [, U# e
  enabled = false# ]; p' e% t# r9 S8 H9 X
[[opentsdb]]# H: ]( p0 {" p6 T/ g
  enabled = false, w" E! ]- C: L2 e4 T2 [
[[udp]]2 M1 A  p( P" w" b: x
  enabled = false
, v8 p( K% I7 ~( R/ B% L[continuous_queries]+ L# W9 e& T) r* S) Q' L
  log-enabled = true) U) l4 x0 a) ]! m) u
  enabled = true
[[collectd]]- X  e- \, E8 l" O. s$ }- X! p2 k
  enabled = true
8 G3 v  d. m$ \9 ]  bind-address = "192.168.199.90:25826"
6 l( P" w) L4 W; h9 _" d& ~( J  database = "collectd"+ O2 s0 o" A* R& x# U
  typesdb = "/var/lib/influxdb/types.db"' K2 w% W  l+ {7 x

% n; P. s/ d4 h5 D1 O主要是添加了 末尾一段。influxdb是可以作为collectd的network Server,可以将collectd发送的数据保存起来。前提是有对应的type.db数据格式。; Q) G0 Y5 ^% f, J. T+ h6 d
https://download.csdn.net/download/dandanfengyun/14989445
[[collectd]]! H( _  R6 I9 E/ |
  enabled = true2 f$ A( X* a. d! u
  bind-address = "192.168.199.90:25826"0 }  b* O* q9 s* p; R& q0 {
  database = "collectd"/ k( e% l( `" j+ |! }/ h
  typesdb = "/var/lib/influxdb/types.db"- v' w, ?8 l% G- [( Z( R7 J

! S# k$ o; {- t# Z; G- R( l1 T; F1 ~bind-address = "192.168.199.90:25826"表示监听192.168.199.90主机25827端口的数据。然后保存到库collectd中。数据格式typesdb = “/var/lib/influxdb/types.db”
数据格式文件需要手动添加。部署OpenStack时,对于一些特别的需要存储数据的组件docker,都有相应的docker volume附加卷。直接映射到容器内。 influxdb容器附加卷在宿主机中对应位置
            {
6 {1 B; h! v9 A- `5 H4 I5 p                "Type": "volume",7 g1 b4 l. A  g) t
                "Name": "influxdb",+ u. P1 a  T8 Y1 m
                "Source": "/var/lib/docker/volumes/influxdb/_data",0 [$ T! |9 `7 ?0 ?
                "Destination": "/var/lib/influxdb",
1 M' ?& X, t: b( b6 x                "Driver": "local",
; ?  l9 j( z0 [# l5 o& I$ m                "Mode": "rw",
2 q1 H$ }+ k" f4 d                "RW": true,
# p! Y- k7 j0 p4 B  t( D( B                "Propagation": "": e, l) n5 B: [* R& o" M6 n
            },
: [! f( `' M! _( `
将文件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
& w  v: E' A# f' _2 x+ Q0 i1
- l# d8 v; v  ^4 t[root@ALLInOne-Kolla ~]# ls /var/lib/docker/volumes/influxdb/_data/$ s/ y* O* C) \
data  meta  types.db  wal
8 P# z. h6 Y0 Q1 q9 ]" w- K13 _# R5 I9 ]  z7 m
2- z/ G4 q# e$ e- T
3.加载个人配置。8 u. w5 T# g2 j2 y& e
kolla-ansible reconfigure -i /etc/kolla/all-in-one
4 \  I' K( ^3 s7 q# w1 y1
% E" f- l6 C* m. h7 e完成后,会使用个人配置替代默认配置。并重启相应的组件容器加载新的配置。
新配置生效之后,最好将influxdb数据库原数据清除一下,因为原数据中会包含一些不符合新配置的数据。
删除库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'! \7 u% H4 [* ~
1' |- \% ?* g. D
新建库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd '
4 ~6 H5 [; U( V1
( k" @1 R& O0 U- E有一些配置是无法通过配置文件设置的。如数据保存时间等。可以使用influxdb的api来设置。  D- o* M* {, n, O8 m( Y. a6 `
https://archive.docs.influxdata. ... .2/tools/api/#query
创建库collectd (如果有数据存入,该库会被自动创建的)
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd'3 P3 Q  i7 S' g! v; ~) e% ~
1. A, @: ~3 u8 W& r
查看存储策略 一般是永久保存
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=SHOW RETENTION POLICIES ON collectd'
; o; D0 U5 G% v2 W# u$ \6 V- ?5 v1. B9 e- Q; `% ~  u
设置新的保存策略 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') J. B9 r; B9 u0 |$ d! `# O
1- E8 p% g1 E+ Z9 }( p# M7 E
删除旧策略
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP RETENTION POLICY "autogen" ON "collectd"';
19 K. t) j  G3 A3 D( B& q
2
6 d/ y# T2 V% e( l. F4.influxdb一些其它的api。
1 Z5 ^) W- C2 l( S% I) M删除数据库
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'- U3 J% Y$ ?3 r9 d8 g
1+ q- |- B8 Z, _# t
查看库 列表
curl -G 'http://192.168.199.90:8086/query?q=SHOW+DATABASES'! r  b1 i/ H+ I* A* d
1* K2 a' |+ ]- z! {5 ?" p" d
查看库measurements 可以理解为表
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=show measurements'1 g# \3 A5 h. [# v3 t
1
1 s' P9 l2 _+ d4 J4 b查看具体数据
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=select * from virt_rx  limit 10', M6 W+ L3 B, X5 k: w! w
1
  d* g: N  Z: k8 P+ D1 Fprometheus和grafana等暂不需额外配置文件。
三、grafana 根据influxdb中数据生成图表。3 f" {( S! N% N+ f) x
和普通的监控虚拟机基本一致。https://blog.csdn.net/dandanfengyun/article/details/112269935
不过由于直接通过libvirt的API监控虚拟机状态。没有经过OpenStack,所以虚拟机的名称无法对应。需要通过虚拟机的UUID来确定。
' A0 v5 a* i- j. N" H. C连接的是libvirt,也就是计算节点的libvirt。一个collectd只能监听一个计算节点livirtd,多节点部署多个计算节点,需要在每个计算节点安装collectd连接本节点libvirtd。4 g2 T( y1 l4 V9 Z
对OpenStack的整体信息,如虚拟机数量等也无法统计。且虚拟机移除后,数据不会随之消失,只是无有新的数据统计。保存策略是永久。
所以需要配合prometheus使用。prometheus_openstack_exporter会获取OpenStack的整体信息。如vm数量,cinder数量,glance的镜像数量等。但是没有具体虚拟机的具体信息 。
1.设置数据源。# T5 |. C2 f5 p5 Y! @: F9 m
登录进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
, d& O" y/ C! B' m1! s3 `7 m, p9 ]+ C
登录成功后设置数据源
1.influxdb的collectd数据源
Name:collectd (这个是自定义的grafana数据源名)- E# _# R, R; l
URL : 192.168.199.90:80868 d6 P) x1 R5 T. n- H+ o, s$ `- ]
Database:collectd
完成点Save & Test 即可,成功的话是 Data source is working
. ~) g3 d5 g% P8 J% ^- g- K失败查看一下influxdb组件docker容器是否启动,IP端口对不对等。。。
2.prometheus数据源
Name:Prometheus/ K6 d% I% C2 K  n7 r
URL:http://192.168.199.90:9091

8 v/ E( f2 _0 l) l
2.设置dashboard的变量( Y5 p4 J) Z0 ]# P6 {' ?
基本上不可能只有一个 虚拟机,且把多个虚拟机的信息一起展示也不合理。所以设置一些变量来确定当前展示的数据是哪一个虚拟机的。

' P* w' [- g4 ~7 z& J: j* Xhost    SHOW TAG VALUES WITH KEY=host+ b  C) U& K& t2 ]3 B
instance_uuid  SHOW TAG VALUES WITH KEY=instance WHERE host='$host'0 o7 t$ F( I' p
virt_interface  SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'& u: r( E# s/ l  f9 g. T  n( O
virt_disk   SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
$ ]6 ]" z3 V  g0 Q8 Vinstance_name  label_values(openstack_nova_server_status{id="$instance_uuid"}, name)
1 F' f0 H! P  n! n% b
5 R' }+ c0 k/ W5 k& J. [分别设置宿主机名 虚拟实例uuid 虚拟网卡 虚拟磁盘 以及实例名
4 Q7 I# c0 r% q宿主机变量
虚拟机实例uuid变量

8 \9 V/ M. \8 ]9 B; K虚拟网卡变量

0 }) Q% i' B% Q# u0 V虚拟磁盘变量
实例名

) E. D8 Y/ c# Q* z  f& J$ R  i- ~host 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。& A- k5 ]7 I" q; J8 X
这个根据influxdb查询语句和grafana使用个人创建即可。
' K0 _2 \, o2 V. _( r: g
4.相关dashboard的json示例。( F- Q4 E# W  x$ J$ {
这个只是个人保存使用的一个dashboard示例,应该是无法通用的。$ |0 b2 m; K! s" S. q2 V0 E. g. P
不用重新每次都再重复一遍2,3。导入数据源collectd后直接import该json文件即可
( Q7 X/ @3 t3 J' v; fhttps://download.csdn.net/download/dandanfengyun/15073272
创建数据源 略。
点击import导入模板
$ Y; |( t6 @/ h  x
选择模板文件
3 N& H0 M5 k3 B  _+ m8 |& q- O5 W2 h  K
最终导入
  @; k: p. v) ?4 B$ E# l1 V( s
9 u5 u) U: I1 X/ M1 K$ y) C/ E
如果Prometheus和influxdb中collectd数据 实例 基本一致,可以设置更多的变量信息。/ q0 H% `* m- D& C  D9 n( e
如 实例不同状态根据Prometheus数据库查询。
7 z# v4 k' J2 s% A9 D+ W: Wuuid也使用Prometheus 数据库根据实例状态查询。
# {- B0 j( b2 l2 g" b其他的数据根据uuid在influxdb的collectd库中查询。- u( A+ \/ d2 l8 e! @7 G
一致的是,实例名依然只能作为一个展示数据,而不能作为真正变量影响数据展示。
结合了prometheus展示了虚拟机的状态,根据状态查询实例uuid,选择ACTIVE可以避免查询到已经废弃的实例,也可选择SHUTOFF查询已停止运行实例的状态 不好的是也会查到状态是BUILD的实例
不过实例状态查询 重要的就是查询最近一段时间内 活动实例 的状态,因此状态变量选择基本是ACTIVE,只用于筛选出活动的变量即可。4 R5 \6 L- {+ W% R- _6 ?
且BUILD 状态的实例BUILD状态只会存在很短的时间,最终会转化成ACTIVE。
grafana变量设置
host    宿主机名(influxdb)
0 z( c" i; R  w# f, G SHOW TAG VALUES WITH KEY=host
instance_status  实例状态(prometheus)
2 Z1 L& `: D( X' [& V5 t# |( u label_values(openstack_nova_server_status{hypervisor_hostname="$host"}, status)
instance_uuid  实例uuid(prometheus)因为此处使用prometheus查询uuid可以根据实例状态查询
2 d+ \( K4 W* y; F2 D label_values(openstack_nova_server_status{hypervisor_hostname="$host",status="$instance_status"}, uuid)
virt_interface  实例虚拟网卡(influxdb), X( O: N0 K6 {5 Q% }
SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
virt_disk   实例虚拟磁盘(influxdb)4 ~) D& G* ^+ s; _7 s
SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
instance_name  实例名(prometheus)* T! G& F' A, r! n
label_values(openstack_nova_server_status{id="$instance_uuid"}, name)
2 j$ `+ `6 \: Y& A( {, W
( B1 ]9 w8 L2 ^' Q6 z5 p3 |panel都不用改变。。。。。。
https://download.csdn.net/download/dandanfengyun/15137036
这里有一个问题 不知道理解的对不对。。。' E& y0 X7 e9 ^6 M7 J
prometheus和collectd都是时序数据库。# _  X0 Y( W/ E2 B
Prometheus记录的实例信息也是按时间存放多个的。(隔一段时间存放当时的实例状态信息)
grafana变量也是和时间相关的(也就是grafana变量不仅和其他变量相关,也和时间相关)
( m5 n: |: g; u+ Z5 U. `9 j$ g也就是说,一个实例的状态信息选择时间段不同,是可能有多个不同的变量的。5 L2 M1 q) {. {: A* t9 Z/ o7 e5 P
如变量为实例运行状态 15分钟前关闭了该实例。假设只有两个实例,一个运行 一个15分钟前关闭。
那么选择5分钟前到现在的时间段,变量就有active和shutoff。active的实例只有一个,shutoff的实例也只有一个。
被删除的实例则没有ACTIVE或SHUT OFF状态,但是prometheus和influxdb中都记录了被删除前虚拟实例的运行状况。
但是当选择30分钟前到现在的时间段,变量就有active和shutoff。shutoff的实例还是只有一个,但是active的实例有两个(这个听起来有点那啥),只要记住 prometheus是时序数据库,不能把该变量当成真正的纯粹记录当前实例状态的布尔值。 30前到15分钟前,该实例是active的,15分钟前到现在,该实例是shutoff的,所以该实例有两个运行状态。。。
问题
" v( ~& ~3 ]* J; ~collectd 无法通过OpenStack获取用户等信息。如果要使用grafana展示可能要通过prometheus。
4 k) x% d2 H* M9 P* S3 e( l- xgrafana需要通过prometheus和influxdb两个数据源才能展示实例的状态信息。
collectd也无法收集实例 内空间使用占用情况。
, }  \& L0 e/ a+ m2 ^6 ?

1

主题

0

回帖

12

积分

管理员

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

ceilometer与gnocchi

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

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

gnocchi解决的问题是大规模地存储和索引时间序列数据和资源。2 S& h) N( ~: l: i8 u6 a
http://gnocchi.xyz

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

不过grafana高版本似乎对gnocchi的兼容不足,3-6版本之间的可以实现兼容。grafana6以上的似乎无法兼容 gnocchi 数据源。因此部署时需重新安装6版本以下的grafana实现 gnocchi数据源的添加展示。
' m* o4 u* t8 O# }" E* [' I# k且ceilometer有时在主机重启后需要重新启动相关服务 才会继续收集数据。

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1! y( j3 j) X5 y2 A
部署相关组件

train版本自动安装的grafana 版本7.3.7。无法添加gnocchi的dataresource。。。(一致testing无法成功)
% p. b# m! ~+ \因此想要使用grafana展示gnocchi中数据的话。需要安装更低版本的grafana。3 o4 {: {) j% s# n+ e: f8 u; F/ Y. m
如安装6.3.4版本的grafana,端口号设置为3002避免和通过kolla部署的冲突。

编辑配置文件。

vim /etc/kolla/globals.yml
  • 1
    1 i8 Y' ]$ A9 q
enable_ceilometer: "yes"enable_ceilometer_ipmi: "yes"enable_gnocchi: "yes"enable_grafana: "yes"
  • 1
  • 2
  • 3
  • 4
    % [# _. i- W! s3 F# P

部署安装

kolla-ansible deploy -i /etc/kolla/all-in-one
  • 1
    ; F( ?: ?9 {, S9 [

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

[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
  • 2 Y* z& V6 ^' ?+ l: g) j+ f1 [
安装gnocchiclient 查看数据。

默认部署 ceilometer 数据保存到gnocchi中保存策略是low。基本上5分钟保存一次数据。。。所以数据有时候需要等一下。
  P/ R. ~8 u1 Y3 k! h5 h长时间无数据且查看相关容器正常运行后 或者宿主机重启后 建议重启ceilometer_notification容器 可能解决问题。

docker restart ceilometer_notification
  • 1
    : J" k7 H0 c) \- {3 g

或者重启 ceilemeter 相关所有容器

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1' V2 @7 n. l& h& A$ P" X

1.安装gnocchiclient

pip install gnocchiclient
  • 1! l/ |8 S( M2 a8 P

2.加载认证

source /etc/kolla/admin-openrc.sh
  • 1, ]. j) c9 n2 [) A* q) E

3.通过gnocchi-api查看gnocchi中存储数据。
; ]; j3 l& }3 l/ W当前采集的资源列表

gnocchi resource list
  • 16 O7 k( }& u5 M' u/ r- d5 m

列出支持资源类别列表

gnocchi resource-type list
  • 1
    ' x/ T, _2 f! T  J1 o

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

gnocchi metric list | grep 511483be-89a2-4b7e-91b8-41adf4276651
  • 1
    & p, h; I" S* R1 y

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

gnocchi measures show e45156e4-7544-49a1-ab9a-a22fdc1f56e2
  • 13 h6 T. ~: \/ t6 U

查看帮助

gnocchi --help
  • 19 i+ r, e. G, ]" T6 U9 x

或者官网查看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 |+---------------------------+-------------+-----------+

  • * f0 S6 D3 e: T

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

Grafana展示

安装完成添加gnocchi数据源后使用dashboard模板展示数据。
& Y9 ^( e3 v9 ], n, g* [/ L% khttps://grafana.com/grafana/dashboards/12536

使用kolla部署的grafana版本过高 似乎不再支持gnocchi 的数据源插件了。) }. a" t3 Z3 G: c. @2 [$ Y) Y% s
只好额外安装一个更低版本的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
  • . L) j3 s3 Y$ u7 W

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

vim /etc/grafana/grafana.ini
  • 1
    9 T8 o% P. T8 m
[server]http_port = 3002
  • 1
  • 2
    0 `% V1 K2 j  h' b+ A+ |' I7 l  _

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

systemctl enable grafana-serversystemctl start grafana-server
  • 1
  • 2
    9 W0 V, N5 W8 Q

grafana安装gnocchi 数据源插件

sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource
  • 1
    ' N" |" R2 Y# I9 f1 k3 C

安装 完成 重启grafana

systemctl restart grafana-server
  • 1" q( z1 H1 f5 z" n
设置配置文件,允许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
    " w6 g1 L  h1 h& B( g" V# e. G

配置gnocchi

vim /etc/kolla/config/gnocchi.conf
  • 1" Y/ x& h( x7 `) C; H- {

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

[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    ! F+ a# @$ Y+ O7 w2 D0 v

配置 keystone

vim /etc/kolla/config/keystone.conf
  • 1
    + p6 a2 K, B  ^( L3 a' w" X
[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 29 Y7 \- ]0 `4 m6 G# e- u

设置完成 kolla重新加载配置

kolla-ansible reconfigure -i /etc/kolla/all-in-one
  • 1& ]) R2 K4 G/ z/ K* d# V. Y
设置gnocchi数据源。使用dashboard模板展示数据。

等待配置重新加载完成后。网页登录进入grafana6.4.3, @. E6 m/ q$ X, [, C
192.168.199.90:3002

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

添加数据源 Add data source 选择gnocchi
4 D+ ^% S5 o7 z% A: T

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用户的登录密码
  • : W& L( s( e$ F
[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

  • 0 g% M/ u) B; [, g) V

认证没问题即可成功添加 gnocchi的数据源。2 P; E& m# C, O  ^  V4 W' h
https://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
( ~, ?0 l: O: |$ K) _  f2 g' Z. p  @https://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- {( l3 M2 w5 g8 H4 c  w, r' i$ `4 p# e
输入模板ID 后按enter 。等待一会后即可导入模板,会让选择数据源,选择刚添加的gnocchi数据源 即可。
# S% n# ?, w3 L! o: d, B当然可以自己根据数据源设置dashboard,只是我gnocchi查询不熟。所以直接使用他人的模板了。

效果大致如下
) @9 x1 Y! B- l8 c* d, g* Vhttps://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
: I4 s- S2 h" k9 B, ]" Yhttps://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分钟记录一次数据太慢尝试修改保存策略。
6 s- k8 @& f5 h通过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     |                                 |+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+
  • * q" {( ?# O' _

查看当前各个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 |+--------------------------------------+---------------------+--------------------------------------------+---------+--------------------------------------+

  • / v8 j& c6 E4 B; k$ K, ~, C3 r

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

修改保存策略

通过docker exec 命令进入ceilometer 相应的容器,查看保存策略的设置。。。
" B0 I0 C' p: ^$ W1 M7 |# wceilometer相关容器

[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
  • 55 I1 G& p1 I, l2 y$ _3 g8 @4 G

进入ceilometer_notification 查看保存策略

[root@ALLInOne-Kolla ~]# docker exec -it ceilometer_notification bash(ceilometer-notification)[ceilometer@ALLInOne-Kolla /]$
  • 1
  • 2
    5 }2 W& E" |& e3 |8 p! z8 D

查看保存策略

cat /etc/ceilometer/gnocchi_resources.yaml
  • 1
    $ {3 ~3 w, [2 p! k( s
---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:        ......

  • 7 c0 Z9 P* b0 j/ Y! Z" c

可以看到默认的保存策略 为ceilometer-low,特别的metric 有单独的保存策略设置。
+ o4 f7 x+ p, @2 p3 t6 ~5 m可以将该配置文件复制到宿主机的config 配置目录中。修改一定的保存策略设置,然后kolla重新加载配置,即可设置ceilometer新的保存策略。
7 z: `# u; I2 ]# [% G3 z$ jgnocchi_resources.yaml 配置文件。; y9 c+ Q/ R; M$ L# X% `0 w4 ]
https://download.csdn.net/download/dandanfengyun/15501637

mkdir -p /etc/kolla/config/ceilometercd /etc/kolla/config/ceilometer
  • 1
  • 2
    8 q6 @+ x  a$ x+ }: k. \

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

vim /etc/kolla/config/ceilometer/gnocchi_resources.yaml
  • 10 g3 T! ~; E0 O  z* ^

只修改网络相关 保存策略 为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
  • * ?4 U2 S5 z1 H5 D9 H

kolla重启加载配置策略

kolla-ansible reconfigure /etc/kolla/all-in-one
  • 1
    6 \" x  ?3 r# O0 Q3 G

配置完成后,已经存在得metric保存策略不变,新建的虚拟实例的相关 metric 保存策略使用新的。! f8 @' x5 q7 A; s

[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 |+--------------------------------------+----------------------+--------------------------------------------+---------+--------------------------------------+
  • 0 }) K' }" Q8 j

可以看到 有保存策略是 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
    ) H% ?* R  ^* ?6 e& D, D

尽管修改了保存策略,新创建实例 的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 |+---------------------------+-------------+---------------+

  • 0 b' U2 F* h: Q9 H
问题

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

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

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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