易陆发现互联网技术论坛

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

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

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

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

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

x
collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。
# W& u% x" |+ [- e, n! l5 ]influxdb 是一个时序数据库。3 b, c% \. F4 v3 ~
grafana是一个前端展示工具。
可以使用collectd 的virt插件通过Libvirtd 的API 收集虚拟机的数据,然后保存到时序数据库influxdb。最后通过grafana将influxdb中存储的数据以图标的形式展示出来。
一、部署 collectd influxdb grafana prometheus
3 j: ?; ^1 A# Q! d4 g( G% T- p! @1.修改全局配置globals.yml文件,设置部署监控相关文件。
vim /etc/kolla/globals.yml
& v$ f! c0 E! k( ?$ z' `% f+ I' J0 B2 p- `
enable_collectd: "yes"
9 A& ~2 R7 h% W+ `" ~7 Kenable_grafana: "yes"
  a+ n2 Z. C% u% Ienable_influxdb: "yes"1 r3 [4 v' i" K- g. `- o0 }$ o
enable_prometheus: "yes"
6 e) u1 f( s& Y( b$ f8 m( |3 Bprometheus_cmdline_extras: "-storage.local.retention 720h"$ l6 }0 X/ A. `; H
; y! S( h# \5 T" p6 W
prometheus-server 数据保存30天 单位d无法识别。可以附加的参数 可参考https://blog.csdn.net/dengxiangbao3167/article/details/102365367
相应的prometheus的exporter包含
#enable_prometheus_haproxy_exporter: "{{ enable_haproxy | bool }}"
& W3 S4 U. x+ q" b3 p* T" S! V#enable_prometheus_mysqld_exporter: "{{ enable_mariadb | bool }}"
, C: t& l' p2 q- z% o' y#enable_prometheus_node_exporter: "{{ enable_prometheus | bool }}"( O/ m$ t2 w! v% A2 R  e8 Q+ @, \
#enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}"  e+ ~$ B! d: C# e) x( `# T
#enable_prometheus_memcached: "{{ enable_prometheus | bool }}"$ Z0 E: f' q3 I! o# ~4 V# R! }& }1 H
#enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"# T7 B9 M: `; M4 D; i. v, h$ V4 Z
#enable_prometheus_ceph_mgr_exporter: "{{ enable_prometheus | bool and enable_ceph | bool }}"( ?7 P3 ~" F( v/ D
#enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"8 }- w7 R% s& h# `8 x! e
#enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}"( H$ Z) |+ a, p( [/ N' B  \. K
#enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}"
8 K2 \, E' V9 o2 o, s
3 M- n+ ^% n2 D* |+ N2.安装部署相应的容器组件
kolla-ansible deploy -i /etc/kolla/all-in-one
- L/ I4 u. h) x/ ]1: V2 {; R8 O' E, x
3.完成后查看相关组件docker容器是否部署完成
docker ps -a | grep -e collectd -e influxdb -e grafana -e prometheus
7 O4 o, A0 b8 _1 V7 R/ N8 Y, L' i1
1 y) s/ H3 K6 I2 {
二、修改相应配置文件,通过libvirt监控虚拟机
8 N$ O, n2 n' C- ]自定义的配置文件位置,该位置的配置文件会取代默认配置文件。
# The directory to merge custom config files the kolla's config files5 p& j# h; C' b# m+ `6 ?; L
node_custom_config: "/etc/kolla/config"
! j- g  K% f8 O( i% \0 i  V+ G& `: j
mkdir /etc/kolla/config: b7 s8 P( Q; F" R5 v; c
1
# @7 V) O9 ]" v: O使用kolla部署完成后。默认配置文件是/etc/kolla/<< service name >>/<< config file >>。, M  a; c9 J+ z7 s3 y
自定义配置文件路径是/etc/kolla/config/,且自定义配置文件一旦设置,就会覆盖且替换原配置文件。# u' z7 Q' F  p, T
路径可以是
/etc/kolla/config/<< config file >>,
, h' J8 {8 p! ~6 n/etc/kolla/config/<< service name >>/<< config file >>,- R' `, w) s6 w1 ~" C
/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>
# i0 V7 k! w- M, m) t6 C8 J% l. M/ B" x  `) u& m& T" q
1.collectd 配置& l8 [- p3 j2 w. _) u
libvirt有不同的虚拟机库, 通过API可以访问控制虚拟机。OpenStack也是通过libvirt的API也控制底层的虚拟机的。
cp /etc/kolla/collectd/collectd.conf /etc/kolla/config/
4 S8 s, I( ~& T5 _/ r  s6 Evim /etc/kolla/config/collectd.conf % U* U# j" f- J2 f5 o/ p* a/ o
1
) g0 U" \8 [# z: m* b( }6 Y8 c21 L1 o/ _5 v. u9 U/ r: e# p* F
FQDNLookup false: o) j) U* b7 s" i5 i" g4 l
LoadPlugin syslog
5 k+ a% q( P" ?1 R6 G5 W) CLoadPlugin cpu4 e  W7 s$ j! ~( q
LoadPlugin interface
) W5 [/ ^' O$ q2 ~; B* l$ g+ fLoadPlugin load
8 o1 y0 P/ @" t3 i6 f" {- q4 bLoadPlugin memory
LoadPlugin network
LoadPlugin logfile
1 s, V5 Q. z' `3 o  [) d( D- WLoadPlugin virt
7 g3 h2 m, c+ l8 j( u2 A9 s
<Plugin network>% f' g) ?7 s! i+ J" g7 n
        Server "192.168.199.90" "25826"( K0 ]8 y. b) T5 u: ?
</Plugin>

& Y9 f. a. s: o5 W( Z) Y4 i% i/ h<Plugin logfile>
/ T" [. g) D) E( s. p0 @        LogLevel info9 T4 N5 C$ G; B2 u3 B% `- O9 N
        File "/var/log/kolla/collectd/collectd.log"
& h  k; E  o: i+ H) z: K        Timestamp true7 x  E# B# q1 Z! [$ U. [
        PrintSeverity false
, H* I. Y3 W0 Q) {" F</Plugin>

4 G  C2 n$ ^/ X! j6 w# I<Plugin virt>
- d) h3 N' g- z5 m        Connection "qemu+tcp://192.168.199.90/system"
/ O, u3 Z4 {; t! D% U) o        HostnameFormat hostname9 F8 {3 `$ S7 Q! o4 `! {
        PluginInstanceFormat uuid
/ X4 H# T: r: p% x% W- ^        BlockDeviceFormat target" r$ k6 s$ |1 u1 U* t7 e, d
        InterfaceFormat name! ~; H8 f3 s: n0 ?5 D% W
        ExtraStats "cpu_util"
8 f/ u  \0 ^: A</Plugin>  ) L5 ^9 V) S) p7 u* K' T

