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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-2 17:00:28 | 显示全部楼层 |阅读模式
collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。
6 o( @; |  @# D, D7 [* rinfluxdb 是一个时序数据库。
: T2 a/ C* L! x6 E7 Pgrafana是一个前端展示工具。
可以使用collectd 的virt插件通过Libvirtd 的API 收集虚拟机的数据,然后保存到时序数据库influxdb。最后通过grafana将influxdb中存储的数据以图标的形式展示出来。
一、部署 collectd influxdb grafana prometheus
6 R8 }- D4 A( S, }" I& L. @1.修改全局配置globals.yml文件,设置部署监控相关文件。
vim /etc/kolla/globals.yml! M  b$ \' J. `" ^! A# [# a
" r$ A4 y5 z) D" T
enable_collectd: "yes"
( O$ }: {' Q2 o) K3 ^enable_grafana: "yes"
# i) X) L0 c' \enable_influxdb: "yes", s3 X0 [% E3 O7 W
enable_prometheus: "yes"
  P0 P: i2 V0 J6 yprometheus_cmdline_extras: "-storage.local.retention 720h"
5 P+ R( s3 |: Q/ [/ Q' q- @$ ^
! Q2 r; Y* t; ^) Lprometheus-server 数据保存30天 单位d无法识别。可以附加的参数 可参考https://blog.csdn.net/dengxiangbao3167/article/details/102365367
相应的prometheus的exporter包含
#enable_prometheus_haproxy_exporter: "{{ enable_haproxy | bool }}"8 f3 ~: O- T! E* A3 R& K
#enable_prometheus_mysqld_exporter: "{{ enable_mariadb | bool }}"+ x; E! P' s' q8 n3 Q5 }
#enable_prometheus_node_exporter: "{{ enable_prometheus | bool }}". I7 r( q3 U9 x/ z/ X; G
#enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}"
$ k  |3 L" A- Y+ ]. R#enable_prometheus_memcached: "{{ enable_prometheus | bool }}"
# H. W% M4 Y3 o) k#enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"
) q  E1 N# i6 x7 Y; z+ h#enable_prometheus_ceph_mgr_exporter: "{{ enable_prometheus | bool and enable_ceph | bool }}"6 r2 m! K/ z/ E# u, N, `
#enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"
9 \, Q- Z+ H, [; w#enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}", q6 |  \3 H; M/ ?# c9 Y
#enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}"
1 e" u! b4 ^, U$ {
4 _7 g; }- A" {/ _9 ]& r2.安装部署相应的容器组件
kolla-ansible deploy -i /etc/kolla/all-in-one
& d: w4 z8 R9 }+ o% Q' b( w* n19 g' y) @0 P4 p. D: u! M, A
3.完成后查看相关组件docker容器是否部署完成
docker ps -a | grep -e collectd -e influxdb -e grafana -e prometheus% {1 j& F: |6 }. |) O3 U8 S+ U
1

