易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 2786|回复: 1
收起左侧

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

[复制链接]
发表于 2021-7-2 17:00:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。
, `7 ]% Z, [% Binfluxdb 是一个时序数据库。
# A& {, S6 V; Y0 b$ S7 h* _grafana是一个前端展示工具。
可以使用collectd 的virt插件通过Libvirtd 的API 收集虚拟机的数据,然后保存到时序数据库influxdb。最后通过grafana将influxdb中存储的数据以图标的形式展示出来。
一、部署 collectd influxdb grafana prometheus
6 g3 {2 ^# H- I1.修改全局配置globals.yml文件,设置部署监控相关文件。
vim /etc/kolla/globals.yml
$ \$ [9 n9 @0 y4 m0 M0 z
- i3 h' c' l$ Y1 Kenable_collectd: "yes"
# r7 K# _$ Q4 o9 ~2 A* f3 cenable_grafana: "yes"
' P6 |& N% S0 \5 |- h" ?enable_influxdb: "yes"
" v) s% s8 ]9 f* |enable_prometheus: "yes"# J  p  z9 J* \* C
prometheus_cmdline_extras: "-storage.local.retention 720h"
+ ^; a  L+ q4 t' w$ \# S1 a* a0 J, D5 {
prometheus-server 数据保存30天 单位d无法识别。可以附加的参数 可参考https://blog.csdn.net/dengxiangbao3167/article/details/102365367
相应的prometheus的exporter包含
#enable_prometheus_haproxy_exporter: "{{ enable_haproxy | bool }}"* o8 P, M9 K& M3 V( `
#enable_prometheus_mysqld_exporter: "{{ enable_mariadb | bool }}"
' s7 o" j; T0 t#enable_prometheus_node_exporter: "{{ enable_prometheus | bool }}") O  Y/ L* [$ M- q; E8 y1 z9 g, a8 h
#enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}"
  F# G6 {" g2 b#enable_prometheus_memcached: "{{ enable_prometheus | bool }}"
/ Y9 t; ]# y9 w# T* o# T) v#enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"3 S6 ^! E( j: G7 i6 A
#enable_prometheus_ceph_mgr_exporter: "{{ enable_prometheus | bool and enable_ceph | bool }}"
: q- H' _# w( T5 i' @#enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"
( R4 s8 {; a3 Q& N$ m) n& Q#enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}"
  o1 {( u" w. s- m5 p% J5 B& l/ o#enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}", @% R) R! a$ K+ W" t

) I& J5 |8 b. Y. l5 Q' @2.安装部署相应的容器组件
kolla-ansible deploy -i /etc/kolla/all-in-one $ _5 \& T3 h# ]8 p: {7 c$ n
1% o) o, g5 P3 d$ \1 C, e
3.完成后查看相关组件docker容器是否部署完成
docker ps -a | grep -e collectd -e influxdb -e grafana -e prometheus
8 j$ e% h' E- l/ n) C3 k3 \1

