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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-2 17:00:28 | 显示全部楼层 |阅读模式
collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。. d( y) S2 U7 k, f$ ~
influxdb 是一个时序数据库。( H" p& u& y% x6 k( k
grafana是一个前端展示工具。
可以使用collectd 的virt插件通过Libvirtd 的API 收集虚拟机的数据,然后保存到时序数据库influxdb。最后通过grafana将influxdb中存储的数据以图标的形式展示出来。
一、部署 collectd influxdb grafana prometheus5 X" x2 v) E2 L8 {1 h( {
1.修改全局配置globals.yml文件,设置部署监控相关文件。
vim /etc/kolla/globals.yml
% T: g8 b: B) t' p9 ~# r% D  V1 H/ I# ?
enable_collectd: "yes"9 H# t3 b& U9 n& @
enable_grafana: "yes". W8 l+ _4 X% `4 \( |- K1 m
enable_influxdb: "yes"1 Q* [* p+ c- |2 P3 a* |9 X
enable_prometheus: "yes"+ K2 |! r7 Q) u; \( @: v8 H
prometheus_cmdline_extras: "-storage.local.retention 720h"7 N0 A  J& ?# I8 G+ n7 j

" [" G- [$ @( \. Vprometheus-server 数据保存30天 单位d无法识别。可以附加的参数 可参考https://blog.csdn.net/dengxiangbao3167/article/details/102365367
相应的prometheus的exporter包含
#enable_prometheus_haproxy_exporter: "{{ enable_haproxy | bool }}"! f! r3 \& ~: S8 v" d% I# w- B
#enable_prometheus_mysqld_exporter: "{{ enable_mariadb | bool }}"# P! C5 J/ x4 R# E. |
#enable_prometheus_node_exporter: "{{ enable_prometheus | bool }}"$ h1 s- u8 T" x4 Q7 q0 {0 J
#enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}"
6 j3 e7 f! U. I8 e#enable_prometheus_memcached: "{{ enable_prometheus | bool }}"
" U4 L: `( X$ w/ C+ s2 D#enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"
" @% n3 `; v4 s+ ^( ^#enable_prometheus_ceph_mgr_exporter: "{{ enable_prometheus | bool and enable_ceph | bool }}"7 {: J, D9 |. ^
#enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"8 k5 T8 A/ c1 p0 s* s
#enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}"
7 @% Q$ Y, A& E0 |6 e: ~3 d2 \; F#enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}"
+ O! G1 I  I) \0 ^+ Q7 G; {" \) U! z5 C$ m: S$ |5 C; h9 j5 x! C
2.安装部署相应的容器组件
kolla-ansible deploy -i /etc/kolla/all-in-one * [- t5 R% z  x% @) \% \
1; m8 `5 R  v. ^; X1 ?" ]
3.完成后查看相关组件docker容器是否部署完成
docker ps -a | grep -e collectd -e influxdb -e grafana -e prometheus" @% Q- s& I& ~$ Z7 ~) f
1
) c" V! y% j3 C  \4 U* ?
二、修改相应配置文件,通过libvirt监控虚拟机
& M* C& j' q, M+ b自定义的配置文件位置,该位置的配置文件会取代默认配置文件。
# The directory to merge custom config files the kolla's config files; x1 j! L; L8 s- f; m* }- K
node_custom_config: "/etc/kolla/config"' i/ c8 r) ?) i4 K$ A
1 C# E/ _0 Y% X8 h7 e5 T0 W  j# Q$ s
mkdir /etc/kolla/config3 t$ z- t: M! A" C8 x! V5 [
1* ^, B  o! ^/ `: O/ ~( C
使用kolla部署完成后。默认配置文件是/etc/kolla/<< service name >>/<< config file >>。
4 ]1 P) _# G! b' L自定义配置文件路径是/etc/kolla/config/,且自定义配置文件一旦设置,就会覆盖且替换原配置文件。
$ @- o5 H9 I3 t! A- T路径可以是
/etc/kolla/config/<< config file >>,
0 \  A! v5 d& n5 m% C) l; T/ h/etc/kolla/config/<< service name >>/<< config file >>,6 Y* {% f+ o# ^" n
/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>* r- u4 A; i( d' B. I4 _8 d3 Q0 O4 ?
) T* Z9 @: b+ N( U. B  M. _
1.collectd 配置$ g# a+ S4 z& l8 Q4 N# Y
libvirt有不同的虚拟机库, 通过API可以访问控制虚拟机。OpenStack也是通过libvirt的API也控制底层的虚拟机的。
cp /etc/kolla/collectd/collectd.conf /etc/kolla/config/2 E+ `# D2 _+ C( y2 \
vim /etc/kolla/config/collectd.conf ) q' J6 h* A. @
16 }5 U( d% o* q- a5 Z# b0 Q
2
6 ^3 M& c4 Z$ g. t: EFQDNLookup false& Z2 A# n/ [, H" Z- m1 J/ F
LoadPlugin syslog* a( \4 O& h& o5 S5 e3 s4 m
LoadPlugin cpu
" F0 S1 J$ d+ R; Q% y4 ]LoadPlugin interface: Q1 Y: O: r  q9 Q2 v# [( t
LoadPlugin load
  P+ B' q3 j4 W2 M; Z/ D' NLoadPlugin memory
LoadPlugin network
LoadPlugin logfile
, \( t: h+ [$ q% S& `7 gLoadPlugin virt

( S# W$ i$ ~+ {  {5 H; y$ g6 f<Plugin network>  i/ f8 h9 I$ l$ T( c$ w
        Server "192.168.199.90" "25826"
% g0 b  O4 ?8 N, N: t) A</Plugin>

7 @* F1 ?5 v0 g- M( E3 M& N<Plugin logfile>2 j. H3 V' v+ L& x
        LogLevel info  W- n/ L1 @% B9 E. E# }
        File "/var/log/kolla/collectd/collectd.log"3 ?1 ~! {9 v6 s
        Timestamp true! n2 F; b/ }7 L( Y0 `( }: J, @
        PrintSeverity false
" }& d1 B; p1 `% f( l</Plugin>

3 E) u& d, t3 H% U$ C& m! s<Plugin virt>
) b8 F( P( p6 N4 [, v        Connection "qemu+tcp://192.168.199.90/system", B8 A$ ]& N* B% _5 B: G
        HostnameFormat hostname
, `# R9 u2 d0 n, T2 B1 h& N8 q        PluginInstanceFormat uuid' S$ N8 r6 c9 C' w& X
        BlockDeviceFormat target
! J6 [2 J$ m% u" v# B/ X        InterfaceFormat name
! ~: D1 g, d0 b! |% C) a        ExtraStats "cpu_util"9 T- H" [! i' ~+ W1 `% ?2 {$ f
</Plugin>  
2 C5 x' ?, g; [' T/ j9 \  V, m( q0 A9 F0 h( x- X
启用了插件 logfile virt network。logfile是日志插件,virt就是与libvirtd的API通信的插件,network网络插件将收集的数据通过网络发送出去。
network插件设置。
Server "192.168.199.90" "25826"( |5 h. J( e8 `9 m5 }: B9 F
1$ U2 m: D7 z) f, ^* j4 ~
表示将数据发送到192.168.199.90主机的25826端口。就是下一步设置的influxdb收集collectd数据的主机 端口。
LoadPlugin cpu
7 W1 a7 y5 N. B& `/ t2 n9 H2 QLoadPlugin interface
. k) f) p; G9 |1 a2 mLoadPlugin load, L" k* U2 @8 o7 h+ F
LoadPlugin memory
* r2 d* d& z  N/ V' H4 t* [6 W- F& L" S6 |
这四个插件是用来收集宿主机的信息的。interface可能还会监听了虚拟机虚拟网卡的信息,如果不希望通过interface插件收集虚拟网卡信息(virt插件会收集)。可以设置interface只监听想要监听的网卡名。
<Plugin "interface">
* C! @& r# v, D9 i1 w& A$ y% y  Interface "ens33"
8 s; `. ^3 H6 h6 y  f  Interface "ens34"
& j- K( _% E$ j9 F5 R</Plugin>
, a8 A; ~8 J0 B2 B+ B! z, A2 M3 L: l7 v# W1 H/ w" E) s8 B& _) P
virt 插件设置
<Plugin virt>
6 h- c1 _7 P9 z; Y        Connection "qemu+tcp://192.168.199.90/system"2 e/ R9 `4 J) D+ d+ b" A
        HostnameFormat hostname
5 p3 |5 N3 S7 E$ \! C- l+ @9 O        PluginInstanceFormat uuid
' P3 g$ \4 B/ s2 J' Q        BlockDeviceFormat source
' r: M( T7 X" |( H4 \2 G5 f) _  T        BlockDeviceFormatBasename false( Y  ~( ~: N* A3 L
        InterfaceFormat name
5 B5 Z# x/ B2 j( B        ExtraStats "cpu_util"
# [* r  M$ d4 \/ e8 J</Plugin>  
6 s0 [" g. s: t0 W& a$ ^/ r, X+ i3 d' v# L; K
具体参数详情可以看官网( J0 {& K1 A4 t1 s1 c( o! l, o
https://collectd.org/documentati ... 5.shtml#plugin_virt
Connection 表示连接的libvirt API服务。
& f4 a6 t; o: Q) U4 ^   就像使用qemu+kvm创建虚拟机时使用virsh管理时使用virsh -c qemu+tcp://192.168.199.90:16509/system
: J6 w* Z5 P% ?3 i   即可连接到libvirtd服务控制虚拟机相关。由于16509是默认端口号,可以省略
0 o' f, E  ]% ]. j# Q/ p; @   由于是ALLInOne 所以collectd设置只有一个,多个主机部署时,需要每个计算节点上安装collectd指向本机的libvirt。+ C( v" m+ U: g6 i/ x2 r; w
   因此每个collectd设置文件都不相同。
HostnameFormat name|uuid|hostname|...
; d' G4 n2 t& M( g  f8 `+ c   当virt插件记录数据时,会根据此设置设置所收集数据的主机名。; W& [- C  s; W) Y: {8 x/ j
   默认的做法是使用hypervisor提供的来宾名称,这等于设置为虚拟机name。
7 K7 ^0 g: \# }3 l% o/ J   UUID 意味着使用虚拟机的UUID。如果您想跨迁移跟踪同一个客户,这是很有用的。
% e' z- |4 x) M. ]1 @   hostname 意味着使用“全局主机名”设置,这本身可能并不有用,因为所有来宾似乎都有相同的名称。9 ?! W9 R+ z& b8 \! j. |
   hostname就是宿主机名。。。这个其实挺重要的(在有多个宿主机的虚拟机数剧都保存到一个数据库时,可以通过hostname来确定不同虚拟机在哪一个主机。)
( k* {/ k/ O+ ^   至于实例的 名称或UUID 可以使用PluginInstanceFormat来设置
PluginInstanceFormat name|uuid|none
( I; ~* J) C% d% z5 j; T: H   当virt插件记录数据时,它会根据此设置设置所收集数据的plugin_instance。默认情况是不设置plugin_instance。(只有一个宿主机时可以直接设置HostnameFormat name来代替PluginInstanceForma的设置)
8 i( q8 F9 e+ L1 [2 b& I; s   name是指使用管理程序提供的虚拟机名称。UUID意味着使用虚拟机的UUID。0 Y" E5 l3 I5 g' H
   OpenStack中是根据uuid来管理虚拟机的,虚拟机在libvirtd中的name和OpenStack中设置的并不一致。libvirtd底层管理是自动生成的,OpenStack中创建时手动命名的。  `( w4 m2 u& c5 }& V3 r
   HostnameFormat和PluginInstanceFormat都可以使用多个fields。如name uuid。会同时显示名称和uuid中间使用 : 分隔。如foo:1234-1234-1234-1234
BlockDeviceFormat target|source( E9 |% K2 S+ g- [
   挂载到虚拟机中的磁盘设备名设置。: X# F) n) K2 W) ~; c- G6 L% g
   virsh # domblklist instance-0000000a
. V8 A- _+ M) w   Target     Source
) G/ c8 ^6 M8 B8 B# |* |2 k8 Z   ------------------------------------------------
  V+ F6 g$ L5 r/ U9 |6 U. T' o   vda        /var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk( k; b  U3 ~" }' o" W$ o/ L
   vdb        /dev/sdc/ u0 L! r$ u. h
   target  是映射到实例中的磁盘名 vda vdb。即实例中可以通过lsblk看到的。
# o# y) z4 o4 ~( A3 g" P7 ]   source 虚拟磁盘对应的路径及磁盘文件名。/var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk /dev/sdc3 ?; h5 ^. i/ b- U0 s" ]; b2 g7 t2 j/ C9 Q! _
   如果设置BlockDeviceFormatBasename设置为true,则只显示文件名 不显示前面的路径。 默认未设置BlockDeviceFormatBasename,是false即显示前面路径

  P/ Z* n8 d2 A5 f* O3 JInterfaceFormat name|address9 t% \: T3 P5 t0 ?0 p
   虚拟机的网卡显示 name或者address。name网卡名,address网卡mac地址。
# ^/ i/ M3 X" ~. \; _: J4 ?, t* P! f   ; y4 y! U( ]0 V8 o" Y
ExtraStats "cpu_util"
8 @9 w3 J: s: J% L   virt额外记录的数据。此处只设置了一个cpu_util 即CPU的利用率。) S& T# `) W) b) n4 @/ P# a% C
   virsh # domiflist instance-00000002 & c+ y! X% u; ^4 B: ~
   Interface  Type       Source      Model       MAC
5 V" f( w0 J' y$ V   -------------------------------------------------------' M6 }# n, T( Q6 l+ p) l$ P- f8 S
   tap97caffeb-9a bridge    qbr97caffeb-9a virtio      fa:16:3e:64:5f:c0# e8 E" t% Q5 Y; p1 l
   interface就是name ,MAC就是address

. c2 n3 h2 I! o- @这是单个主机ALLinOne下设置配置文件的情况,如果多个计算节点,每个计算节点的collectd的配置文件是不同的,需要单独设置(主要不同就是连接的libvirtd API的IP不同),每个计算节点需要一个collectd收集本计算节点的相应libvirt 数据。
很奇怪的一点,似乎使用kolla部署的collectd容器收集虚拟机数据时无法收集虚拟机的内存信息,只能获取虚拟机全部内存。 直接使用yum安装的collectd却可以收集used,availble 等。。。不知道原因
2.influxdb 配置1 H" p6 a: N" a8 `! L
cp /etc/kolla/influxdb/influxdb.conf /etc/kolla/config/
- p$ D$ @1 F7 Fvim /etc/kolla/config/influxdb.conf % Y( p& j% t; \6 B% Y6 W7 o5 o
1
) f2 P9 O/ e- r; ~" y" A22 N1 \& t% a9 a0 U# c- X
reporting-disabled = true
9 q8 J* W8 e4 N[logging]( \8 [+ K- C$ F( z5 q. i1 G7 b: F1 e
  level = "info"% I6 T) }& f: d. S' y9 M0 a
  file = "/var/log/kolla/influxdb/influxdb.log"" u5 u( U- X  r" v
[meta]7 X' G8 \! b7 u9 A4 v- z1 A- c
  dir = "/var/lib/influxdb/meta"$ u' J. I7 @1 x
  retention-autocreate = true
5 \# l! m; H* F4 @7 f  logging-enabled = true
* T( ?; ^3 V9 }; s[data]6 Y, S/ F1 m2 U7 v
  dir = "/var/lib/influxdb/data"
3 z8 p) \. A# |) p  wal-dir = "/var/lib/influxdb/wal"2 V0 d: U9 \" M2 U" \$ h
  wal-logging-enabled = true: P- l7 [% S: h( N# D" z" l. r
  data-logging-enabled = true
* n+ M. [1 |8 N: C! @, Y  index-version = "tsi1"
6 x- h' ?, u6 C2 Z3 @2 N$ Y[coordinator]0 F7 A6 o8 D( d0 m5 m
  write-timeout = "10s"4 a" X5 `6 ~+ V1 K* s" Q
  max-concurrent-queries = 0
: M! f$ R  A# c/ t- ~) v; o  query-timeout = "0s"
6 y$ G, j( ^1 x& T2 Y) M" D! P  max-select-point = 0
1 f' g# v* R, G: g! x+ s! {  max-select-series = 0
+ i. Z5 y: |( c7 l3 q* n* S5 s! T" C6 v  max-select-buckets = 0, O4 `% T9 X0 o( s
[retention]
6 f; @7 W; S9 n% \/ G& [  enabled = true: s( ]9 |9 y: Q, }
  check-interval = "30m"$ o7 k+ W. g' P0 g  L
[shard-precreation]. C9 r, m! H& f4 w  U
  enabled = true
& d. ^5 B& P2 t. z  R" h  check-interval = "10m"
' b& O* U+ _& A$ f3 |+ i$ {$ D9 i: y  advance-period = "30m", w) V. `+ K. L
[monitor]9 T  J, @4 Q- n/ e+ p4 @4 _
  store-enabled = true7 A  e: a" Q$ v0 O/ D& w3 c
  store-database = "_internal"
- \7 N* x; t5 {& k0 Y( y  store-interval = "10s"
2 v1 H: k* k) g5 d0 E5 P[http]
9 x1 E5 C/ d. T" u6 H9 L5 R  enabled = true
! e7 w3 P) z2 ?- _: f  bind-address = "192.168.199.90:8086"
! A- O8 [; }. K4 E  auth-enabled = false
% j& A* O) {  @% c1 K, D: x  log-enabled = true& V( x# B' I; F4 Z) K
  write-tracing = false
7 x; A/ y3 k5 S  pprof-enabled = false- J& e$ C; W( |& W# W
  https-enabled = false9 g9 L6 P! ]. T
[[graphite]]2 T1 n- P: w7 y6 o
  enabled = false) ]* Y6 g9 z* f( x# U( q% m; A8 c% {' S
[[opentsdb]]- t" ~  Q) o) e0 w
  enabled = false; g0 }! b( G2 x. `
[[udp]]
* b- @4 I5 }7 @: z2 @* [5 e  enabled = false
1 H8 X1 w8 e* m6 G1 P3 y2 B[continuous_queries]
7 p) _' k  T) T  log-enabled = true( [. @- ^- r9 C/ L
  enabled = true
[[collectd]]
& w* i2 f( S. L% h1 T' t  enabled = true
3 f( Q  o! N7 ~% ]  O  bind-address = "192.168.199.90:25826"6 t$ W" l# s* b  c
  database = "collectd"
' ?$ k+ O% a( X6 y  typesdb = "/var/lib/influxdb/types.db"
# \! ?# X  m, W1 j, [9 s. J
6 d0 y3 P- D3 R- S" ]主要是添加了 末尾一段。influxdb是可以作为collectd的network Server,可以将collectd发送的数据保存起来。前提是有对应的type.db数据格式。
# }' R; B0 @# V+ Uhttps://download.csdn.net/download/dandanfengyun/14989445
[[collectd]]
: {. @9 M. g; u, Y" G0 V2 ]- j  enabled = true
% j% {: [9 n% [# B" ~/ U+ N( h3 T; ~  bind-address = "192.168.199.90:25826": a* @% m( K7 i/ r( t( b
  database = "collectd"3 |' h; f& i$ h2 ?
  typesdb = "/var/lib/influxdb/types.db"
3 ]2 b( `, @6 N8 k3 W6 G' |( R& C5 O1 D  I
bind-address = "192.168.199.90:25826"表示监听192.168.199.90主机25827端口的数据。然后保存到库collectd中。数据格式typesdb = “/var/lib/influxdb/types.db”
数据格式文件需要手动添加。部署OpenStack时,对于一些特别的需要存储数据的组件docker,都有相应的docker volume附加卷。直接映射到容器内。 influxdb容器附加卷在宿主机中对应位置
            {' h% `" m# d4 w4 A
                "Type": "volume",
5 E  K3 T8 t6 o& ]- b                "Name": "influxdb",
6 p- P7 m, H# t6 w1 |                "Source": "/var/lib/docker/volumes/influxdb/_data",. y: t) T4 @4 y8 a
                "Destination": "/var/lib/influxdb",* G2 ~! S2 i" S8 I* p
                "Driver": "local",
& k6 N* D$ M6 Y( r  t  l2 s0 t                "Mode": "rw",
, g: J9 B& h( t7 X2 p: C- a% k                "RW": true,
1 F0 @6 s$ u2 H( K. D                "Propagation": ""' d" |: w5 N& {% ?% U8 s; t7 S
            },

  i5 P/ l( H9 k# {将文件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.db3 W# {9 ^5 L5 E, M9 {
1
6 z( W8 T- h/ q0 O# b/ J[root@ALLInOne-Kolla ~]# ls /var/lib/docker/volumes/influxdb/_data/
  x# |0 {9 t. p  g/ M! |9 p; @data  meta  types.db  wal# P: w7 q3 f8 v% G8 H5 o1 S4 [
1+ \  q- S5 L/ Q5 P; y1 d7 B
2
# f* h, H7 G$ ~4 F' n* D3.加载个人配置。
. @3 e6 s* ]" S- N6 wkolla-ansible reconfigure -i /etc/kolla/all-in-one 5 T5 ~* e& e2 ?3 W
1
/ z/ c, J$ a, _( Y完成后,会使用个人配置替代默认配置。并重启相应的组件容器加载新的配置。
新配置生效之后,最好将influxdb数据库原数据清除一下,因为原数据中会包含一些不符合新配置的数据。
删除库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'
8 Y* c/ u( c5 l+ ]$ q1, Y, L9 e- W$ V- Z9 f' P1 I
新建库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd '
9 h& D3 S! C: Y) B9 q1
9 S# l1 P. }6 ^) m3 t有一些配置是无法通过配置文件设置的。如数据保存时间等。可以使用influxdb的api来设置。% l2 H1 {4 K8 V. ^4 D" d' @
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'7 y& A' m  v% b
1
7 P! ^. v) ?) I3 J9 m5 a7 k  {7 d, V查看存储策略 一般是永久保存
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=SHOW RETENTION POLICIES ON collectd'
7 E. s& D7 A0 ?6 v1, N$ l) {2 N2 U3 [/ 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'
7 U+ ^1 n. s3 c1 o  `$ m* H14 `+ ?6 ^5 H7 o7 M$ w. I
删除旧策略
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP RETENTION POLICY "autogen" ON "collectd"';
1; I" \* }1 J  ~1 z4 E' D
2
  r# @7 s0 w8 N% T7 r4 H4.influxdb一些其它的api。
6 |$ A$ O: p. j" w, R) @+ X2 ~2 n: i6 g删除数据库
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'' G* S! N: E3 @: i. O4 l* \) A
16 N* j+ I- _7 G4 i2 q4 J" i$ \; F
查看库 列表
curl -G 'http://192.168.199.90:8086/query?q=SHOW+DATABASES'
0 v5 g( H6 A" n' A+ M; h6 r1
- S# U+ `" c7 {$ I6 k5 q- K查看库measurements 可以理解为表
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=show measurements'
, v) {- S) W3 s! x6 m2 D' A. E1
" y/ O' J9 [$ v. q查看具体数据
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=select * from virt_rx  limit 10'* n; [! z# ~$ f' i- A! O# r
1: W3 `) I6 r2 v/ s0 I
prometheus和grafana等暂不需额外配置文件。
三、grafana 根据influxdb中数据生成图表。
7 Y5 b0 q  p* Y; H和普通的监控虚拟机基本一致。https://blog.csdn.net/dandanfengyun/article/details/112269935
不过由于直接通过libvirt的API监控虚拟机状态。没有经过OpenStack,所以虚拟机的名称无法对应。需要通过虚拟机的UUID来确定。" L# J6 I. A2 k" o/ \  R- r8 p) t
连接的是libvirt,也就是计算节点的libvirt。一个collectd只能监听一个计算节点livirtd,多节点部署多个计算节点,需要在每个计算节点安装collectd连接本节点libvirtd。
" V2 E- [! M2 a- m: g" w对OpenStack的整体信息,如虚拟机数量等也无法统计。且虚拟机移除后,数据不会随之消失,只是无有新的数据统计。保存策略是永久。
所以需要配合prometheus使用。prometheus_openstack_exporter会获取OpenStack的整体信息。如vm数量,cinder数量,glance的镜像数量等。但是没有具体虚拟机的具体信息 。
1.设置数据源。6 a6 k5 `( @1 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 % H- F, A$ H* ?4 d" k9 N
1+ N1 b/ J1 y) z" m1 t% M) u0 t! t
登录成功后设置数据源
1.influxdb的collectd数据源
Name:collectd (这个是自定义的grafana数据源名)2 `4 D% f. _* @1 `% P4 {
URL : 192.168.199.90:8086
. V  s- Q1 T) s1 L4 G# ]. {Database:collectd
完成点Save & Test 即可,成功的话是 Data source is working
9 M' Z+ W1 W6 {9 V' b) m失败查看一下influxdb组件docker容器是否启动,IP端口对不对等。。。
2.prometheus数据源
Name:Prometheus; h; W' l5 }5 f2 A  [4 ?8 V1 t* u
URL:http://192.168.199.90:9091

  `. v" K3 \5 T9 g0 ~1 z5 u
2.设置dashboard的变量
) b) i7 q0 z0 R6 |基本上不可能只有一个 虚拟机,且把多个虚拟机的信息一起展示也不合理。所以设置一些变量来确定当前展示的数据是哪一个虚拟机的。

* d7 p# ^1 b( B2 ^& ~+ K9 ^) M$ whost    SHOW TAG VALUES WITH KEY=host
' j4 c- P& w- n) `) J' f9 einstance_uuid  SHOW TAG VALUES WITH KEY=instance WHERE host='$host'* @# a" w- ]5 B4 [% |
virt_interface  SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'! y) G3 y+ j2 z4 \  l$ B* L
virt_disk   SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'. ^1 s+ n9 I, h  t6 K4 G% ^
instance_name  label_values(openstack_nova_server_status{id="$instance_uuid"}, name)4 w( I5 N9 x: w$ d' t# p( y

7 o( S7 D& n0 p3 d6 e2 J# n2 h分别设置宿主机名 虚拟实例uuid 虚拟网卡 虚拟磁盘 以及实例名5 }1 v0 a9 e+ p% [) R, E1 K
宿主机变量
虚拟机实例uuid变量

( K. N0 r  m: @* i( T( K* o9 v虚拟网卡变量

5 M7 [, ~* y& b0 O; N: q9 P虚拟磁盘变量
实例名

6 |/ K: _8 _; h6 I* w7 R- r2 khost 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。
, U% e- R, j: A! b这个根据influxdb查询语句和grafana使用个人创建即可。
1 |5 z# s8 e, H) ~$ E1 r
4.相关dashboard的json示例。  F6 N& K4 J; G! G* M+ {! \
这个只是个人保存使用的一个dashboard示例,应该是无法通用的。6 Z) b7 Z/ n$ ]' k. G. L; [
不用重新每次都再重复一遍2,3。导入数据源collectd后直接import该json文件即可* h0 f+ W( d0 e+ R! j
https://download.csdn.net/download/dandanfengyun/15073272
创建数据源 略。
点击import导入模板

+ |/ |' G' x. _- d  O: ]2 Q选择模板文件

1 L- y3 E  n) f+ h2 F! G最终导入
8 m# j$ R4 E1 ^$ e1 u

  _% D; ~) U: x4 t0 m" D如果Prometheus和influxdb中collectd数据 实例 基本一致,可以设置更多的变量信息。
" U: y9 x! Q) n) d- V- V如 实例不同状态根据Prometheus数据库查询。
7 n0 d% s: N, A1 d; @- k# Auuid也使用Prometheus 数据库根据实例状态查询。
5 L  _. O' Z& T- k6 o( d( b! Q3 e其他的数据根据uuid在influxdb的collectd库中查询。  w" L/ I2 q  M% U
一致的是,实例名依然只能作为一个展示数据,而不能作为真正变量影响数据展示。
结合了prometheus展示了虚拟机的状态,根据状态查询实例uuid,选择ACTIVE可以避免查询到已经废弃的实例,也可选择SHUTOFF查询已停止运行实例的状态 不好的是也会查到状态是BUILD的实例
不过实例状态查询 重要的就是查询最近一段时间内 活动实例 的状态,因此状态变量选择基本是ACTIVE,只用于筛选出活动的变量即可。
& c3 B! I$ D4 L: S' d2 X( O且BUILD 状态的实例BUILD状态只会存在很短的时间,最终会转化成ACTIVE。
grafana变量设置
host    宿主机名(influxdb). O) y3 t% N  s( p
SHOW TAG VALUES WITH KEY=host
instance_status  实例状态(prometheus)& j) T: w* z, o/ P
label_values(openstack_nova_server_status{hypervisor_hostname="$host"}, status)
instance_uuid  实例uuid(prometheus)因为此处使用prometheus查询uuid可以根据实例状态查询& `) t! Q; ~# |( i7 V; F! c  F
label_values(openstack_nova_server_status{hypervisor_hostname="$host",status="$instance_status"}, uuid)
virt_interface  实例虚拟网卡(influxdb)  ]' o( k) c8 V7 ?0 ?/ d" }
SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
virt_disk   实例虚拟磁盘(influxdb)  H: W4 \. x" a9 M7 f( ]
SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
instance_name  实例名(prometheus)* s& H/ N- Q9 {& ?" g9 T% o
label_values(openstack_nova_server_status{id="$instance_uuid"}, name)" h! ]$ Y8 I) Z, |3 A

+ v, m9 s, n, Epanel都不用改变。。。。。。
https://download.csdn.net/download/dandanfengyun/15137036
这里有一个问题 不知道理解的对不对。。。' R; ], A7 @* X2 P# u, r
prometheus和collectd都是时序数据库。! g0 J) J4 [0 n4 |( ^2 H
Prometheus记录的实例信息也是按时间存放多个的。(隔一段时间存放当时的实例状态信息)
grafana变量也是和时间相关的(也就是grafana变量不仅和其他变量相关,也和时间相关)7 |+ |, u4 ^/ t- w( J4 ]) P( j
也就是说,一个实例的状态信息选择时间段不同,是可能有多个不同的变量的。
" q5 e: c3 x8 W5 z5 u- E, k, C! n如变量为实例运行状态 15分钟前关闭了该实例。假设只有两个实例,一个运行 一个15分钟前关闭。
那么选择5分钟前到现在的时间段,变量就有active和shutoff。active的实例只有一个,shutoff的实例也只有一个。
被删除的实例则没有ACTIVE或SHUT OFF状态,但是prometheus和influxdb中都记录了被删除前虚拟实例的运行状况。
但是当选择30分钟前到现在的时间段,变量就有active和shutoff。shutoff的实例还是只有一个,但是active的实例有两个(这个听起来有点那啥),只要记住 prometheus是时序数据库,不能把该变量当成真正的纯粹记录当前实例状态的布尔值。 30前到15分钟前,该实例是active的,15分钟前到现在,该实例是shutoff的,所以该实例有两个运行状态。。。
问题0 k% z! q$ [( _6 L# b1 L1 d
collectd 无法通过OpenStack获取用户等信息。如果要使用grafana展示可能要通过prometheus。
4 C, A9 \# z" a' T+ o. y. @) vgrafana需要通过prometheus和influxdb两个数据源才能展示实例的状态信息。
collectd也无法收集实例 内空间使用占用情况。
3 t: S2 T6 d* D0 B: X5 o/ j8 W( v0 d

1

主题

0

回帖

12

积分

管理员

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

ceilometer与gnocchi

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

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

gnocchi解决的问题是大规模地存储和索引时间序列数据和资源。/ W& _- |5 m4 W8 g, K( ~, z/ G
http://gnocchi.xyz

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

不过grafana高版本似乎对gnocchi的兼容不足,3-6版本之间的可以实现兼容。grafana6以上的似乎无法兼容 gnocchi 数据源。因此部署时需重新安装6版本以下的grafana实现 gnocchi数据源的添加展示。* d; E! l9 A7 x# g* z6 K( u  e. ]
且ceilometer有时在主机重启后需要重新启动相关服务 才会继续收集数据。

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 19 {* `. A; S, k) H& O2 b$ f
部署相关组件

train版本自动安装的grafana 版本7.3.7。无法添加gnocchi的dataresource。。。(一致testing无法成功)# A/ W2 Y5 S; @! `) N: K
因此想要使用grafana展示gnocchi中数据的话。需要安装更低版本的grafana。) ^( Z# R% [, z4 i6 ~, }9 m
如安装6.3.4版本的grafana,端口号设置为3002避免和通过kolla部署的冲突。

编辑配置文件。

vim /etc/kolla/globals.yml
  • 1* K3 o5 E, g* p# L+ c' L
enable_ceilometer: "yes"enable_ceilometer_ipmi: "yes"enable_gnocchi: "yes"enable_grafana: "yes"
  • 1
  • 2
  • 3
  • 4
    ( T- Z1 ~( [) w3 i  h8 j

部署安装

kolla-ansible deploy -i /etc/kolla/all-in-one
  • 1( k, Q' K! W+ j, Z# R5 H2 i# i

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

[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

  • 7 H# P7 F9 Z: j0 g% Y0 d  i. t
安装gnocchiclient 查看数据。

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

docker restart ceilometer_notification
  • 19 ?3 Y: x0 S/ C' J

或者重启 ceilemeter 相关所有容器

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 16 d$ w5 r) ^* d" m$ m; |0 G+ b

1.安装gnocchiclient

pip install gnocchiclient
  • 1
    0 e1 d. D2 S: v$ G

2.加载认证

source /etc/kolla/admin-openrc.sh
  • 1. Y3 Q. a2 G5 w# _

3.通过gnocchi-api查看gnocchi中存储数据。( }4 w7 m2 ?/ Q5 F  G% H
当前采集的资源列表

gnocchi resource list
  • 1- f, |+ M+ j, P6 j9 g0 q1 ?: e

列出支持资源类别列表

gnocchi resource-type list
  • 1- g% J0 ]0 W- E0 B* M) d

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

gnocchi metric list | grep 511483be-89a2-4b7e-91b8-41adf4276651
  • 1( Y3 b  v0 G: U! O+ F/ x# b

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

gnocchi measures show e45156e4-7544-49a1-ab9a-a22fdc1f56e2
  • 1
    , t1 N- r4 i- p$ ~" }5 h

查看帮助

gnocchi --help
  • 1% W- a7 x- L! N4 e2 f

或者官网查看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 b" P( v/ l: ~, c% W

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

Grafana展示

安装完成添加gnocchi数据源后使用dashboard模板展示数据。
: a6 W( M: A4 U1 q4 @https://grafana.com/grafana/dashboards/12536

使用kolla部署的grafana版本过高 似乎不再支持gnocchi 的数据源插件了。3 F" W% i3 L9 t3 \3 [9 s8 I' d
只好额外安装一个更低版本的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
  • " N- m: l6 y7 ~: E

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

vim /etc/grafana/grafana.ini
  • 16 |( M9 L6 C0 h* f
[server]http_port = 3002
  • 1
  • 2
    . H7 Y+ M4 w) ^/ G; a5 P

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

systemctl enable grafana-serversystemctl start grafana-server
  • 1
  • 27 v% Y1 t: @2 c/ e

grafana安装gnocchi 数据源插件

sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource
  • 1' ?$ ?. R2 s0 N9 x- @

安装 完成 重启grafana

systemctl restart grafana-server
  • 1
    8 m6 E7 e: }& l5 b) d4 F
设置配置文件,允许grafana6.4.3读取gnocchi数据。
cp /etc/kolla/keystone/keystone.conf /etc/kolla/config/cp /etc/kolla/gnocchi-api/gnocchi.conf /etc/kolla/config/
  • 1
  • 2
    + j0 S3 t/ a! z  ]3 M& ]% G

配置gnocchi

vim /etc/kolla/config/gnocchi.conf
  • 1
    2 h* L; J' \: n' M, X) Z5 ~

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

[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2/ ]* B, a! Q$ Z, V- j( F

配置 keystone

vim /etc/kolla/config/keystone.conf
  • 1
    ' Z4 U- }, y) n$ B% j# E* ~  d
[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    8 y$ x4 z& Y' Y6 N. e! I# v

设置完成 kolla重新加载配置

kolla-ansible reconfigure -i /etc/kolla/all-in-one
  • 1, y8 M9 A! w: ^/ ]! f% C9 L6 w
设置gnocchi数据源。使用dashboard模板展示数据。

等待配置重新加载完成后。网页登录进入grafana6.4.30 k9 W5 J8 e) O
192.168.199.90:3002

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

添加数据源 Add data source 选择gnocchi
& }# {7 N6 d1 g% x5 Z# D" e

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用户的登录密码

  • 5 p4 ?2 \6 F, E) s) h
[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

  • , \! t6 e+ L$ {9 x0 e

认证没问题即可成功添加 gnocchi的数据源。3 F& ~4 c5 Z' Y+ b! x' D
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
  J: @4 e- p" K# w8 Q. ?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  {, s. w9 k1 E1 D! B
输入模板ID 后按enter 。等待一会后即可导入模板,会让选择数据源,选择刚添加的gnocchi数据源 即可。
0 G- V0 T9 O% C6 x0 J$ M当然可以自己根据数据源设置dashboard,只是我gnocchi查询不熟。所以直接使用他人的模板了。

效果大致如下) O! h% s* ^0 L# C5 Q( {; w
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
* |+ e6 m; }- L! B9 vhttps://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分钟记录一次数据太慢尝试修改保存策略。
' e' x/ ]* n# ?" L! k1 o通过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     |                                 |+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+
  • ! A+ @2 x3 L  M6 r

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

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

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

修改保存策略

通过docker exec 命令进入ceilometer 相应的容器,查看保存策略的设置。。。
0 {  g8 g' S3 p3 c9 Uceilometer相关容器

[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# y( U1 g( j; a* w8 `; l

进入ceilometer_notification 查看保存策略

[root@ALLInOne-Kolla ~]# docker exec -it ceilometer_notification bash(ceilometer-notification)[ceilometer@ALLInOne-Kolla /]$
  • 1
  • 28 U6 A# R4 a3 R, p( Q

查看保存策略

cat /etc/ceilometer/gnocchi_resources.yaml
  • 11 @% H3 {' M8 z
---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:        ......

  • 6 R9 q' e3 T: L% s

可以看到默认的保存策略 为ceilometer-low,特别的metric 有单独的保存策略设置。
+ H3 C1 X# K  ~可以将该配置文件复制到宿主机的config 配置目录中。修改一定的保存策略设置,然后kolla重新加载配置,即可设置ceilometer新的保存策略。* t5 l/ d3 s5 y) w% L
gnocchi_resources.yaml 配置文件。4 P7 W5 _! ~  Q$ w+ w/ u/ A0 n3 _) n
https://download.csdn.net/download/dandanfengyun/15501637

mkdir -p /etc/kolla/config/ceilometercd /etc/kolla/config/ceilometer
  • 1
  • 2& F: @( c5 F0 v; \8 l- Q

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

vim /etc/kolla/config/ceilometer/gnocchi_resources.yaml
  • 1- M5 o0 v( O. 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

  • . ~) ~) v* @" H( J9 F" C+ Z4 |6 v

kolla重启加载配置策略

kolla-ansible reconfigure /etc/kolla/all-in-one
  • 1- b5 k* _3 ~) k6 n3 {  Q' \

配置完成后,已经存在得metric保存策略不变,新建的虚拟实例的相关 metric 保存策略使用新的。  K& s* ?4 w( _2 N; y

[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 |+--------------------------------------+----------------------+--------------------------------------------+---------+--------------------------------------+

  • 9 c3 j( m- w5 B

可以看到 有保存策略是 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
  • 40 v1 x. W) ^' \* a+ u0 x2 c( r- c

尽管修改了保存策略,新创建实例 的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 |+---------------------------+-------------+---------------+
  • " P$ ?- w1 `; t- L+ J+ S
问题

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

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

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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