易陆发现互联网技术论坛

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

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

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

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

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

x
collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。7 H9 g) @. y. q* x
influxdb 是一个时序数据库。
' P2 d) F1 ]% X6 }: [grafana是一个前端展示工具。
可以使用collectd 的virt插件通过Libvirtd 的API 收集虚拟机的数据,然后保存到时序数据库influxdb。最后通过grafana将influxdb中存储的数据以图标的形式展示出来。
一、部署 collectd influxdb grafana prometheus# R/ i$ W4 P' Y7 m( b' l8 E$ D
1.修改全局配置globals.yml文件,设置部署监控相关文件。
vim /etc/kolla/globals.yml# l( J+ A. d4 v* h; i' z2 x1 g7 h

& c! W. ]  F9 F. benable_collectd: "yes"2 E' Q! U3 {7 L4 F1 k
enable_grafana: "yes"/ H) g* b2 U. o3 }! b3 l& I
enable_influxdb: "yes"% J3 W/ z8 I( Y9 l( n9 o) ~
enable_prometheus: "yes"" _* j8 N* d" }
prometheus_cmdline_extras: "-storage.local.retention 720h", P! e3 x: N; }4 X3 a9 L
  H7 ~7 C. g& V  n, R$ e$ P
prometheus-server 数据保存30天 单位d无法识别。可以附加的参数 可参考https://blog.csdn.net/dengxiangbao3167/article/details/102365367
相应的prometheus的exporter包含
#enable_prometheus_haproxy_exporter: "{{ enable_haproxy | bool }}"
% A0 v' z, z( b+ A; k4 _% A" n% H" }8 U#enable_prometheus_mysqld_exporter: "{{ enable_mariadb | bool }}"  ?3 ?5 ^, _1 d4 u1 S  ~
#enable_prometheus_node_exporter: "{{ enable_prometheus | bool }}"! u/ Q3 ^% }3 P- L
#enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}": a$ \' T( Z( d. X! s5 C! r1 ~. x
#enable_prometheus_memcached: "{{ enable_prometheus | bool }}"% Z% h( b/ z+ j' h& Z/ J0 S
#enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"
1 e) Y& d3 d) R  R0 G/ u#enable_prometheus_ceph_mgr_exporter: "{{ enable_prometheus | bool and enable_ceph | bool }}"
2 [: Y: B3 f& ^+ T#enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"
+ N: V1 @& b5 Y5 ?& U1 e, a#enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}"
' e% o# h; Y* v. M, C. j  \#enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}"# T, t8 L" e8 B6 T$ L2 ~

/ H7 p) o3 O, Y8 |% q1 e# h2.安装部署相应的容器组件
kolla-ansible deploy -i /etc/kolla/all-in-one - E) n/ m$ F! L( G9 Z
1
, `4 w( I0 A% M- z9 ?) v  a3.完成后查看相关组件docker容器是否部署完成
docker ps -a | grep -e collectd -e influxdb -e grafana -e prometheus
9 [+ [8 N! |: Y9 w7 B0 R1
/ ]. u% b( @$ G+ L# Y/ d
二、修改相应配置文件,通过libvirt监控虚拟机
, n  o6 _5 t2 s& r1 z自定义的配置文件位置,该位置的配置文件会取代默认配置文件。
# The directory to merge custom config files the kolla's config files9 A7 B+ I) H' J5 j; L& }
node_custom_config: "/etc/kolla/config"* R" I5 g( [: Z) }3 ?0 W
& G. @9 Q7 h: x9 i+ J# I& r8 K2 \
mkdir /etc/kolla/config
: k& N: h( G5 y9 O2 K( b+ O1! U: P" S$ M& ?# s6 h) @
使用kolla部署完成后。默认配置文件是/etc/kolla/<< service name >>/<< config file >>。
5 ]# l1 u* v# \% V6 D自定义配置文件路径是/etc/kolla/config/,且自定义配置文件一旦设置,就会覆盖且替换原配置文件。
4 @* i1 S' l2 F1 P( y- j路径可以是
/etc/kolla/config/<< config file >>,
4 a. s. h& T" D! R5 m/etc/kolla/config/<< service name >>/<< config file >>,
, }" I1 ]4 ?8 |7 Q5 ~/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>6 w5 N. ]& O% j) D1 o
: f8 K, T7 Z" y  j5 E" o8 t
1.collectd 配置, A' D1 F" P4 b$ s2 g
libvirt有不同的虚拟机库, 通过API可以访问控制虚拟机。OpenStack也是通过libvirt的API也控制底层的虚拟机的。
cp /etc/kolla/collectd/collectd.conf /etc/kolla/config/; p! M, t# ]! Q/ F6 Z
vim /etc/kolla/config/collectd.conf ) a/ O5 q9 q/ J1 `; q7 |8 x) a
1
  e# X1 W( }4 i0 F  D2 f( h2 c23 W1 W, C6 s; m0 c3 b