$ I2 Y0 m$ ]- B: e6 R% y二、修改相应配置文件,通过libvirt监控虚拟机/ {. b0 V! T1 L; I# E
自定义的配置文件位置,该位置的配置文件会取代默认配置文件。
# The directory to merge custom config files the kolla's config files/ \8 c  _+ c# I- L' d5 c
node_custom_config: "/etc/kolla/config"
1 p/ F$ y4 }, N) G3 c
: d/ e: r, Q8 Dmkdir /etc/kolla/config. a- @. p  `" ]. h7 y6 a, E
1
- F" X. \; r+ C# {/ ^使用kolla部署完成后。默认配置文件是/etc/kolla/<< service name >>/<< config file >>。
! R9 Y4 e* S" D/ f自定义配置文件路径是/etc/kolla/config/,且自定义配置文件一旦设置,就会覆盖且替换原配置文件。
. r7 n; l5 @  H' b* \3 n% ~, @路径可以是
/etc/kolla/config/<< config file >>,
, k7 j8 k' f: K. Q+ k$ d/etc/kolla/config/<< service name >>/<< config file >>,
2 n8 \& n  x, K, B8 {* q- k) T/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>
2 z8 v* J0 _! \# B4 k4 N
  ]  s0 b, X8 o9 U" x) p& Y1.collectd 配置
$ a7 u' ^* d% ?% @libvirt有不同的虚拟机库, 通过API可以访问控制虚拟机。OpenStack也是通过libvirt的API也控制底层的虚拟机的。
cp /etc/kolla/collectd/collectd.conf /etc/kolla/config/- Q0 ~8 `0 Y8 t& O8 H  E& l6 N% }
vim /etc/kolla/config/collectd.conf
2 f7 ~" Q, y, \6 |1
1 K$ b0 K( |% B- w; K8 k2
( V7 X5 r  v4 l# L7 nFQDNLookup false+ h8 |6 r# j( v
LoadPlugin syslog* R' }2 e% f: I  ?* }) X% k* |; z% ]/ L
LoadPlugin cpu9 ]6 v5 P! z/ N8 r
LoadPlugin interface
9 G# L3 q) t7 A5 S( K' T' ?* iLoadPlugin load+ U- g+ H. d% D) h
LoadPlugin memory
LoadPlugin network
LoadPlugin logfile9 M- M5 \2 R) c0 w6 e1 U* M6 @( w
LoadPlugin virt
7 N  X2 E$ Z( p' H
<Plugin network>7 M* ~& n7 e* W; E* P6 S
        Server "192.168.199.90" "25826"" c# F' C" _  Y1 f3 G
</Plugin>
! v& ?5 ?& r! I. z& N; p
<Plugin logfile>
! J4 n# ], C% V, j        LogLevel info3 y- K2 m+ h6 n; m( |3 F4 r
        File "/var/log/kolla/collectd/collectd.log"( j. k3 s7 E' G5 b. g
        Timestamp true
: E8 Z- H2 p7 B6 h8 m        PrintSeverity false% q* n  M$ _5 Z2 D
</Plugin>
) @/ p. I% a9 J: {
<Plugin virt>4 c2 V8 e. F0 P' v
        Connection "qemu+tcp://192.168.199.90/system"
! {* c, i2 K$ S        HostnameFormat hostname
- o$ ^' a9 }# D+ D        PluginInstanceFormat uuid' X7 F$ h, x! Y' |  x. a
        BlockDeviceFormat target: L( ~  D9 Q. S* H
        InterfaceFormat name
  b( n* Q9 }$ w* m1 o% [        ExtraStats "cpu_util"
" j3 H8 I' M8 H5 i! I& X5 z0 D6 D</Plugin>  % [! g6 p% V  b

; N( y" V5 [4 a启用了插件 logfile virt network。logfile是日志插件,virt就是与libvirtd的API通信的插件,network网络插件将收集的数据通过网络发送出去。
network插件设置。
Server "192.168.199.90" "25826"
2 `  y- y1 j$ k6 I! W* v12 `  I) Z% j3 c7 c2 X
表示将数据发送到192.168.199.90主机的25826端口。就是下一步设置的influxdb收集collectd数据的主机 端口。
LoadPlugin cpu
6 [  _' `4 V: PLoadPlugin interface
0 `" b) `; Y1 K8 |8 DLoadPlugin load
/ O5 |& }" l# i' p7 ?LoadPlugin memory5 p. W9 a) K# {$ E% K! x+ E
; ^" |4 |8 I) [4 h9 P
这四个插件是用来收集宿主机的信息的。interface可能还会监听了虚拟机虚拟网卡的信息,如果不希望通过interface插件收集虚拟网卡信息(virt插件会收集)。可以设置interface只监听想要监听的网卡名。
<Plugin "interface">
$ i/ L) a/ t8 N; c8 U& l  Interface "ens33"4 p$ Q/ P3 k- m) q& u# b
  Interface "ens34"
/ h, w0 N; \' a# J! l8 y' J</Plugin>: y' v& ]9 N5 }. Q3 C4 ^0 v

: m6 U, f' O* o7 H4 nvirt 插件设置
<Plugin virt>
- j+ i; i( h- R; F/ y0 q7 `! ]        Connection "qemu+tcp://192.168.199.90/system"
9 G, M. n. X2 a5 B        HostnameFormat hostname; S% l( p* Y  H. r
        PluginInstanceFormat uuid
7 o' [0 r2 r) j        BlockDeviceFormat source: M& @: s1 W! k
        BlockDeviceFormatBasename false
5 |8 {# E% G* F        InterfaceFormat name2 M6 R$ N( w' U( B! y& f
        ExtraStats "cpu_util"
; y& T) q. _! z; h, }% L4 F/ k/ `</Plugin>  
* U% a. r# |: v7 x( q$ g9 O! g8 a* ]4 a+ v
具体参数详情可以看官网/ P7 N  C$ A! F8 H3 ~
https://collectd.org/documentati ... 5.shtml#plugin_virt
Connection 表示连接的libvirt API服务。8 a- ]) m7 i4 w" T. U' [
   就像使用qemu+kvm创建虚拟机时使用virsh管理时使用virsh -c qemu+tcp://192.168.199.90:16509/system
3 X, d( J6 Y0 t9 C' ^. T   即可连接到libvirtd服务控制虚拟机相关。由于16509是默认端口号,可以省略
, ?% m5 E. p& ?+ N" M$ u) }   由于是ALLInOne 所以collectd设置只有一个,多个主机部署时,需要每个计算节点上安装collectd指向本机的libvirt。
# a( Z' S+ `& z+ ]% K   因此每个collectd设置文件都不相同。
HostnameFormat name|uuid|hostname|...5 n$ s( D7 H0 H- G6 ]; d
   当virt插件记录数据时,会根据此设置设置所收集数据的主机名。
* N% N+ S. Y! f8 h# _   默认的做法是使用hypervisor提供的来宾名称,这等于设置为虚拟机name。
$ t" @& o( V# k& Q   UUID 意味着使用虚拟机的UUID。如果您想跨迁移跟踪同一个客户,这是很有用的。, K, \$ W- _$ W4 e' D' P
   hostname 意味着使用“全局主机名”设置,这本身可能并不有用,因为所有来宾似乎都有相同的名称。
# h( n, E9 c" w+ T& x+ v3 `   hostname就是宿主机名。。。这个其实挺重要的(在有多个宿主机的虚拟机数剧都保存到一个数据库时,可以通过hostname来确定不同虚拟机在哪一个主机。)
/ ]0 }1 F* E5 H! i$ h   至于实例的 名称或UUID 可以使用PluginInstanceFormat来设置
PluginInstanceFormat name|uuid|none0 @' E" C6 }9 C/ J" s" N; S/ ]
   当virt插件记录数据时,它会根据此设置设置所收集数据的plugin_instance。默认情况是不设置plugin_instance。(只有一个宿主机时可以直接设置HostnameFormat name来代替PluginInstanceForma的设置)! \2 ^; G6 G2 p$ ~- ~4 i# \* ?
   name是指使用管理程序提供的虚拟机名称。UUID意味着使用虚拟机的UUID。7 V3 |$ c# X' ~
   OpenStack中是根据uuid来管理虚拟机的,虚拟机在libvirtd中的name和OpenStack中设置的并不一致。libvirtd底层管理是自动生成的,OpenStack中创建时手动命名的。
3 W$ R# o# n3 k! c) R8 s  y1 g; {   HostnameFormat和PluginInstanceFormat都可以使用多个fields。如name uuid。会同时显示名称和uuid中间使用 : 分隔。如foo:1234-1234-1234-1234
BlockDeviceFormat target|source1 B& _0 n, y& x& u! l7 c- G
   挂载到虚拟机中的磁盘设备名设置。- x2 Y8 O0 c, }3 W$ b: [
   virsh # domblklist instance-0000000a
" s1 y6 g, f7 @# y   Target     Source* G3 y! _  p& [( n# r8 ~
   ------------------------------------------------+ F; A4 d+ O/ E% g% K: t* }, ]
   vda        /var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk" A$ i9 K9 f3 a  y8 \5 M$ F
   vdb        /dev/sdc
