找回密码
 注册
查看: 8|回复: 3

使用filebeat日志收集到elasticsearch服务器上

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2024-11-8 10:18:15 | 显示全部楼层 |阅读模式
filebeat是轻量级日志收集框架,go语言开发。需要在每个日志收集的终端部署,配置日志文件路径。可以将日志收集到es,logstash,这里以收集到elasticsearch为例。配置主要分为input和output两块。解压后有filebeat.yml配置文件,主要针对该文件进行配置。2 W2 }7 y/ f, s) [

) I' m* S% ^$ d) N! f- type: log& K' q8 w  Z2 Z- i
#日志文件位置
# @4 ~6 Z9 C* q2 S/ O* A" I  paths:
+ C( e; |0 @% [# D3 B    - /data/logs/*/*.log' c: S7 x* t4 p8 R5 k; i+ N6 U1 a7 A
output.elasticsearch:
# o8 T0 z! k  E- ~5 {& B  #es连接信息
( A0 D8 Q$ m- n  hosts: ["localhost:9200"]
' O# |: u. v3 U  protocol: "http", O' i3 J) B! W% p* Z4 k& B
  username: "elastic"
% ]* j9 f+ G, c  F/ P# _) A. h& O  password: "888888" ' N/ o8 w* X6 K! l9 B/ u9 K( |( M/ k
会自动创建一个 "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}-%{index_num}"* A$ U2 d7 I7 }8 J- ~& D: ?

0 s6 V2 Q$ n# E" N  ]
8 w0 `5 p  X9 {* w; ~& A. I5 P, P
3 d$ k7 S( x. j例子:
, s3 ?" y9 c" ]; G6 k' w! v: K! s, t, L2 [" h0 z+ N" v- t/ d7 L
vim  /etc/filebeat/filebeat.yml ( N* {1 \$ T0 i

4 C0 {9 @- u9 w! D5 pfilebeat.inputs:) y$ D% f# |! `
- type: log
  p2 |+ W- q6 n; D  L, L4 v   enabled: true) a$ G0 l  @5 O: @6 A5 R# J
   paths:
! z5 l: W' r( [* ~2 K4 D; Z& i! c    - /var/log/messages
) o0 e, c0 O3 M- q6 B2 Z   tags: ["messages"]
/ R5 S$ Z/ `5 u* J3 Q   fields_under_root: true) C5 H) W$ \; K
  N% M+ ]1 L5 @2 o
- type: log, u6 L2 C' R! {
   enabled: true
/ E( r& ?" W, Y- G   paths:% z+ S; ~7 c# z' T5 ?' t
    - /var/log/nova/nova-compute.log
1 J5 q, S0 w/ r% P   tags: ["nova-compute"]
$ K, N  Z$ G# i" t& L   fields_under_root: true
- e: v0 {: o/ S  [; i3 g  c9 f* g: W& |5 p/ M  g/ X0 Y
- type: log
4 _# _8 H: Z' `- \   enabled: true7 Q3 ^; t5 ^$ v" I
   paths:" Z; w8 A) N5 A( x- G
    - /var/log/nova/nova-manage.log4 Q5 F- ?, P) l' l  D
   tags: ["nova-manage"]$ w+ J" ?/ A$ j8 O, o8 F
   fields_under_root: true( e2 x' P4 A" B
: P/ n9 o. F; x$ {" q# k1 R
- type: log
9 W$ a' ?5 ~. v1 R% |# w* e1 @   enabled: true
' k* B/ l- N, @3 `   paths:
* K3 z" `: q9 `& n3 t# }    - /var/log/nova/scheduler.log
" K* t& N( r" a0 @2 Z* b2 j/ i6 x   tags: ["scheduler"]' A5 d. ?1 i- o+ a# |- U
   fields_under_root: true5 V3 S* Y7 n6 Q

1 ?8 p. ]# @; E: G2 f1 t& W - type: log4 s2 x% F! U, H: t; Q
   enabled: true; d" A, c1 F3 C: |+ j) K7 N! C
   paths:
+ L5 l& O% W/ a& ^: Z3 K    - /var/log/nova/conductor.log- T; R; f) y; f0 v0 h
   tags: ["conductor"]6 A  H9 r" b2 ^5 D4 f8 h) F
   fields_under_root: true
