易陆发现互联网技术论坛

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

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

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

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

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

x
collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。
7 ]4 I# ~; r% Hinfluxdb 是一个时序数据库。) L% W5 |9 P0 k; C/ u
grafana是一个前端展示工具。
可以使用collectd 的virt插件通过Libvirtd 的API 收集虚拟机的数据,然后保存到时序数据库influxdb。最后通过grafana将influxdb中存储的数据以图标的形式展示出来。
一、部署 collectd influxdb grafana prometheus' ?5 ^0 F0 p  H- L, }
1.修改全局配置globals.yml文件,设置部署监控相关文件。
vim /etc/kolla/globals.yml
* J# J/ Z7 I- x' G" w2 O5 b' f' e% \* a0 B4 {/ d3 S. L
enable_collectd: "yes". D9 D6 z7 f2 K" ]$ e- P
enable_grafana: "yes"4 |7 d3 p; a8 S5 g* D7 b
enable_influxdb: "yes"
. n: A3 Z+ X* {, r6 Oenable_prometheus: "yes"
- y4 t5 j, N6 I' T" Nprometheus_cmdline_extras: "-storage.local.retention 720h"
: s! O3 d6 t/ C- v) K1 d7 \$ u# g& U5 x- w) [' X- W
prometheus-server 数据保存30天 单位d无法识别。可以附加的参数 可参考https://blog.csdn.net/dengxiangbao3167/article/details/102365367
相应的prometheus的exporter包含
#enable_prometheus_haproxy_exporter: "{{ enable_haproxy | bool }}"
& [* r) c0 q" o7 ?' r- L6 C#enable_prometheus_mysqld_exporter: "{{ enable_mariadb | bool }}"
) N, `, v- T7 l! w2 v5 h#enable_prometheus_node_exporter: "{{ enable_prometheus | bool }}"
7 k5 d. f6 Y( o# c7 Z- W#enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}"
4 M- S/ z' c1 p5 _! M+ Q* g#enable_prometheus_memcached: "{{ enable_prometheus | bool }}"
; ~+ r/ P' `/ M#enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"
2 Z- d# X$ [% t+ Y# R7 y" ]+ i4 C#enable_prometheus_ceph_mgr_exporter: "{{ enable_prometheus | bool and enable_ceph | bool }}"
% a2 \; _$ ], M6 u- G, s8 f) L#enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"
' k! o9 D; S' W  k6 d#enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}"+ ?5 N0 ?7 S1 }3 J2 E( [
#enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}". Y' k8 T) v  J& |$ f
: y, D$ _6 W1 U3 G6 @, X( O
2.安装部署相应的容器组件
kolla-ansible deploy -i /etc/kolla/all-in-one
, R# m/ y9 o& j; v6 z18 f  o5 F3 _8 J/ M
3.完成后查看相关组件docker容器是否部署完成
docker ps -a | grep -e collectd -e influxdb -e grafana -e prometheus
7 {' q( T7 ?' U  ?! i1
5 u7 W& F6 m9 H, I4 r+ M, Q0 r5 R
二、修改相应配置文件,通过libvirt监控虚拟机
: H; `! q% C7 P' [4 A' l自定义的配置文件位置,该位置的配置文件会取代默认配置文件。
# The directory to merge custom config files the kolla's config files
2 n% K0 K# k4 R/ P. @node_custom_config: "/etc/kolla/config"* N/ C& _2 d6 f, j; ^4 _
% b2 Y3 w3 N8 I: H7 X6 b0 t3 _- c: P
mkdir /etc/kolla/config
! d9 C# S6 @. r1
. ^6 n! S$ b6 s4 L使用kolla部署完成后。默认配置文件是/etc/kolla/<< service name >>/<< config file >>。
9 ^5 Z+ e* D9 _9 F- x自定义配置文件路径是/etc/kolla/config/,且自定义配置文件一旦设置,就会覆盖且替换原配置文件。
0 Y- t  _7 m! O- Q7 h路径可以是
/etc/kolla/config/<< config file >>,
, h2 w7 p1 r' s; I$ ~+ P$ F/etc/kolla/config/<< service name >>/<< config file >>,
; a+ x, Y1 ?% A/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>" L1 p% V7 |" I& C( O' W  f6 x

& R! x$ F' |3 {8 ~# k3 k1.collectd 配置6 [0 [! O0 A' u: w5 Y8 n
libvirt有不同的虚拟机库, 通过API可以访问控制虚拟机。OpenStack也是通过libvirt的API也控制底层的虚拟机的。
cp /etc/kolla/collectd/collectd.conf /etc/kolla/config/
1 T9 k- S' e' u! p& _) c# P4 |vim /etc/kolla/config/collectd.conf 4 |! o, ~% b# J
1
+ {+ U/ k. ^: }2  m7 m: u$ u+ x6 @! C: k- y
FQDNLookup false4 i4 ~# z( T6 e& l. J
LoadPlugin syslog$ H$ E6 u1 K6 \) a# b- D& S- N' v) y
LoadPlugin cpu
' ]' a, ^# S7 C- O; y- ]- ZLoadPlugin interface
: {8 Q1 C; S" XLoadPlugin load
  T) |3 ^# z! c" |* x; |# ^: [/ ALoadPlugin memory
LoadPlugin network
LoadPlugin logfile
3 s2 a/ w% T7 T# ]6 }9 d2 X$ C4 ~6 XLoadPlugin virt
/ @" T1 d& n# o# e, D
<Plugin network>0 N" E! J" J* [2 {* X1 o: X: B+ f
        Server "192.168.199.90" "25826"
( I. @/ a5 L+ U5 o) q/ z: X! u</Plugin>

9 w5 R" M" \( ]$ W<Plugin logfile>
; e, f. ]; @8 ]$ i& j* \        LogLevel info/ ~1 O8 W$ Z! P( m
        File "/var/log/kolla/collectd/collectd.log"
6 P8 g+ I" i, y( x& j        Timestamp true
9 C) Q+ ^( o; Z        PrintSeverity false3 H! w2 l% V  E6 W4 n
</Plugin>
5 F# K& Y" K9 L/ p; E/ ]
<Plugin virt>0 P; S2 z8 I6 K7 h1 q* F6 r3 ?' a
        Connection "qemu+tcp://192.168.199.90/system"5 \/ }6 b& B* `+ e9 x
        HostnameFormat hostname. `0 U* [% f, A/ g4 @
        PluginInstanceFormat uuid
) ^8 s" y$ \3 P% R! ~( V( L        BlockDeviceFormat target
; s! F  ?$ k/ A) c( _; |        InterfaceFormat name
% x8 A9 h2 J" I        ExtraStats "cpu_util"
# D, w1 V5 H8 w( d" P4 y- `2 [0 P. F</Plugin>  
! p2 B7 r; V& C% {" Q+ k7 x$ p% }7 N4 x# G: P9 n
启用了插件 logfile virt network。logfile是日志插件,virt就是与libvirtd的API通信的插件,network网络插件将收集的数据通过网络发送出去。
network插件设置。
Server "192.168.199.90" "25826"
% n9 x# A- y, g% {- G5 M5 ?1+ l& D2 R# \8 W
表示将数据发送到192.168.199.90主机的25826端口。就是下一步设置的influxdb收集collectd数据的主机 端口。
LoadPlugin cpu
' N5 }& s  n& d! W; _9 V+ K- y! \LoadPlugin interface% g  z% u5 A: W, A
LoadPlugin load
4 G! ?/ Y" l" R7 GLoadPlugin memory( S+ C* [# m. s5 x% p

! u7 C7 {) |6 u$ s1 L- q这四个插件是用来收集宿主机的信息的。interface可能还会监听了虚拟机虚拟网卡的信息,如果不希望通过interface插件收集虚拟网卡信息(virt插件会收集)。可以设置interface只监听想要监听的网卡名。
<Plugin "interface">, B" o8 M( G0 I
  Interface "ens33"
+ N% o0 }* Y, f  y4 R5 t2 }  Interface "ens34"4 ^' P. H/ M4 U( g
</Plugin>$ R" L( E& n& @5 t* o8 r. F. G

  I% }: t; ?. B" L+ I5 j6 \: ^1 Gvirt 插件设置
<Plugin virt>* w, a. }" a) `- q4 ]' W$ A& B# U( R
        Connection "qemu+tcp://192.168.199.90/system"
9 o% y# Y& y2 [" M- D        HostnameFormat hostname
0 \0 o2 M# ^6 _) L        PluginInstanceFormat uuid
/ O1 `% _3 E; C% s* W3 O+ Z1 I        BlockDeviceFormat source
5 a! y0 s$ \& _4 D: r        BlockDeviceFormatBasename false6 y' |( T- |) W" H
        InterfaceFormat name
" d* @/ g1 F+ ~) o        ExtraStats "cpu_util"; t5 t" g2 M; t9 `. L2 v- T8 W
</Plugin>  . S0 J' {" S' B$ K# u2 F; O
8 H" V3 l! b$ U! W6 I
具体参数详情可以看官网, ^  O( m6 Z. I4 c% h9 G3 ?& l( S& l6 Z
https://collectd.org/documentati ... 5.shtml#plugin_virt
Connection 表示连接的libvirt API服务。
% ]5 B  C. K: v! z/ J8 o& _   就像使用qemu+kvm创建虚拟机时使用virsh管理时使用virsh -c qemu+tcp://192.168.199.90:16509/system # |. S# b/ a" w6 d. m# v
   即可连接到libvirtd服务控制虚拟机相关。由于16509是默认端口号,可以省略* a- _4 i" F" L6 n( `; p" f0 D
   由于是ALLInOne 所以collectd设置只有一个,多个主机部署时,需要每个计算节点上安装collectd指向本机的libvirt。# b3 K/ T7 r) j) o* p4 W: \% @
   因此每个collectd设置文件都不相同。
HostnameFormat name|uuid|hostname|...9 U- w3 W9 }# `1 i9 _3 z
   当virt插件记录数据时,会根据此设置设置所收集数据的主机名。- w2 c9 V. f. K% U$ c4 ^
   默认的做法是使用hypervisor提供的来宾名称,这等于设置为虚拟机name。/ ?  H5 J* O8 v; `, `( F: F
   UUID 意味着使用虚拟机的UUID。如果您想跨迁移跟踪同一个客户,这是很有用的。  A  Q9 g3 \4 b
   hostname 意味着使用“全局主机名”设置,这本身可能并不有用,因为所有来宾似乎都有相同的名称。4 K* H5 q/ N. ]) _0 t: ^3 ~, C! p
   hostname就是宿主机名。。。这个其实挺重要的(在有多个宿主机的虚拟机数剧都保存到一个数据库时,可以通过hostname来确定不同虚拟机在哪一个主机。)
8 v+ @6 B+ W( d   至于实例的 名称或UUID 可以使用PluginInstanceFormat来设置
PluginInstanceFormat name|uuid|none7 k# j0 C, [5 y2 p7 f/ h% d
   当virt插件记录数据时,它会根据此设置设置所收集数据的plugin_instance。默认情况是不设置plugin_instance。(只有一个宿主机时可以直接设置HostnameFormat name来代替PluginInstanceForma的设置)
* U2 V4 r' T1 x+ ]4 X* j   name是指使用管理程序提供的虚拟机名称。UUID意味着使用虚拟机的UUID。
4 I/ ^% i; d0 c5 x# j   OpenStack中是根据uuid来管理虚拟机的,虚拟机在libvirtd中的name和OpenStack中设置的并不一致。libvirtd底层管理是自动生成的,OpenStack中创建时手动命名的。
8 |8 y/ {% d% r6 L   HostnameFormat和PluginInstanceFormat都可以使用多个fields。如name uuid。会同时显示名称和uuid中间使用 : 分隔。如foo:1234-1234-1234-1234
BlockDeviceFormat target|source: x# G/ B/ V5 h+ k# h
   挂载到虚拟机中的磁盘设备名设置。. G4 ~3 y% w" f  I5 K4 Y6 C
   virsh # domblklist instance-0000000a+ e$ ^: ]- i* }6 Q& n& D
   Target     Source
5 w( ~. v9 h) ?9 m8 ^4 t& d7 D   ------------------------------------------------! I& E0 e) [" U6 s' p# E
   vda        /var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk+ a) o9 X9 t1 w
   vdb        /dev/sdc/ `. ~7 e3 \4 M4 F. A
   target  是映射到实例中的磁盘名 vda vdb。即实例中可以通过lsblk看到的。! }7 T) k) V" J* a- M$ T
   source 虚拟磁盘对应的路径及磁盘文件名。/var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk /dev/sdc
& y8 a6 U) \& x, l- v   如果设置BlockDeviceFormatBasename设置为true,则只显示文件名 不显示前面的路径。 默认未设置BlockDeviceFormatBasename,是false即显示前面路径
' U3 @! H& w3 z# X3 y/ l1 f* @
InterfaceFormat name|address
! K$ ]2 _9 j' f4 j4 s7 i   虚拟机的网卡显示 name或者address。name网卡名,address网卡mac地址。
( M6 n$ Z3 f7 _4 q( H6 _   0 s; K/ e; F% m& {( P6 ?0 p
ExtraStats "cpu_util"& l" J5 f- I) }  o0 r
   virt额外记录的数据。此处只设置了一个cpu_util 即CPU的利用率。
; L& |) o5 m5 p   virsh # domiflist instance-00000002
5 D% q3 M8 g% E( f   Interface  Type       Source      Model       MAC
! P; u. P- i9 K# p4 D   -------------------------------------------------------
: a# N0 Y2 m6 T4 I4 S) i& s. e3 f   tap97caffeb-9a bridge    qbr97caffeb-9a virtio      fa:16:3e:64:5f:c0; C5 p! M0 S% R1 Y# ^
   interface就是name ,MAC就是address

$ z4 E0 K1 M( w这是单个主机ALLinOne下设置配置文件的情况,如果多个计算节点,每个计算节点的collectd的配置文件是不同的,需要单独设置(主要不同就是连接的libvirtd API的IP不同),每个计算节点需要一个collectd收集本计算节点的相应libvirt 数据。
很奇怪的一点,似乎使用kolla部署的collectd容器收集虚拟机数据时无法收集虚拟机的内存信息,只能获取虚拟机全部内存。 直接使用yum安装的collectd却可以收集used,availble 等。。。不知道原因
2.influxdb 配置
# i; [1 @0 n* @cp /etc/kolla/influxdb/influxdb.conf /etc/kolla/config/
; q9 r7 u$ y! Wvim /etc/kolla/config/influxdb.conf . R, y" O( C% P* y" R
1
) m. f9 ~7 E8 i$ y+ l. z1 X: q2
$ T2 ^& ^- F' o9 jreporting-disabled = true) D+ K- z0 V. s9 E. C: X  t' \
[logging], p% `5 M5 ^7 I
  level = "info") L: N; o7 E9 }* I0 ?/ e
  file = "/var/log/kolla/influxdb/influxdb.log"
, M, B* J# R8 n; R1 a[meta]
) A8 ^  n+ e2 d  dir = "/var/lib/influxdb/meta"
9 ]- d1 S5 r+ D" f8 {! t  retention-autocreate = true
4 S% N# U; r/ ^( k- I( Q+ j  logging-enabled = true  d/ H, u. u: L: I. d
[data]  y6 K6 Z3 Z8 T" w
  dir = "/var/lib/influxdb/data"/ Q8 I4 L2 J5 b9 `+ W- y1 J
  wal-dir = "/var/lib/influxdb/wal"
: s! H% D/ X; @1 |  wal-logging-enabled = true9 l1 I2 J" G& C
  data-logging-enabled = true0 A0 ?4 q1 x* h
  index-version = "tsi1"
; c; |, q6 Z5 |5 ]7 E' O" ~% i; U[coordinator]) J8 N/ u* v& Q0 a  A* b/ t- q: {) ~
  write-timeout = "10s"
9 {8 i+ H6 [  M* e  x  max-concurrent-queries = 0
3 c; `9 \0 q; ?+ N& M, O9 B  query-timeout = "0s"* w! \7 q1 @4 }
  max-select-point = 0  p( P5 H' e0 N
  max-select-series = 02 v5 _% U# A, E+ `8 x! `$ \
  max-select-buckets = 0
8 V1 [+ E9 l$ D5 n, }: x[retention]
* P6 ]) g( m3 q- n7 v8 F  enabled = true
8 o! t* q/ k2 t9 [' o3 n  check-interval = "30m"( _8 X* S# {: k; }! i# X( @
[shard-precreation]
( C( @; r% ]7 U6 k5 I+ G  enabled = true5 z, M$ ^5 u2 }- [* u& z
  check-interval = "10m"
: v% ~6 H5 B& S- ]4 i2 Z  advance-period = "30m"
4 I* n% s0 E+ q. G0 s9 b5 {8 v' ?0 c[monitor]7 ^  e7 ~4 g8 Z: ~
  store-enabled = true
4 r* ?2 a* G5 ?% }. n' ?  store-database = "_internal"
: x3 F, E/ h: n& n7 ]  store-interval = "10s"& _9 _" E$ n( R" b- K
[http]
( X2 _$ g, {3 e4 d# T- ?% j  enabled = true
/ J$ H% i9 t) `; l3 K& h' ^  bind-address = "192.168.199.90:8086"
) H6 X& c* S) r! @& X2 `  auth-enabled = false
( z6 d! R) F% j  log-enabled = true' l3 @, o7 k; a# l" A  Q- X0 b; a: y. {
  write-tracing = false8 R2 K; ^% Q- q6 i# _
  pprof-enabled = false) u; l+ \$ K! ]
  https-enabled = false