FQDNLookup false! w# A; `  C2 B8 Y+ i9 E+ c
LoadPlugin syslog7 s& \, g2 g9 t& D6 [+ R5 U4 v3 }
LoadPlugin cpu: a  v. T: `7 E( C3 n: E
LoadPlugin interface  a* B; C  J( }4 {+ j, s! l
LoadPlugin load
7 R4 N: _% {& z- o+ rLoadPlugin memory
LoadPlugin network
LoadPlugin logfile
3 D' F2 J. L; M# c( xLoadPlugin virt

4 w  B2 M. Y/ h7 Q<Plugin network>0 ]& ^/ C- {' J1 S
        Server "192.168.199.90" "25826"; S; @" K  _0 E
</Plugin>
& t' H# t2 A. B
<Plugin logfile>+ A2 K$ w& E1 R  V
        LogLevel info, l3 Q1 g, d2 o. X! t; ~# M
        File "/var/log/kolla/collectd/collectd.log"( `; N. F: B2 t' A( V' ^" U  k- F
        Timestamp true" r3 u; u' Z, n* c$ j0 ^7 d
        PrintSeverity false- s9 t. P' U, Y. h
</Plugin>

( z) f) T3 {5 E7 o2 U<Plugin virt>! H6 g5 I% X  P: z) ^3 O
        Connection "qemu+tcp://192.168.199.90/system"; V  ]2 }* n6 @. o) Z: h
        HostnameFormat hostname0 R" n* j2 M& s! P
        PluginInstanceFormat uuid7 w  s0 E, B. F1 _0 ?
        BlockDeviceFormat target  N( R& q( ^" k7 s' i) {6 G/ {
        InterfaceFormat name. b( s9 o2 a4 c, d* i
        ExtraStats "cpu_util"
! ]  @1 w8 M/ I8 n# [0 u8 \</Plugin>  . {9 k* t0 |! n) ^8 H7 f

4 D! B' P  p' j$ F# F启用了插件 logfile virt network。logfile是日志插件,virt就是与libvirtd的API通信的插件,network网络插件将收集的数据通过网络发送出去。
network插件设置。
Server "192.168.199.90" "25826"; j2 R% V8 ~9 q0 e' x; Q
1
6 ?, [7 ?- n! X4 c9 a表示将数据发送到192.168.199.90主机的25826端口。就是下一步设置的influxdb收集collectd数据的主机 端口。
LoadPlugin cpu. k6 T; w* |* c7 X3 w* \$ }/ I- R0 o
LoadPlugin interface
5 ^  B2 ~/ V+ f' }& r& RLoadPlugin load
8 o4 \! _# m8 W# HLoadPlugin memory
5 G& w+ y& ^$ B8 ?2 \# H0 R* O
0 v' j+ p! J7 h6 H5 R) Y+ S+ V这四个插件是用来收集宿主机的信息的。interface可能还会监听了虚拟机虚拟网卡的信息,如果不希望通过interface插件收集虚拟网卡信息(virt插件会收集)。可以设置interface只监听想要监听的网卡名。
<Plugin "interface">' R3 Q* ]  q/ \& n6 D
  Interface "ens33"6 I, z  U4 y) }8 r5 e
  Interface "ens34"
& [, G% W; e3 d( m/ a</Plugin>
& @4 h: |% R6 l7 D) n% n8 z( }6 d8 F
/ p1 [) H: N; I; Lvirt 插件设置
<Plugin virt>
. y4 |/ t; R2 @& u; }+ X        Connection "qemu+tcp://192.168.199.90/system"
$ x; d  R- v9 l5 t        HostnameFormat hostname- B& ?+ K, z) J- U+ A
        PluginInstanceFormat uuid
