Log4j 到ELK 經驗總結


1、日志直接寫入Redis
log4j是可以將日志直接寫入到Redis中的,這樣我們導入ELK就會方便很多,網上存在大神開發的appender,親測可用
下載是源碼地址,大神很是給力!
向大神致敬,接下來我們這在巨人的肩膀上進行開發。
1.1 pom.xml配置
大神的帖子上面的pom只需要寫
 
<dependency>
    <groupId>com.ryantenney.log4j</groupId>
    <artifactId>redis-appender</artifactId>
    <version>1.0.1</version>
</dependency>
 
但是我只寫這些會報異常---classNotFoundException
然后我就去源碼里面找了一下
又加了一段配置就沒事了
<dependency>
    <groupId>net.logstash.log4j</groupId>
    <artifactId>jsonevent-layout</artifactId>
    <version>1.0</version>
</dependency>
 
1.2 log4j.properties的配置
 
### 設置### sample  log4j.rootLogger = [ level ] , appenderName, appenderName, …
#### [ level ]  高->低  ERROR、WARN、INFO、DEBUG
####  appenderName :  日志信息被輸出到哪些地方
log4j.rootLogger=INFO, redis,stdout,D,I,E
 
###寫入redis
log4j.appender.redis=com.ryantenney.log4j.RedisAppender
log4j.appender.redis.host=目標服務器IP地址(例如:127.0.0.1)
log4j.appender.redis.port=端口號,如果沒有修改,默認端口號為6379
log4j.appender.redis.key=  生成的Redis的Key的值
log4j.appender.redis.Threshold=INFO
log4j.appender.redis.period=2
(不知道是我服務器的問題還是因為什么,這個數值太大將會寫不進去)
log4j.appender.redis.batchSize=4
log4j.appender.redis.purgeOnFailure=true
log4j.appender.redis.alwaysBatch=true
log4j.appender.redis.layout=net.logstash.log4j.JSONEventLayout
(大神開發好了json樣式,你也可以根據自己的需要進行擴展)
我的redis沒有密碼,這里面沒有配置,如果需要密碼,就在上面加一個log4j.appender.redis.password=****就行了
### 輸出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss} %m  at %l%n
 
具體的配置方式不進行介紹,網上有好多帖子
 
1.3 寫日志
和之前寫日志的方式一致,沒有什么區別,添加了上面的配置后,數據可以直接寫入到Redis里面
 
2  redis中數據導入到ES
 
2.1查看數據是否寫入
連接linux的命令 redis-cli  連接本機的redis    -p 添加端口,-h  添加別的服務器
連接成功后的查看命令是 lrange key  startindex endindex
例如:lrange testlist  0 50
 
2.2 在es中新建索引
在*.*.*.*:9200/_plugin/head/ 下面有一個索引項 (*.*.*.*,為你es的ip地址),
新建索引(注意不能有大寫字母,不能有大寫字母,不能有大寫字母 重要的事情說三遍)
 
2.3 編寫config
第一步、 cd /usr/local/logstash
第二步、sudo touch  test.conf
第三步,給文件分配權限 sudo chomd 777 test.conf

input{
redis{
host=>'localhost'
port=>'6379'
key=>""
data_type=>"list"
type=>'redis-input'
}
}

output{
elasticsearch{
host=>'localhost'
port=>9200
protocol=>"http"
index=>""
}
}

port 為redis的端口號,如果沒有修改過,就為6379。
key 為剛才在log4j.properties里面配置的key
index 為剛才我不讓你大寫的那個es index 
別的字段最好別修改了
第四步、保存文件退出
 
2.4 執行conf
sudo ./bin/logstash -f test.conf &
 
如果需要修改文件再次執行,先結束之前執行的進程
sudo kill 進程號
 
3.不出意外的話現在你已經可以在ES中看到數據了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM