|
|
使用es监控RabbitMQ日志
7 N$ x$ ?. d B- p, ^% t A
8 [' p, D- E% f5 Z: J. S
; C" B1 s3 i ]2 o# }RabbitMQ是一个开源的消息代理服务器,能够为您的应用提供一个通用的消息发送和接收平台,并且保证消息在传输过程中的安全性。本文介绍如何通过Filebeat,将RabbitMQ的日志采集到阿里云Elasticsearch(简称ES)中,并对日志进行可视化分析与监控。5 j& g. ]4 y7 J, O& U" _
9 r ?( Q7 l. b* n+ t3 O+ M0 \操作流程
7 m. M1 `# C+ G' ?' t; d5 [' }准备工作
& @% o8 |2 y1 D% h) d2 @8 r0 [( \% ` I; Y O! ]% o
完成环境准备,包括创建实例、安装RabbitMQ等。! W3 k# o7 R q0 y
) W. V/ _7 S. @7 s* ?. X步骤一:配置RabbitMQ5 L& e9 W# k! G' D3 @
) I; A6 g9 ]0 Q0 M
配置RabbitMQ的日志级别和文件名。
4 c* l! m; `+ t' |: Z' K
. |3 Z2 O# `& A* M! T q步骤二:安装RabbitMQ示例应用
9 q" X/ a# u Q* z2 v1 R- q
) W- Y! | T: u/ R基于Spring Boot,使用RabbitMQ的JMS客户端生产日志数据到RabbitMQ中。; P. B% l2 F4 c9 y3 W! |6 i
& |* v" f+ O5 V4 L8 y' E步骤三:创建并配置阿里云Filebeat! H- w7 R0 G4 c
7 r+ c+ G9 \& m0 N, s
配置Filebeat采集器,将RabbitMQ的日志数据发送到Logstash的8100端口。, M+ X' j. h6 E
s, U4 K- j7 v Y/ j9 B
步骤四:配置阿里云Logstash管道
1 G. J3 l# y5 F+ J4 Q* {9 `2 [7 ^8 E- u1 ~+ a- X9 r V
配置Logstash管道,使用基本的Grok模式从原始消息中分离出时间戳、日志级别和消息,然后发送到阿里云ES中。6 K& b. o& z/ A9 s6 p
' J$ [; V$ x; ?6 ^# I# E) z; N步骤五:通过Kibana查看日志数据
# i* C+ c$ ` R) I8 d- C5 I0 f) f" E7 ]5 ~
通过Kibana查看经Logstash处理后的数据。 n' J* B4 E. Y% [$ {: D
( P& M$ ~6 f- G1 h+ S步骤六:通过Kibana过滤日志数据) |- d( ^5 y; V9 Q1 L1 ]2 d5 U
/ h" ?) d1 `% |2 w7 _8 g
在Kibana控制台的Discover页面,通过Filter过滤出RabbitMQ相关的日志。
3 k _) }0 K" ^: e$ Z6 Q7 S
$ U6 U2 E; \, R步骤七:配置Metricbeat采集RabbitMQ指标
" m# l8 A4 f2 a8 G
7 X9 p$ t; ]% I6 n, h b# J通过Metricbeat采集RabbitMQ日志,并通过Kibana实现可视化指标监控。
% D3 c5 t' C( l4 _* T, f
$ w! O$ z* y6 d9 z+ J. `准备工作4 x; Z. \! z3 E& V1 j3 z
创建阿里云ES和Logstash实例,两者版本相同,并且在同一专有网络VPC(Virtual Private Cloud)下。4 l: e% E4 @# v0 G+ c
: [2 T* r! Q1 m6 B& H5 y! y d具体操作步骤请参见创建阿里云Elasticsearch实例、创建阿里云Logstash实例,本文以6.7版本为例。
9 X& x7 c# P0 L6 C/ ]8 y& _! o, w+ u4 y/ {6 T
开启阿里云ES实例的自动创建索引功能。- f( m# q6 k- X, }% ? R4 }4 B
% t7 i4 f3 H H具体操作步骤请参见快速访问与配置。
$ s- E( R$ A9 O, ?
$ d6 h2 A5 d2 B' k# s创建阿里云ECS实例,要求与阿里云ES实例和Logstash实例处于同一VPC下。, U8 X u4 B& m# |
& `3 g" j; g0 Q' D) B) T& O4 c$ @. _具体操作步骤请参见自定义购买实例。9 X+ `# K* X7 Y1 M6 G9 X
1 u+ ~2 [4 e0 u# k7 D5 ~# ?
重要
4 s( r# g' V) E$ R该ECS实例用来安装Beats和RabbitMQ,由于Beats目前仅支持Alibaba Cloud Linux (Alinux)、RedHat和CentOS这三种操作系统,因此在创建时请选择其中一种操作系统。本文以CentOS为例。6 T3 x6 w: X. }1 P
) L: p2 a/ m( k, n
在目标ECS实例上安装云助手和Docker服务。* ?! Y5 q, Y+ h N
1 A. a3 w! E" m
具体操作步骤请参见安装云助手Agent和部署并使用Docker(CentOS 8)。
% d1 j% p: q/ q1 d- ]' d+ @& L+ V' h
在目标ECS实例上安装RabbitMQ。
o4 M5 |) `3 F8 T1 s. M* i; X" Q& ?9 ~; c4 g
具体操作步骤请参见Downloading and Installing RabbitMQ。4 R% O0 E1 {& |
* t G' m. ?$ n6 P1 n( O
步骤一:配置RabbitMQ% j4 [6 [* j( w. O# B! r
配置RabbitMQ的日志记录级别和文件名,步骤如下:
7 D5 A; |8 v" I
! P1 }- P& M# U0 N! p5 I* Z S连接安装了RabbitMQ的ECS服务器。
& V0 d6 H$ l+ d; X# ^. a
4 c, q( t$ T3 S, J. T- i1 [具体操作步骤请参见连接实例。
% \4 o* f8 E; @; Z9 D( P; ]4 K* Y% z% h) J; r) l
说明
( g! m& x& M! |# g* D) l4 ]本文档以普通用户权限为例。
& L. _- |% ~ B
4 s# q) [2 f) p; g2 d( f执行以下命令,打开RabbitMQ的配置文件。
$ H& X* F) p+ f9 f( h
9 X9 ^7 h% e3 ]4 Y b0 I! l0 S
0 B0 a0 \( l9 v$ S gsudo vim /etc/rabbitmq/rabbitmq.config% u# W% a( d0 G; p8 W
修改RabbitMQ的配置文件。8 C6 A# O3 y8 o7 D3 f- P
. T0 [' [5 F9 ^& Q4 V
: y5 }/ x) z) k* w* N{; O* A2 J5 U2 m% P: I
lager, [0 s8 Y" u, Q" x9 M8 l. U
%% All log messages go to the default "sink" configured with
* _" x" L. a+ A %% the `handlers` parameter. By default, it has a single
- {* O/ a8 b0 [1 [. L: X %% lager_file_backend handler writing messages to "$nodename.log"
% a: `3 f" [/ W3 F3 ^ %% (ie. the value of $RABBIT_LOGS).
# m5 P" S3 @/ E1 t7 a4 c- f5 \ {handlers, [
* ~8 @4 {, {6 g# w& M( H {lager_file_backend, [{file, "rabbit.log"},9 ~! ~" @ a& g+ A8 f: h! @
{level, info},
4 w" P, B+ z, e' D {date, ""},8 X3 X# L+ a# p9 B$ u, b
{size, 0}]}
( [. c" f5 W7 L$ k# t6 R+ C ]},5 M- [) d+ p9 R W
{extra_sinks, [8 y M8 C) m! U) `
1 o* i% @% y0 q2 s& Z
{rabbit_channel_lager_event, [{handlers, [, {2 `8 G4 @/ b# n
{lager_forwarder_backend,$ s5 U% W5 J3 t
[lager_event, info]}]}]},9 x2 e! ~# {- ~6 P
{rabbit_conection_lager_event, [{handlers, [
# s9 A& |# o. a5 |8 x4 T {lager_forwarder_backend,
3 N. e: ^2 D" I$ D) M0 a. f2 R [lager_event, error]}]}]} l. [4 H: q' ~
1 I4 P8 x+ D4 \8 Q$ s; ] ]}1 H5 B# v4 y6 ~- ~* ]/ u
修改后,RabbitMQ的日志文件名变为rabbit.log。
6 C Q# [; Z; B& R- B1 e1 C* \: P2 N4 ^
说明) v/ o% S5 Y' B4 u0 a' c+ B
日志级别(level)默认为info,您也可以将其设置为error,即记录出错日志。本文以info日志为例。/ }- K6 _/ o1 N- L3 ^ z
8 \" B- P9 s( y8 S7 ^
修改配置文件后,需要启动RabbitMQ才能生效。, A' m; @# ?& }/ _5 U' b; {
m' d. ? D! S) N: z启动RabbitMQ服务。& D% {6 Y; G+ x# j1 V3 W4 l9 _+ X
( L" B2 ^ u2 {8 f1 c
进入RabbitMQ安装目录的bin文件夹下,启动服务。' ]3 \/ f* c6 l) \- z
/ O% G4 X* V3 ~0 o$ @ 0 w1 f/ F0 i. ~2 I6 z
sudo cd /usr/lib/rabbitmq/bin
6 X, m- i) j: S2 L% tsudo rabbitmq-server start$ J7 z: s( L3 f8 N+ h
启动成功后,可在/var/log/rabbitmq下看到rabbit.log文件。" P! O" o/ F. }( ]* w& q
# ]% O: S. @6 {步骤二:安装RabbitMQ示例应用" z. F( b+ M* l' N
本节基于Spring Boot,使用RabbitMQ的JMS客户端进行演示。具体操作步骤如下:0 x7 j5 g8 o4 I+ x" d0 T0 ~& M; {
. D# X& \3 J+ m) I$ R N3 U8 i
重要8 C! @ {0 j8 ~9 a1 D* Y, o# v
由于示例需要编译应用,因此您必须先安装Java 8。7 _' S, Q( o' n- G7 D: U0 d
8 ]% b! O# B# p/ M* `! Z L, w, J: O在ECS中,执行以下命令克隆示例。
( g4 e( N4 f6 z/ H \6 h# u+ ]8 ~; J+ V6 s+ Z1 ^
6 z& _! Y5 W( _ usudo git clone https://github.com/rabbitmq/rabb ... ng-boot-trader-demo( P, d* J; y) e D) B
进入该应用所在根目录。
; d1 g# l4 c7 \& p4 R6 l
' P& P$ ]: E% d( w3 ]- [5 G1 H # Y6 F- K/ Z8 e0 J
cd rabbitmq-jms-client-spring-boot-trader-demo. w2 n9 D, ]/ u: {
执行以下命令打包并运行应用。; W3 f" K6 B- Z6 s- ~1 M4 z
% f, E& u9 Q y0 w
+ C; A( L- i" h/ gsudo mvn clean package
. _) _9 p$ d% w, ~( o5 vsudo java -jar target/rabbit-jms-boot-demo-1.2.0-SNAPSHOT.jar
1 v. }! P) _3 t. ~* K, ?运行成功后,返回结果如下。! A+ s& @, C, F% ?" W, v8 |2 ^
! K, Q6 H# j# b# h3 m* _' K
" f! y5 i# V" Z
. ____ _ __ _ _
3 Z* ?0 ~ }" J/ U: j$ O+ y /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \! H1 ~8 `/ T: h' L3 r* j
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \& g+ z+ O% @) K
\\/ ___)| |_)| | | | | || (_| | ) ) ) )# k5 l s6 P* c; e. c) g' G/ Z
' |____| .__|_| |_|_| |_\__, | / / / /
4 E) x/ X* L! n$ a& [/ l+ ? =========|_|==============|___/=/_/_/_/6 i; S9 @2 j2 |0 p
:: Spring Boot :: (v1.5.8.RELEASE)7 A# y, c3 j' r) d
2020-05-11 10:16:46.089 INFO 28119 --- [main] com.rabbitmq.jms.sample.StockQuoter : Starting StockQuoterxxxxxx. j( ?6 d' k4 O8 y. B$ r
2020-05-11 10:16:46.092 INFO 28119 --- [main] com.rabbitmq.jms.sample.StockQuoter : No active profile set,xxxxxx/ N4 X- _ v$ A# _1 @
2020-05-11 10:16:46.216 INFO 28119 --- [main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.xxxxxx
8 z1 @, h/ S: x6 z& E' Y2020-05-11 10:16:47.224 INFO 28119 --- [main] com.rabbitmq.jms.sample.StockConsumer : connectionFactory => RMQConnectionFactoryxxxxxx
) D3 S3 U+ \$ h6 j- j2 b- W1 k2020-05-11 10:16:48.054 INFO 28119 --- [main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposurexxxxxx + w- \5 \4 u: X4 l/ P
2020-05-11 10:16:48.062 INFO 28119 --- [main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0xxxxxx1 d* o( E/ b7 O+ n% l, U6 w3 u
......
, e. {/ L2 A) E; W进入log目录下查看RabbitMQ日志。
5 d; G$ ?/ e' g9 V. |& c
% P* L$ n* v/ P+ w# k0 Z u7 ~
5 e- Q- N+ N! H psudo cd /var/log/rabbitmq7 ]# U @: ?+ z/ h8 ?! D
sudo ls
. C" X: \0 X7 @$ R" k返回结果中的rabbit.log即为步骤一:配置RabbitMQ中配置的文件名。 u, }" s0 Q$ C9 D8 v1 W
( t" K) g2 O; B3 {7 e
步骤三:创建并配置阿里云Filebeat
9 z, I1 a. ^0 B a- I' E配置Filebeat采集器,将RabbitMQ的日志信息发送到阿里云Logstash的8100端口。
! O; l- p2 _$ ^6 b
% H" n) `: {: b3 U/ z3 b, |登录阿里云Elasticsearch控制台。; p% R4 S# M' [" z. _7 p
在左侧导航栏,单击Beats数据采集中心。" i! m- `# X3 ^6 a& J t9 a
) ]* C0 t& J2 v1 A; {( B5 R在创建采集器区域,选择Filebeat > ECS日志。
, L" `. I1 U, i+ q5 f7 J, Y2 ?! V" g7 @$ F+ Q3 |& z0 D' l
配置采集器。
8 A$ Q l) m; ^: E* p2 v
9 j7 D5 k. F% l8 l- r8 `更多信息,请参见采集ECS服务日志和采集器YML配置。本文使用的配置如下。filebeat配置
' X/ e. U! J3 c x
, n9 x N# D* ~: K% _9 W( I说明! \; [% j- I' G* f) t
采集器Output需要指定目标阿里云Logstash的实例ID,在YML配置中不需要重新指定Output。
& \& c3 D/ [. N9 ]- ~8 G; u& g6 j, g
Filebeat文件目录需要填写RabbitMQ日志所在的目录,同时需要在YML配置中开启log数据采集,并配置log路径。
9 H3 Z. [8 e9 d, n3 M
+ Z6 j+ a" h2 }1 y0 M本文使用的filebeat.yml中的filebeat.inputs配置如下。
; y3 _" U0 S$ {5 h9 J- \1 ?
2 [/ x7 E' P! ^9 ~ - @1 j! B8 `+ V2 d# C
filebeat.inputs:; W3 f' z' N9 d; d6 b
# Each - is an input. Most options can be set at the input level, so9 ^ Z: b( V3 s0 {; a! Y, ?
# you can use different inputs for various configurations.$ v$ `. f' w/ O! X$ I: T/ f7 E. u* A
# Below are the input specific configurations.( {+ |1 G' s5 z2 M R. x4 B' ?# ~1 h! a
2 @( E( s* c# `4 I9 ^( j- type: log
- d, j0 E& ]. r( ~6 z% W. i+ l, V( v2 l& b
# Change to true to enable this input configuration.
3 I; E$ ]' d: A enabled: true
& [& |+ y7 x) M8 ]0 a2 V% Z fields:
, T Z/ X6 W" X. z log_type: rabbitmq-server
2 \& p' v/ q( E: `" x( S- D, g # Paths that should be crawled and fetched. Glob based paths.
3 Z) G) M, m( V; _! o paths:9 [9 @0 Y8 m4 _8 x% ^ u; f
- /var/log/rabbitmq/*log& O5 B$ {- J* b" `3 a
fields_under_root: true o5 H6 R _. G) o3 }4 j! [* M
encoding: utf-8; }" i, Z6 p. l/ x
ignore_older: 3h2 S% Q: ]7 H& o0 } t
安装并启动采集器。
* h( r, A& e- b3 C H) g1 w: U( R+ j4 e# e7 C A! R( @7 E P
具体操作,请参见采集ECS服务日志。安装时所选的ECS实例要与阿里云Logstash在同一VPC下。选择采集器安装的实例" r. n- |/ h5 g# }8 U( M. j( k
% l% P2 u* X: |( w! |查看采集器安装情况。0 k: d/ p5 ^: N# _0 Z6 _, }
; H* A% } J: N) j% c采集器状态变为已生效1/1,且查看采集器安装情况后显示为心跳正常,说明采集器安装成功。查看采集器安装状态) x3 j7 [1 t: s6 D0 Z+ q. @1 H
1 R, v/ J& @& Y) L+ L
步骤四:配置阿里云Logstash管道6 k$ z& ^8 D8 B; ^
配置阿里云Logstash管道,使用基本的Grok模式从原始消息中分离出时间戳、日志级别和消息,然后发送到阿里云ES实例的指定索引中。! F! Z( P- b, S) l6 x/ I8 e
. B3 r6 E a, f! G( T: a
进入阿里云Elasticsearch控制台的Logstash页面。( ~) X7 S* v9 ]1 v6 V& F: F
进入目标实例。
f& G: z6 Z# C1 P- ?7 X5 t. Q, }在顶部菜单栏处,选择地域。
0 V3 g* K5 [7 A* M+ i在Logstash实例中单击目标实例ID。6 i- M) s- k" j' |
在左侧导航栏,单击管道管理。, O: x& I9 w" n+ b
( H- H$ P B0 d
单击创建管道。3 p+ } X) j# i2 c1 ]4 x+ t; @8 @
, \: J6 Q9 ~, k在创建管道任务页面,输入管道ID并配置管道。* a4 T q& ^- c, |8 x
1 T# S; R+ Y6 j& D: {7 Z& Q本文使用的管道配置如下。/ x8 e: n6 X' E3 J" v! X0 e& ]
! s1 O: T O6 B" K9 z
E ?: v, I/ v8 winput {5 f# v7 M4 b- E& R# y) `
beats {
8 _$ F- }2 H- E2 J port => 8100
% b3 i: S* k( `+ g' N }
3 a7 X4 v: h' G' h# E1 H- B}
. |; j5 t; X9 e5 M q+ y" X- X/ W9 J B
filter {
. d" e" ]2 D3 T$ u7 k2 z7 N/ a grok {, j+ }, n( y4 W( l# r0 S. K
match => { "message" => ["%{TIMESTAMP_ISO8601:timestamp} \[%{LOGLEVEL:log_level}\] \<%{DATA:field_misc}\> %{GREEDYDATA:message}"] }, e _0 }4 B j, Q) S- O0 G: n
}
9 l' G$ d9 O3 R8 A9 i" J6 w5 S2 o& q! a}# o* x2 C8 k+ K5 D" a- ?$ s
) u8 _& J1 B( J/ \2 X6 F
output { `# W- Z4 \% r6 X) w
elasticsearch {- x/ v( z! [% A1 c. p2 G
hosts => "es-cn-4591jumei000u****.elasticsearch.aliyuncs.com:9200"
9 O7 X2 _5 D( ]7 Z$ ` user => "elastic"" p" S1 e; y9 t8 A4 E* d
password => "your_password"7 l# A8 N' d) K( w- P3 O
index => "rabbitmqlog-%{+YYYY.MM.dd}"
" `+ }1 U! f. y! n* y" F$ E( G }
7 W! R5 S8 X/ i, R0 u/ p}& y2 c% l( h; f& b- v
管道配置详情请参见Logstash配置文件说明。+ f+ m- H+ M" c0 M5 `
% }4 i# n& U. Y0 S+ |' n
单击下一步,配置管道参数。) d1 h3 {# ]8 s7 y
* V0 b& m, a4 L; [( |8 H
管道参数配置( @9 H- ~3 K. [) T
0 a6 w8 D# @- X* ?0 |7 R. @% O" o- J+ p
参数) }5 _8 K# b, q( Q5 w$ t
) O6 I6 f* g+ `' B$ W% y9 k
说明
+ u' R. x: H* V; n3 E) k* y* i$ Y+ h3 T5 d9 V+ x
管道工作线程6 c- d+ q1 w7 e2 z1 T
5 H1 f0 m6 \7 T) d+ R" H* t
并行执行管道的Filter和Output的工作线程数量。当事件出现积压或CPU未饱和时,请考虑增大线程数,更好地使用CPU处理能力。默认值:实例的CPU核数。' ^( {) U+ e5 c& G' O
( g* c2 Z4 x3 }( Z; ^3 g管道批大小7 N4 ]6 G* V: j
* y w! l+ q* {. h; b单个工作线程在尝试执行Filter和Output前,可以从Input收集的最大事件数目。较大的管道批大小可能会带来较大的内存开销。您可以设置LS_HEAP_SIZE变量,来增大JVM堆大小,从而有效使用该值。默认值:125。8 Z9 D1 z5 ~. ` t7 v# e
5 N4 c' f8 |6 l3 K! i# d
管道批延迟
" A/ |8 B$ o& g% @- K; V6 [7 G4 m" O5 }+ J/ f
创建管道事件批时,将过小的批分派给管道工作线程之前,要等候每个事件的时长,单位为毫秒。默认值:50ms。& C% D( E; K; h* |" B7 u1 c% n2 k) m
1 t. t, @1 P9 O7 }: [& e队列类型
9 U$ m" l8 {3 u) F7 u7 h- W) w3 E, W, n% W3 I
用于事件缓冲的内部排队模型。可选值:
/ _: v u) u5 W8 W7 K2 L
$ L; P3 p+ u) l5 ^MEMORY:默认值。基于内存的传统队列。
4 n8 O) D" L1 o: B- `% I9 n4 H, p, N& R; J
PERSISTED:基于磁盘的ACKed队列(持久队列)。3 c; ^9 B0 c( e/ Z
% K9 m5 [# ?4 v5 A2 ?队列最大字节数5 y7 A/ }/ E+ d* |% J" r3 x
9 h0 H; K9 A+ U" B: Q/ u, O8 R" M: p% \
请确保该值小于您的磁盘总容量。默认值:1024 MB。
2 @# U- f+ q4 n1 ?2 D" b! e1 W4 O2 h4 Q- |
队列检查点写入数& r! K9 n$ [! Z, s, X
6 J1 Q( S8 T9 m4 c1 @启用持久性队列时,在强制执行检查点之前已写入事件的最大数目。设置为0,表示无限制。默认值:1024。$ Z7 n) x5 `& E
7 Q/ V1 H8 I# P* K警告% x1 G% P! ?/ y* f, A. u4 B
配置完成后,需要保存并部署才能生效。保存并部署操作会触发实例重启,请在不影响业务的前提下,继续执行以下步骤。- c1 p' P4 P- q0 V* R, j# `
$ n3 J7 {: u2 l- T1 a3 T5 b
单击保存或者保存并部署。( J: o7 G) |+ o3 u
3 U3 j1 r f) q0 G @1 P
保存:将管道信息保存在Logstash里并触发实例变更,配置不会生效。保存后,系统会返回管道管理页面。可在管道列表区域,单击操作列下的立即部署,触发实例重启,使配置生效。1 @. d9 e* ]; g$ k1 N8 W. S
" }1 l/ @9 U' _- [. G- F
保存并部署:保存并且部署后,会触发实例重启,使配置生效。
& g" O) N6 o0 O- R/ |2 x' K% c$ M1 J N. Q0 G# l& g* O- ^ l$ _
步骤五:通过Kibana查看日志数据4 ?( O. }: ~4 q
登录目标阿里云ES的Kibana控制台。; N$ |$ e/ A# d5 x* Z' F
, w9 M' R7 s1 b; ^' o5 {9 |
具体步骤请参见登录Kibana控制台。
2 n _& w2 I. u) [: |8 o" A* u" C/ ~! ]9 C. [
在左侧导航栏,单击Dev Tools。
o I; Q+ P, t& x: i( q9 g/ R' r" T: E4 J0 g; o e. v
在Console中执行以下命令,查看Logstash处理后的RabbitMQ日志数据。7 P" z6 n2 Q) \( F9 @7 y
3 a5 b% d# |( V% h$ `& \8 C
2 p, @8 `6 W) C) F1 }, C* B
GET rabbitmqlog-*/_search
8 C. u# V2 e- G5 }* V. D6 a{% A# J2 e- I( k( S- L1 A' x( b% `, p( c
"query": {" Y' H6 i6 h q$ u' V
"match_all": {
& X/ }$ P6 l6 }$ {: e4 D8 z; o }}
& w! ?9 O9 z* @" D( v}8 K( R5 ?- z! }$ H, u3 b
执行成功后,返回如下结果。返回结果
5 I: O( x6 ^6 J" w
( `# G, ^; b* H; p+ \步骤六:通过Kibana过滤日志数据
) t/ m/ [, }$ M; {; I& h4 L登录目标阿里云ES实例的Kibana控制台。
/ y6 v! ^* G2 g, ?4 @
- M! U) N0 v; P/ U7 s* w/ ]& ~具体步骤请参见登录Kibana控制台。* G3 L5 C- R, q1 K7 I `
! t0 L0 O/ a [8 }% @0 D创建一个索引模式。
; g" m2 Q: W! ? _* B) M( c( I7 B) Y
在左侧导航栏,单击Management。7 s3 h5 L4 P* m- `4 [& @: p' E
2 J) F2 K' ]0 O/ E
在Kibana区域,单击Index Patterns。5 x% v9 l, J$ J" _8 M/ i/ x/ ]3 D
) i3 d$ d, `) h! Y
单击Create index pattern。
2 c3 y5 n4 E& |0 c7 o( p
8 x9 P {+ r- b* h/ C# T输入Index pattern(本文使用rabbitmqlog-*),单击Next step。2 a" O( H! c- V" w4 J$ T( e% G
4 U" e Q0 U! z+ F
Index pattern% S+ K2 V% ]) m/ x% m0 P
选择Time Filter field name(本文选择@timestamp),单击Create index pattern。
+ i) ? f7 a8 X6 N9 @- Z1 o
, B. J. i* N/ o$ h" ?1 U7 _9 eTime Filter field name9 `! ?3 q$ @% u& @' {/ G& I6 Y. u
在左侧导航栏,单击Discover。& g8 }) t' F( Q) b
$ P8 L; H6 k( P" `5 R2 r从页面左侧的下拉列表中,选择您已创建的索引模式(rabbitmqlog-*)。4 a! }" _& z" Z% B- R
6 {$ Z* C/ N; j3 T在页面右上角,选择一段时间,查看对应时间段内的RabbitMQ日志数据。
# p0 J7 }6 J& }) s7 A6 x( N
1 B5 j1 d6 f3 q& s0 u* m查看日志数据$ ?1 |1 `# X( B
单击Add a filter,设置过滤条件,查看符合条件的日志数据。' H; s& z, Y4 U# ?; f1 O
8 v, i/ v' ]) Y1 ~6 Z7 j0 |
Add a filter
* z( T% ~5 Y( C& |) A7 c1 m+ J步骤七:配置Metricbeat采集RabbitMQ指标2 h+ v# m" K( F. N, g }$ ^6 D
您也可以通过Metricbeat采集RabbitMQ日志数据,并通过Kibana可视化监控RabbitMQ的各项指标。2 z' p1 m; U5 F8 D; p1 H9 ~0 M
- R1 A0 r3 I- Y8 ^* ~登录目标阿里云ES的Kibana控制台。5 l2 p& z8 S! i% l( h& j n
' f7 y D9 L0 P9 n/ V具体步骤请参见登录Kibana控制台。$ Z* [! X% c i
& I& C8 j6 {3 Q4 X; F在页面左上角,单击Kibana。
1 S5 J" O$ T1 ]6 y
! k& A2 A4 D& z/ {在Add Data to Kibana区域,单击Add metric data。
g1 G, m8 p. d- {; A* Y. v. [8 y; |+ U A0 W j2 f6 U. O
Add metric data
( w/ D; d7 J3 I) B# d7 k. \" j在Metrics页签,单击RabbitMQ metrics。, @( P) h. z& K/ q
5 D+ h8 {+ g' z4 X- k
RabbitMQ metrics
- U2 D# w; o! R9 ~7 x) h单击RPM,按照页面提示在ECS中安装并配置Metricbeat。
0 r/ l( o" _2 N) k2 K
5 C# t4 r# [! t配置Metricbeat时,需要修改/etc/metricbeat/metricbeat.yml文件,设置Kibana和ES集群的连接信息,本文使用的配置如下。& p D7 N0 V& r3 m* P! L
; j, K. o% U. D7 p# @
& M4 _" Y- V$ j5 h _( Usetup.kibana:
6 c* Z& G/ d7 [+ s- U# x
8 v% t7 O4 _( e g, N7 u # Kibana Host
4 F0 x" @1 [9 J7 A # Scheme and port can be left out and will be set to the default (http and 5601)
0 F2 c7 G H6 p" x/ H6 H5 E # In case you specify and additional path, the scheme is required: http://localhost:5601/path
- z; [; D) M u# Y: n, f- W7 ^/ v1 w # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
" N% q' g. N% |- e7 T. q6 }" b3 @ host: "https://es-cn-4591jumei000u****.kibana.elasticsearch.aliyuncs.com:5601"
7 L. [7 T$ H* X3 z* T2 H, n* foutput.elasticsearch:
# v [5 {( H- i9 x2 X # Array of hosts to connect to.! X- C2 {4 \" _) O4 @% U
hosts: ["es-cn-4591jumei000u****.elasticsearch.aliyuncs.com:9200"]
7 I. `; a+ u2 q1 e$ H/ w
7 X- e0 |9 w6 B/ g& z: b9 F # Enabled ilm (beta) to use index lifecycle management instead daily indices.3 l2 ?. _( Z$ v
#ilm.enabled: false
% {6 h) `1 B4 R* F1 U3 ?1 X. a) r) s* O m" ^ J7 G
# Optional protocol and basic auth credentials.
2 n i5 o6 H3 X# h1 s6 P! d! Y #protocol: "https"8 d& m& K$ ^3 H: e
username: "elastic"
: Q5 e' G3 n! ] password: "your_password"
2 f. Z# l; l3 d/ C6 m启动RabbitMQ模块及Metricbeat服务。, y d8 i4 w6 N. a" W/ B7 G# W5 F
+ W6 T, g7 e! L: M4 m! R( I启动RabbitMQ模块
% G, k2 W" ^5 U, u
2 B8 ?6 ~- N; z7 p) _
6 B0 x; g/ y/ J7 [sudo metricbeat modules enable rabbitmq$ U8 } |; `0 @
启动Metricbeat服务并设置仪表盘
% ~, c4 J8 P! O7 n) B/ D/ Z& z5 o. X! B2 c6 D6 T. D
+ ?$ V9 Y* f% E2 C7 Z: dsudo metricbeat setup
) s0 N+ a/ Q8 }& ~, @4 Lsudo service metricbeat start2 N5 W0 r. Q- N5 b2 @0 W) ]
在RPM页签中,单击Check data。
+ ~- |' y; B; F$ [, I0 t4 M0 ?" P- t) \, V5 |3 |9 s
Check data
+ \$ K. [/ q) }8 x单击RabbitMQ metrics dashboard,查看Dashboard监控大盘。
& @; y" a/ c5 ?3 ~2 b; L! [3 y* {+ t
|
|