( `4 ~, p) w0 G. ^- R7 |" `
/ o4 @0 r6 B4 _% w) F - type: log  V$ G$ Q5 {5 O2 P: a" T8 x# N
   enabled: true; e1 q% G  N7 J# @4 M: P
   paths:
, [% R' T. P0 |; U6 X0 |5 F3 l    - /var/log/nova/cert.log
+ B3 a& l& u$ o# V4 W& Z   tags: ["cert"]$ D6 A) U0 E8 u/ g) E" n+ x* N
   fields_under_root: true
: C" Q3 x2 w1 W) F5 D2 Q" b* o/ ^2 u' [$ z5 F; s* o% h
- type: log( {& x' p# C( O# A# A: f
   enabled: true
* m8 r, r3 h! w. a0 G+ ]- R* F   paths:
& M  e0 |5 ]0 U/ j    - /var/log/nova/consoleauth.log
1 o8 [# |( J! o3 y   tags: ["consoleauth"]
7 ^. O7 O: a3 b: h   fields_under_root: true6 U+ ?) n& B8 c& t
( e% Q. L& d* a  c! Z. \
- type: log
) b% |3 [7 }! o, R   enabled: true  ~3 s0 ^* o  p) x! |* O0 n; z- n
   paths:4 p  R5 A* g$ ~
    - /var/log/nova/nova-novncproxy.log
! K7 a! {+ k$ y% h/ b. ^+ P   tags: ["nova-novncproxy"]: K: c- U, Z4 N+ u& e  `0 a3 V5 M
   fields_under_root: true5 x, g0 a/ a! X; n4 [1 V

- R/ v" l- j" `8 e - type: log  n. m/ f0 X; B3 U2 t0 P' Q
   enabled: true- d) M. A# a7 A. y
   paths:* {7 \* \8 D6 A
    - /var/log/rabbitmq/rabbit*.log; E' F: f2 P9 Q' m! E
   tags: ["rabbit"]
; @: j, }1 x- w; A   fields_under_root: true
5 q5 z9 t. L9 x6 n
. `  v% d* v2 S/ U% o - type: log
( R5 U7 G# P" Z. g1 J3 X& y4 S   enabled: true
' y' }- G2 V8 L# S% l. H   paths:
& f5 z0 K/ K  F% h# j$ j( [* k    - /var/log/glance/*.log" i, U9 k, o& C0 E: y
   tags: ["glance"]
! {5 F" H+ D6 U' s$ o   fields_under_root: true: Z1 E' I% h. W1 w3 W2 T

7 }$ I. \: x$ u& r/ Z - type: log9 r5 \( Y9 l8 Y3 I1 R0 e6 v1 E8 e
   enabled: true
4 R/ u! m$ R' Z& e) [   paths:
8 l/ w, F2 z- S; W& @    - /var/log/neutron/openvswitch-agent.log
. N  ]/ m4 \6 T2 Z. t- J   tags: ["openvswitch-agent"]% g3 E! ^! ]2 ~! Q8 H- J
   fields_under_root: true( ], X6 @# y- h% |, Y

0 I! o2 I2 T8 b# N9 I4 S - type: log
7 b: Q  d) }- D& p, y   enabled: true
$ ~- B0 G1 |' d- f# m/ ^   paths:  E/ O" i* h  q4 m" k+ Y5 ^: X2 V+ a8 O4 w
    - /var/log/kuryr/kuryr-controller.log: ]) I# r; M  t# h0 p
   tags: ["kuryr-controller"]
! x1 J! B9 r' Z& \: D( W   fields_under_root: true
% W4 c  z' \$ R7 Q4 j/ o+ W0 z* C0 F# J* O1 R2 y$ W
- type: log
, O. }9 W! G2 ^3 a; E   enabled: true
' `0 s" G6 [7 A3 p% U& l2 G' _; ^   paths:
6 a8 N0 x  G8 D% c2 ?4 d    - /var/log/keystone/keystone.log2 u+ H0 }( s1 A8 Q
   tags: ["keystone"]2 ]7 g3 I- J" d6 `  A- i# y$ V
   fields_under_root: true) }$ ?' U# S0 N. h: V* s  |5 ~
2 r" a/ `( i4 ^' `: }% C
output.elasticsearch:1 W* m2 I2 k2 j4 x
  hosts: ["172.24.110.12:9200", "172.24.110.12:9200"]0 A% v0 H% U* f
  username: elastic
' X4 |$ l' x- z8 w* M. N4 z, o  password: xxxxxxx
7 c5 ?4 o- y# u5 n  indices:% P- l: _, Z( Z5 s- u' p
    - index: "compute_messages-error-%{[agent.version]}-%{+yyyy.MM.dd}"
