# 1.FileBeat
## 1. 1 讀取Java日志
**1. 配置input讀取Java日志**
日志格式不同,通過`multiline`分隔合并確定是一條日志,如下:
```
2021-12-07 09:14:23.645 INFO 6 --- [io-10006-exec-4] com.yqcx.cp.core.filter.UserCPFilter : traceId=ef82e6f6b33a4e5e8d43ad77eecd91b7,URL:【http://localhost:8080/sysEquType/validateName】,耗時:【199】ms
2021-12-07 09:14:24.875 INFO 6 --- [io-10006-exec-5] com.yqcx.cp.core.filter.UserCPFilter : not allowedPath url [/sysEquType/validateName]
2021-12-07 09:14:24.875 INFO 6 --- [io-10006-exec-5] com.yqcx.cp.core.filter.UserCPFilter : UserCPFilter dealWithUser userId [1400279509741273090]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@15f227b] was not registered for synchronization because synchronization is not active
JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@6f914542] will not be managed by Spring
==> Preparing: SELECT id,`name`,code,pid,company_id AS companyId,disable_flag AS disableFlag,disable_time AS disableTime,create_time AS createTime,create_user AS `createUser`,modified_time AS modifiedTime,modified_user AS modifiedUser FROM sys_equ_type WHERE (name = ? AND company_id = ?)
==> Parameters: eeeeeeeeeee(String), 1368801562103226369(Long)
<== Total: 0
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@15f227b]
2021-12-07 09:14:24.884 ERROR 6 --- [io-10006-exec-5] c.f.a.c.e.OpsGlobalExceptionHandler : 運行時異常:
java.lang.NullPointerException: null
at java.util.Objects.requireNonNull(Objects.java:203)
at com.faw_qm.ad_ops.close_test.controller.SysEquTypeController.validateName(SysEquTypeController.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
```
如下通過日期開始區分為一條日志,跨行合并,并簡單輸出到控制臺
```
filebeat.inputs:
- type: log
enabled: true
paths:
- /root/*.log
multiline.type: pattern
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
output:
console:
codec.json:
pretty: true
escape_html: true
```
啟動,先不后臺啟動
```
/usr/share/filebeat/bin/filebeat -c /etc/filebeat/filebeat.yml
```
成功讀取到日志,并且按照日期分隔日志

## 1.2 輸出到logstash
**1.修改output配置**
```
vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /root/*.log
multiline.type: pattern
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
output:
#console:
# codec.json:
# pretty: true
# escape_html: true
logstash:
enabled: true
hosts: ["192.168.56.10:5044"]
```
**2. 后臺啟動**
```
systemctl start filebeat
```
# 2. logstash
## 2.1 接收filebeat傳入數據
logstash配置filebeat傳入,并控制臺打出測試
```
input {
beats {
port => 5044
}
}
output {
stdout {
codec => rubydebug
}
}
```
同樣不要后臺啟動,使得可以觀察到控制臺打印
```
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/filebeat.conf
```
可以看到控制臺打印

## 2.2 配置輸出到es
```
vim /etc/logstash/conf.d/filebeat.conf
input {
beats {
port => 5044
}
}
output {
# stdout {
# codec => rubydebug
# }
elasticsearch {
hosts => ["http://192.168.56.10:9200"]
#user => "elastic"
#password => "qEnNfKNujqNrOPD9q5kb"
index => "sys-log-%{+YYYY.MM.dd}"
}
}
```

在es中存儲如下

異常日志(跨行也正常收集了)
# 3. logstash過濾數據
## 3.1 時間和無用字段
- springcloud
- springcloud的作用
- springboot服務提供者和消費者
- Eureka
- ribbon
- Feign
- feign在微服務中的使用
- feign充當http請求工具
- Hystrix 熔斷器
- Zuul 路由網關
- Spring Cloud Config 分布式配置中心
- config介紹與配置
- Spring Cloud Config 配置實戰
- Spring Cloud Bus
- gateway
- 概念講解
- 實例
- GateWay
- 統一日志追蹤
- 分布式鎖
- 1.redis
- springcloud Alibaba
- 1. Nacos
- 1.1 安裝
- 1.2 特性
- 1.3 實例
- 1. 整合nacos服務發現
- 2. 整合nacos配置功能
- 1.4 生產部署方案
- 環境隔離
- 原理講解
- 1. 服務發現
- 2. sentinel
- 3. Seata事務
- CAP理論
- 3.1 安裝
- 分布式協議
- 4.熔斷和降級
- springcloud與alibba
- oauth
- 1. abstract
- 2. oauth2 in micro-service
- 微服務框架付費
- SkyWalking
- 介紹與相關資料
- APM系統簡單對比(zipkin,pinpoint和skywalking)
- server安裝部署
- agent安裝
- 日志清理
- 統一日志中心
- docker安裝部署
- 安裝部署
- elasticsearch 7.x
- logstash 7.x
- kibana 7.x
- ES索引管理
- 定時清理數據
- index Lifecycle Management
- 沒數據排查思路
- ELK自身組件監控
- 多租戶方案
- 慢查詢sql
- 日志審計
- 開發
- 登錄認證
- 鏈路追蹤
- elk
- Filebeat
- Filebeat基礎
- Filebeat安裝部署
- 多行消息Multiline
- how Filebeat works
- Logstash
- 安裝
- rpm安裝
- docker安裝Logstash
- grok調試
- Grok語法調試
- Grok常用表達式
- 配置中常見判斷
- filter提取器
- elasticsearch
- 安裝
- rpm安裝
- docker安裝es
- 使用
- 概念
- 基礎
- 中文分詞
- 統計
- 排序
- 倒排與正排索引
- 自定義dynamic
- 練習
- nested object
- 父子關系模型
- 高亮
- 搜索提示
- kibana
- 安裝
- docker安裝
- rpm安裝
- 整合
- 收集日志
- 慢sql
- 日志審計s
- 云
- 分布式架構
- 分布式鎖
- Redis實現
- redisson
- 熔斷和降級