' g9 L0 e& c/ |7 z! }( B6 v# p启用了插件 logfile virt network。logfile是日志插件,virt就是与libvirtd的API通信的插件,network网络插件将收集的数据通过网络发送出去。
network插件设置。
Server "192.168.199.90" "25826"
, @7 W7 K) J3 W10 _+ }: P; [7 ^
表示将数据发送到192.168.199.90主机的25826端口。就是下一步设置的influxdb收集collectd数据的主机 端口。
LoadPlugin cpu
1 c0 \3 \1 s, e0 h8 R7 T1 VLoadPlugin interface% x, ~1 ]) k1 j5 N
LoadPlugin load
& h+ U2 _' E; M/ x8 t- j* W3 ZLoadPlugin memory4 I7 j$ \- J9 |9 D  ^5 |& s; F

# t- \9 k- n1 c" I1 e这四个插件是用来收集宿主机的信息的。interface可能还会监听了虚拟机虚拟网卡的信息,如果不希望通过interface插件收集虚拟网卡信息(virt插件会收集)。可以设置interface只监听想要监听的网卡名。
<Plugin "interface">
* [% }4 M# ^' ^3 W  Interface "ens33"
% f8 j! `- o% b/ Q$ m  Interface "ens34") y* w' @  N: i' z5 {+ S
</Plugin>
0 u3 j: k; U/ `0 {
. S: j) t6 J$ Y& T- X7 f$ rvirt 插件设置
<Plugin virt>5 M, M7 ~1 t. r0 p& f6 C( p
        Connection "qemu+tcp://192.168.199.90/system"
$ m% M0 ?; R0 ]        HostnameFormat hostname4 U! y2 ~5 R3 j3 D: I
        PluginInstanceFormat uuid' p/ U$ o/ y& I& [
        BlockDeviceFormat source
5 U/ J1 w4 ]. _        BlockDeviceFormatBasename false
/ k7 Y, l! \1 S. ~% w( z        InterfaceFormat name
+ D5 x# A$ q3 E& z7 g# d! e1 C5 P' i        ExtraStats "cpu_util"$ t: x) v3 p  ]1 p
</Plugin>  ! r( z7 o9 v& t

# A# L! {$ B. r) B# Z0 \具体参数详情可以看官网
0 a! O. j8 P. d" A# Ghttps://collectd.org/documentati ... 5.shtml#plugin_virt
Connection 表示连接的libvirt API服务。
+ N5 \# G. K- O. b   就像使用qemu+kvm创建虚拟机时使用virsh管理时使用virsh -c qemu+tcp://192.168.199.90:16509/system # T+ y- P" }2 t- p" ], E
   即可连接到libvirtd服务控制虚拟机相关。由于16509是默认端口号,可以省略
- K! e! A9 M& d, @/ e6 m+ X' w" D1 F   由于是ALLInOne 所以collectd设置只有一个,多个主机部署时,需要每个计算节点上安装collectd指向本机的libvirt。
7 _+ ]; r+ }( Z4 a1 z: T: w' u   因此每个collectd设置文件都不相同。
HostnameFormat name|uuid|hostname|...+ g$ ~; ^! ^0 i5 V' T
   当virt插件记录数据时,会根据此设置设置所收集数据的主机名。2 b# Y7 A8 G' _1 U
   默认的做法是使用hypervisor提供的来宾名称,这等于设置为虚拟机name。0 R6 P5 ?" c& ~1 B( s' A8 ]
   UUID 意味着使用虚拟机的UUID。如果您想跨迁移跟踪同一个客户,这是很有用的。
% ], A3 N7 j/ V3 o  p   hostname 意味着使用“全局主机名”设置,这本身可能并不有用,因为所有来宾似乎都有相同的名称。
: |4 U5 W7 ?  @  p   hostname就是宿主机名。。。这个其实挺重要的(在有多个宿主机的虚拟机数剧都保存到一个数据库时,可以通过hostname来确定不同虚拟机在哪一个主机。)
4 Y: \3 o7 j+ m5 J4 y% q. N" y   至于实例的 名称或UUID 可以使用PluginInstanceFormat来设置
PluginInstanceFormat name|uuid|none3 D* h. x' e( e/ _) R) c0 z
   当virt插件记录数据时,它会根据此设置设置所收集数据的plugin_instance。默认情况是不设置plugin_instance。(只有一个宿主机时可以直接设置HostnameFormat name来代替PluginInstanceForma的设置)