. e- @! X! X# y& {2 q      when:
9 [, G7 l, G. _$ |        or:- t: L. X) i& H6 }, ~  M9 [
          - contains:
+ p( H1 H2 _( K. g: Z$ U              tags: "messages": n3 `. _1 e' R3 ^; F& W
              message: "err": t5 c. B; G7 N$ o
          - contains:" D% Z9 Q3 H: l9 \7 h; D
              tags: "messages"
% E( ^. Y/ n, Q/ J              message: "ERR"3 M% k; h1 \  b8 U
          - contains:# W% c* i* W6 V/ [1 K- ]. X- |  `  N# m
              tags: "messages"( Q/ t, n# P- c6 M; S6 f/ c9 k% U$ a+ p
              message: "fail"
( U( ^3 ^* V. `% U    - index: "compute_messages-%{[agent.version]}-%{+yyyy.MM.dd}") ?  I* Z: X% I( s9 E
      when.contains:
* K0 Y3 O; ~6 r2 }/ d        tags: "messages"
5 W+ T" @( F; \" t1 i    - index: "compute_nova-compute-error-%{[agent.version]}-%{+yyyy.MM.dd}"
% L6 @+ ~( m8 A/ S, |      when:
3 O8 ^% j1 L) o  A7 i* w9 f" v        or:! F# ^% U: A5 w
          - contains:
' f8 X8 T: j  Z# W; F              tags: "nova-compute"
# T! k: E) i3 q2 J1 Y/ z% W              message: "err"4 [! A/ Q5 A& J- J- t' w
          - contains:; j1 x0 j; P) ~" s& E! v! _
              tags: "nova-compute"
/ w! K' @; g% @5 w              message: "ERR": \8 p# e; w6 d; f3 @: Q
          - contains:
, h9 j& z: _" @# N              tags: "nova-compute"
  `9 Z/ T. A0 D8 n- K8 P' ]              message: "fail"
9 h* O  h% d8 E; E    - index: "compute_nova-compute-%{[agent.version]}-%{+yyyy.MM.dd}"
9 _- |7 }; ^) A% H" X      when.contains:
. G/ {$ p1 O; V  s9 @        tags: "nova-compute"
/ K3 B" ~  k  y- g; {; V+ t6 z: L5 Y$ u! H5 P5 f
    - index: "controller_nova-manage-error-%{[agent.version]}-%{+yyyy.MM.dd}"
/ w9 A% t! G" R6 ^& p2 ?      when:
" @5 K6 ~  o' v) u2 H! }; X        or:
1 o% b0 C  B# v  R0 E7 h, b4 J          - contains:
+ y# E- o( q( g% ^              tags: "nova-manage"
! k3 A/ Z  B6 \- o8 ?  o1 l              message: "err"  h& O6 k$ G6 p7 E
          - contains:
6 i5 h* e) \5 V  Y              tags: "nova-manage"
( o9 I& Q1 }* n6 _9 }              message: "ERR"
, W+ o4 V, B0 q1 w2 V' \8 G( j          - contains:$ h1 J% V. Q* x: F& Q3 u$ k
              tags: "nova-manage"; i: G' f. O8 x6 o
              message: "fail") i" u7 H' j' ~+ ?5 R
    - index: "controller_nova-manage-%{[agent.version]}-%{+yyyy.MM.dd}"
  E  ], H5 V  [# z      when.contains:; k7 L# a$ X" n8 V- Y% b" ^# D! V
        tags: "nova-manage"3 K9 l3 u( ^: J6 m$ ?

9 \. J8 A; Y; K& t  P- O% ]$ c    - index: "controller_scheduler-error-%{[agent.version]}-%{+yyyy.MM.dd}"
& S" `  P, {5 a      when:
; Q! H4 J! ?9 h5 D1 q        or:1 K9 d' f- b' h* i# B- S
          - contains:9 B9 x1 n9 z! ~: M- U7 X
              tags: "scheduler"
) f4 j) l* c4 T  v              message: "err"
) y% m/ M/ v+ A+ e4 ^  r          - contains:
5 Q1 Q! G8 J9 R, u              tags: "scheduler"
" h. s2 K1 {% r6 _) \+ V7 J              message: "ERR"
" e0 }/ b( ]+ _- h0 _          - contains:+ o# _/ a+ E0 T. n- A
              tags: "scheduler"
" p$ g, d$ _2 ^  k" q              message: "fail"
& u3 @! Z: U/ U4 O4 F/ P9 I    - index: "controller_scheduler-%{[agent.version]}-%{+yyyy.MM.dd}"& c: ]9 V8 z5 t0 h9 _% a
      when.contains:! w: k* ~0 a; v# f& t* t0 M
        tags: "scheduler"
7 V8 w# Z0 x0 X+ ], z- w. ?5 ~) d0 i- w8 e' W
    - index: "controller_conductor-error-%{[agent.version]}-%{+yyyy.MM.dd}"  N7 l- I1 |  A7 n5 F  x- X8 x
      when:. ^) M* i  M4 O
        or:
. l; [& W' @: r( ]! n# Q          - contains:
: `, C3 r1 u1 ~              tags: "conductor"
# p% Q; u! e( b% l0 e8 ~1 |) U              message: "err"  H4 h0 _% N0 K8 _
          - contains:9 a1 Z4 Y7 S) g! z
              tags: "conductor"; p8 r9 L8 U5 b, u
              message: "ERR"
$ z5 |7 y: n6 N4 t6 P6 ]          - contains:+ @. i: {6 w% _
              tags: "conductor"
3 h; J6 E% ?7 ]( O0 T              message: "fail"# Z" I1 f9 ?3 I* j
    - index: "controller_conductor-%{[agent.version]}-%{+yyyy.MM.dd}"
: E1 m2 e( U7 e, i      when.contains:$ \" m6 \+ y) D* }' d+ G
        tags: "conductor"' S! A" G9 H& w0 {# E  k0 \

% n& q* L2 I) ~8 ]  N    - index: "controller_cert-error-%{[agent.version]}-%{+yyyy.MM.dd}"& k4 T3 v5 f# a/ C5 j5 [
      when:- R* V" j& z4 W" Y( N
        or:
( ^( V; Q% P& M) z/ a: W          - contains:& U/ L3 Z$ d% L2 \% d
              tags: "cert"6 z/ {/ |2 t7 S! c! I$ Y/ A
              message: "err"
" y6 {9 L! ^& N5 J' t          - contains:9 {/ s2 x( L6 r" ^" [! K
              tags: "cert"
" p2 i: V  k. m) d, W; |% p! E2 U              message: "ERR"# ^5 \5 Z8 U- N7 q
          - contains:. F. b* Y8 P% C+ x+ N, V. t: C2 e
              tags: "cert"
+ X) V' Z/ j: c              message: "fail"
5 c" l9 R7 n& _    - index: "controller_cert-%{[agent.version]}-%{+yyyy.MM.dd}"
0 ]. F9 s) F. O; T# \% ^      when.contains:- q* j- _% T9 P; p( l
        tags: "cert"
! E! I" C( u8 R2 H1 T
7 G) M2 _# K4 m: N9 |% X    - index: "controller_consoleauth-error-%{[agent.version]}-%{+yyyy.MM.dd}"
8 b  J' ?% w/ Q* g! `) Y3 w      when:
4 [3 W/ G1 i- u) _4 Z2 T' X: c        or:
! {) O. H& D0 s# q2 f: K          - contains:
7 V# O; d  R+ y              tags: "consoleauth"
7 h% G- Q. p2 Q! s& ]% f# K! B              message: "err"4 F" U: D. w- U" }$ m% ^4 v8 @
          - contains:
; i  g+ I; {# U: o              tags: "consoleauth"# B$ N9 N. `+ D: q  Z, |8 e; C
              message: "ERR", {. L* W4 S2 ?% V
          - contains:
. G/ `& {0 I- C" v              tags: "consoleauth"
. |) h  e7 [1 ?              message: "fail"
2 R$ v) S+ J/ N4 R1 t' k1 Q    - index: "controller_consoleauth-%{[agent.version]}-%{+yyyy.MM.dd}"
8 ?9 [7 h5 i8 R7 D# ]5 ?6 ^      when.contains:
  _; M; J3 z7 y) w/ M$ k" r7 [        tags: "consoleauth") C  s, O2 l% w

# J) I: A- v2 S) ]( p$ E9 `3 F7 a    - index: "controller_nova-novncproxy-error-%{[agent.version]}-%{+yyyy.MM.dd}"
1 a7 u) \' N+ c) }8 M7 @+ [+ y  R      when:- c  J- m1 h8 |
        or:
+ ?" J1 B% g0 A" B, T) y9 D0 J+ Z( W          - contains:6 {2 K# ?& _6 ^8 ^
              tags: "nova-novncproxy"0 U) Y" G) }0 R2 e8 c, |
              message: "err"
+ p. K) D& _3 Z  A( v% ], r# m5 D          - contains:3 `. R0 v1 B  f2 A7 N
              tags: "nova-novncproxy"
9 C$ E1 }3 r1 X0 p" L/ k, k              message: "ERR"; p  [! B6 z- p, V: f: v
          - contains:
4 o% |! m) X+ a% A              tags: "nova-novncproxy"* w" ?% r7 o8 p6 [  P3 O6 _
              message: "fail"' w6 d* k7 l% M) e7 J
    - index: "controller_nova-novncproxy-%{[agent.version]}-%{+yyyy.MM.dd}"1 @, K% N: i& D  u3 k! S
      when.contains:: e/ s2 ?4 V6 Z# {% }! ~; R# d
        tags: "nova-novncproxy"5 g* R  V( {& e+ H2 z* a2 ?3 |( Y- C
/ e! X/ }+ y. n0 \# a2 @8 `
    - index: "controller_rabbit-error-%{[agent.version]}-%{+yyyy.MM.dd}"
0 w  l, S# Y# p      when:
1 E0 @4 |0 @- e0 s; K8 x        or:7 W* N) J- I( h& E6 [) j6 O7 Q
          - contains:
! }% L; e+ Y) o/ K3 X              tags: "rabbit"
+ B! \; M4 `6 _9 m              message: "err"
& {3 F- b  U& B4 q& I0 o          - contains:
/ k4 E( y8 M0 e4 _; b              tags: "rabbit"
( v! B3 v/ |, k: g              message: "ERR"
. x+ `: }' j" [$ z& b          - contains:
3 @& ^% l& k1 Y( N3 n" K4 W0 i              tags: "rabbit": p/ D5 X* e  X
              message: "fail"
% L0 \. i' d/ `, @+ @    - index: "controller_rabbit-%{[agent.version]}-%{+yyyy.MM.dd}"
$ R# B# i+ N' C$ s1 o8 L  b      when.contains:  k* h; k- a6 i4 l9 L* Y
        tags: "rabbit"( Q6 A  v$ d, r* Q9 F' F1 l* x

, W& R, z4 ]2 A    - index: "controller_glance-error-%{[agent.version]}-%{+yyyy.MM.dd}"7 |% [+ E+ K2 d' b& [- V
      when:& m5 o, v8 O6 X( M! R: O
        or:
! \8 M% u: i4 U% f          - contains:' U! T# G" o" T- |
              tags: "glance"
7 E0 [# p& g2 f/ h              message: "err"
$ O6 r8 n; z! ^! z          - contains:
/ u0 O8 E" f) Q8 q  L4 R2 e6 T              tags: "glance"
% P% T* }# T7 B4 O; |- y" S/ W              message: "ERR"
+ h' ~& K  X& h6 h9 K3 R          - contains:2 S( ?( j+ P1 l6 d
              tags: "glance"
7 s  _* v/ X) B' g* F              message: "fail"
# f" z9 h* N% Y8 }7 c7 _& P7 x    - index: "controller_glance-%{[agent.version]}-%{+yyyy.MM.dd}"
. S& g) W$ F$ Z3 v" Q' W/ J      when.contains:
7 M4 O8 ]9 X* v        tags: "glance"
& I  `! o5 t3 s, R8 |4 ?1 a
" V' @, P/ E+ @- u1 N; S    - index: "controller_openvswitch-agent-error-%{[agent.version]}-%{+yyyy.MM.dd}"8 e2 O- c& J7 T! m% B2 x, a' h% u
      when:& D3 k" p+ I/ u
        or:
* s. v9 K. a+ j4 w! `5 s8 j          - contains:
) Y" N7 h7 X( C& H& G% f% l              tags: "openvswitch-agent"
3 k( I: Z. Y9 z- T/ u              message: "err"9 m4 N* Z1 x& t% |" x0 ]. U$ H
          - contains:
. V% N" y) ^4 W( K" l7 p- ~              tags: "openvswitch-agent"
2 f$ d2 e# p" X7 J              message: "ERR": K$ X1 S6 S! B3 c
          - contains:
8 c; W8 g. V; Q( `              tags: "openvswitch-agent"/ ^9 m- V% A& x% u' T0 L
              message: "fail"+ R1 Q$ u" {7 q' b5 u: d
    - index: "controller_openvswitch-agent-%{[agent.version]}-%{+yyyy.MM.dd}"
8 L3 ]: G" a' P* Y) ?' N      when.contains:
% {& v. w  K- x9 W% I) P        tags: "openvswitch-agent"
0 O7 c: I  N, a  `, I+ [! u! u8 w# A3 s2 M
    - index: "controller_kuryr-controller-error-%{[agent.version]}-%{+yyyy.MM.dd}"
# i! T" B' l$ G: L      when:8 a1 E. z( m* B( s# Z
        or:
; M6 z! I- S+ ]0 F: o          - contains:$ n5 Y2 v4 b) G- K9 g1 B& k/ v" t
              tags: "kuryr-controller"
4 ]: f+ N+ M3 a              message: "err"
% \/ D$ L$ F/ R8 j# D* _% M8 Y* n          - contains:: s4 |. E; V, J  `0 f1 V! X
              tags: "kuryr-controller"
  }9 Y! D4 [3 q0 N              message: "ERR"7 T! m1 ^' V4 y5 L* ]) M" e
          - contains:
) \" x4 n0 o' r) q              tags: "kuryr-controller"/ w7 Q9 t; K* o9 V) J# V1 J1 K3 K
              message: "fail"& ?1 p$ D: [9 ~# a, C8 `+ q7 I
    - index: "controller_kuryr-controller-%{[agent.version]}-%{+yyyy.MM.dd}"
& M! ?+ W* M; Q# a% B3 B9 U      when.contains:* n) l0 J) F+ d  Q
        tags: "kuryr-controller"
0 ]0 T; K' s  V: f
9 l9 X* L4 p% F; j+ l    - index: "controller_keystone-error-%{[agent.version]}-%{+yyyy.MM.dd}"4 b. R& X. L- y( F4 O/ t, l
      when:. [. s: V/ j! f) A* S- z
        or:" |) ?: q$ s6 L) R( n0 ?
          - contains:' W: p6 Y( ~6 b5 W+ _
              tags: "keystone"
* G( [% Z/ k* X/ F" F              message: "err"
, _2 x% X6 @3 u4 H          - contains:
9 H5 T3 N$ ?1 w( N" s7 G* d! U% U              tags: "keystone"
7 g2 `/ Q# M% `" b              message: "ERR"  _! ?( ?$ ~, C0 r  v4 D4 }& i- _3 M
          - contains:9 Y' O* @$ h7 I. W0 {- r0 r# W8 Q
              tags: "keystone"
" ]! S+ O3 k8 v- n# z3 t+ r              message: "fail"
1 ?  W! Q9 \3 p: l2 o0 E, S    - index: "controller_keystone-%{[agent.version]}-%{+yyyy.MM.dd}"
; j; h' Y0 ^. [) X      when.contains:, V" X% Q. \: F. S  t
        tags: "keystone"/ U# s) B5 `5 l2 w1 ]2 i3 B

; G! M$ o; Q6 E0 v3 H% M7 \) dsetup.ilm.enabled: false* Q/ S& \$ A2 s4 n* E
setup.template.name: system. t+ l3 a/ S6 M3 E$ P
setup.template.pattern: system-*
2 O4 F, H5 S) x! ]% T0 S0 \$ Z- Z9 R3 W  B* W4 `

1 C$ S* y& L8 I4 A5 q! U& g, c, [% R; N+ p8 G

% |6 z- D4 A( G& y+ f例:filebeat-7.12.1-2023.05.16-000001索引文件
$ [: u, V9 K7 ^3 c* G7 U9 p
7 l+ o. f$ S4 z& n索引创建规则
. a- [. F/ g9 \
$ E; F6 k: I, M默认使用es的索引声明周期策略
0 C* Y0 f- W! {! b7 A0 }6 q+ e  N& W% E' b
index lifecycle management (ILM) 生成索引
: Q2 K6 R: V, }6 r/ g1 d. I3 i5 Z  |( B+ v% J
配置ILM
/ U3 I* O* M' w- \7 [. H
, l( W; ?, Z9 {% h4 h5 M#auto false true
" r3 K7 A! Z- hsetup.ilm.enabled: auto
4 B  \) P* Q- ?1 G- t#索引别名
" [, l+ t. B8 j& b% D  t2 z0 Psetup.ilm.rollover_alias: "filebeat"/ o4 J8 ]8 l9 W8 M& C3 A
#索引增加策略
" @) V* h$ H: v+ @$ e8 G+ dsetup.ilm.pattern: "{now/d}-000001"
; ?0 Y' s# k3 d0 \7 jsetup.ilm.enabled默认值auto,自动使用es中filebeat生命周期策略创建索引  }  Y+ C" f( I

- _" [; O) F( x- @, _7 Ysetup.ilm.rollover_alias默认值filebeat-%{[agent.version]} ,创建索引时指定索引别名。* s7 e& d$ [" Z5 b) M" E8 X
) d3 ~8 M" j- y
setup.ilm.pattern默认值%{now/d}-000001,索引rollover增加策略。. l1 H1 P7 u! J; G6 v7 H8 L  m7 i

/ K; e2 d- b' y0 v自动生成的索引名就是使用alias+pattern。类似filebeat-7.12.1-2023.05.16-000001这种。+ Y% T: v3 O8 V

( X( C; A3 b  z7 k更多配置参考:https://www.elastic.co/guide/en/beats/filebeat/7.17/ilm.html7 ^* l4 b! q/ t% F+ A
0 Z# x" n' u% Y8 U# {
自定义索引文件
9 k3 d+ C' y7 [( i% h
4 g, J' [6 p5 {# Q' I$ @output.elasticsearch可以指定index,使用自定义索引第一步就是要关闭ILM,
! `0 Q2 Q1 b$ n" l) V; |4 S! O& w9 r8 r' g, e+ }2 z
setup.ilm.enabled: false
7 ]. f1 c6 y0 h" S1 z下一步要配置setup.template.name和setup.template.pattern7 \8 \7 F- \, f