6 R; ?/ T  D  m1 m% c6 r   target  是映射到实例中的磁盘名 vda vdb。即实例中可以通过lsblk看到的。0 v+ O( K8 U9 U/ P
   source 虚拟磁盘对应的路径及磁盘文件名。/var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk /dev/sdc* l* L/ {( h1 V  E" ?# A
   如果设置BlockDeviceFormatBasename设置为true,则只显示文件名 不显示前面的路径。 默认未设置BlockDeviceFormatBasename,是false即显示前面路径
. x1 N# b1 ?5 [9 v+ P
InterfaceFormat name|address
1 z4 ?, z2 X0 ?6 O# b3 R# I( a# ~0 ~   虚拟机的网卡显示 name或者address。name网卡名,address网卡mac地址。
/ J9 ~! a+ q2 D8 q   
6 M0 O2 H: a# t/ k+ {* y: XExtraStats "cpu_util"- B, l, L0 d- M) l/ n* F
   virt额外记录的数据。此处只设置了一个cpu_util 即CPU的利用率。) }" S' U" a* k# j- I. o0 ~4 z4 C
   virsh # domiflist instance-00000002
% B2 o5 D5 u5 s! N: T   Interface  Type       Source      Model       MAC. e" x: z. W1 Z3 \) ?4 [7 N1 \4 Z  N
   -------------------------------------------------------
0 K' s2 ~/ f8 D) J   tap97caffeb-9a bridge    qbr97caffeb-9a virtio      fa:16:3e:64:5f:c0
# d: a: M  t3 [- n# F4 d% t   interface就是name ,MAC就是address

' T2 s# q; i1 I1 h. r# r0 A/ p这是单个主机ALLinOne下设置配置文件的情况,如果多个计算节点,每个计算节点的collectd的配置文件是不同的,需要单独设置(主要不同就是连接的libvirtd API的IP不同),每个计算节点需要一个collectd收集本计算节点的相应libvirt 数据。
很奇怪的一点,似乎使用kolla部署的collectd容器收集虚拟机数据时无法收集虚拟机的内存信息,只能获取虚拟机全部内存。 直接使用yum安装的collectd却可以收集used,availble 等。。。不知道原因
2.influxdb 配置
" W/ U/ q7 |0 B+ e- Fcp /etc/kolla/influxdb/influxdb.conf /etc/kolla/config/% p$ `9 Q: C$ {$ f- h8 V/ F* V4 k. ^; {
vim /etc/kolla/config/influxdb.conf
/ t- B" C- e' p2 c1
0 y: a  ^, a0 D2 |+ H- U" G, A20 Q6 h1 ]0 `9 S
reporting-disabled = true
8 x4 Z" d; B6 H: R% _; r3 P[logging]
- V" D/ E3 Y. C1 x' v  w& ?1 U  level = "info"6 ^1 l9 R; ~/ e0 D
  file = "/var/log/kolla/influxdb/influxdb.log"9 L. E" X& m) S$ V
[meta]
$ U9 n* n- p& q  dir = "/var/lib/influxdb/meta"
6 R7 N7 ]" U5 G  R! ]$ m% j! ]  retention-autocreate = true! j- U0 T1 O$ ~
  logging-enabled = true+ B% _1 _  P7 B. I  }* O1 E( y4 f
[data]
1 v* J3 c; T; r8 f  dir = "/var/lib/influxdb/data"
- y% o( f7 {5 K- D1 D- R  wal-dir = "/var/lib/influxdb/wal"
! o' J; h+ ?7 o+ z  wal-logging-enabled = true
& N0 J+ r7 {" i' @" w/ i  data-logging-enabled = true
  u' _. p& {7 i- E& M2 w4 N( b  index-version = "tsi1"
/ M4 P! r! u8 }$ l' |[coordinator]
$ }: W/ ~' b9 F. {; B3 k4 L) _# g  write-timeout = "10s"
7 V% o9 d9 N1 T, @+ O( A  max-concurrent-queries = 0: K1 k  ?3 m3 j5 g
  query-timeout = "0s"! O2 e- L1 M( ~
  max-select-point = 0
2 ^" t6 d; K; K! h  max-select-series = 0; y8 i; K/ J- k9 S! {2 r( g
  max-select-buckets = 0
5 b$ S& l" L6 B9 v* _) h9 l" W[retention]
, M! s+ s$ h5 t" e2 n4 _5 F& j  enabled = true
8 R' W5 ~  s" G. f0 `  check-interval = "30m"1 i  `# @1 t% V% Q, x) ?/ j" C
[shard-precreation]
6 A3 c( b* v" K) J% u  enabled = true/ ], k0 H  j; \! Q, H3 b/ X
  check-interval = "10m"
5 J4 \. o( z- j; e/ p- V( G  advance-period = "30m"  R, U  D- V% x, L
[monitor]" h+ t( S) x/ Y9 N+ j. @
  store-enabled = true
0 {& V- J$ ?  B; S& w: E, T  o, [9 C  store-database = "_internal"
) K8 [! }$ A' U8 \  store-interval = "10s"& ^9 d9 l* F/ |; t, V
[http]9 f" _5 ^' X% ]6 U3 m1 [' b6 P
  enabled = true
+ ?# ?) K0 D5 S2 Y  bind-address = "192.168.199.90:8086"
7 S: U7 I& \$ g) J  auth-enabled = false
: s# ]' J5 b; Y) X  log-enabled = true8 F+ C' J8 n$ [$ R
  write-tracing = false" t: x/ l% x1 Q, n( Z/ k
  pprof-enabled = false4 n) m1 s* f( m" \# i
  https-enabled = false+ c2 K; j, V0 w# i1 x/ |4 F
[[graphite]]7 P/ ]' E7 s, C) H" T
  enabled = false* e" M, X+ h7 D  o8 o
[[opentsdb]]
: C$ I# k; q: V: o  enabled = false
9 W" e/ _& A4 o[[udp]]9 H1 H$ c% Q0 _  p% j& J4 z, i
  enabled = false
/ u" p& g% Q/ C8 b# |[continuous_queries]) j; Y# v. d( [( j; j1 T& j. `
  log-enabled = true
) V& [9 p  B9 Q: c3 B2 ~  enabled = true
[[collectd]]3 ~* r2 |& |# v9 Z1 F
  enabled = true
- T+ _7 \4 y* _9 J  bind-address = "192.168.199.90:25826"' q8 b) E& i- w
  database = "collectd"
1 D; Z1 H8 m9 m  typesdb = "/var/lib/influxdb/types.db". L2 S* a" W1 [' s1 K- o$ R

) K* F0 |# ?6 ^+ ?+ a4 J主要是添加了 末尾一段。influxdb是可以作为collectd的network Server,可以将collectd发送的数据保存起来。前提是有对应的type.db数据格式。
+ y& H2 F* b( y5 h5 H" j3 }https://download.csdn.net/download/dandanfengyun/14989445
[[collectd]]2 x' l/ Q' }, G1 K  K
  enabled = true5 u2 c" B* V* G
  bind-address = "192.168.199.90:25826"
+ [; Q/ B- S4 w: q2 x( D4 Y  database = "collectd"
) B, p0 Z: ?  E' z% U9 }  typesdb = "/var/lib/influxdb/types.db"/ p) _# D1 W4 o
) }1 Y  U) y2 ^
bind-address = "192.168.199.90:25826"表示监听192.168.199.90主机25827端口的数据。然后保存到库collectd中。数据格式typesdb = “/var/lib/influxdb/types.db”
数据格式文件需要手动添加。部署OpenStack时,对于一些特别的需要存储数据的组件docker,都有相应的docker volume附加卷。直接映射到容器内。 influxdb容器附加卷在宿主机中对应位置
            {
1 N3 p$ z( m% @- d6 f: u: s                "Type": "volume",0 F  M1 C( u& U
                "Name": "influxdb",
1 p' W0 H  s. c/ D3 l8 \9 B                "Source": "/var/lib/docker/volumes/influxdb/_data",
& Q; x2 ]8 ]% P. G                "Destination": "/var/lib/influxdb",
$ r9 }$ |# c: h# G# m+ y3 K( u& ~6 F                "Driver": "local",, q+ J" Y" @& c
                "Mode": "rw",
/ i8 J9 W8 b) s$ j# J0 ]                "RW": true,; x2 C0 N% ]6 H
                "Propagation": ""
% z$ N7 Q' P$ K/ f. r9 O7 \* I& d            },
) }- D  p0 m7 F3 Y5 f
将文件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: \5 @# f- I$ C" s
1. \  i# C+ N6 Z1 Q
[root@ALLInOne-Kolla ~]# ls /var/lib/docker/volumes/influxdb/_data/" z- g7 _/ C2 O. i
data  meta  types.db  wal
$ B1 n* l# E) V* r1
6 U. M0 p+ w; J( Z5 u/ J2 @$ U2- d& i# p8 h. f2 C8 Y( F! |
3.加载个人配置。& t6 C" L7 k% \4 l2 r, u$ D( @
kolla-ansible reconfigure -i /etc/kolla/all-in-one
( t  `, g' E2 [5 x2 Z9 e. a1
$ S, c5 G# ~7 A! x% T9 @6 X) k完成后,会使用个人配置替代默认配置。并重启相应的组件容器加载新的配置。
新配置生效之后,最好将influxdb数据库原数据清除一下,因为原数据中会包含一些不符合新配置的数据。
删除库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'+ F% U7 E* W% d( ]
1% z2 o2 a4 p8 t/ Q% J8 F9 O
新建库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd '
2 s# u' J3 O$ i; a* m' z1
* k# ^; n6 F* S. J  `. F$ e" r有一些配置是无法通过配置文件设置的。如数据保存时间等。可以使用influxdb的api来设置。; w2 y; x, m# b0 n
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'
- o! M  C: r. m/ z. x% G5 w1/ {% X2 c- X. ]) D2 `, c4 G
查看存储策略 一般是永久保存
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=SHOW RETENTION POLICIES ON collectd'
! {6 Q5 ?' z! B( Q( ^- ^( {) m17 l+ ^2 i4 y6 ~. O: ~
设置新的保存策略 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. `" l" \4 K; f- q6 X; t3 J1
( {5 V- n3 v: D# c6 r, N删除旧策略
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP RETENTION POLICY "autogen" ON "collectd"';
1
! i' P4 v2 V7 M! t$ Y5 N23 v, G9 z7 K) f4 g8 d3 s9 g
4.influxdb一些其它的api。
. l. q% Q4 ]( ]9 ~9 K  a删除数据库
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'
1 C7 l+ b3 d$ p( B6 W1
; b& `! m) @) d9 ^9 k6 R3 E: S查看库 列表
curl -G 'http://192.168.199.90:8086/query?q=SHOW+DATABASES'$ o# p# G8 g! ]* p% I
1( K6 B) K, _  b, x) Z0 v: M
查看库measurements 可以理解为表
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=show measurements'
3 C1 W- n  J6 \' ?7 i3 i+ y2 v1" P& k" {7 w+ z! y4 o" @$ e! y( ^
查看具体数据
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=select * from virt_rx  limit 10'
4 D  K. g* f+ }1 i) q% y+ ^8 o1
' x6 x* @: Y6 O. Q! z1 q/ kprometheus和grafana等暂不需额外配置文件。
三、grafana 根据influxdb中数据生成图表。
$ s. t. H9 \, n$ a2 \和普通的监控虚拟机基本一致。https://blog.csdn.net/dandanfengyun/article/details/112269935
不过由于直接通过libvirt的API监控虚拟机状态。没有经过OpenStack,所以虚拟机的名称无法对应。需要通过虚拟机的UUID来确定。
; U$ Z- F! z% R' _6 l2 k9 V连接的是libvirt,也就是计算节点的libvirt。一个collectd只能监听一个计算节点livirtd,多节点部署多个计算节点,需要在每个计算节点安装collectd连接本节点libvirtd。
% A6 G" s0 }- D. e, @对OpenStack的整体信息,如虚拟机数量等也无法统计。且虚拟机移除后,数据不会随之消失,只是无有新的数据统计。保存策略是永久。
所以需要配合prometheus使用。prometheus_openstack_exporter会获取OpenStack的整体信息。如vm数量,cinder数量,glance的镜像数量等。但是没有具体虚拟机的具体信息 。
1.设置数据源。
4 ?2 B& R9 M$ y; [7 Q+ n# E5 X, \登录进grafana http://192.168.199.90:3000 192.168.199.90即grafana组件所在主机IP。
用户 admin。密码可在grafana /etc/kolla/passwords.yml 中找grafana_admin_password
egrep grafana /etc/kolla/passwords.yml 3 v% X0 r, Z. X- p1 N
1
2 u; Q. c5 C% w, ]登录成功后设置数据源
1.influxdb的collectd数据源
Name:collectd (这个是自定义的grafana数据源名)
* w% \; C' Y3 v( Z; p6 fURL : 192.168.199.90:8086
; n" \/ p/ p3 w0 UDatabase:collectd
完成点Save & Test 即可,成功的话是 Data source is working
3 _2 W# g7 `7 D失败查看一下influxdb组件docker容器是否启动,IP端口对不对等。。。
2.prometheus数据源
Name:Prometheus) |  ~% ]4 }7 x
URL:http://192.168.199.90:9091