& @2 x3 Z( E" u" ?; t        BlockDeviceFormat source/ ^/ y+ h' i: x$ v* ]
        BlockDeviceFormatBasename false
/ [' Y, Q) U2 g( _- s        InterfaceFormat name1 R4 g, c# |  R% }
        ExtraStats "cpu_util"
6 q& i! ^+ X6 U1 J+ Q</Plugin>  & L/ u+ _' U0 s6 T$ i' D

! P, Y7 }0 z! k% c( U7 h/ v$ N* S具体参数详情可以看官网2 e3 R( B7 L' e6 v5 e/ i
https://collectd.org/documentati ... 5.shtml#plugin_virt
Connection 表示连接的libvirt API服务。
; @, F6 ]- X9 q6 s3 [4 S5 G3 n2 x   就像使用qemu+kvm创建虚拟机时使用virsh管理时使用virsh -c qemu+tcp://192.168.199.90:16509/system
& g3 m2 \$ ]: R! u: ^1 a" b, H% F   即可连接到libvirtd服务控制虚拟机相关。由于16509是默认端口号,可以省略: @$ C  ?9 C8 j9 |( ?4 K& Y
   由于是ALLInOne 所以collectd设置只有一个,多个主机部署时,需要每个计算节点上安装collectd指向本机的libvirt。
$ o* y+ [5 m; _$ p1 H3 ^* N   因此每个collectd设置文件都不相同。
HostnameFormat name|uuid|hostname|...
  G- O4 B1 ?7 N   当virt插件记录数据时,会根据此设置设置所收集数据的主机名。
' O! |9 Z3 n: d( G* u7 r' @   默认的做法是使用hypervisor提供的来宾名称,这等于设置为虚拟机name。  y  `: q; i' u4 |& j
   UUID 意味着使用虚拟机的UUID。如果您想跨迁移跟踪同一个客户,这是很有用的。) [1 c8 M% U+ W8 \" t6 e! a2 w3 A' L
   hostname 意味着使用“全局主机名”设置,这本身可能并不有用,因为所有来宾似乎都有相同的名称。4 V7 o+ N' e/ \- v6 k
   hostname就是宿主机名。。。这个其实挺重要的(在有多个宿主机的虚拟机数剧都保存到一个数据库时,可以通过hostname来确定不同虚拟机在哪一个主机。)
8 D+ V8 x: a3 s8 U   至于实例的 名称或UUID 可以使用PluginInstanceFormat来设置
PluginInstanceFormat name|uuid|none0 L. K5 A6 X7 S- ]$ C6 {
   当virt插件记录数据时,它会根据此设置设置所收集数据的plugin_instance。默认情况是不设置plugin_instance。(只有一个宿主机时可以直接设置HostnameFormat name来代替PluginInstanceForma的设置)
5 q" G9 k+ G& @   name是指使用管理程序提供的虚拟机名称。UUID意味着使用虚拟机的UUID。* _6 b' a1 q7 G: K+ K7 g& W, k
   OpenStack中是根据uuid来管理虚拟机的,虚拟机在libvirtd中的name和OpenStack中设置的并不一致。libvirtd底层管理是自动生成的,OpenStack中创建时手动命名的。" w5 F: G  e$ D3 q" R
   HostnameFormat和PluginInstanceFormat都可以使用多个fields。如name uuid。会同时显示名称和uuid中间使用 : 分隔。如foo:1234-1234-1234-1234
BlockDeviceFormat target|source* ]1 T* q$ I  N4 ?( _% A3 u
   挂载到虚拟机中的磁盘设备名设置。
; p7 W1 ^- N/ U7 Z   virsh # domblklist instance-0000000a: f8 V( ^% F7 A: f
   Target     Source
) a6 X  p, J" S# ~- r2 w   ------------------------------------------------
( B0 Y7 S5 I. R( V0 C2 ]/ J   vda        /var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk
! H7 v1 |/ C3 ]3 A9 u- m   vdb        /dev/sdc
" \2 [8 }! D( K6 {: B   target  是映射到实例中的磁盘名 vda vdb。即实例中可以通过lsblk看到的。; R) l' n: e5 f) H1 B
   source 虚拟磁盘对应的路径及磁盘文件名。/var/lib/nova/instances/86862558-141c-45b7-bfcf-b4e497f91bda/disk /dev/sdc, l2 }; k1 {- t1 S0 U- d
   如果设置BlockDeviceFormatBasename设置为true,则只显示文件名 不显示前面的路径。 默认未设置BlockDeviceFormatBasename,是false即显示前面路径

5 p; P/ c# z/ @/ j3 D1 I+ y* F* GInterfaceFormat name|address
; R1 Z6 O6 R9 V   虚拟机的网卡显示 name或者address。name网卡名,address网卡mac地址。& i3 H; }6 m& H6 T, \9 S
   ' e2 Q8 n9 H2 b0 J* j9 ~' Y1 C
ExtraStats "cpu_util"' i/ b! x, N+ \$ ~: R0 N7 o
   virt额外记录的数据。此处只设置了一个cpu_util 即CPU的利用率。
0 Y, U: M$ g# g* P* X, Q   virsh # domiflist instance-00000002
/ m6 ~9 m: ~8 K1 y( r   Interface  Type       Source      Model       MAC. C1 p$ e" d! u% ]
   -------------------------------------------------------$ \* S( W$ S3 H0 G/ m
   tap97caffeb-9a bridge    qbr97caffeb-9a virtio      fa:16:3e:64:5f:c0
3 A5 _1 C# b8 l  _: D0 \) V   interface就是name ,MAC就是address
' F, }( V7 B2 `$ {1 N& r
这是单个主机ALLinOne下设置配置文件的情况,如果多个计算节点,每个计算节点的collectd的配置文件是不同的,需要单独设置(主要不同就是连接的libvirtd API的IP不同),每个计算节点需要一个collectd收集本计算节点的相应libvirt 数据。
很奇怪的一点,似乎使用kolla部署的collectd容器收集虚拟机数据时无法收集虚拟机的内存信息,只能获取虚拟机全部内存。 直接使用yum安装的collectd却可以收集used,availble 等。。。不知道原因
2.influxdb 配置
8 N9 G9 [+ D1 v8 {6 C; `8 ^cp /etc/kolla/influxdb/influxdb.conf /etc/kolla/config/; M& y  b, D) G0 E+ ?) v
vim /etc/kolla/config/influxdb.conf ( S+ h+ r/ {( z3 O4 l, W( M. l
1
4 j. t5 A# o( D5 V- m% D: i6 c2! ]' I  P4 q7 O- g% p7 {8 @+ ~: ]  j: E
reporting-disabled = true" J; e9 b4 i8 u4 X. l& x
[logging]% J; g0 q: a3 Z
  level = "info"3 i% |2 V% P: h1 x  I! c2 }, G
  file = "/var/log/kolla/influxdb/influxdb.log"
7 K3 J, b1 `; {" d" k[meta]: u. I  m1 E7 \! F/ M: E
  dir = "/var/lib/influxdb/meta"( Y+ X* }4 Y# ^. Q
  retention-autocreate = true
$ l; ~! o6 F2 M7 ~6 P9 u; R3 B2 b) l  logging-enabled = true
6 |" k4 u% M" T8 K9 a" g3 X# r[data]
+ _% }: ]' O3 {- K  t  dir = "/var/lib/influxdb/data"5 T- d/ Q+ p5 }- [& h
  wal-dir = "/var/lib/influxdb/wal"
$ w7 p1 T& x0 R$ S$ J  wal-logging-enabled = true, h' M) t9 c) }; B3 W3 P
  data-logging-enabled = true
. ]  V% F% ]; I5 l- J) F3 R  index-version = "tsi1"# v" e4 y# s* p3 ]. x" g! T3 @
[coordinator]
' q) S1 u! Y% \4 u/ e. }  write-timeout = "10s"# b, f- n4 l3 j, B* r, S2 Z9 J- s4 y
  max-concurrent-queries = 0
# C8 w/ ]/ h, T, V  query-timeout = "0s"; n0 {( O. J" E/ {! M( t
  max-select-point = 0
1 C9 d, V3 a# ]) O, k  max-select-series = 0) O9 @8 J. S( n. ]
  max-select-buckets = 0
, D0 N) _; h3 p1 E; i; c[retention]
4 \, c3 i! K  N+ L; C  enabled = true: Y5 d" K" x4 s6 E
  check-interval = "30m"