4 J+ p! y2 f7 @  l7 D$ Rsetup.template.name: "filebeat"
7 P/ p3 N/ g! k) L7 tsetup.template.pattern: "filebeat-*"' g# |0 n/ \, ?2 t$ O( H
setup.template.overwrite: false
9 }; m& x. G; R9 p* u' y8 t在output.elasticsearch指定index. W) l3 Q, \# J1 |( f
, _& B) a/ h3 q( \2 ]& z
index: "spring-%{[agent.version]}-%{+yyyy.MM.dd}"+ u5 V1 D+ G2 W# j- e' s- W
运行就会自动生成索引spring-7.12.1-2023.05.16。index定义可以使用上下文定义变量。可以在input里自定义field' m* W* v# W! ]0 P& K
  Q* A/ f% N% l# H! m
fields:
: x3 `+ T/ p4 V. i& K" N    level: system  o6 H# h8 x9 q/ f7 B+ h
    region: A1! b/ F, U9 k9 d7 a3 G
自定义的fields会一并push到索引中,index中使用自定义的fields
6 D( ^; ]7 h! E/ Q
; q7 X+ ^$ @+ b2 t3 y3 bindex: "spring-%{[fields.region]}-%{[agent.version]}-%{+yyyy.MM.dd}"! p$ X- X' O" I0 c! L+ }
会生成索引:spring-a1-7.12.1-2023.05.16。这里A1自动转成小写了。1 z5 b) U9 H1 W" T3 X- @

6 k. U% O; A9 F# K( L! H( T日志多行合并1 @" H; l+ @( Z: W5 M2 ]
) c: J5 x: T; u. U8 p
默认情况下收集日志一行一条记录,有些情况下比如格式化输出,异常栈。一条完整的日志会包含多行数据。这时候就需要配置多行匹配。配置项在filebeat.inputs里
& ]# F5 `7 ^! L5 z# X# W, {( p3 n: o
multiline.pattern: '^\['8 g/ X. Y' ^% c: i
multiline.negate: true
) ]. P% x. J- D$ ^, omultiline.match: after; B8 }$ D1 p- k: m0 c- @& l
multiline.pattern指定日志匹配正则,这里'^['就是匹配以 [ 开头的行。这个地方的具体格式就要合实际输出的日志格式相匹配了。
* f; a8 W6 J. Y$ E- U1 n
. h5 i+ \3 j& v, wnegate和match两个参数结合使用,没太看懂,理解其来感觉有点绕,自己看官方演示例子吧https://www.elastic.co/guide/en/ ... iline-examples.html,有个表格图例。大体意思就是遇到不匹配的是向上合并还是向下合并,归属于那一条。这里配置true和after就是不匹配的格式行归属到上一个匹配的结果行。
* k4 `6 z2 M% g1 }$ R# O) O' r9 f" G  ]" \
根据条件写入不同索引3 k( u7 Z. W0 W% D$ h8 U

2 j) N& ?" a5 z4 q, V; ~3 @( W5 ?/ ^0 F4 Boutput.elasticsearch:2 x. H$ t. g: \
  hosts: ["http://localhost:9200"]
* e. O6 c( k2 w& i) H' z" G  indices:
7 s% Z# o' I; q4 N$ ~    - index: "warning-%{[agent.version]}-%{+yyyy.MM.dd}"+ E; a- M# A; ]# ~( k
      when.contains:+ z* s" a' n/ B( |5 ?  `% E4 @! ^
        message: "WARN"4 x# H& S) ^( B
    - index: "error-%{[agent.version]}-%{+yyyy.MM.dd}", v" s- T1 f0 Z6 d3 ^9 N
      when.contains:
. U$ o- K" R* }/ R# h        message: "ERR"# W0 I2 i* \& `& Z/ C1 H1 ?* @+ e

/ R6 ^4 U9 a. G# N8 A7 y判断message内容,是否包含某些内容。不做演示。5 J0 V& d1 J  [# x8 f/ q
+ o  H, S( c0 W7 I% q3 O
收集到的日志可在kibana 日志功能界面化查看检索。需要配置日志索引匹配模式,例如上面的我们就需要新增匹配日志模式spring-*。
$ a+ Z9 T5 |0 A5 ~$ Z4 ~# |1 _- T3 U: ~) Y# t
最后filebeat.yml有效配置大概这样0 O- S+ l% ^. l$ a
( s+ ~! }5 a, F  F3 M( Q
filebeat.inputs:
  D2 d: _9 C2 |* p! F- type: log
! p5 E0 }' ]. ?# h& w5 r8 |$ D  enabled: true
7 `$ R; d# r! _4 ?/ y7 \0 q, C) H  paths:2 L9 v! ~, C3 T, Q) W3 b
    - /data/logs/*/*.log+ X; P3 z& k4 G) G! O; i/ s* x  \; X

+ f! m* d4 F+ V0 g) {7 w  fields:) F# Q+ ^  l' M' K9 r8 u' J
    level: system& h* c9 L8 K) Y# Z; s9 y& W# y
    region: A1) M8 B  m; |. \( e! R. l& V$ d; U% R" j

% r$ |0 u) C3 o- ?' u  multiline.pattern: '^#\['
; v: V+ Z1 J, ?6 f  multiline.negate: true; N# e1 E3 m$ ^! |' L
  multiline.match: after
2 t* c! s( z7 N' R( I
9 d4 Z, g' G% T' B& A9 foutput.elasticsearch:% j8 S( |) r% b7 j1 V, i
  hosts: ["localhost:9200"]
4 U# X0 Z( Y; p- Z  protocol: "http"/ H7 _! p% z4 f" D  n! h" Y$ f
  username: "elastic"
9 V* Y8 P) O3 h. p. ~  password: "888888"( Z' |/ n1 c4 w; T
  index: "spring-%{[fields.region]}-%{[agent.version]}-%{+yyyy.MM.dd}"
7 h* L  E  `# [" T+ o7 K$ K
  p9 B" J/ F/ \8 _+ G/ dsetup.ilm.enabled: false
) D7 m4 s2 ?  I- F- v  osetup.template.name: "filebeat"
: e/ A+ k3 v1 n+ z1 k- O9 _setup.template.pattern: "filebeat-*"
% b5 o. M, N$ G- ?setup.template.overwrite: false
$ n& h/ E, O% [$ s% l' A( S, @% d8 {& g! {" m3 V9 B1 Z

8 L4 H1 u" B4 s; @7 z4 _0 X8 [

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-8 10:25:46 | 显示全部楼层
/app/logs/info.log日志文件为JSON格式
+ ^, r. Z5 b  c1 s" @# }自定义索引生命周期名为:pn_springboot,可提前建好. {- c  R0 ?5 P& Z2 ]
自定义索引名为:idx_springboot6 [* I- q& r2 ?; U7 L
自写义索引模板名为:tn_springboot

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-8 10:30:39 | 显示全部楼层
filebeat配置会把所有的索引都放到同一个文件中,通过摸索发现可以自定义索引的名字、模板、生命周期: m2 B/ G2 r5 @3 t
  }- }0 }' C$ V. U7 i
