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