& D1 P$ d+ ~& j$ H6 Y6 P+ }2 o二、修改相应配置文件,通过libvirt监控虚拟机
* g, j! e4 b" N8 t1 J5 a- i( U自定义的配置文件位置,该位置的配置文件会取代默认配置文件。
# The directory to merge custom config files the kolla's config files
1 F" L: P! @5 u: ?9 Snode_custom_config: "/etc/kolla/config"' [% [$ o8 b* t3 G* K' O
* V/ a( `9 U8 @6 @& P, g
mkdir /etc/kolla/config+ j+ w2 C# x  `# ]2 U' ~9 R
16 g4 l. S" A( G/ N# u7 c( p
使用kolla部署完成后。默认配置文件是/etc/kolla/<< service name >>/<< config file >>。: u) H3 K: {! ]+ N& `
自定义配置文件路径是/etc/kolla/config/,且自定义配置文件一旦设置,就会覆盖且替换原配置文件。
* ]2 A) k. N; u. _3 G, b" `" ?; H$ n路径可以是
/etc/kolla/config/<< config file >>,
) P% f) |7 J3 u* V7 x' ~) H6 t/etc/kolla/config/<< service name >>/<< config file >>,
, w5 `/ J! ?! r( o+ z+ x( c+ M" w/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>3 i/ S1 l! r3 R% P, z) _" y" @

5 ~% d$ |7 d$ P  c1.collectd 配置
6 V4 X, X: }1 Blibvirt有不同的虚拟机库, 通过API可以访问控制虚拟机。OpenStack也是通过libvirt的API也控制底层的虚拟机的。
cp /etc/kolla/collectd/collectd.conf /etc/kolla/config/! z6 U( @& l$ b* K3 H) J
vim /etc/kolla/config/collectd.conf 1 s& R; `- E8 S. q3 b1 o
1
8 s7 y! n( R1 e5 X2 I$ X# @2
: a4 e% d  f9 n. q% k' d- lFQDNLookup false
. p4 p$ [" M6 S4 D% E& eLoadPlugin syslog
8 i$ [6 v% J/ }; R8 XLoadPlugin cpu3 M% r: L! t! b  w2 R0 x& J0 y
LoadPlugin interface+ ^2 Z) [, F  b
LoadPlugin load
- G& t, G/ _- l: w  C, X. z0 ULoadPlugin memory
LoadPlugin network
LoadPlugin logfile
/ c" B1 c+ r  L  g$ qLoadPlugin virt
/ C2 }- l# G2 H5 ~  t  p1 X
<Plugin network>+ N8 n: N" @+ x3 s7 B
        Server "192.168.199.90" "25826"3 P7 B3 p5 Z2 b2 i( c0 ]
</Plugin>
, `( p* a' w/ o$ }6 k9 U) A' ?9 e
<Plugin logfile>; K" Q" x  k& v- g* H
        LogLevel info& b( Q- t- h: R* ?* z9 H( ]
        File "/var/log/kolla/collectd/collectd.log". k# d" x! S$ e% `% ~
        Timestamp true& N' P4 r" M' E. }( j6 r
        PrintSeverity false! @. B0 p( ^1 o2 f+ Q5 y
</Plugin>
+ z1 ?9 ^0 z& Y
<Plugin virt>
8 |. M: j9 X) ^' [        Connection "qemu+tcp://192.168.199.90/system"8 D. ?' h% m. Y& f  G3 ^
        HostnameFormat hostname( Y" t" K: E. [& e( `" j
        PluginInstanceFormat uuid
/ m) N% n! z, g9 T4 P6 @. G( n" i        BlockDeviceFormat target  T4 A0 F# i: [/ X
        InterfaceFormat name
' F; t; F& U4 c$ N( {5 X1 U' `        ExtraStats "cpu_util"0 T* v# U+ d2 g6 t" n) s
</Plugin>  ! Y5 u* a: u1 V4 p" E

9 z5 b" R: a+ [5 A5 ]1 k; \8 L3 f: G启用了插件 logfile virt network。logfile是日志插件,virt就是与libvirtd的API通信的插件,network网络插件将收集的数据通过网络发送出去。
network插件设置。
Server "192.168.199.90" "25826"  A7 V& y4 Y* A3 ~6 O# C! J
18 z* G) Y  Q0 j5 D
表示将数据发送到192.168.199.90主机的25826端口。就是下一步设置的influxdb收集collectd数据的主机 端口。
LoadPlugin cpu
4 K; f8 K/ z  f  W/ ILoadPlugin interface& r, F5 N# k$ e* W3 d& A9 X
LoadPlugin load7 s- x4 G0 C. J
LoadPlugin memory
+ D) f- T5 s  Z. A3 y; e* {+ n" b! q6 R: i1 W9 V: f
这四个插件是用来收集宿主机的信息的。interface可能还会监听了虚拟机虚拟网卡的信息,如果不希望通过interface插件收集虚拟网卡信息(virt插件会收集)。可以设置interface只监听想要监听的网卡名。
<Plugin "interface">* e, @( }, K5 n. y' ?
  Interface "ens33"
- q; M( Y& A- v3 L4 H7 w9 _  Interface "ens34"% u4 \* S% Y% c( |5 K3 n! F2 O
</Plugin>! C% [- Y  D& m; {3 w& m1 s

& [. E: r/ `5 H4 x  svirt 插件设置
<Plugin virt>5 R, \+ V2 V1 z/ T/ e
        Connection "qemu+tcp://192.168.199.90/system"
8 q# p% T* {/ S) b- ]# n        HostnameFormat hostname: |- w, w9 ]3 K) S8 ~/ w' R
        PluginInstanceFormat uuid
# d& `! D6 h% ]" T6 d        BlockDeviceFormat source
  ~# z6 y2 ?1 N( O) ^6 C3 N# @2 @        BlockDeviceFormatBasename false
$ {: L+ t5 F; i" r        InterfaceFormat name
6 O7 p0 u, d5 @* ~6 s; ~        ExtraStats "cpu_util"' }% ~; \% \/ `& C0 _2 P* g
</Plugin>  
2 ~1 B% T% j4 ~
4 c, t8 U" d- X) `2 f" L+ u- _具体参数详情可以看官网
3 t6 Q5 A2 @+ y# V: nhttps://collectd.org/documentati ... 5.shtml#plugin_virt
Connection 表示连接的libvirt API服务。
4 m7 Y9 h% q8 ~( c' F   就像使用qemu+kvm创建虚拟机时使用virsh管理时使用virsh -c qemu+tcp://192.168.199.90:16509/system
$ E/ q5 V6 F  B* z3 Z* l   即可连接到libvirtd服务控制虚拟机相关。由于16509是默认端口号,可以省略! r9 a5 |! V! M) |) G. V
   由于是ALLInOne 所以collectd设置只有一个,多个主机部署时,需要每个计算节点上安装collectd指向本机的libvirt。
2 ]) A* y2 E1 I$ o5 y+ E" d   因此每个collectd设置文件都不相同。
HostnameFormat name|uuid|hostname|...
5 \9 |, c2 z: \; j0 \6 L) J9 b5 }2 F' i   当virt插件记录数据时,会根据此设置设置所收集数据的主机名。
7 \3 Y' j) V" c4 W" K) I5 t* r   默认的做法是使用hypervisor提供的来宾名称,这等于设置为虚拟机name。
- ^, P: W9 V+ F5 ^* D' k. `   UUID 意味着使用虚拟机的UUID。如果您想跨迁移跟踪同一个客户,这是很有用的。
" w0 `7 H" \, S; S0 U  M" y   hostname 意味着使用“全局主机名”设置,这本身可能并不有用,因为所有来宾似乎都有相同的名称。7 _% v! O% ?! ?5 A5 S" h
   hostname就是宿主机名。。。这个其实挺重要的(在有多个宿主机的虚拟机数剧都保存到一个数据库时,可以通过hostname来确定不同虚拟机在哪一个主机。)3 M9 \6 o) a- q7 s- E  {* ^5 t
   至于实例的 名称或UUID 可以使用PluginInstanceFormat来设置
PluginInstanceFormat name|uuid|none
) O8 f% H( Z  W! h. A   当virt插件记录数据时,它会根据此设置设置所收集数据的plugin_instance。默认情况是不设置plugin_instance。(只有一个宿主机时可以直接设置HostnameFormat name来代替PluginInstanceForma的设置)
: e: r& Y1 R- U" Y   name是指使用管理程序提供的虚拟机名称。UUID意味着使用虚拟机的UUID。
* |- N0 l: \$ m5 m- R   OpenStack中是根据uuid来管理虚拟机的,虚拟机在libvirtd中的name和OpenStack中设置的并不一致。libvirtd底层管理是自动生成的,OpenStack中创建时手动命名的。
9 ^! j) {: G1 O$ q# C' j   HostnameFormat和PluginInstanceFormat都可以使用多个fields。如name uuid。会同时显示名称和uuid中间使用 : 分隔。如foo:1234-1234-1234-1234
BlockDeviceFormat target|source
, {9 @7 z. C, [* b% k- B   挂载到虚拟机中的磁盘设备名设置。% n% E* }" E5 O( ^
   virsh # domblklist instance-0000000a* T& a0 s+ q, Y& y6 @  \
   Target     Source
$ `/ j$ ?3 Y& K   ------------------------------------------------0 N( Y! M" G! v- O3 [+ G
   vda        /var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk/ y1 f- A+ [1 i3 x
   vdb        /dev/sdc- E0 R+ S( Y# F3 m! y
   target  是映射到实例中的磁盘名 vda vdb。即实例中可以通过lsblk看到的。: l* I3 {4 G# i5 T- A: m' {9 A, }
   source 虚拟磁盘对应的路径及磁盘文件名。/var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk /dev/sdc
% K8 s( H* R! ]   如果设置BlockDeviceFormatBasename设置为true,则只显示文件名 不显示前面的路径。 默认未设置BlockDeviceFormatBasename,是false即显示前面路径
# A8 Q& y: q' o
InterfaceFormat name|address
" g9 n7 u! h( }+ D7 d- q& C- c   虚拟机的网卡显示 name或者address。name网卡名,address网卡mac地址。
9 w* f7 i& ^2 N/ c7 {0 ?7 g2 d   1 [' K- _0 h5 d% J7 P5 k0 _
ExtraStats "cpu_util"
  T9 x( \9 s' `2 M  Q   virt额外记录的数据。此处只设置了一个cpu_util 即CPU的利用率。: l! |3 c9 `/ f3 }
   virsh # domiflist instance-00000002   e$ x  M& P+ c/ Z, l' l# A/ q9 {1 W2 Z
   Interface  Type       Source      Model       MAC0 M9 Y+ e- F7 }- y$ I
   -------------------------------------------------------1 p9 {; H. r# z2 c6 ]
   tap97caffeb-9a bridge    qbr97caffeb-9a virtio      fa:16:3e:64:5f:c05 Y  g7 {4 u2 F9 u
   interface就是name ,MAC就是address

3 n& h7 j! f- M这是单个主机ALLinOne下设置配置文件的情况,如果多个计算节点,每个计算节点的collectd的配置文件是不同的,需要单独设置(主要不同就是连接的libvirtd API的IP不同),每个计算节点需要一个collectd收集本计算节点的相应libvirt 数据。
很奇怪的一点,似乎使用kolla部署的collectd容器收集虚拟机数据时无法收集虚拟机的内存信息,只能获取虚拟机全部内存。 直接使用yum安装的collectd却可以收集used,availble 等。。。不知道原因
2.influxdb 配置$ L4 e4 E! c2 q8 l$ n
cp /etc/kolla/influxdb/influxdb.conf /etc/kolla/config/" \( e  ~9 y, B5 H
vim /etc/kolla/config/influxdb.conf : }# H: c7 P1 n$ }
1& j3 x  |9 R) U/ G3 v  C
2
& \  E* u9 y6 _/ Yreporting-disabled = true
% ?0 b: {1 }" ~' v- \# ^[logging]1 W  M, a0 |; s5 J
  level = "info"/ H5 G4 [% r" d' Z2 q
  file = "/var/log/kolla/influxdb/influxdb.log"
$ `% _8 f- z4 z! p0 L[meta]# U4 d5 f) Z6 z: {2 O; d
  dir = "/var/lib/influxdb/meta"
1 s0 K. Q* l2 e$ h1 n  retention-autocreate = true
8 y2 Q7 m, l/ h  D  logging-enabled = true5 Y) N6 k: r+ L, N' k8 D
[data]! O9 |& k8 Z/ U+ L; ^( d
  dir = "/var/lib/influxdb/data": R% L5 d$ Z& c# A* @7 d
  wal-dir = "/var/lib/influxdb/wal"
9 M6 j6 Q( x5 H- c" q  wal-logging-enabled = true
) \) G( y# B' U  q  y  data-logging-enabled = true
+ L9 d* U$ S3 b$ `0 a- ?: b  index-version = "tsi1"
; L" R6 e8 x: T4 W# v[coordinator]
: a' u+ U. H" G3 T: P) }  write-timeout = "10s"
' t, M& z* o; q+ K" ?; x7 o0 O  max-concurrent-queries = 0
3 S! H1 Z* G$ f5 ^  query-timeout = "0s"
; n: ~# w( \" @( m  max-select-point = 0
' F5 z7 x: P! X/ F+ S. l" Q. g. U  max-select-series = 0
7 I' V+ v( v7 v  max-select-buckets = 0, \+ M0 ~1 Q4 [: x* i
[retention]  p; D2 a1 @! L0 c+ p
  enabled = true
! w6 E- I9 F' Z4 x1 S; T  check-interval = "30m"; d5 \/ H: w* _* ?# a
[shard-precreation]/ |" P, T% z' K5 `2 B6 m- M6 D
  enabled = true
& Y7 I' e* l/ j& x& H% t  check-interval = "10m"
# K/ H$ `. y' i8 |& W5 R4 S  advance-period = "30m"
1 I! Z" _: S) K4 [6 T[monitor]
5 ^; ]+ R* g3 z  store-enabled = true' A1 T, ]8 y% G. e& }' n
  store-database = "_internal") p1 [$ x$ `) i. o. l% C
  store-interval = "10s"
( _& `& T# d3 p+ v- n+ A[http]
0 K' M$ b& l( X  enabled = true
& E# `$ u& E' ]4 Z! T# \& m  bind-address = "192.168.199.90:8086"
( k0 ~# H, `& p; z; n/ R3 w) d) H- u* T  auth-enabled = false
) \3 ?7 Z" h3 `% W7 p$ a, Q, q  n  log-enabled = true4 j/ y' m5 v( f8 j: M
  write-tracing = false
7 @# e& j; \" e8 A  pprof-enabled = false+ B, T6 ]  C+ u4 i) a0 ]
  https-enabled = false
$ M" o' }% e- ?/ t7 \5 J8 C& u( D[[graphite]]
# k# `/ V) t8 `$ l  {  enabled = false
/ H5 K% p3 n$ [! f0 D% ?[[opentsdb]]/ B0 f8 A5 Z% _
  enabled = false8 m6 ~! d" s, [$ z/ h% A" R# a
[[udp]]
9 L4 X/ n& D4 c; v7 g( }: W  enabled = false' j& f; c( O% o) N
[continuous_queries]. v/ V" g" B* g1 J
  log-enabled = true
. W2 b9 b# A4 e  enabled = true
[[collectd]]
6 e/ c  Z3 K/ a. }6 l/ v  enabled = true- C$ w+ h5 V5 e7 t1 J# g
  bind-address = "192.168.199.90:25826"
# D' v- I+ b9 V0 O" z, a# Z  database = "collectd"
0 f) E# [1 v  @" F" @5 x, ?) g  typesdb = "/var/lib/influxdb/types.db"- f. [6 g9 f2 P* z$ A8 V- t# s

0 C9 O% B  h' r2 Q# t主要是添加了 末尾一段。influxdb是可以作为collectd的network Server,可以将collectd发送的数据保存起来。前提是有对应的type.db数据格式。$ _" _+ t+ y! i$ f! M! x) Z2 W
https://download.csdn.net/download/dandanfengyun/14989445
[[collectd]]
2 b( |& L* O4 ^8 |8 j; R3 B4 n  enabled = true
9 B. o- D) A! |; M  V/ c7 }  bind-address = "192.168.199.90:25826"3 b- k6 f' l3 b/ O! O# v% h
  database = "collectd". l! \; k$ F; Q3 J" [# ~7 F3 z
  typesdb = "/var/lib/influxdb/types.db"
0 @4 I  n3 l2 Q+ q+ z* h. n* w: n# H' P$ K& j- {
bind-address = "192.168.199.90:25826"表示监听192.168.199.90主机25827端口的数据。然后保存到库collectd中。数据格式typesdb = “/var/lib/influxdb/types.db”
数据格式文件需要手动添加。部署OpenStack时,对于一些特别的需要存储数据的组件docker,都有相应的docker volume附加卷。直接映射到容器内。 influxdb容器附加卷在宿主机中对应位置
            {- Y$ D' o6 _3 i# N0 e
                "Type": "volume",
3 R' l" e1 c2 Z3 \( H1 U                "Name": "influxdb",
: c% C3 ?! f8 e) y* r                "Source": "/var/lib/docker/volumes/influxdb/_data",9 T2 O8 a; O) R/ k- r0 S  ~" @
                "Destination": "/var/lib/influxdb",- y/ w+ i9 Y% z$ l
                "Driver": "local",. A0 R* B/ L+ x5 [2 O6 i  A! T7 W
                "Mode": "rw",) S" K* v9 i) m
                "RW": true,