(重点注意)该配置文件只适应于ES版本是8,不适应于其他版本
  W! G) J2 [% b. h; a
, k* C6 Q4 R8 d. M$ v: c# \8 t6 k+ x4 ]/app/logs/info.log日志文件为JSON格式( h3 F% l9 d8 D' M$ \2 v
自定义索引生命周期名为:pn_springboot,可提前建好# k/ h3 m5 V8 r1 {+ X! K& Z
自定义索引名为:idx_springboot
: s* g+ d9 \6 w" K自写义索引模板名为:tn_springboot: I# J+ w7 {9 b1 B5 r' H6 F
* K/ E- M3 ]/ Q' j
ES8版本默认生成的是数据流,不是默认的索引,这么配置生成的数据流名称就是idx_springboot,9 _3 j9 V3 K: r" `
不是默认的filebeat了,如查索引发现生成长索引名是.ds-idx_springboot-2024.07.21-000001这种格式的,但我们配置视图时,选idx_springboot就行了
5 ]% Y. |+ D+ P' f1 e
7 T7 C/ K+ t: H4 J  g8 o& _filebeat.inputs:
% s- u+ \. h- U$ |& U& R( d9 W  - type: filestream
( P. G8 k0 M7 p% M1 r9 d    id: my-filestream-id
8 m( {0 ]/ e: t! r% k' c    enabled: true3 I; h5 r2 g! Q& ^
    paths:
4 V% C% q( ^  h1 j3 u3 G, }+ _      - /app/logs/info.log* n# K: x) _6 v# q
    parsers:. W3 x" S6 O* C5 J  G5 Y2 _
      - ndjson:
% v) [2 J6 |2 F2 a8 U% d5 @          keys_under_root: true* i! h0 ]! v8 R, d
          overwrite_keys: true- B% j. o7 j/ q* \0 x1 F

0 t8 Q' j: r8 P2 Z2 D( Rsetup.template.name: "tn_springboot"6 Y. j: I' i0 d# Q
setup.template.pattern: "idx_springboot"
  V& E; j. h4 y9 V; |: m  tsetup.template.overwrite: true
6 e( {( u) A1 A1 w4 A0 qsetup.template.settings:& g; |; ~) Z1 U/ L
  index.lifecycle.name: "pn_springboot"4 d8 z9 e- G4 J3 S
  index.number_of_replicas: 0
1 X4 V4 p/ S$ D( \) U! N8 J. H0 c# f  C4 o% @! G
output.elasticsearch:
$ _4 n+ }) P+ G+ r' k  hosts: ["http://172.16.211.21:9200"]& |/ L; b7 ]1 d" t2 }6 ~# ]+ r
  username: "elastic"; G/ i: I0 m& j8 o4 |
  password: "elastic"7 R+ \) I" r) M% L% G
  index: "idx_springboot"4 g% ]& S* x  q) K" y