. q5 o' ^1 m) Q0 n9 a, a. G[shard-precreation]
& X( p8 B2 c3 [+ ]* X" _' y/ ~& n  enabled = true& Q# f2 ?2 U8 s7 C( q
  check-interval = "10m", j5 ?" w2 W" {: {$ W( u& b! i  T
  advance-period = "30m"/ x9 X! A" W' B7 c* L
[monitor]
8 b  e5 D8 }: D* K# i7 i  store-enabled = true, x. N* r) V# a
  store-database = "_internal"' {: U/ a: H1 R& ^: T0 h9 [/ k
  store-interval = "10s"
; R) H! y  s7 f- P, o" _[http]2 \% P; \% M0 J" e) z
  enabled = true! l  i6 G) S* @/ y  G" c. B
  bind-address = "192.168.199.90:8086"' W$ a5 X& U. d2 ?
  auth-enabled = false  F9 [  T$ T: J/ t  M" `
  log-enabled = true  s5 X: [2 y2 V  {) i9 }. F) @
  write-tracing = false2 p7 N: K4 b' r; ^) B" d
  pprof-enabled = false
8 G% d/ x8 e/ |1 _  https-enabled = false
* [1 {4 k$ b1 s' k' @[[graphite]]
/ I' Z7 \- h3 k* K  enabled = false
7 Z% m& ~9 Q8 A: A% w8 y0 o8 N0 u[[opentsdb]]$ n8 L. F' R; A0 A
  enabled = false9 k5 L5 m3 P6 R" E
[[udp]]
! d/ |! U9 H5 x  enabled = false' {& `# {# f3 }4 ~5 r
[continuous_queries]5 d2 E2 |& s) E/ ]1 y
  log-enabled = true# n; G4 v* r, D7 ]( w6 i' x4 L
  enabled = true
[[collectd]]6 h4 y7 `. \$ r, k, D
  enabled = true* ?/ j' ~8 P4 d: V/ y6 ?! e% x
  bind-address = "192.168.199.90:25826"+ L3 Z' j% f* R) O+ o, f5 h8 ]' p! \; }
  database = "collectd"
1 M1 U0 }! ^/ [/ L5 ^  typesdb = "/var/lib/influxdb/types.db"
; Z& ^3 f9 w7 P0 l% z1 g; x* Q+ b. ~+ E; ?2 p
主要是添加了 末尾一段。influxdb是可以作为collectd的network Server,可以将collectd发送的数据保存起来。前提是有对应的type.db数据格式。) k3 J$ @5 G8 n% H8 F
https://download.csdn.net/download/dandanfengyun/14989445
[[collectd]]* \9 i, D2 W4 c. \: k8 e
  enabled = true
4 T; c& ^( `. f4 V9 w  bind-address = "192.168.199.90:25826"
0 o0 W" p# h: q  database = "collectd"
" p. a. c0 s2 C+ M  typesdb = "/var/lib/influxdb/types.db"; ~9 g/ z1 Z  p+ d9 }: ~' h9 T

: V% U" n) ~+ i" ^5 A1 Kbind-address = "192.168.199.90:25826"表示监听192.168.199.90主机25827端口的数据。然后保存到库collectd中。数据格式typesdb = “/var/lib/influxdb/types.db”
数据格式文件需要手动添加。部署OpenStack时,对于一些特别的需要存储数据的组件docker,都有相应的docker volume附加卷。直接映射到容器内。 influxdb容器附加卷在宿主机中对应位置
            {
  i3 D) z6 P5 w                "Type": "volume",9 b8 z. @  u& V
                "Name": "influxdb",! J! D- }6 a4 `; Q* E
                "Source": "/var/lib/docker/volumes/influxdb/_data",
# w5 H- C8 }+ n( v                "Destination": "/var/lib/influxdb",7 f! h, P" q; x; C0 D. G4 j& V. F
                "Driver": "local",
4 x! s. _4 ]( G. ^  I; O                "Mode": "rw",4 }% x9 h  j% {8 E; b: [. K# q
                "RW": true,
: B% F9 j! D$ l                "Propagation": ""
9 Y: P/ Z2 K9 E! `: L            },