0 m/ K  t0 o1 U: |6 t# O$ p[[graphite]]
2 H, u: l) E" T# P3 `7 L  enabled = false
# x, k/ F3 _/ o[[opentsdb]]
3 o1 I  {' D# f0 x  enabled = false- A6 J! y# t" I0 b4 [5 F
[[udp]]
+ `$ s5 Z( J7 t# O8 u) e0 Z  enabled = false. d" a' S3 f+ ]7 ]: g
[continuous_queries]
2 V! R9 C) L3 r. k  log-enabled = true
$ k, f" ]" K$ V: L! m% D% |9 y, ]  enabled = true
[[collectd]], U$ Y0 g+ i$ r. C
  enabled = true
3 |5 `/ W3 q, U7 v6 L2 T. [  bind-address = "192.168.199.90:25826"2 b- ~- @7 O) `3 b* Y: @
  database = "collectd"9 m6 E1 [: ?- _# R: v+ h& I/ y
  typesdb = "/var/lib/influxdb/types.db"
- V8 X3 K" ?3 v7 E
: l; d" e, y( k3 H0 p( d1 j9 c" a主要是添加了 末尾一段。influxdb是可以作为collectd的network Server,可以将collectd发送的数据保存起来。前提是有对应的type.db数据格式。
' v+ Z7 l: W/ |9 |3 `0 `) Ihttps://download.csdn.net/download/dandanfengyun/14989445
[[collectd]]
, T, @" \  ^4 j$ L3 Y  enabled = true
2 a% d1 B+ S( z$ {2 \9 Z1 n  bind-address = "192.168.199.90:25826"" m/ h) [7 a& _9 V' V6 L
  database = "collectd"
1 A+ s/ D+ E6 I& H' @  typesdb = "/var/lib/influxdb/types.db"- C4 k- Y4 j/ p* R4 u$ |, q
/ d2 C- W! E( E% [
bind-address = "192.168.199.90:25826"表示监听192.168.199.90主机25827端口的数据。然后保存到库collectd中。数据格式typesdb = “/var/lib/influxdb/types.db”
数据格式文件需要手动添加。部署OpenStack时,对于一些特别的需要存储数据的组件docker,都有相应的docker volume附加卷。直接映射到容器内。 influxdb容器附加卷在宿主机中对应位置
            {& S! {8 c- _% w2 A- b4 f
                "Type": "volume",
8 H  v0 g3 n$ R0 h3 J! ]* q2 P& U                "Name": "influxdb",
  O& C2 |/ T1 B/ h                "Source": "/var/lib/docker/volumes/influxdb/_data",
2 h0 ]5 |6 u" {                "Destination": "/var/lib/influxdb",
- ?2 O6 ^. J4 n6 [! \6 N* k                "Driver": "local",) H& k4 z# H. v
                "Mode": "rw",: x+ H, ]8 R, G7 O. Q1 g
                "RW": true,% K, f/ R0 \7 `+ {
                "Propagation": ""
5 ~# [' @7 _% m7 d" I! ]; Q( s            },
; H6 C6 g" y, c- N$ [
将文件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& a9 G; I, P# B; Z
1/ ]- ~4 [8 |) B9 ]2 ~+ U& Y
[root@ALLInOne-Kolla ~]# ls /var/lib/docker/volumes/influxdb/_data/
- E  ]3 D5 N. N( y" u: Bdata  meta  types.db  wal
7 Y% M4 g! M( p: J; L1
( V0 |: S4 E$ n- ?& R+ y2
: d* k/ ]( i# B) [6 c3 N* V3.加载个人配置。, E0 h+ w# y' a0 I
kolla-ansible reconfigure -i /etc/kolla/all-in-one : O0 ]) e$ T& \1 L, ?! o" g
1
1 u' A- d! f. p; y完成后,会使用个人配置替代默认配置。并重启相应的组件容器加载新的配置。
新配置生效之后,最好将influxdb数据库原数据清除一下,因为原数据中会包含一些不符合新配置的数据。
删除库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'5 F3 `7 N. E: V- b
17 E' P8 _- t$ A4 o' O* n$ f, j
新建库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd '+ ~6 p5 R" x  h0 X( c! Y
1
2 e8 P# n5 `0 |5 w有一些配置是无法通过配置文件设置的。如数据保存时间等。可以使用influxdb的api来设置。7 g7 m# e1 s. R& H% ]0 y& ]
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'
0 x5 Q* j" U+ z4 s; X, G1. s. J' \; r* u( A: R9 O# E2 b
查看存储策略 一般是永久保存
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=SHOW RETENTION POLICIES ON collectd'
. i1 v9 i, P# g: @" i$ I2 Z1
4 i  R3 z" {7 ~1 i. \设置新的保存策略 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 r( L  u8 {: o" ^! o, [1
- m+ {0 `" f4 f1 d7 u1 j删除旧策略
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP RETENTION POLICY "autogen" ON "collectd"';
10 Z( U! G# x, {; ^' W* |
2% r3 S# f8 x6 V; ~, W9 @6 H# E! M
4.influxdb一些其它的api。
. K, H! z- F- K3 n" ~删除数据库
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'  Q: P3 o; d8 A
1
) Y% x2 S" q' h8 u! J查看库 列表
curl -G 'http://192.168.199.90:8086/query?q=SHOW+DATABASES'' b# ^# P; E$ B
12 W  v9 p! n5 c; j# s* B
查看库measurements 可以理解为表
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=show measurements'
$ s, M9 [  j5 R, t5 C9 D0 M1: ]3 r# @) h4 P
查看具体数据
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=select * from virt_rx  limit 10'
& x% i  v8 Z% Y# z+ F1
- {& W5 J& b2 g! ?9 y& _. vprometheus和grafana等暂不需额外配置文件。
三、grafana 根据influxdb中数据生成图表。2 L) F. A7 J( @
和普通的监控虚拟机基本一致。https://blog.csdn.net/dandanfengyun/article/details/112269935
不过由于直接通过libvirt的API监控虚拟机状态。没有经过OpenStack,所以虚拟机的名称无法对应。需要通过虚拟机的UUID来确定。
0 j) I0 C) N6 {2 v连接的是libvirt,也就是计算节点的libvirt。一个collectd只能监听一个计算节点livirtd,多节点部署多个计算节点,需要在每个计算节点安装collectd连接本节点libvirtd。
$ v; a+ I$ u2 ]  L& m& ]: l4 H对OpenStack的整体信息,如虚拟机数量等也无法统计。且虚拟机移除后,数据不会随之消失,只是无有新的数据统计。保存策略是永久。
所以需要配合prometheus使用。prometheus_openstack_exporter会获取OpenStack的整体信息。如vm数量,cinder数量,glance的镜像数量等。但是没有具体虚拟机的具体信息 。
1.设置数据源。
5 \. ]9 a4 \: I3 |" J( h0 y0 G登录进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
! |. y- K2 h0 h1. }8 @4 E% t* m! T- I" U
登录成功后设置数据源
1.influxdb的collectd数据源
Name:collectd (这个是自定义的grafana数据源名)
0 {. A+ c4 N' A4 iURL : 192.168.199.90:8086
6 m& }5 d3 J$ y, w6 V8 {Database:collectd
完成点Save & Test 即可,成功的话是 Data source is working6 b+ b  r& N. V) p/ i% O. N  l
失败查看一下influxdb组件docker容器是否启动,IP端口对不对等。。。
2.prometheus数据源
Name:Prometheus
- M5 ^/ ?6 J+ V% tURL:http://192.168.199.90:9091

" h9 f2 j2 e2 @. E0 d- [! p
2.设置dashboard的变量: q; `6 K& `. F4 K& v& A" E
基本上不可能只有一个 虚拟机,且把多个虚拟机的信息一起展示也不合理。所以设置一些变量来确定当前展示的数据是哪一个虚拟机的。

' J6 O: g, F( n# `6 yhost    SHOW TAG VALUES WITH KEY=host
4 l% @, a# x! r" Q7 h& Binstance_uuid  SHOW TAG VALUES WITH KEY=instance WHERE host='$host'& c# L0 N  {, c6 l0 g! n( U
virt_interface  SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
# G% Y0 ?( R3 X; G2 bvirt_disk   SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
7 a$ j" o/ O' A# q0 sinstance_name  label_values(openstack_nova_server_status{id="$instance_uuid"}, name)
: v! D2 x) r. @
7 j9 ^# X+ }3 T- e- F分别设置宿主机名 虚拟实例uuid 虚拟网卡 虚拟磁盘 以及实例名
9 \3 Z( W( ]& m( E( w' V宿主机变量
虚拟机实例uuid变量
: E. a' n0 m1 G
虚拟网卡变量
$ j4 w. g( `( f5 D. w& _9 l- o5 U
虚拟磁盘变量
实例名
- {9 r! B: W( c/ t" k$ F7 {
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。$ n8 [. G6 v, l/ K9 ~4 M1 W1 n
这个根据influxdb查询语句和grafana使用个人创建即可。

8 v. u1 t, O2 w" N8 \7 o3 c/ u
4.相关dashboard的json示例。
7 t) N6 b; P3 q% ^. I2 @0 g2 s- i这个只是个人保存使用的一个dashboard示例,应该是无法通用的。1 _1 c+ |0 W4 @/ G$ o
不用重新每次都再重复一遍2,3。导入数据源collectd后直接import该json文件即可
; a: z, N5 g/ ]7 g3 p# g' xhttps://download.csdn.net/download/dandanfengyun/15073272
创建数据源 略。
点击import导入模板

0 t: p* x. H0 W选择模板文件

& {! z) B: q6 c9 |' _) _  c最终导入

+ A; E6 o% q8 x! e9 g$ V

! p, b. H( S. b- C" C如果Prometheus和influxdb中collectd数据 实例 基本一致,可以设置更多的变量信息。8 J* p: u. T3 M9 }" N
如 实例不同状态根据Prometheus数据库查询。
# v$ t* ?/ g+ ~uuid也使用Prometheus 数据库根据实例状态查询。' U  u. K: E* ]1 F+ G. u
其他的数据根据uuid在influxdb的collectd库中查询。
" q: t, k# I5 y. ?  Q一致的是,实例名依然只能作为一个展示数据,而不能作为真正变量影响数据展示。
结合了prometheus展示了虚拟机的状态,根据状态查询实例uuid,选择ACTIVE可以避免查询到已经废弃的实例,也可选择SHUTOFF查询已停止运行实例的状态 不好的是也会查到状态是BUILD的实例
不过实例状态查询 重要的就是查询最近一段时间内 活动实例 的状态,因此状态变量选择基本是ACTIVE,只用于筛选出活动的变量即可。+ {! p) g! |7 z- o
且BUILD 状态的实例BUILD状态只会存在很短的时间,最终会转化成ACTIVE。
grafana变量设置
host    宿主机名(influxdb)
+ F1 L. A& ~& a/ c  U, ` SHOW TAG VALUES WITH KEY=host
instance_status  实例状态(prometheus)
8 f/ o" k: g1 J2 ^3 W label_values(openstack_nova_server_status{hypervisor_hostname="$host"}, status)
instance_uuid  实例uuid(prometheus)因为此处使用prometheus查询uuid可以根据实例状态查询; Z0 J2 ~3 w: g. a; F% _* |% o4 G
label_values(openstack_nova_server_status{hypervisor_hostname="$host",status="$instance_status"}, uuid)
virt_interface  实例虚拟网卡(influxdb)
9 L; f0 y. m# _1 Q6 T SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
virt_disk   实例虚拟磁盘(influxdb)  ?% T( _0 B7 X0 Q
SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
instance_name  实例名(prometheus)
7 {* u* h% V) T7 U" l5 M6 `; p label_values(openstack_nova_server_status{id="$instance_uuid"}, name). E! H( K" k4 l' S. v2 L7 h# ]+ a6 d

* U4 A0 k* i1 P! a% C% I: Ipanel都不用改变。。。。。。
https://download.csdn.net/download/dandanfengyun/15137036
这里有一个问题 不知道理解的对不对。。。
5 J) h9 {5 l% _prometheus和collectd都是时序数据库。
2 J( h0 f( G# oPrometheus记录的实例信息也是按时间存放多个的。(隔一段时间存放当时的实例状态信息)
grafana变量也是和时间相关的(也就是grafana变量不仅和其他变量相关,也和时间相关)
: y* k" h  S5 z- p+ q: B  I: c) a也就是说,一个实例的状态信息选择时间段不同,是可能有多个不同的变量的。* I; ?" X+ r# I, X: d3 ~
如变量为实例运行状态 15分钟前关闭了该实例。假设只有两个实例,一个运行 一个15分钟前关闭。
那么选择5分钟前到现在的时间段,变量就有active和shutoff。active的实例只有一个,shutoff的实例也只有一个。
被删除的实例则没有ACTIVE或SHUT OFF状态,但是prometheus和influxdb中都记录了被删除前虚拟实例的运行状况。
但是当选择30分钟前到现在的时间段,变量就有active和shutoff。shutoff的实例还是只有一个,但是active的实例有两个(这个听起来有点那啥),只要记住 prometheus是时序数据库,不能把该变量当成真正的纯粹记录当前实例状态的布尔值。 30前到15分钟前,该实例是active的,15分钟前到现在,该实例是shutoff的,所以该实例有两个运行状态。。。
问题" H; H6 ~7 j  S* f5 R
collectd 无法通过OpenStack获取用户等信息。如果要使用grafana展示可能要通过prometheus。7 R/ k" |3 \+ n/ \0 Z# W" s  w! K9 e+ L
grafana需要通过prometheus和influxdb两个数据源才能展示实例的状态信息。
collectd也无法收集实例 内空间使用占用情况。, G$ d' ^* g! f$ ]6 ?& i
 楼主| 发表于 2021-7-2 17:00:29 | 显示全部楼层

ceilometer与gnocchi

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

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

gnocchi解决的问题是大规模地存储和索引时间序列数据和资源。2 M% ~: h- g" V: @1 T& @7 f
http://gnocchi.xyz

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

不过grafana高版本似乎对gnocchi的兼容不足,3-6版本之间的可以实现兼容。grafana6以上的似乎无法兼容 gnocchi 数据源。因此部署时需重新安装6版本以下的grafana实现 gnocchi数据源的添加展示。+ x% J3 t0 o* t) T) U1 J
且ceilometer有时在主机重启后需要重新启动相关服务 才会继续收集数据。

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1
    5 N; E, W% W- }* e! E3 C
部署相关组件

train版本自动安装的grafana 版本7.3.7。无法添加gnocchi的dataresource。。。(一致testing无法成功): b8 A& v  X! m! {: y9 V
因此想要使用grafana展示gnocchi中数据的话。需要安装更低版本的grafana。
! I, f8 {0 o+ Q, F0 ?如安装6.3.4版本的grafana,端口号设置为3002避免和通过kolla部署的冲突。

编辑配置文件。

vim /etc/kolla/globals.yml
  • 1
    3 e9 I" y2 I& m( u: |+ r$ m  p
enable_ceilometer: "yes"enable_ceilometer_ipmi: "yes"enable_gnocchi: "yes"enable_grafana: "yes"
  • 1
  • 2
  • 3
  • 4
    & S4 N3 `/ D( J5 B+ A8 v: w

部署安装

kolla-ansible deploy -i /etc/kolla/all-in-one
  • 1& u! D  K8 F; 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
  • 3 M& D' s' X5 K
安装gnocchiclient 查看数据。

默认部署 ceilometer 数据保存到gnocchi中保存策略是low。基本上5分钟保存一次数据。。。所以数据有时候需要等一下。1 ^! n9 {7 n3 K# I
长时间无数据且查看相关容器正常运行后 或者宿主机重启后 建议重启ceilometer_notification容器 可能解决问题。

docker restart ceilometer_notification
  • 1
    7 `1 m3 l# |2 F) @9 l- X5 N

或者重启 ceilemeter 相关所有容器

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 11 V5 u" }3 P) l

1.安装gnocchiclient

pip install gnocchiclient
  • 1
    ' j* O# u" L! `/ e1 k

2.加载认证

source /etc/kolla/admin-openrc.sh
  • 1
      s' Y* x( ~6 r0 `

3.通过gnocchi-api查看gnocchi中存储数据。
( R2 {  s" r% q" B当前采集的资源列表

gnocchi resource list
  • 1* l5 P, {4 C% K' G$ A" M

列出支持资源类别列表

gnocchi resource-type list
  • 1( j8 c: P- ^' f* U

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

gnocchi metric list | grep 511483be-89a2-4b7e-91b8-41adf4276651
  • 1' O1 w4 N+ O+ b6 Q

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

gnocchi measures show e45156e4-7544-49a1-ab9a-a22fdc1f56e2
  • 1
    $ l9 G; p1 x0 B9 e  E$ ~" o

查看帮助

gnocchi --help
  • 1) b5 w/ j/ [+ h# V' }; V

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

  • - f; f% g3 j* \2 L$ K

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

Grafana展示

安装完成添加gnocchi数据源后使用dashboard模板展示数据。4 d* u9 a. k" Y) L) P
https://grafana.com/grafana/dashboards/12536

使用kolla部署的grafana版本过高 似乎不再支持gnocchi 的数据源插件了。
8 V. `) q: w1 D" V; ]/ `只好额外安装一个更低版本的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
  • 9 h2 {- O5 y: |- W) K3 b' j

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

vim /etc/grafana/grafana.ini
  • 1
    4 Z; G8 T# J# r1 `" u, B& S! W
[server]http_port = 3002
  • 1
  • 2
    + V, X8 ]- C  O. ?" Y. f0 ~

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

systemctl enable grafana-serversystemctl start grafana-server
  • 1
  • 2
    $ ~& ?/ `! n; q  u

grafana安装gnocchi 数据源插件

sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource
  • 1
    2 l1 v' p$ W6 x/ f

安装 完成 重启grafana

systemctl restart grafana-server
  • 1
    # S# |0 q- Q  C( z  p
设置配置文件,允许grafana6.4.3读取gnocchi数据。
cp /etc/kolla/keystone/keystone.conf /etc/kolla/config/cp /etc/kolla/gnocchi-api/gnocchi.conf /etc/kolla/config/
  • 1
  • 29 L( j3 ?: _0 l; J

配置gnocchi

vim /etc/kolla/config/gnocchi.conf
  • 10 j: G. h' k2 |9 B' b1 x/ d6 E2 m

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

[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    ) A* ~: {" H/ h  L3 D8 J

配置 keystone

vim /etc/kolla/config/keystone.conf
  • 1! z7 ^  }* Z, i$ d
[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2* Q% j2 {! q; i0 o9 r2 b

设置完成 kolla重新加载配置

kolla-ansible reconfigure -i /etc/kolla/all-in-one
  • 1
    ' u3 M& x. l/ s- L- f8 ]
设置gnocchi数据源。使用dashboard模板展示数据。

等待配置重新加载完成后。网页登录进入grafana6.4.3
2 E: ]6 k! p0 q4 q# q192.168.199.90:3002

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

添加数据源 Add data source 选择gnocchi# P! M, k+ S  o8 T2 Y+ 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用户的登录密码
  • 7 @/ @! S2 X1 O" _2 r
[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

  • ( I4 A; [2 v# M' h  f8 Y

认证没问题即可成功添加 gnocchi的数据源。- ~. c4 h7 K. N
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
. i0 o: H8 f; [. Phttps://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
1 l- F/ K3 k# H. n" }6 A4 n输入模板ID 后按enter 。等待一会后即可导入模板,会让选择数据源,选择刚添加的gnocchi数据源 即可。
$ l- a% K4 a( K" _/ H8 Z/ Z7 j, D当然可以自己根据数据源设置dashboard,只是我gnocchi查询不熟。所以直接使用他人的模板了。

效果大致如下6 l* S' M' C' h$ h9 V& U! C
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 B' j' v. K, X) a  A5 W% f8 H2 hhttps://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分钟记录一次数据太慢尝试修改保存策略。
0 p9 m9 O, x" H7 |' |8 a通过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     |                                 |+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+
  • # u5 a- W3 l8 {, k

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

  • # o1 B/ t2 T* _( ?# E7 W0 S

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

修改保存策略

通过docker exec 命令进入ceilometer 相应的容器,查看保存策略的设置。。。% a6 ?  g0 ?, ]6 _
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
  • 57 o' z7 b. ^3 {; o# l' O

进入ceilometer_notification 查看保存策略

[root@ALLInOne-Kolla ~]# docker exec -it ceilometer_notification bash(ceilometer-notification)[ceilometer@ALLInOne-Kolla /]$
  • 1
  • 2/ }1 Z" b* a2 O# O

查看保存策略

cat /etc/ceilometer/gnocchi_resources.yaml
  • 1& K6 i  T, r) D, w. l0 J. ?
---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:        ......
  • ' E1 W1 M  B% U! Z  y) X8 B- B, C

可以看到默认的保存策略 为ceilometer-low,特别的metric 有单独的保存策略设置。* x& c1 T6 M1 c! }. k" n, ^
可以将该配置文件复制到宿主机的config 配置目录中。修改一定的保存策略设置,然后kolla重新加载配置,即可设置ceilometer新的保存策略。
% `; X9 v  B- _2 |6 c. Ngnocchi_resources.yaml 配置文件。; y/ S. {2 o4 ?" {, S" H) [* v% f$ s
https://download.csdn.net/download/dandanfengyun/15501637

mkdir -p /etc/kolla/config/ceilometercd /etc/kolla/config/ceilometer
  • 1
  • 2, E& E4 f' H# r

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

vim /etc/kolla/config/ceilometer/gnocchi_resources.yaml
  • 1, T4 W/ V0 ~( d8 ?6 y7 u( E

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

  • " {6 H/ ~& B' B- c5 z

kolla重启加载配置策略

kolla-ansible reconfigure /etc/kolla/all-in-one
  • 1# L5 T' g5 l* r  p# k

配置完成后,已经存在得metric保存策略不变,新建的虚拟实例的相关 metric 保存策略使用新的。
' S' V  U6 i$ m5 [  y9 w* 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 |+--------------------------------------+----------------------+--------------------------------------------+---------+--------------------------------------+

  • 1 Q8 T) t3 `. E$ L

可以看到 有保存策略是 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
  • 41 P& a+ @' k/ K2 l* e  e1 w- ?( w

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

  • . ]- l% i8 E4 _. z8 `
问题

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

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

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

本版积分规则

关闭

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

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

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:25 , Processed in 0.057062 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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