% z6 H$ x6 t" e, H4 K, v
2.设置dashboard的变量
, ]. c6 P6 V8 S基本上不可能只有一个 虚拟机,且把多个虚拟机的信息一起展示也不合理。所以设置一些变量来确定当前展示的数据是哪一个虚拟机的。

6 [- a& v$ M! P  t6 d, W) q2 S. {host    SHOW TAG VALUES WITH KEY=host
' R: z; H/ \  P8 qinstance_uuid  SHOW TAG VALUES WITH KEY=instance WHERE host='$host'
/ c6 J1 C3 w+ O# `2 {virt_interface  SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid') V9 O- M0 N3 D% K7 t/ s
virt_disk   SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'9 g% X! d) W" }1 G
instance_name  label_values(openstack_nova_server_status{id="$instance_uuid"}, name)) y# Z  c. I" y8 p- P0 n
, t6 A& j. o- \2 s8 n) K! H4 G' \
分别设置宿主机名 虚拟实例uuid 虚拟网卡 虚拟磁盘 以及实例名
4 V; J& {* }: _* e; K/ W宿主机变量
虚拟机实例uuid变量
/ s$ T. T  \7 P+ \8 I  I* Q6 A
虚拟网卡变量

5 f6 E: O" Q8 \: b! V虚拟磁盘变量
实例名
' v: W/ v3 a) k- b. L
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。
8 Q# ?7 G  j0 g- A( U5 B* D1 B这个根据influxdb查询语句和grafana使用个人创建即可。