! C7 ?7 v* [- e4 F- D" q  ^/ |
5 t- w! e' q9 e1 N4 V( N, N+ [) f- R* [7 E

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-8 10:32:48 | 显示全部楼层
例:filebeat-7.12.1-2023.05.16-000001索引文件
! Q9 B& Y% L$ T# j6 C* R; [  J' l# V- g7 l4 ]
索引创建规则" G* }$ @* X0 |; \& F) t
7 |$ t: G/ H6 K6 _+ \
默认使用es的索引声明周期策略
7 U/ i" E  ~" F4 Y# r% O) W1 z$ P9 s4 @; r" u+ x( i. R; E) `
index lifecycle management (ILM) 生成索引* b) x, |: l% w, [

5 u# H- [' }& n; A配置ILM" _7 b: T$ b( ]) k

( x# d. |5 c) U* u: A, a! v$ k1 G#auto false true4 t9 g. W# e$ c. a. u! F
setup.ilm.enabled: auto
. K2 b' T2 ]% D; R#索引别名
8 b+ [1 p- w0 z! u1 fsetup.ilm.rollover_alias: "filebeat"
- m+ s5 f. x6 e. j8 d3 ~8 F#索引增加策略
- U6 v8 h( K1 g! Y3 Ksetup.ilm.pattern: "{now/d}-000001"
, A1 }& c- c4 d2 f2 ysetup.ilm.enabled默认值auto,自动使用es中filebeat生命周期策略创建索引1 {, U3 u6 C- e, k
' e, h. T! }$ T
setup.ilm.rollover_alias默认值filebeat-%{[agent.version]} ,创建索引时指定索引别名。, u# j, S- L' R$ p
" t7 `" i8 Y3 y" m8 S& E6 b& `' {$ x
setup.ilm.pattern默认值%{now/d}-000001,索引rollover增加策略。
3 x9 x# \$ V- ]: M* O" z6 ?4 V5 u
/ V7 X: x. A+ q9 P$ ~自动生成的索引名就是使用alias+pattern。类似filebeat-7.12.1-2023.05.16-000001这种。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:48 , Processed in 0.015122 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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