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