9 T- |: [( r2 g4 N9 z, q2 \9 i$ _
4.相关dashboard的json示例。
4 L9 D3 N! h/ \; X  ]3 [; k' [* U& G这个只是个人保存使用的一个dashboard示例,应该是无法通用的。4 ?, R, \9 I" j2 g
不用重新每次都再重复一遍2,3。导入数据源collectd后直接import该json文件即可, C) Z" u0 |/ H; D4 |
https://download.csdn.net/download/dandanfengyun/15073272
创建数据源 略。
点击import导入模板

8 [3 {; T8 f! [9 d选择模板文件
, [! d1 m5 M8 L/ l0 g% E* @
最终导入

/ ?1 m8 |7 h$ W8 m$ ^  X- s; e) ?
; _  g; k; u! g$ L* ?* o& f
如果Prometheus和influxdb中collectd数据 实例 基本一致,可以设置更多的变量信息。" O/ {; J4 a" p6 q# a1 t
如 实例不同状态根据Prometheus数据库查询。
, H6 {2 X# e% [8 ]! V- Puuid也使用Prometheus 数据库根据实例状态查询。8 w) _: t; [1 `. A" `' x
其他的数据根据uuid在influxdb的collectd库中查询。
% c/ Z, z+ i7 }( F一致的是,实例名依然只能作为一个展示数据,而不能作为真正变量影响数据展示。
结合了prometheus展示了虚拟机的状态,根据状态查询实例uuid,选择ACTIVE可以避免查询到已经废弃的实例,也可选择SHUTOFF查询已停止运行实例的状态 不好的是也会查到状态是BUILD的实例
不过实例状态查询 重要的就是查询最近一段时间内 活动实例 的状态,因此状态变量选择基本是ACTIVE,只用于筛选出活动的变量即可。& i( F: i  p# |% }% T$ c
且BUILD 状态的实例BUILD状态只会存在很短的时间,最终会转化成ACTIVE。
grafana变量设置
host    宿主机名(influxdb)* _9 o$ _" M: Y/ c, l( l
SHOW TAG VALUES WITH KEY=host
instance_status  实例状态(prometheus)
5 y* p$ o' o; R! O1 g3 N1 J* m* y label_values(openstack_nova_server_status{hypervisor_hostname="$host"}, status)
instance_uuid  实例uuid(prometheus)因为此处使用prometheus查询uuid可以根据实例状态查询0 Z6 f3 g9 c- a
label_values(openstack_nova_server_status{hypervisor_hostname="$host",status="$instance_status"}, uuid)
virt_interface  实例虚拟网卡(influxdb), E* q/ ?- U8 B; J. x6 G3 b
SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
virt_disk   实例虚拟磁盘(influxdb)
8 [* u9 P  ?' E! n" s: U( i+ i+ e SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
instance_name  实例名(prometheus)9 A; k" P; Z8 P" J! O
label_values(openstack_nova_server_status{id="$instance_uuid"}, name)
) G: u0 ~  n1 `0 h& j! C7 `. Q5 u& H1 c, Y
panel都不用改变。。。。。。
https://download.csdn.net/download/dandanfengyun/15137036
这里有一个问题 不知道理解的对不对。。。' v6 q) ]8 {# u( e
prometheus和collectd都是时序数据库。
' Z( k8 u. O; l4 Q. \3 EPrometheus记录的实例信息也是按时间存放多个的。(隔一段时间存放当时的实例状态信息)
grafana变量也是和时间相关的(也就是grafana变量不仅和其他变量相关,也和时间相关)  o0 m6 n" }0 ?" f% Y( H
也就是说,一个实例的状态信息选择时间段不同,是可能有多个不同的变量的。
: ?9 c6 i1 y7 N& {: O! g如变量为实例运行状态 15分钟前关闭了该实例。假设只有两个实例,一个运行 一个15分钟前关闭。
那么选择5分钟前到现在的时间段,变量就有active和shutoff。active的实例只有一个,shutoff的实例也只有一个。
被删除的实例则没有ACTIVE或SHUT OFF状态,但是prometheus和influxdb中都记录了被删除前虚拟实例的运行状况。
但是当选择30分钟前到现在的时间段,变量就有active和shutoff。shutoff的实例还是只有一个,但是active的实例有两个(这个听起来有点那啥),只要记住 prometheus是时序数据库,不能把该变量当成真正的纯粹记录当前实例状态的布尔值。 30前到15分钟前,该实例是active的,15分钟前到现在,该实例是shutoff的,所以该实例有两个运行状态。。。
问题5 [* k- B3 k! C: {0 z
collectd 无法通过OpenStack获取用户等信息。如果要使用grafana展示可能要通过prometheus。/ O4 t4 q6 R( d' B% q# r
grafana需要通过prometheus和influxdb两个数据源才能展示实例的状态信息。
collectd也无法收集实例 内空间使用占用情况。, j, M- q" t9 y6 G1 x# D, S4 u# o6 l" u
 楼主| 发表于 2021-7-2 17:00:29 | 显示全部楼层

ceilometer与gnocchi

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

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

gnocchi解决的问题是大规模地存储和索引时间序列数据和资源。$ w5 D; Y/ |) u( D/ B4 e! b
http://gnocchi.xyz

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

不过grafana高版本似乎对gnocchi的兼容不足,3-6版本之间的可以实现兼容。grafana6以上的似乎无法兼容 gnocchi 数据源。因此部署时需重新安装6版本以下的grafana实现 gnocchi数据源的添加展示。
9 L" S/ @. _. D  m: [且ceilometer有时在主机重启后需要重新启动相关服务 才会继续收集数据。

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1
    : m6 H, a7 ~+ \( ]  s7 N+ k
部署相关组件

train版本自动安装的grafana 版本7.3.7。无法添加gnocchi的dataresource。。。(一致testing无法成功); c/ G# f# `6 |  {3 d
因此想要使用grafana展示gnocchi中数据的话。需要安装更低版本的grafana。* F, }9 Y, o& B6 \6 c
如安装6.3.4版本的grafana,端口号设置为3002避免和通过kolla部署的冲突。

编辑配置文件。

vim /etc/kolla/globals.yml
  • 1
    " X8 L" {; w9 _% X# g5 X& V
enable_ceilometer: "yes"enable_ceilometer_ipmi: "yes"enable_gnocchi: "yes"enable_grafana: "yes"
  • 1
  • 2
  • 3
  • 4
    3 G* S7 c- O' c% }  `; {- b8 [0 k

部署安装

kolla-ansible deploy -i /etc/kolla/all-in-one
  • 1
    2 [6 U7 p2 ^# F! _9 _$ U; c" B! x0 E

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

[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

  • ( t. A  J. c3 L5 @" ^7 Q
安装gnocchiclient 查看数据。

默认部署 ceilometer 数据保存到gnocchi中保存策略是low。基本上5分钟保存一次数据。。。所以数据有时候需要等一下。. ^7 x6 G& S! T8 g) A/ G- x- @! M
长时间无数据且查看相关容器正常运行后 或者宿主机重启后 建议重启ceilometer_notification容器 可能解决问题。

docker restart ceilometer_notification
  • 10 W' D9 T$ s4 A: p0 X

或者重启 ceilemeter 相关所有容器

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 14 w/ x" ^4 j8 W7 y! r$ g6 b5 P

1.安装gnocchiclient

pip install gnocchiclient
  • 1; ^4 m9 ~+ ^2 _9 p5 [: K/ t

2.加载认证

source /etc/kolla/admin-openrc.sh
  • 1  S6 e& b7 X, e6 R; L* l& M! m

3.通过gnocchi-api查看gnocchi中存储数据。" ]% ?% P' N& n" O' E
当前采集的资源列表

gnocchi resource list
  • 1" f% N$ o6 c- p. a5 R

列出支持资源类别列表

gnocchi resource-type list
  • 1, a. p: D! h' F5 `; K) Q- C

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

gnocchi metric list | grep 511483be-89a2-4b7e-91b8-41adf4276651
  • 1
      E% q( x6 S% \

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

gnocchi measures show e45156e4-7544-49a1-ab9a-a22fdc1f56e2
  • 1* s4 ~8 z8 }4 [$ c0 I

查看帮助

gnocchi --help
  • 1
    9 x5 c: u" k! \0 t  K' o* i

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

  • ; }7 S1 u- c$ h; z5 _

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

Grafana展示

安装完成添加gnocchi数据源后使用dashboard模板展示数据。) f1 [+ \1 r- N/ U- j; d" ?* `$ A+ V
https://grafana.com/grafana/dashboards/12536

使用kolla部署的grafana版本过高 似乎不再支持gnocchi 的数据源插件了。
! n. z- V) W' d3 j$ h/ q( ?只好额外安装一个更低版本的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
  • 3 c1 W2 o0 L; E' w) p

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

vim /etc/grafana/grafana.ini
  • 1
    ' u7 v" r& u: H& ~
[server]http_port = 3002
  • 1
  • 2
    9 Q3 E/ c; u6 x+ u; ~0 O% ^  L

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

systemctl enable grafana-serversystemctl start grafana-server
  • 1
  • 2
    , c8 P- Y) X8 S& {5 m7 q+ A, _

grafana安装gnocchi 数据源插件

sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource
  • 1& X1 K( Y4 r! U. F% c7 n

安装 完成 重启grafana

systemctl restart grafana-server
  • 1
    5 t! w5 s/ i' e9 t4 Z
设置配置文件,允许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
    & `9 b1 C' t& i& x: G: ^0 e

配置gnocchi

vim /etc/kolla/config/gnocchi.conf
  • 1( _0 k- t/ b: q& E4 A+ y) q

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

[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    $ X# Q9 v( ]" y- B8 j7 h

配置 keystone

vim /etc/kolla/config/keystone.conf
  • 1( J# m! s0 c* ]7 F- I
[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    3 K, _+ p6 A6 `4 J1 I6 H

设置完成 kolla重新加载配置

kolla-ansible reconfigure -i /etc/kolla/all-in-one
  • 1
    # M; @1 z, }" V, J; V) u" K1 c
设置gnocchi数据源。使用dashboard模板展示数据。

等待配置重新加载完成后。网页登录进入grafana6.4.3
* Y& Z, ^8 y& U5 N% o192.168.199.90:3002

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

添加数据源 Add data source 选择gnocchi) h  e# n, @1 t! w7 m

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用户的登录密码
  • $ n. J: L9 T1 S+ e) f; o
[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
  • 2 u3 p# C! P/ y% I, d2 j' n

认证没问题即可成功添加 gnocchi的数据源。
1 E3 M  D( d0 O) B5 `9 J- Thttps://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
4 Q. x1 k, r; ~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
' |( O4 s8 d: M, J" I- b输入模板ID 后按enter 。等待一会后即可导入模板,会让选择数据源,选择刚添加的gnocchi数据源 即可。4 [" i' Y8 D( X2 m4 v
当然可以自己根据数据源设置dashboard,只是我gnocchi查询不熟。所以直接使用他人的模板了。

效果大致如下
3 i. Y* N% ^4 a2 V% u+ hhttps://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
1 r3 g, @6 _1 ~7 o- ?" I$ Nhttps://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分钟记录一次数据太慢尝试修改保存策略。
; D) |. n; \5 E0 O4 Z4 t通过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     |                                 |+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+
  • + K3 g' j/ ]' h

查看当前各个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 |+--------------------------------------+---------------------+--------------------------------------------+---------+--------------------------------------+
  • + Q# j+ \& p6 a; y- p! X- p! \8 L

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

修改保存策略

通过docker exec 命令进入ceilometer 相应的容器,查看保存策略的设置。。。
; }5 g2 V& U) H) i! o' Sceilometer相关容器

[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
  • 52 U$ l7 p  T. k4 d% T8 v( S. U

进入ceilometer_notification 查看保存策略

[root@ALLInOne-Kolla ~]# docker exec -it ceilometer_notification bash(ceilometer-notification)[ceilometer@ALLInOne-Kolla /]$
  • 1
  • 2
    " d5 f! Q$ C2 y. a  s( y5 q2 @

查看保存策略

cat /etc/ceilometer/gnocchi_resources.yaml
  • 1
    6 g" ^6 E  M- B: N2 O3 p
---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:        ......
  • 3 @' J2 p, G% {, p+ O) e; A. m. h

可以看到默认的保存策略 为ceilometer-low,特别的metric 有单独的保存策略设置。3 i& I/ ~7 [! R$ X* J- Y3 ~2 m
可以将该配置文件复制到宿主机的config 配置目录中。修改一定的保存策略设置,然后kolla重新加载配置,即可设置ceilometer新的保存策略。( P; K1 {! {% O: P- i3 u* X
gnocchi_resources.yaml 配置文件。
0 T" N. U* ~  c6 s- |; U! C& F( S" lhttps://download.csdn.net/download/dandanfengyun/15501637

mkdir -p /etc/kolla/config/ceilometercd /etc/kolla/config/ceilometer
  • 1
  • 2
    % Q: J) |3 U% l2 s4 ?# U4 U; l1 j

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

vim /etc/kolla/config/ceilometer/gnocchi_resources.yaml
  • 1, d$ C; u+ D8 x& G& z+ i* [

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

  • % B! ?2 s; i7 X& Q5 H+ t

kolla重启加载配置策略

kolla-ansible reconfigure /etc/kolla/all-in-one
  • 1
    $ c1 V8 \/ ^5 Q' z# L0 j  k( t

配置完成后,已经存在得metric保存策略不变,新建的虚拟实例的相关 metric 保存策略使用新的。
7 }8 L# u$ j/ y' L

[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 |+--------------------------------------+----------------------+--------------------------------------------+---------+--------------------------------------+
  • ; q' a) j6 j  D" G$ U. X" G

可以看到 有保存策略是 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
    & u# [" D8 X3 @

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

  • 4 S" c1 n4 a; ~! n( L/ ~
问题

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

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

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

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 15:22 , Processed in 0.052419 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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