" I: k- `% |7 J8 d/ v                "Propagation": ""
2 X4 J6 K1 m/ r! S0 H" L* B' u            },

1 f' C) |  h/ e4 O& m# z. `6 g将文件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
  D! e1 e( y, X2 Z* p  _. ]1
3 {- R# I# n: [9 V( i[root@ALLInOne-Kolla ~]# ls /var/lib/docker/volumes/influxdb/_data/! t8 m& z: S7 w
data  meta  types.db  wal$ v# |9 |& ]+ e: W2 _6 Y/ B
1
4 O& J! ~, w6 `: z: h$ I* w+ q% w* L( t2% X- X5 g5 d9 _7 }( m7 a+ _% s
3.加载个人配置。
5 W2 ^- O) W0 zkolla-ansible reconfigure -i /etc/kolla/all-in-one
9 Q. k& O& L  a" Z# _1
& b) j+ O& b- h1 r- W完成后,会使用个人配置替代默认配置。并重启相应的组件容器加载新的配置。
新配置生效之后,最好将influxdb数据库原数据清除一下,因为原数据中会包含一些不符合新配置的数据。
删除库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'
0 l' v2 L5 X) s: Q5 L2 K12 a+ M% h# @- t0 `/ s+ ~& P
新建库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd '6 B" ^- w1 Z$ k: [2 \
1& o# l. B8 @; |1 ]6 x9 M) P! f
有一些配置是无法通过配置文件设置的。如数据保存时间等。可以使用influxdb的api来设置。
( ^: _* c. R0 F/ A. {7 ihttps://archive.docs.influxdata. ... .2/tools/api/#query
创建库collectd (如果有数据存入,该库会被自动创建的)
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd'
+ j5 m9 d) R& P, d) ?13 \  p  p2 V( \# b  w
查看存储策略 一般是永久保存
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=SHOW RETENTION POLICIES ON collectd'' x" H% q6 E% ?# @' U+ s
1
; o0 g, L4 d" [9 Z  i+ P9 ^- M设置新的保存策略 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'! S, l2 p" G# b9 Q" a' [# \
1
3 ~9 A8 M% [/ _7 I删除旧策略
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP RETENTION POLICY "autogen" ON "collectd"';
1$ n5 N3 C$ n  ?7 f7 q
2
" C9 V. N6 k! h4.influxdb一些其它的api。6 M3 R$ L  P+ T9 d3 J8 ~
删除数据库
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'
+ H: U; w7 e/ H0 a& k  B10 P* K# K/ l9 H' ^
查看库 列表
curl -G 'http://192.168.199.90:8086/query?q=SHOW+DATABASES'! t/ B/ l$ v, h% J5 z: L
1" i1 S6 ]( S( E8 w4 U( ]6 L
查看库measurements 可以理解为表
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=show measurements'
  {9 W- m2 {6 d9 L7 d6 w7 V1
  K0 R' \8 y+ z" k9 _# x查看具体数据
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=select * from virt_rx  limit 10'
' B6 A: p, k, p, b, A! ?1
2 g$ Z. L% ~$ c# N6 d8 n1 L7 x  Oprometheus和grafana等暂不需额外配置文件。
三、grafana 根据influxdb中数据生成图表。
5 d1 k8 r$ P) |( u* Z和普通的监控虚拟机基本一致。https://blog.csdn.net/dandanfengyun/article/details/112269935
不过由于直接通过libvirt的API监控虚拟机状态。没有经过OpenStack,所以虚拟机的名称无法对应。需要通过虚拟机的UUID来确定。
* ^( b8 I1 P1 m6 [) J, H4 W+ b连接的是libvirt,也就是计算节点的libvirt。一个collectd只能监听一个计算节点livirtd,多节点部署多个计算节点,需要在每个计算节点安装collectd连接本节点libvirtd。; ?$ y3 [; M6 G9 y2 B- ^# [( k
对OpenStack的整体信息,如虚拟机数量等也无法统计。且虚拟机移除后,数据不会随之消失,只是无有新的数据统计。保存策略是永久。
所以需要配合prometheus使用。prometheus_openstack_exporter会获取OpenStack的整体信息。如vm数量,cinder数量,glance的镜像数量等。但是没有具体虚拟机的具体信息 。
1.设置数据源。
  e* s1 X" [! g% j2 ?: b登录进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
0 h+ o; E( W1 ]  Y3 O16 a4 [6 o# B6 Y3 I( ~
登录成功后设置数据源
1.influxdb的collectd数据源
Name:collectd (这个是自定义的grafana数据源名)
# e& O# O* v  D" G- |1 ]URL : 192.168.199.90:8086& b2 N" [! Y4 y
Database:collectd
完成点Save & Test 即可,成功的话是 Data source is working
2 Y! j1 c- N! G0 Y( f失败查看一下influxdb组件docker容器是否启动,IP端口对不对等。。。
2.prometheus数据源
Name:Prometheus" a% y! `0 c* a* X) z
URL:http://192.168.199.90:9091
) o& F. q7 H1 {% H* X/ f
2.设置dashboard的变量* W1 j  ?& M3 ?- h: }% X4 h) H) u
基本上不可能只有一个 虚拟机,且把多个虚拟机的信息一起展示也不合理。所以设置一些变量来确定当前展示的数据是哪一个虚拟机的。
- H& }0 w5 A( ?. @5 Z
host    SHOW TAG VALUES WITH KEY=host0 @0 B/ ?& q7 A# c
instance_uuid  SHOW TAG VALUES WITH KEY=instance WHERE host='$host'
4 i( Y* r/ Z, B1 Nvirt_interface  SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
; R2 Q, }2 K% S0 h" i* Fvirt_disk   SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'( n9 X7 N7 t, j6 |, M! E
instance_name  label_values(openstack_nova_server_status{id="$instance_uuid"}, name)! t8 _, ], e1 h( v  V2 S( a
% s% `% `! Q7 v0 {0 O6 ^
分别设置宿主机名 虚拟实例uuid 虚拟网卡 虚拟磁盘 以及实例名
2 X+ Z$ S7 a& z宿主机变量
虚拟机实例uuid变量
0 G% O0 ]6 _* c4 `  j5 ]% B
虚拟网卡变量
* H$ I3 p# {, Y- h  Y; E# ^4 J  @. ]
虚拟磁盘变量
实例名

5 w. E0 U) k1 d) bhost 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。+ _# m5 d8 I" @- F
这个根据influxdb查询语句和grafana使用个人创建即可。

% L& k; A5 Q0 J7 U( O7 j  S9 O7 K
4.相关dashboard的json示例。6 U  {* p8 k# D* E1 m  Q8 x$ f) \
这个只是个人保存使用的一个dashboard示例,应该是无法通用的。
" i" l+ k8 M2 j7 f  K6 v6 F: T8 p不用重新每次都再重复一遍2,3。导入数据源collectd后直接import该json文件即可1 I. ]8 Q7 ~+ D2 Y/ O/ {) X
https://download.csdn.net/download/dandanfengyun/15073272
创建数据源 略。
点击import导入模板

$ j9 J, |0 J! G选择模板文件

- }: ^# T& [1 |5 w, P$ @" G最终导入
  t0 H, z: C9 ]1 X+ s) R

" i7 d5 K5 H; B2 n如果Prometheus和influxdb中collectd数据 实例 基本一致,可以设置更多的变量信息。
* \& m. |0 N4 E, W# O& o" y6 D如 实例不同状态根据Prometheus数据库查询。3 C5 j7 _$ c, D! Y
uuid也使用Prometheus 数据库根据实例状态查询。
% B6 @6 f7 s1 _% k' t% A' v5 N( M+ e其他的数据根据uuid在influxdb的collectd库中查询。. m4 Y" r( D  z5 S/ W8 F- X, F" o
一致的是,实例名依然只能作为一个展示数据,而不能作为真正变量影响数据展示。
结合了prometheus展示了虚拟机的状态,根据状态查询实例uuid,选择ACTIVE可以避免查询到已经废弃的实例,也可选择SHUTOFF查询已停止运行实例的状态 不好的是也会查到状态是BUILD的实例
不过实例状态查询 重要的就是查询最近一段时间内 活动实例 的状态,因此状态变量选择基本是ACTIVE,只用于筛选出活动的变量即可。7 W, ^( H. _8 V
且BUILD 状态的实例BUILD状态只会存在很短的时间,最终会转化成ACTIVE。
grafana变量设置
host    宿主机名(influxdb)
1 B" C+ U$ q' B$ K* i* v SHOW TAG VALUES WITH KEY=host
instance_status  实例状态(prometheus), N# ^8 ^& N3 j
label_values(openstack_nova_server_status{hypervisor_hostname="$host"}, status)
instance_uuid  实例uuid(prometheus)因为此处使用prometheus查询uuid可以根据实例状态查询
& ]) A0 d: m. g label_values(openstack_nova_server_status{hypervisor_hostname="$host",status="$instance_status"}, uuid)
virt_interface  实例虚拟网卡(influxdb)
" A) r" `! r. E5 T SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
virt_disk   实例虚拟磁盘(influxdb)
: U; p" b0 p0 G: Z2 O% M# D! H6 A SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
instance_name  实例名(prometheus)& C- s4 x1 O5 U; O
label_values(openstack_nova_server_status{id="$instance_uuid"}, name)
# a: Z+ w4 D/ T/ S& y' s: M6 K; J( S, v7 ^7 `' }: J
panel都不用改变。。。。。。
https://download.csdn.net/download/dandanfengyun/15137036
这里有一个问题 不知道理解的对不对。。。( ~$ {" m5 y: U' R6 n% S
prometheus和collectd都是时序数据库。
  H8 z# ^3 Z' h- s$ l( qPrometheus记录的实例信息也是按时间存放多个的。(隔一段时间存放当时的实例状态信息)
grafana变量也是和时间相关的(也就是grafana变量不仅和其他变量相关,也和时间相关)
+ r% @4 c2 m+ C1 M4 _, z: c+ W  m也就是说,一个实例的状态信息选择时间段不同,是可能有多个不同的变量的。# s6 h# d2 A' Z: V
如变量为实例运行状态 15分钟前关闭了该实例。假设只有两个实例,一个运行 一个15分钟前关闭。
那么选择5分钟前到现在的时间段,变量就有active和shutoff。active的实例只有一个,shutoff的实例也只有一个。
被删除的实例则没有ACTIVE或SHUT OFF状态,但是prometheus和influxdb中都记录了被删除前虚拟实例的运行状况。
但是当选择30分钟前到现在的时间段,变量就有active和shutoff。shutoff的实例还是只有一个,但是active的实例有两个(这个听起来有点那啥),只要记住 prometheus是时序数据库,不能把该变量当成真正的纯粹记录当前实例状态的布尔值。 30前到15分钟前,该实例是active的,15分钟前到现在,该实例是shutoff的,所以该实例有两个运行状态。。。
问题$ P4 o' Y3 p% M
collectd 无法通过OpenStack获取用户等信息。如果要使用grafana展示可能要通过prometheus。
9 a( o7 o7 F2 bgrafana需要通过prometheus和influxdb两个数据源才能展示实例的状态信息。
collectd也无法收集实例 内空间使用占用情况。
$ N" _+ G" k$ D2 s; _

1

主题

0

回帖

12

积分

管理员

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

ceilometer与gnocchi

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

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

gnocchi解决的问题是大规模地存储和索引时间序列数据和资源。& h/ W8 w2 V9 l& ^2 v+ Z1 \, c
http://gnocchi.xyz

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

不过grafana高版本似乎对gnocchi的兼容不足,3-6版本之间的可以实现兼容。grafana6以上的似乎无法兼容 gnocchi 数据源。因此部署时需重新安装6版本以下的grafana实现 gnocchi数据源的添加展示。$ F# }4 h+ l+ h' `
且ceilometer有时在主机重启后需要重新启动相关服务 才会继续收集数据。

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1
    # ^" ?: N0 R( F/ H/ o" q
部署相关组件

train版本自动安装的grafana 版本7.3.7。无法添加gnocchi的dataresource。。。(一致testing无法成功)4 M: s7 J* _0 G. @
因此想要使用grafana展示gnocchi中数据的话。需要安装更低版本的grafana。- i! P. ]( @! r' ]( k3 P
如安装6.3.4版本的grafana,端口号设置为3002避免和通过kolla部署的冲突。

编辑配置文件。

vim /etc/kolla/globals.yml
  • 11 \7 e& Y$ K" l, {& Q
enable_ceilometer: "yes"enable_ceilometer_ipmi: "yes"enable_gnocchi: "yes"enable_grafana: "yes"
  • 1
  • 2
  • 3
  • 4
    & j) G" p- A/ [9 @2 @; ^

部署安装

kolla-ansible deploy -i /etc/kolla/all-in-one
  • 1
    ) o6 v; T1 V3 L& T. V9 g

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

[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 N% `/ W" b6 [: Q) e8 N
安装gnocchiclient 查看数据。

默认部署 ceilometer 数据保存到gnocchi中保存策略是low。基本上5分钟保存一次数据。。。所以数据有时候需要等一下。  R5 i* t2 w" @, P1 t1 X0 n
长时间无数据且查看相关容器正常运行后 或者宿主机重启后 建议重启ceilometer_notification容器 可能解决问题。

docker restart ceilometer_notification
  • 1
    ! x0 @( I/ N0 A8 \

或者重启 ceilemeter 相关所有容器

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1  p. {. d' j: H9 Z% S

1.安装gnocchiclient

pip install gnocchiclient
  • 1
    - n+ A) a/ e, i- _2 M

2.加载认证

source /etc/kolla/admin-openrc.sh
  • 1
    0 l# v6 u$ u/ V

3.通过gnocchi-api查看gnocchi中存储数据。3 B) H" |* \9 j1 I2 n% v- ?. A
当前采集的资源列表

gnocchi resource list
  • 1- C( y" w1 M6 e/ a" [7 K" x

列出支持资源类别列表

gnocchi resource-type list
  • 19 t/ i! ?' S! N0 S+ X. z

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

gnocchi metric list | grep 511483be-89a2-4b7e-91b8-41adf4276651
  • 1& Y$ ]* d8 Q, v/ a4 c! ^

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

gnocchi measures show e45156e4-7544-49a1-ab9a-a22fdc1f56e2
  • 1, W+ ?% T- }% t" I

查看帮助

gnocchi --help
  • 1
    1 Z7 ~6 c; H+ W) ?1 Q+ \( `6 s

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

  • 9 Z" y1 I9 w/ z( j, f" w, O1 _

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

Grafana展示

安装完成添加gnocchi数据源后使用dashboard模板展示数据。
* t; S3 f: V( \6 @https://grafana.com/grafana/dashboards/12536

使用kolla部署的grafana版本过高 似乎不再支持gnocchi 的数据源插件了。  U# K! ?/ ?' p  Q1 z+ c
只好额外安装一个更低版本的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

  • 5 V- Q) r* B8 b

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

vim /etc/grafana/grafana.ini
  • 13 [8 A% t2 G! L- a) ?  r  c
[server]http_port = 3002
  • 1
  • 2- Y9 [- r  S* w3 N0 V6 G1 |

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

systemctl enable grafana-serversystemctl start grafana-server
  • 1
  • 2
    4 U+ r; R# f4 r: f

grafana安装gnocchi 数据源插件

sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource
  • 12 s% I1 e/ f" C9 Y" B5 A

安装 完成 重启grafana

systemctl restart grafana-server
  • 1
    ' X8 j" l" `/ {$ {: U) U
设置配置文件,允许grafana6.4.3读取gnocchi数据。
cp /etc/kolla/keystone/keystone.conf /etc/kolla/config/cp /etc/kolla/gnocchi-api/gnocchi.conf /etc/kolla/config/
  • 1
  • 22 |5 s+ J4 X4 }7 T. U/ b

配置gnocchi

vim /etc/kolla/config/gnocchi.conf
  • 1
    " p* C3 d# ^- A5 O* z: _

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

[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    # D, j. V9 o) y+ Y" H) ~

配置 keystone

vim /etc/kolla/config/keystone.conf
  • 1
    4 F2 E% H$ P/ M
[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2# C: x9 j* m/ Z, t

设置完成 kolla重新加载配置

kolla-ansible reconfigure -i /etc/kolla/all-in-one
  • 1
    & l* X7 G  ?+ L% G: F+ G3 q
设置gnocchi数据源。使用dashboard模板展示数据。

等待配置重新加载完成后。网页登录进入grafana6.4.3% ]( r- @" C& m% F/ U% k4 g
192.168.199.90:3002

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

添加数据源 Add data source 选择gnocchi2 W1 j! h) E$ c0 n& z( g! k

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用户的登录密码
  • ! V* R9 x4 Z0 {
[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

  • . |. t  \4 v6 Y1 S, l

认证没问题即可成功添加 gnocchi的数据源。2 ]* D- @/ G7 Z1 Y
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
6 G) A: |& U" u+ }& x& N- s7 u9 Ehttps://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
/ j* @, i0 z& ~5 H4 g, m输入模板ID 后按enter 。等待一会后即可导入模板,会让选择数据源,选择刚添加的gnocchi数据源 即可。
/ @! |3 z5 f* c/ |) K当然可以自己根据数据源设置dashboard,只是我gnocchi查询不熟。所以直接使用他人的模板了。

效果大致如下
' b& D% \+ d) U* f# `( _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
. a3 N. K- t0 A' B" l" }8 uhttps://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分钟记录一次数据太慢尝试修改保存策略。( J! P# A& R$ X) P0 W7 Y# n5 Y# Y
通过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     |                                 |+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+
  • $ \' v+ ]$ \8 s% n  D: }9 _1 B

查看当前各个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 |+--------------------------------------+---------------------+--------------------------------------------+---------+--------------------------------------+
  • 2 S2 H) Y( e0 U6 n" S7 y

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

修改保存策略

通过docker exec 命令进入ceilometer 相应的容器,查看保存策略的设置。。。
! U! Z6 u, C7 Q# @  }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/ D+ P; A* }* E, s+ X% q

进入ceilometer_notification 查看保存策略

[root@ALLInOne-Kolla ~]# docker exec -it ceilometer_notification bash(ceilometer-notification)[ceilometer@ALLInOne-Kolla /]$
  • 1
  • 2) h' d. B3 ]! U1 `- N8 N( f

查看保存策略

cat /etc/ceilometer/gnocchi_resources.yaml
  • 1
    , [1 ]9 H! J1 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 I2 {. ~/ {+ u- s

可以看到默认的保存策略 为ceilometer-low,特别的metric 有单独的保存策略设置。
3 q7 h6 ~7 A8 |; ]可以将该配置文件复制到宿主机的config 配置目录中。修改一定的保存策略设置,然后kolla重新加载配置,即可设置ceilometer新的保存策略。
8 s4 I5 Z3 V  V2 H0 ^gnocchi_resources.yaml 配置文件。  [, Q2 @$ r+ S/ ]5 N7 o, w+ w
https://download.csdn.net/download/dandanfengyun/15501637

mkdir -p /etc/kolla/config/ceilometercd /etc/kolla/config/ceilometer
  • 1
  • 20 t+ M* w# i* E: G; M1 J- F+ g$ M

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

vim /etc/kolla/config/ceilometer/gnocchi_resources.yaml
  • 1
    8 |( ?  ?3 T$ l+ b1 H

只修改网络相关 保存策略 为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

  • 5 ~6 O& w; B+ Z' u) E! S

kolla重启加载配置策略

kolla-ansible reconfigure /etc/kolla/all-in-one
  • 1
    - g2 ^- r2 h& t/ Y( j: t& V

配置完成后,已经存在得metric保存策略不变,新建的虚拟实例的相关 metric 保存策略使用新的。
: [/ [: [, l! ]) v, B2 R# G* V

[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 |+--------------------------------------+----------------------+--------------------------------------------+---------+--------------------------------------+
  • 1 K. W, ?  V  c8 v3 M( _

可以看到 有保存策略是 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' R6 Z; s) i1 K% ~8 z3 C. e

尽管修改了保存策略,新创建实例 的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 |+---------------------------+-------------+---------------+
  • ( M! W& Y* r" T* x2 f
问题

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

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

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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