+ F4 g# y: K: h8 @& a将文件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
- y' X3 I; S6 F8 e3 q1
' j# m9 ~$ |" b4 C$ H" V[root@ALLInOne-Kolla ~]# ls /var/lib/docker/volumes/influxdb/_data/, K7 |" c1 t0 n& V$ m% t
data  meta  types.db  wal
  U/ p; _8 l" K7 ^1
1 \; W! V" y8 |: m! V6 d. E; h  o2+ A& O+ p3 ?* u, G0 f
3.加载个人配置。8 i4 w+ ~" ^# z5 p9 F
kolla-ansible reconfigure -i /etc/kolla/all-in-one
+ }' V+ r3 C8 L6 h- s/ k1
! ]0 r1 i1 E9 h4 ~完成后,会使用个人配置替代默认配置。并重启相应的组件容器加载新的配置。
新配置生效之后,最好将influxdb数据库原数据清除一下,因为原数据中会包含一些不符合新配置的数据。
删除库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'
* A) B. r+ Y& O7 t, u( r, K1
8 |; x& P  ?3 L8 u新建库 collectd
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=CREATE DATABASE collectd ') u4 v( |: o$ [. O7 N3 k  l
1
9 s) O& q* A& D; c9 C' i有一些配置是无法通过配置文件设置的。如数据保存时间等。可以使用influxdb的api来设置。: e' G2 o" L* g7 W, H+ k
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'
) y7 _4 I8 H* ^: u' O1
2 ~0 l) U6 j+ t, w查看存储策略 一般是永久保存
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=SHOW RETENTION POLICIES ON collectd'
& j: A  T4 e$ [' R, G12 `* [$ t1 q. u' z/ r# V
设置新的保存策略 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'
4 B9 U# a- f3 f9 R5 J18 [! w" `) |0 {" Y( Y% E' s3 C
删除旧策略
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP RETENTION POLICY "autogen" ON "collectd"';
1
4 F* e# o) c8 i$ q8 S2 j. H2 E2/ s5 M2 l6 Y" ^: J9 }% Y- o
4.influxdb一些其它的api。
, v! d/ U- B  R删除数据库
curl -i -XPOST http://192.168.199.90:8086/query --data-urlencode 'q=DROP DATABASE collectd'- E0 z+ o. u# z1 R* i1 O; A0 b* t& q
1: m" X$ u) n6 v: i
查看库 列表
curl -G 'http://192.168.199.90:8086/query?q=SHOW+DATABASES'  B. f0 E/ @% g4 s; y6 B9 P
18 `+ y' \) ]0 V" ^% ]# U3 m6 e
查看库measurements 可以理解为表
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=show measurements'6 g0 e9 s) O* U2 O
1
; v9 a. @: d, E查看具体数据
curl -G 'http://192.168.199.90:8086/query' --data-urlencode "db=collectd" --data-urlencode 'q=select * from virt_rx  limit 10'! _: r! i9 t* |# T3 ]% s
1+ S: V7 W0 J/ X
prometheus和grafana等暂不需额外配置文件。
三、grafana 根据influxdb中数据生成图表。' F  ?1 p5 C+ m3 h
和普通的监控虚拟机基本一致。https://blog.csdn.net/dandanfengyun/article/details/112269935
不过由于直接通过libvirt的API监控虚拟机状态。没有经过OpenStack,所以虚拟机的名称无法对应。需要通过虚拟机的UUID来确定。
8 x  U4 p2 j: ]5 I连接的是libvirt,也就是计算节点的libvirt。一个collectd只能监听一个计算节点livirtd,多节点部署多个计算节点,需要在每个计算节点安装collectd连接本节点libvirtd。
2 ^4 j' Q! n8 C: F, J2 `对OpenStack的整体信息,如虚拟机数量等也无法统计。且虚拟机移除后,数据不会随之消失,只是无有新的数据统计。保存策略是永久。
所以需要配合prometheus使用。prometheus_openstack_exporter会获取OpenStack的整体信息。如vm数量,cinder数量,glance的镜像数量等。但是没有具体虚拟机的具体信息 。
1.设置数据源。% ?5 G2 }1 I$ `$ M! D: H! k) h$ b
登录进grafana http://192.168.199.90:3000 192.168.199.90即grafana组件所在主机IP。
用户 admin。密码可在grafana /etc/kolla/passwords.yml 中找grafana_admin_password
egrep grafana /etc/kolla/passwords.yml
. u0 ?8 n9 l9 p* ?0 {8 R1 Y$ \1. r* }' v1 N3 N7 Q3 o* D
登录成功后设置数据源
1.influxdb的collectd数据源
Name:collectd (这个是自定义的grafana数据源名)
/ ?' _0 m8 a! ~) v/ OURL : 192.168.199.90:8086$ s" F# i, I3 X/ @: [4 ?1 Y  P
Database:collectd
完成点Save & Test 即可,成功的话是 Data source is working  i- i' O  D# _: @  w
失败查看一下influxdb组件docker容器是否启动,IP端口对不对等。。。
2.prometheus数据源
Name:Prometheus
' f7 X' @1 _$ _6 n7 q1 \5 sURL:http://192.168.199.90:9091

' {& K) I$ r& h* L5 N' U
2.设置dashboard的变量
  E* ]2 n7 T2 g& ?& E( X基本上不可能只有一个 虚拟机,且把多个虚拟机的信息一起展示也不合理。所以设置一些变量来确定当前展示的数据是哪一个虚拟机的。
- ]  Y( P, J; ?
host    SHOW TAG VALUES WITH KEY=host* M% K( w# j, a& L8 Z
instance_uuid  SHOW TAG VALUES WITH KEY=instance WHERE host='$host'
& s3 W: {2 m  R, D+ O) Cvirt_interface  SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
! F' l& ?0 X* [& q$ B& f8 Pvirt_disk   SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'. `2 s9 J# Q' z* y! z' f
instance_name  label_values(openstack_nova_server_status{id="$instance_uuid"}, name)
! B7 g& F0 H7 T# v. T8 v9 w9 p- {' y- P' l! @
分别设置宿主机名 虚拟实例uuid 虚拟网卡 虚拟磁盘 以及实例名; H: s* `- b' x& K
宿主机变量
虚拟机实例uuid变量
  k6 k' t; }8 v$ k3 ?4 v+ o* d+ i6 p
虚拟网卡变量

0 n# d4 ?6 p3 c1 u虚拟磁盘变量
实例名
5 \- o5 H, x- A2 C) E
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。& W( v+ R# r' @& ~9 K" L7 @3 U
这个根据influxdb查询语句和grafana使用个人创建即可。
! H5 B$ \) y3 ~/ i
4.相关dashboard的json示例。5 Y+ g! J6 w' |) K& Q  P5 [1 G5 x
这个只是个人保存使用的一个dashboard示例,应该是无法通用的。
) I( |3 d" Z+ C4 C不用重新每次都再重复一遍2,3。导入数据源collectd后直接import该json文件即可7 W4 x. t) e3 `7 I
https://download.csdn.net/download/dandanfengyun/15073272
创建数据源 略。
点击import导入模板
6 O( {- B8 k+ {: E& w
选择模板文件
& @. [' f+ W8 m2 e6 u( q
最终导入
5 B( g! ]( `/ y: E; a+ D( G
) W( E) P+ I+ X; n3 b
如果Prometheus和influxdb中collectd数据 实例 基本一致,可以设置更多的变量信息。
# \4 h( f9 V' c7 M/ l) O2 ~/ M如 实例不同状态根据Prometheus数据库查询。% R; f7 {9 ~* Q
uuid也使用Prometheus 数据库根据实例状态查询。
! J6 \. l( M+ {* ?( Z9 [  F$ G其他的数据根据uuid在influxdb的collectd库中查询。1 W# z" I: T- |( r% P6 w, R+ y
一致的是,实例名依然只能作为一个展示数据,而不能作为真正变量影响数据展示。
结合了prometheus展示了虚拟机的状态,根据状态查询实例uuid,选择ACTIVE可以避免查询到已经废弃的实例,也可选择SHUTOFF查询已停止运行实例的状态 不好的是也会查到状态是BUILD的实例
不过实例状态查询 重要的就是查询最近一段时间内 活动实例 的状态,因此状态变量选择基本是ACTIVE,只用于筛选出活动的变量即可。0 U! K) P5 \7 G( A' w  [: f
且BUILD 状态的实例BUILD状态只会存在很短的时间,最终会转化成ACTIVE。
grafana变量设置
host    宿主机名(influxdb)' R) o# S1 b$ U- B2 ?
SHOW TAG VALUES WITH KEY=host
instance_status  实例状态(prometheus)
3 @% Y  ?9 h# l/ m5 `; i  L label_values(openstack_nova_server_status{hypervisor_hostname="$host"}, status)
instance_uuid  实例uuid(prometheus)因为此处使用prometheus查询uuid可以根据实例状态查询' g, w' j( ^+ k& P
label_values(openstack_nova_server_status{hypervisor_hostname="$host",status="$instance_status"}, uuid)
virt_interface  实例虚拟网卡(influxdb)6 `. r; l% C4 B: C- O  o5 N' j- d5 T
SHOW TAG VALUES FROM virt_rx,virt_tx WITH KEY=type_instance WHERE instance='$instance_uuid'
virt_disk   实例虚拟磁盘(influxdb)/ H* y3 B4 E/ g
SHOW TAG VALUES FROM virt_read,virt_write WITH KEY=type_instance WHERE instance='$instance_uuid'
instance_name  实例名(prometheus)( K1 J& g( H, |/ ^/ y; ~7 `  c
label_values(openstack_nova_server_status{id="$instance_uuid"}, name)7 P) t* ~$ s  w6 |- Q

# O# z+ O) ~7 w5 ]: m7 ^) hpanel都不用改变。。。。。。
https://download.csdn.net/download/dandanfengyun/15137036
这里有一个问题 不知道理解的对不对。。。6 M, S$ i4 ^6 `  _9 L
prometheus和collectd都是时序数据库。- u; K5 f4 a5 Z# Q! N
Prometheus记录的实例信息也是按时间存放多个的。(隔一段时间存放当时的实例状态信息)
grafana变量也是和时间相关的(也就是grafana变量不仅和其他变量相关,也和时间相关)
; }% v7 F  j2 A  f; S也就是说,一个实例的状态信息选择时间段不同,是可能有多个不同的变量的。
& Z/ p! }- i; g; l. K8 z: y6 z+ T' O如变量为实例运行状态 15分钟前关闭了该实例。假设只有两个实例,一个运行 一个15分钟前关闭。
那么选择5分钟前到现在的时间段,变量就有active和shutoff。active的实例只有一个,shutoff的实例也只有一个。
被删除的实例则没有ACTIVE或SHUT OFF状态,但是prometheus和influxdb中都记录了被删除前虚拟实例的运行状况。
但是当选择30分钟前到现在的时间段,变量就有active和shutoff。shutoff的实例还是只有一个,但是active的实例有两个(这个听起来有点那啥),只要记住 prometheus是时序数据库,不能把该变量当成真正的纯粹记录当前实例状态的布尔值。 30前到15分钟前,该实例是active的,15分钟前到现在,该实例是shutoff的,所以该实例有两个运行状态。。。
问题
9 c' w1 O& }6 z! ?1 rcollectd 无法通过OpenStack获取用户等信息。如果要使用grafana展示可能要通过prometheus。3 q3 C5 u  J1 [/ Y. G* t
grafana需要通过prometheus和influxdb两个数据源才能展示实例的状态信息。
collectd也无法收集实例 内空间使用占用情况。- k: I# C) z! L; a0 j
 楼主| 发表于 2021-7-2 17:00:29 | 显示全部楼层

ceilometer与gnocchi

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

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

gnocchi解决的问题是大规模地存储和索引时间序列数据和资源。  I; u; I; B- u3 O8 t3 d
http://gnocchi.xyz

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

不过grafana高版本似乎对gnocchi的兼容不足,3-6版本之间的可以实现兼容。grafana6以上的似乎无法兼容 gnocchi 数据源。因此部署时需重新安装6版本以下的grafana实现 gnocchi数据源的添加展示。" S5 [! ?* [! m+ p2 \- d1 T
且ceilometer有时在主机重启后需要重新启动相关服务 才会继续收集数据。

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 1
    9 U  Z" t: W! T6 G
部署相关组件

train版本自动安装的grafana 版本7.3.7。无法添加gnocchi的dataresource。。。(一致testing无法成功)
( s9 L9 X8 n- s* w, [4 R因此想要使用grafana展示gnocchi中数据的话。需要安装更低版本的grafana。6 m5 R7 K# B3 I6 W
如安装6.3.4版本的grafana,端口号设置为3002避免和通过kolla部署的冲突。

编辑配置文件。

vim /etc/kolla/globals.yml
  • 1
    ; E3 w. V- k* |) a5 f7 u# d; A
enable_ceilometer: "yes"enable_ceilometer_ipmi: "yes"enable_gnocchi: "yes"enable_grafana: "yes"
  • 1
  • 2
  • 3
  • 4
    " T- r5 f( Z/ ~8 L

部署安装

kolla-ansible deploy -i /etc/kolla/all-in-one
  • 1$ @* ?* |5 ^, j0 [# Y% }* M& p

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

[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
  • 5 B! ~) k3 J9 ^& y& M9 ]1 m
安装gnocchiclient 查看数据。

默认部署 ceilometer 数据保存到gnocchi中保存策略是low。基本上5分钟保存一次数据。。。所以数据有时候需要等一下。
9 I8 R9 l) K0 e) g长时间无数据且查看相关容器正常运行后 或者宿主机重启后 建议重启ceilometer_notification容器 可能解决问题。

docker restart ceilometer_notification
  • 1. T" u' `" H' G1 l. X

或者重启 ceilemeter 相关所有容器

docker restart ceilometer_ipmi ceilometer_compute ceilometer_central ceilometer_notification
  • 14 @  H# h4 `) ]' n3 [& W3 R: K

1.安装gnocchiclient

pip install gnocchiclient
  • 1
    % ?/ P4 }' n3 W$ l8 U9 ]

2.加载认证

source /etc/kolla/admin-openrc.sh
  • 12 ?; n" z5 D9 `' _6 T

3.通过gnocchi-api查看gnocchi中存储数据。
0 a0 B% |  {! n8 c0 Z当前采集的资源列表

gnocchi resource list
  • 1
    9 N: W! g" N9 q. \

列出支持资源类别列表

gnocchi resource-type list
  • 1; O5 t1 b0 q! G' \

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

gnocchi metric list | grep 511483be-89a2-4b7e-91b8-41adf4276651
  • 1: W9 }- ]9 _8 ?6 W. H: m' d: V, m

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

gnocchi measures show e45156e4-7544-49a1-ab9a-a22fdc1f56e2
  • 1/ n  ^# S6 o; w" s1 [. ?" S! {

查看帮助

gnocchi --help
  • 1
    6 @9 d! i0 D$ {2 w: H+ n  `! s

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

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

  •   ?. q5 E6 p; ^7 |) M/ g% y

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

Grafana展示

安装完成添加gnocchi数据源后使用dashboard模板展示数据。5 [5 B4 v' u; X+ ^  T
https://grafana.com/grafana/dashboards/12536

使用kolla部署的grafana版本过高 似乎不再支持gnocchi 的数据源插件了。
4 W0 f/ l. c7 [& u8 b) O' ^只好额外安装一个更低版本的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
  • ( x- B6 v) P5 q! |( ^9 R3 _

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

vim /etc/grafana/grafana.ini
  • 1/ N0 F4 d# _- u: k
[server]http_port = 3002
  • 1
  • 2; I9 B- C( F. I- l( e3 s

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

systemctl enable grafana-serversystemctl start grafana-server
  • 1
  • 2
    1 k( J0 a" ?) d8 k5 g! n7 S% n: S% o) V8 w

grafana安装gnocchi 数据源插件

sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource
  • 15 @) J6 }  N2 i

安装 完成 重启grafana

systemctl restart grafana-server
  • 13 o! K4 ~. |& R. S" r5 Y  X
设置配置文件,允许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: \5 Y4 N# h5 J( s, ]# g

配置gnocchi

vim /etc/kolla/config/gnocchi.conf
  • 1
    0 _: k& U( Y4 F) _8 q: S

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

[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 2
    ( ]! f# U2 d+ ]: Z

配置 keystone

vim /etc/kolla/config/keystone.conf
  • 1: g6 _" Y" m+ F7 L3 D; o9 I
[cors]allowed_origin = http://192.168.199.90:3002
  • 1
  • 20 B- k. W3 F5 c! }/ e: J; F* Z& D

设置完成 kolla重新加载配置

kolla-ansible reconfigure -i /etc/kolla/all-in-one
  • 1) d( P8 E" ?; Q- ^5 A# b
设置gnocchi数据源。使用dashboard模板展示数据。

等待配置重新加载完成后。网页登录进入grafana6.4.31 W  i3 P. h1 V, ^- ]& U/ U9 c& _
192.168.199.90:3002

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

添加数据源 Add data source 选择gnocchi
+ k* G  l  S: U2 M' g

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用户的登录密码
  • & m9 Q! O( Y( m$ U! G5 z, P( B6 q
[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
  • ( l) D) h! }$ v- _( j

认证没问题即可成功添加 gnocchi的数据源。1 E" k, ^* m5 z! {0 m
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
+ A/ V" y- w* K7 w5 m- `https://img-blog.csdnimg.cn/20210225144609582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbmRhbmZlbmd5dW4=,size_16,color_FFFFFF,t_70#pic_center$ \" t. a: p8 v+ C. M" N
输入模板ID 后按enter 。等待一会后即可导入模板,会让选择数据源,选择刚添加的gnocchi数据源 即可。9 s+ p: M8 C9 b6 n
当然可以自己根据数据源设置dashboard,只是我gnocchi查询不熟。所以直接使用他人的模板了。

效果大致如下
$ I! ~! _1 h2 \* a  a# phttps://img-blog.csdnimg.cn/20210225144839675.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbmRhbmZlbmd5dW4=,size_16,color_FFFFFF,t_70#pic_center8 z3 W/ d8 l7 N) R2 G& @9 |9 h
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分钟记录一次数据太慢尝试修改保存策略。& o: k! I, w8 z
通过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     |                                 |+----------------------+-------------+-----------------------------------------------------------------------+---------------------------------+
  • ( b$ D& ^' J: |/ l/ l8 s0 H

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

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

  • / C* q0 Q( _' c* R+ c

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

修改保存策略

通过docker exec 命令进入ceilometer 相应的容器,查看保存策略的设置。。。. S% q4 @9 b6 {8 e
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
    . B' f0 S8 G2 u2 P. i0 B

进入ceilometer_notification 查看保存策略

[root@ALLInOne-Kolla ~]# docker exec -it ceilometer_notification bash(ceilometer-notification)[ceilometer@ALLInOne-Kolla /]$
  • 1
  • 2
    * k/ t9 _- h0 W

查看保存策略

cat /etc/ceilometer/gnocchi_resources.yaml
  • 1
    1 J% Z) G1 d8 G7 t
---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:        ......
  • . U' c! P6 o9 F$ i1 I* }

可以看到默认的保存策略 为ceilometer-low,特别的metric 有单独的保存策略设置。9 j* X( ?! N6 R& _- `. [
可以将该配置文件复制到宿主机的config 配置目录中。修改一定的保存策略设置,然后kolla重新加载配置,即可设置ceilometer新的保存策略。
7 x4 p- v9 C3 L1 R& {) Z& J$ Fgnocchi_resources.yaml 配置文件。. H' {. e7 M: A/ ~$ m, m% W
https://download.csdn.net/download/dandanfengyun/15501637

mkdir -p /etc/kolla/config/ceilometercd /etc/kolla/config/ceilometer
  • 1
  • 2, J. c" S8 d4 Q7 u3 V6 e

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

vim /etc/kolla/config/ceilometer/gnocchi_resources.yaml
  • 1# \& B* X; l/ a$ G* j, y

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

  • 2 b( v0 i, |( O; ?+ ^8 D

kolla重启加载配置策略

kolla-ansible reconfigure /etc/kolla/all-in-one
  • 1) r! @9 A7 |1 W. `3 }% w9 @5 y3 x% p) B

配置完成后,已经存在得metric保存策略不变,新建的虚拟实例的相关 metric 保存策略使用新的。
) p. r: t& c1 E4 z3 M0 r

[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 |+--------------------------------------+----------------------+--------------------------------------------+---------+--------------------------------------+
  • , k) V4 a; R  {3 w8 R

可以看到 有保存策略是 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, M' j2 j. z* |; u1 @% n# @

尽管修改了保存策略,新创建实例 的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 |+---------------------------+-------------+---------------+
  • : o, R: b- {- O6 x: I  i8 Z
问题

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

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

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

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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