: [: H9 J4 p" C3 {) _1 e# n   name是指使用管理程序提供的虚拟机名称。UUID意味着使用虚拟机的UUID。( L, P( M/ [! c; }( S( Y
   OpenStack中是根据uuid来管理虚拟机的,虚拟机在libvirtd中的name和OpenStack中设置的并不一致。libvirtd底层管理是自动生成的,OpenStack中创建时手动命名的。" Q0 }. S" w9 ^( B- p! o/ C
   HostnameFormat和PluginInstanceFormat都可以使用多个fields。如name uuid。会同时显示名称和uuid中间使用 : 分隔。如foo:1234-1234-1234-1234
BlockDeviceFormat target|source
$ _& ~$ V! M5 c, n: G; Q; }/ E   挂载到虚拟机中的磁盘设备名设置。! `! h& U6 j* t% x9 `, I% g/ C
   virsh # domblklist instance-0000000a
: v# J, Z2 L0 {   Target     Source
" j1 y2 L% w) k0 C6 e: E   ------------------------------------------------2 B8 o7 E+ w. X6 H9 `) L
   vda        /var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk+ i: Y1 ^: v0 T% _- [1 c
   vdb        /dev/sdc$ u  p$ S* b% m! S0 E7 S' Y
   target  是映射到实例中的磁盘名 vda vdb。即实例中可以通过lsblk看到的。
+ A7 E+ [# I, _+ a8 t# u6 G   source 虚拟磁盘对应的路径及磁盘文件名。/var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk /dev/sdc! H$ f  u2 U3 H! K$ r1 @4 a
   如果设置BlockDeviceFormatBasename设置为true,则只显示文件名 不显示前面的路径。 默认未设置BlockDeviceFormatBasename,是false即显示前面路径

6 W: r5 c0 ]; |$ Y  o8 C! y9 [InterfaceFormat name|address
8 ]8 M, Q1 v, g% n+ u: m   虚拟机的网卡显示 name或者address。name网卡名,address网卡mac地址。# @9 t4 F9 S# P. y, h& g( M' u5 z
   + a; C  {: S4 F8 Z' ^9 p: n6 D6 n* f
ExtraStats "cpu_util"
9 Y2 A) w) S, \: R4 _- P   virt额外记录的数据。此处只设置了一个cpu_util 即CPU的利用率。6 M+ E& P& t& P6 B3 q' Q
   virsh # domiflist instance-00000002 3 O4 C' H& {3 a2 a, n4 L6 W
   Interface  Type       Source      Model       MAC2 e) t" r9 t7 o' \, F
   -------------------------------------------------------0 j1 ]2 l: \, I) e
   tap97caffeb-9a bridge    qbr97caffeb-9a virtio      fa:16:3e:64:5f:c00 V. K- N- M. @! e4 v! ^7 F5 P
   interface就是name ,MAC就是address

) m- r+ }4 e( Y, i6 c2 t这是单个主机ALLinOne下设置配置文件的情况,如果多个计算节点,每个计算节点的collectd的配置文件是不同的,需要单独设置(主要不同就是连接的libvirtd API的IP不同),每个计算节点需要一个collectd收集本计算节点的相应libvirt 数据。
很奇怪的一点,似乎使用kolla部署的collectd容器收集虚拟机数据时无法收集虚拟机的内存信息,只能获取虚拟机全部内存。 直接使用yum安装的collectd却可以收集used,availble 等。。。不知道原因
2.influxdb 配置' d! d' C) O7 n' r/ J4 u5 U) M
cp /etc/kolla/influxdb/influxdb.conf /etc/kolla/config/
+ Z" a. V  v9 Yvim /etc/kolla/config/influxdb.conf
1 A+ {$ |* H. x  U( A0 h2 @! L1. }5 M. x, g0 U$ O0 Y5 L
2
3 Z# |! Z' s; D. w& Rreporting-disabled = true
  l3 X5 ^( l% j. a, Y8 ?[logging]3 p0 |  l0 R( h1 v2 A- o- G& C
  level = "info"
! S' T& H$ a) {$ ]7 h  file = "/var/log/kolla/influxdb/influxdb.log"
# ~$ H* g. |( s( ~[meta]
4 T  ^# z9 H4 }0 P2 v% t7 @" I8 ~5 _  z  dir = "/var/lib/influxdb/meta") l  L# H& N& m3 G% ], s( e# G
  retention-autocreate = true
0 K5 R% ~+ D# }! `! v9 V  logging-enabled = true; f9 [9 }+ c# J& y! E  S/ Q
[data]
/ L, U, _8 W2 U, [  dir = "/var/lib/influxdb/data"
. w6 }" t1 H6 ~) l$ D" q  wal-dir = "/var/lib/influxdb/wal"
5 |% h: l$ a# C& ^% t  wal-logging-enabled = true
" E4 j1 z+ I# ]1 G  data-logging-enabled = true
- Q0 R5 L5 Z- ^2 G/ S" w- `  index-version = "tsi1"
" M# n& W! f9 }8 D0 q& e9 \  ~6 e5 o[coordinator]
8 k' B4 m# y# c* A7 \: U- I4 g$ r  write-timeout = "10s"
6 [5 D$ G6 n$ ~  max-concurrent-queries = 0) M! K/ m; Q. _) e- ?# r$ m! z
  query-timeout = "0s"
5 k# H8 D3 C1 d# m1 J: t8 m/ k  max-select-point = 0
+ _' G" W/ \" i8 y  max-select-series = 04 j9 t" `0 g, r' K0 w+ T3 s" C
  max-select-buckets = 0
& y- `0 L' _7 c[retention]
% C- C$ t* _4 i& }6 Q  enabled = true3 f" o5 I" U5 I2 x
  check-interval = "30m"! K' Y# j" z3 [% n/ q$ F3 }, m
[shard-precreation]
2 e& {. a" D2 V3 C8 y( w0 R5 H  enabled = true( I' M1 @3 G0 J
  check-interval = "10m"" |( r/ b8 q7 l' [3 e) I  z
  advance-period = "30m"3 k2 }# _' N$ q- e
[monitor]3 W; w# v& ]4 x8 Z" U7 h
  store-enabled = true: i$ j, v% v/ [# P! O  P( Z5 z
  store-database = "_internal"+ |2 v' n( r. j
  store-interval = "10s"
, Q0 G6 U* H6 F" s* f, s6 R' B- r[http]6 M6 s  g5 Q/ j0 q
  enabled = true- o2 o4 b% B$ g/ Z6 D8 H( J5 J9 i) f
  bind-address = "192.168.199.90:8086"
$ o6 @/ S* @. t# y" H' n  auth-enabled = false
! X1 {, U$ g* s5 R" ^  log-enabled = true
' s! N4 S5 w3 A  B1 d! I# G4 l  write-tracing = false
! R3 ?, I. j. J/ O6 {& Q: J  pprof-enabled = false
! V' n0 q7 ^/ D  https-enabled = false
5 O% `9 U$ r+ W" q+ W; @: @2 k/ S9 {[[graphite]]2 ~: o: J) B( I# v  m
  enabled = false: N- j2 T8 L; X0 q6 [
[[opentsdb]]* ~! K9 t" G) v+ ?9 h& \& I. M
  enabled = false
# m& |1 m) E( A9 G# D[[udp]]
& X# C( I) f1 a+ ?3 f4 _  enabled = false2 K& C5 ]4 Q. F& I6 q
[continuous_queries]9 K4 N& N3 q; j, x; o2 u
  log-enabled = true
& x, Q# T) O' ~# ?4 \  enabled = true
[[collectd]]: Z# K  _1 q, A8 W
  enabled = true/ T. A& i/ W' @
  bind-address = "192.168.199.90:25826"5 w* P$ Q" A2 x, M  o6 `
  database = "collectd"% G4 d2 T. }$ _# d* }
  typesdb = "/var/lib/influxdb/types.db"( h/ n5 h/ y  j+ |4 A5 n/ A

! x7 q9 U8 @& D主要是添加了 末尾一段。influxdb是可以作为collectd的network Server,可以将collectd发送的数据保存起来。前提是有对应的type.db数据格式。
5 z( `# [- A; m9 C& mhttps://download.csdn.net/download/dandanfengyun/14989445
[[collectd]]. x: E% ^$ h' @* r4 ?$ v
  enabled = true+ D1 t5 x2 N" u1 J2 }
  bind-address = "192.168.199.90:25826"
! t1 ]* ^3 e/ Z" w' ]" c  database = "collectd"7 B' k  M8 [2 R# X; U; Y
  typesdb = "/var/lib/influxdb/types.db"# K  M4 S8 U  R( y, i3 y
4 h* D1 ?7 }8 h7 Z
bind-address = "192.168.199.90:25826"表示监听192.168.199.90主机25827端口的数据。然后保存到库collectd中。数据格式typesdb = “/var/lib/influxdb/types.db”
数据格式文件需要手动添加。部署OpenStack时,对于一些特别的需要存储数据的组件docker,都有相应的docker volume附加卷。直接映射到容器内。 influxdb容器附加卷在宿主机中对应位置
            {
  {9 W) b+ ?) @$ k1 @% ^3 |  g' G3 v                "Type": "volume",
6 ]+ Q, _; u, t; ^( m/ k: J0 U                "Name": "influxdb",
! g/ Z' m- c. R- t+ V& {( Z                "Source": "/var/lib/docker/volumes/influxdb/_data",
. U: t: K" c; q+ d- H( l$ E5 I                "Destination": "/var/lib/influxdb",
8 u5 e0 ~8 O+ e0 [- ?. k                "Driver": "local",
  ^( i! Y* _$ N! k- I                "Mode": "rw",
) T5 F/ w. a: v' c& n% {' Y" ?1 X                "RW": true,
! x$ p: E8 i) l$ r! r4 M6 v                "Propagation": ""
4 L" v. Z: n9 p: A9 I            },
. y& H0 j1 w4 l9 w" R
将文件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
! u- e; c4 ?; }) M- n13 K3 L" B& S2 r+ A5 i7 L
[root@ALLInOne-Kolla ~]# ls /var/lib/docker/volumes/influxdb/_data/
/ W% O7 j" ?% S/ L+ Edata  meta  types.db  wal
7 G' J2 d9 ^0 b. t6 b1
. Z, Q: w. t& s$ P2$ \! o% s" v% v, V! C% k
3.加载个人配置。
+ C  B& D7 O6 I5 T) \5 Wkolla-ansible reconfigure -i /etc/kolla/all-in-one $ f6 u) Y/ `9 V  d; L
1
4 F7 n! L9 z1 _完成后,会使用个人配置替代默认配置。并重启相应的组件容器加载新的配置。
新配置生效之后,最好将influxdb数据库原数据清除一下,因为原数据中会包含一些不符合新配置的数据。
删除库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'; t5 T/ t: I  }' N) {$ V
10 b7 I7 K" G, `7 r0 |* N
新建库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd '% M# C' f' O$ x- o/ _0 _' w# l7 B
1
" T: N6 D' s! U. [( z有一些配置是无法通过配置文件设置的。如数据保存时间等。可以使用influxdb的api来设置。
. ]  X* X* g6 @7 w" J4 jhttps://archive.docs.influxdata. ... .2/tools/api/#query
创建库collectd (如果有数据存入,该库会被自动创建的)
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd'
% L! N/ K& L3 w" {- u" j1
  W- t; u* [. I0 }2 D/ U, J查看存储策略 一般是永久保存
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=SHOW RETENTION POLICIES ON collectd'
9 F7 F& p# ~( S( n" F" b18 h# s& v# e8 u" e
设置新的保存策略 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'  e9 }  M8 ]" o8 t- c. A
1
* S/ W; K* l8 h6 p- h0 X" X删除旧策略
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP RETENTION POLICY "autogen" ON "collectd"';
1
) V& {; e& t3 u. Y2
- l9 u# |- G$ K4 e- O8 h4.influxdb一些其它的api。
# s- c4 g( K* p+ G) _  l- l删除数据库
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'
" ^2 F, k/ P$ s; |- Q  f9 o1
. G' a$ Z6 J3 s5 o查看库 列表
curl -G 'http://192.168.199.90:8086/query?q=SHOW+DATABASES'7 a( t+ p, v; s5 ?4 Q
13 K. [; r8 J" Q7 _  j% q
查看库measurements 可以理解为表
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=show measurements'
. |+ o$ m1 v0 l2 B1+ d5 `. B  C. O9 z3 ?& K  U6 p
查看具体数据
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=select * from virt_rx  limit 10', T& Q  N. H  @$ O: o2 o/ x: ]8 J
1
9 |" ]( r5 x3 Q1 L+ H& Yprometheus和grafana等暂不需额外配置文件。
三、grafana 根据influxdb中数据生成图表。
1 R5 h+ N7 J. Y) m  |4 h/ c9 @和普通的监控虚拟机基本一致。https://blog.csdn.net/dandanfengyun/article/details/112269935
不过由于直接通过libvirt的API监控虚拟机状态。没有经过OpenStack,所以虚拟机的名称无法对应。需要通过虚拟机的UUID来确定。
$ ?5 l) I; X' z连接的是libvirt,也就是计算节点的libvirt。一个collectd只能监听一个计算节点livirtd,多节点部署多个计算节点,需要在每个计算节点安装collectd连接本节点libvirtd。0 ^, I; I2 p% g! _6 v
对OpenStack的整体信息,如虚拟机数量等也无法统计。且虚拟机移除后,数据不会随之消失,只是无有新的数据统计。保存策略是永久。
所以需要配合prometheus使用。prometheus_openstack_exporter会获取OpenStack的整体信息。如vm数量,cinder数量,glance的镜像数量等。但是没有具体虚拟机的具体信息 。
1.设置数据源。/ m, z; s& L! c, G; `0 ~
登录进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
+ ~' ?" B; S" t4 F+ R1
% C& J4 r+ e' B登录成功后设置数据源
1.influxdb的collectd数据源
Name:collectd (这个是自定义的grafana数据源名)2 \% W/ _' S# u& K
URL : 192.168.199.90:8086- D/ N, [: n1 [# n# E, w
Database:collectd
完成点Save & Test 即可,成功的话是 Data source is working9 d. a" |5 s  }, S  ]; K) p8 W/ f
失败查看一下influxdb组件docker容器是否启动,IP端口对不对等。。。
2.prometheus数据源
Name:Prometheus: f: c: K6 m" N" ^
URL:http://192.168.199.90:9091
2 N+ W( i! e8 V: j9 Y3 D
2.设置dashboard的变量& j# m( v' x$ t& z8 ?
基本上不可能只有一个 虚拟机,且把多个虚拟机的信息一起展示也不合理。所以设置一些变量来确定当前展示的数据是哪一个虚拟机的。

4 V( y, W$ I, y) o7 X: |3 W  nhost    SHOW TAG VALUES WITH KEY=host
# S$ L, U7 J4 ]- ~5 Yinstance_uuid  SHOW TAG VALUES WITH KEY=instance WHERE host='$host'& P  O5 q+ E0 w) y: N9 ?
virt_interface  SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'* `  g8 x" n. g, Y/ n: N& ]
virt_disk   SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid': }7 {; w  X4 u# Q
instance_name  label_values(openstack_nova_server_status{id="$instance_uuid"}, name)
! j8 t4 ~9 I7 H6 W; R* _- k# y2 M, L. @+ n8 n; O0 J& [
分别设置宿主机名 虚拟实例uuid 虚拟网卡 虚拟磁盘 以及实例名
. c& S! c# Q4 a9 s3 b7 u) }+ E( H. H宿主机变量
虚拟机实例uuid变量

! T! Y- r* O5 w虚拟网卡变量

+ ^9 q5 c! r* g( C1 y虚拟磁盘变量
实例名
; j! g* Y  ^! F8 x: l1 G  j" m
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 M% ^; H: n& l3 a这个根据influxdb查询语句和grafana使用个人创建即可。
9 u5 m/ _9 R) X* C7 d
4.相关dashboard的json示例。4 k3 u- ^1 {2 m2 g4 d1 g
这个只是个人保存使用的一个dashboard示例,应该是无法通用的。8 U8 x. [  X, m
不用重新每次都再重复一遍2,3。导入数据源collectd后直接import该json文件即可( V  ~& l$ B* V/ x0 G7 O) l: ]
https://download.csdn.net/download/dandanfengyun/15073272
创建数据源 略。
点击import导入模板

' |8 v% e' k- t/ u, b' C选择模板文件

5 ]  o4 v/ Z, W1 W; p最终导入
& P8 b7 p: \. q& b

' E7 z. L3 D& y, m" U: T/ ?6 x& ]如果Prometheus和influxdb中collectd数据 实例 基本一致,可以设置更多的变量信息。9 C0 v6 a# f: T8 V9 S
如 实例不同状态根据Prometheus数据库查询。, @8 ^2 ?' E. B: b
uuid也使用Prometheus 数据库根据实例状态查询。
% w9 E8 p" _. }/ ^; b6 A其他的数据根据uuid在influxdb的collectd库中查询。/ {6 I+ K8 m+ [. {+ \
一致的是,实例名依然只能作为一个展示数据,而不能作为真正变量影响数据展示。
结合了prometheus展示了虚拟机的状态,根据状态查询实例uuid,选择ACTIVE可以避免查询到已经废弃的实例,也可选择SHUTOFF查询已停止运行实例的状态 不好的是也会查到状态是BUILD的实例
不过实例状态查询 重要的就是查询最近一段时间内 活动实例 的状态,因此状态变量选择基本是ACTIVE,只用于筛选出活动的变量即可。& m6 j) p( W7 W8 X
且BUILD 状态的实例BUILD状态只会存在很短的时间,最终会转化成ACTIVE。
grafana变量设置
host    宿主机名(influxdb)
. H. [2 a$ X5 x* a; d* ~. i$ n SHOW TAG VALUES WITH KEY=host
instance_status  实例状态(prometheus)
  g+ q. X. Z. y. T6 `2 H label_values(openstack_nova_server_status{hypervisor_hostname="$host"}, status)
instance_uuid  实例uuid(prometheus)因为此处使用prometheus查询uuid可以根据实例状态查询
' I7 ?/ R8 L6 z- M* h. I; U1 I1 O2 a label_values(openstack_nova_server_status{hypervisor_hostname="$host",status="$instance_status"}, uuid)
virt_interface  实例虚拟网卡(influxdb): C) K+ L, `/ a5 X- k8 e1 ?  |: ^
SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
virt_disk   实例虚拟磁盘(influxdb)' b" q# C9 e! Y$ F0 x$ N/ e. M6 b: C
SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
instance_name  实例名(prometheus)9 i1 c& x0 R  G4 [  [' ?
label_values(openstack_nova_server_status{id="$instance_uuid"}, name)# f/ V8 p4 C0 F  j& C7 n  l7 r
* ?8 Q- v: K  E
panel都不用改变。。。。。。
https://download.csdn.net/download/dandanfengyun/15137036
这里有一个问题 不知道理解的对不对。。。
& Z8 ~" w* A' nprometheus和collectd都是时序数据库。$ x* X0 t, R' E# k
Prometheus记录的实例信息也是按时间存放多个的。(隔一段时间存放当时的实例状态信息)
grafana变量也是和时间相关的(也就是grafana变量不仅和其他变量相关,也和时间相关)
2 |- t) N' Z8 q$ U2 \也就是说,一个实例的状态信息选择时间段不同,是可能有多个不同的变量的。
9 S4 I' X+ o3 b0 S" e如变量为实例运行状态 15分钟前关闭了该实例。假设只有两个实例,一个运行 一个15分钟前关闭。
那么选择5分钟前到现在的时间段,变量就有active和shutoff。active的实例只有一个,shutoff的实例也只有一个。
被删除的实例则没有ACTIVE或SHUT OFF状态,但是prometheus和influxdb中都记录了被删除前虚拟实例的运行状况。
但是当选择30分钟前到现在的时间段,变量就有active和shutoff。shutoff的实例还是只有一个,但是active的实例有两个(这个听起来有点那啥),只要记住 prometheus是时序数据库,不能把该变量当成真正的纯粹记录当前实例状态的布尔值。 30前到15分钟前,该实例是active的,15分钟前到现在,该实例是shutoff的,所以该实例有两个运行状态。。。
问题2 M' ]! G5 g$ c+ G$ l9 H
collectd 无法通过OpenStack获取用户等信息。如果要使用grafana展示可能要通过prometheus。3 u/ _. f" e! O7 @# f( Y* N3 Z) [" h6 q
grafana需要通过prometheus和influxdb两个数据源才能展示实例的状态信息。
collectd也无法收集实例 内空间使用占用情况。
. K5 ^: Z% Z% y3 y
 楼主| 发表于 2021-7-2 17:00:29 | 显示全部楼层

ceilometer与gnocchi

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

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

gnocchi解决的问题是大规模地存储和索引时间序列数据和资源。' A9 D1 U" Q, b- N( G
http://gnocchi.xyz

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

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

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1
    8 p/ ]3 J2 P# T6 U$ @: w4 d
部署相关组件

train版本自动安装的grafana 版本7.3.7。无法添加gnocchi的dataresource。。。(一致testing无法成功)
9 F+ C/ o9 \' Y# ]因此想要使用grafana展示gnocchi中数据的话。需要安装更低版本的grafana。
$ R. A! E; C& D/ z! C; M% Q  o/ N如安装6.3.4版本的grafana,端口号设置为3002避免和通过kolla部署的冲突。

编辑配置文件。

vim /etc/kolla/globals.yml
  • 1
    . S" A" _* \1 J$ Q/ T0 @
enable_ceilometer: "yes"enable_ceilometer_ipmi: "yes"enable_gnocchi: "yes"enable_grafana: "yes"
  • 1
  • 2
  • 3
  • 4( ]& Z6 L1 d9 s

部署安装

kolla-ansible deploy -i /etc/kolla/all-in-one
  • 19 Z+ J, a5 v4 p5 ^/ C+ _: h

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

[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
  • & l& z9 w6 J, w0 e, q( K: h
安装gnocchiclient 查看数据。

默认部署 ceilometer 数据保存到gnocchi中保存策略是low。基本上5分钟保存一次数据。。。所以数据有时候需要等一下。. ~% e: L/ M0 \7 Y1 q1 Q+ `+ @
长时间无数据且查看相关容器正常运行后 或者宿主机重启后 建议重启ceilometer_notification容器 可能解决问题。

docker restart ceilometer_notification
  • 1" ?! N* K+ s0 k/ B

或者重启 ceilemeter 相关所有容器

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 13 y8 K: c6 {9 h  s  r! R

1.安装gnocchiclient

pip install gnocchiclient
  • 1
    ! ^$ B( E' o4 s

2.加载认证

source /etc/kolla/admin-openrc.sh
  • 19 ~  f  B% H! C

3.通过gnocchi-api查看gnocchi中存储数据。
! l, C1 x+ `  \8 I9 y当前采集的资源列表

gnocchi resource list
  • 1" `. E' D1 N. x8 ~% n: f

列出支持资源类别列表

gnocchi resource-type list
  • 1- p  F& H% `5 T2 n

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

gnocchi metric list | grep 511483be-89a2-4b7e-91b8-41adf4276651
  • 1
    / N- m& J) }6 S5 a! S! D

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

gnocchi measures show e45156e4-7544-49a1-ab9a-a22fdc1f56e2
  • 1, ?# M1 x/ W) R& A- H3 @/ }

查看帮助

gnocchi --help
  • 1% j: D6 L6 I" d" J9 M+ \6 H

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

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

  • 9 l5 R9 h2 y/ r1 a3 m

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

Grafana展示

安装完成添加gnocchi数据源后使用dashboard模板展示数据。1 ~1 C7 g/ a$ n: N9 Y
https://grafana.com/grafana/dashboards/12536

使用kolla部署的grafana版本过高 似乎不再支持gnocchi 的数据源插件了。
) s/ c0 h. k4 `, l8 E# 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
  • 1 o9 ]4 `9 _( b0 z' X

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

vim /etc/grafana/grafana.ini
  • 1  B# {0 l5 }- m( a
[server]http_port = 3002
  • 1
  • 2
    ' y2 f7 e% B9 A

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

systemctl enable grafana-serversystemctl start grafana-server
  • 1
  • 22 I7 M* o, u8 W: g( G3 Y* a

grafana安装gnocchi 数据源插件

sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource
  • 16 L$ d; f: y6 p: }

安装 完成 重启grafana

systemctl restart grafana-server
  • 1
    * g. M5 w9 Q: [1 N! a5 [
设置配置文件,允许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
    - k/ `" `$ `7 d) o

配置gnocchi

vim /etc/kolla/config/gnocchi.conf
  • 1
    # e! y7 W5 ^& e) T  e# s2 j

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

[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    6 o) w8 H) z5 e7 L, d

配置 keystone

vim /etc/kolla/config/keystone.conf
  • 10 A) ^: P- o$ ~$ T7 h4 e, |
[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    ! t; g9 o+ C; f* X  p5 W

设置完成 kolla重新加载配置

kolla-ansible reconfigure -i /etc/kolla/all-in-one
  • 1
    ! S) U, N" y! p5 t1 a
设置gnocchi数据源。使用dashboard模板展示数据。

等待配置重新加载完成后。网页登录进入grafana6.4.33 x; i6 E+ @" X
192.168.199.90:3002

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

添加数据源 Add data source 选择gnocchi8 V" I, O/ g1 s, N; o

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

  • ; P$ [( z' h( Q& q4 D
[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

  • ' F5 q3 F2 B' D" o' g9 d

认证没问题即可成功添加 gnocchi的数据源。+ }8 \3 ]* [) x  \1 x1 ^( z
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
% Q1 e! T/ ~. B/ J; _$ s6 hhttps://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- M7 L7 V. [$ r3 i9 q
输入模板ID 后按enter 。等待一会后即可导入模板,会让选择数据源,选择刚添加的gnocchi数据源 即可。# v& c( w& I* h, [0 Z9 j
当然可以自己根据数据源设置dashboard,只是我gnocchi查询不熟。所以直接使用他人的模板了。

效果大致如下" e# L" |5 p7 D; w6 }( r4 O
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; \8 R  b; R( i# l( c* m5 F
https://img-blog.csdnimg.cn/20210225144853367.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbmRhbmZlbmd5dW4=,size_16,color_FFFFFF,t_70#pic_center

设置保存策略。

5分钟记录一次数据太慢尝试修改保存策略。
8 M7 C0 i0 i- i& u# x通过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     |                                 |+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+

  • ; Y+ s0 u* p- L% I' G

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

  • $ C( N4 @' [2 d& H

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

修改保存策略

通过docker exec 命令进入ceilometer 相应的容器,查看保存策略的设置。。。; g7 G# k! `1 Z3 T; a
ceilometer相关容器

[root@ALLInOne-Kolla ~]# docker ps -a | grep ceilometere7edc514bbc8   kolla/centos-binary-ceilometer-ipmi:train                 "dumb-init --single-…"   3 weeks ago   Up 3 hours                ceilometer_ipmi7f198cc0757e   kolla/centos-binary-ceilometer-compute:train              "dumb-init --single-…"   3 weeks ago   Up 31 minutes             ceilometer_computeddf54797e3ee   kolla/centos-binary-ceilometer-central:train              "dumb-init --single-…"   3 weeks ago   Up 32 minutes             ceilometer_centrald8d3bdb576f3   kolla/centos-binary-ceilometer-notification:train         "dumb-init --single-…"   3 weeks ago   Up 32 minutes             ceilometer_notification
  • 1
  • 2
  • 3
  • 4
  • 5
    + k0 V' [, g  L/ z9 Y

进入ceilometer_notification 查看保存策略

[root@ALLInOne-Kolla ~]# docker exec -it ceilometer_notification bash(ceilometer-notification)[ceilometer@ALLInOne-Kolla /]$
  • 1
  • 26 ~5 B+ |# I$ E# v" H5 n

查看保存策略

cat /etc/ceilometer/gnocchi_resources.yaml
  • 1
    % z, C5 A1 K) E( 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:        ......
  • # y* @  K, w9 M) e

可以看到默认的保存策略 为ceilometer-low,特别的metric 有单独的保存策略设置。
) Z9 y$ ?* c- u可以将该配置文件复制到宿主机的config 配置目录中。修改一定的保存策略设置,然后kolla重新加载配置,即可设置ceilometer新的保存策略。+ q% `( O$ o+ @) h& d" @+ D# f
gnocchi_resources.yaml 配置文件。7 }4 c% m  s, e
https://download.csdn.net/download/dandanfengyun/15501637

mkdir -p /etc/kolla/config/ceilometercd /etc/kolla/config/ceilometer
  • 1
  • 2- M+ s: }* L: f5 f/ {

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

vim /etc/kolla/config/ceilometer/gnocchi_resources.yaml
  • 1( ~( Y3 w6 ?8 w& p

只修改网络相关 保存策略 为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# k6 W1 }: f( v* J( l

kolla重启加载配置策略

kolla-ansible reconfigure /etc/kolla/all-in-one
  • 1
    : p! ?  P% h& ^1 I

配置完成后,已经存在得metric保存策略不变,新建的虚拟实例的相关 metric 保存策略使用新的。
4 @& q8 ^3 D$ Z  a

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

  •   v3 x) l3 b. S, X

可以看到 有保存策略是 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
    ) f& [5 d7 O/ }' V1 @, @

尽管修改了保存策略,新创建实例 的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 |+---------------------------+-------------+---------------+
  • ; G  o; I: v' `: S3 E- p. D9 j
问题

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

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

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

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-10 16:23 , Processed in 0.052812 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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