配置文件只代表個(gè)人操作圃伶,以為之后還要修改logstash的fileter她肯。所以自己定義好了配置文件的格式胆绊。
1 修改服務(wù)器日志說明
??由于logstash的grok要通過filebeat傳輸?shù)娜罩疚募M(jìn)行過濾了牛,在kibana的展示界面才能展示出不同的字段颜屠,比如level辰妙、message的字段的內(nèi)容。所以需要統(tǒng)一日志的輸出的格式甫窟,如果不統(tǒng)一日志格式密浑,在logstash過濾的時(shí)候會(huì)發(fā)生錯(cuò)誤,導(dǎo)致在kibana上無法展示相應(yīng)字段內(nèi)容粗井。是日志系統(tǒng)失去了價(jià)值尔破。
??線上服務(wù)器修改日志輸出格式需要重啟服務(wù),請(qǐng)謹(jǐn)慎操作浇衬。以下會(huì)介紹日志如何格式化輸出懒构。
2 Tomcat的log4j配置
2.1 創(chuàng)建log4j.properties文件
首先創(chuàng)建一個(gè)log4j.properties文件,并將其放置在tomcat的lib目錄$CATALINA_BASE/lib下耘擂。內(nèi)容如下:
log4j.rootLogger=INFO,stdout,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-d{yyyy-MM-dd HH\:mm\:ss,SSS}] [%c] [%p] [%m]%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#c3po config
log4j.logger.com.opensymphony=warn
log4j.logger.com.mchange=warn
#spring config
log4j.logger.org.springframework=warn
#mybatis config
log4j.logger.org.apache.ibatis.logging=warn
log4j.logger.org.apache.ibatis.datasource.pooled=warn
log4j.logger.org.apache.ibatis.transaction.jdbc=warn
log4j.logger.org.mybatis.spring=warn
log4j.logger.cn.com.widgetdo.mybatis.scanner=warn
#調(diào)試時(shí)看sql語句 將 warn變?yōu)?debug就可以了
log4j.logger.cn.com.widgetdo.mapper=debug
#axis config
log4j.logger.org.apache.axis=warn
log4j.logger.org.apache.axis.utils.JavaUtils=error
#quartz config
log4j.logger.org.quartz=warn
# beanutil config
log4j.logger.org.apache.commons.beanutils=warn
#struts2 config
log4j.logger.org.apache.struts2=ERROR
log4j.logger.freemarker=warn
log4j.appender.R.File=${catalina.home}/logs/tomcat.out
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss,SSS}] [%c] [%p] [%m]%n
#log4j.logger.com.opensymphony.xwork2=ERROR
2.2 下載log4j的jar包
需要1.2以上版本
下載地址: http://archive.apache.org/dist/logging/log4j/1.2.17/log4j-1.2.17.jar
2.3 下載tomcat-juli.jar胆剧、tomcat-juli-adapters.jar
作為tomcat的外部組件。注意醉冤,此處的tomcat-juli.jar和默認(rèn)的不同秩霍,它包含了Apache Commons Logging的全部實(shí)現(xiàn)
① 載地址:
http://www.apache.org/dist/tomcat/tomcat-7/v7.0.90/bin/extras/
或者
② 載地址:tomcat官網(wǎng)—>tomcat7
1.1 替換tomcat-juli.jar
將$CATALINA_HOME/bin/tomcat-juli.jar替換為下載的tomcat-juli.jar,并修改成755權(quán)限
[root@cxm bin]# chmod 755 tomcat-juli.jar
刪除$CATALINA_BASE/conf/logging.properties文件
重啟tomcat
2 修改tomcat的access_log
修改tomcat的server.xml配置文件冤灾。把
pattern="%h %l %u %t "%r" %s %b%{Referer}i %{User-Agent}i"
修改成:
pattern="%h %l %u [%{yyyy-MM-dd HH:mm:ss,SSS}t] [%r] %s [%{Referer}i] [%{User-Agent}i] %b %T"
3 Nginx日志配置
3.1 主配置文件修改
在nginx主配置文件nginx.conf里添加json的匹配字段前域。
log_format json '{"@timestamp":"$time_iso8601",'
'"@version":"1",'
'"domain":"$server_addr",'
'"remoteaddr":"$remote_addr",'
'"bodybytessent":"$body_bytes_sent",'
'"requesttime":"$request_time",'
'"uri":"$request_uri",'
'"status":"$status",'
'"httpreferer":"$http_referer",'
'"httpuseragent":"$http_user_agent",'
'"httpxforwardedfor":"$http_x_forwarded_for",'
'"upstreamaddr":"$upstream_addr",'
'"upstreamresponse_time":"$upstream_response_time"}';
3.2 虛擬配置文件修改
在虛擬配置文件的日志文件配置json解析。例如:
access_log /data/nginx_log/asm.access.log json;
4 安裝filebeat
直接使用filebeat的rpm包安裝即可韵吨。去官網(wǎng)下載rpm包匿垄,之后上傳到服務(wù)器,并且直接執(zhí)行rpm –ivh 包名即可
4.1 下載地址:
官方下載地址
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.11-x86_64.rpm
4.2 安裝程序
[root@localhost software]# rpm -ivh filebeat-5.6.11-x86_64.rpm
5 相關(guān)命令及其配置
5.1 相關(guān)目錄說明
·/etc/filebeat:filebeat主目錄归粉,所有filebeat配置文件會(huì)放在這椿疗。
·/etc/filebeat/filebeat.yml:filebeat配置文件filebeat 配置文件具體配置
·創(chuàng)建/data/filebeat_log目錄,為了更好的檢測(cè)filebeat是否正常抓取日志
5.2 相關(guān)命令
啟動(dòng):systemctl start filebeat.service
停止:systemctl stop filebeat.service
重啟:systemctl restart filebeat.service
查看狀態(tài):systemctl status filebeat.service
開機(jī)自啟動(dòng):systemctl enable filebeat.service
5.3 配置文件說明
filebeat.modules:
filebeat.prospectors:
- input_type: log
paths: #日志文件路徑列表
- /opt/tomcat7/logs/asm.log #日志絕對(duì)路徑
multiline.pattern: ^\[
#多行匹配模式糠悼,后接正則表達(dá)式届榄,默認(rèn)無. 控制Filebeat如何處理跨越多行的日志消息 的選項(xiàng)。其中消息的第一行以方括號(hào)([)開頭(針對(duì)java日志的多行匹配問題)
multiline.negate: true
#多行匹配模式后配置的模式是否取反倔喂,默認(rèn)false
# false匹配pattern的行合并到上一行铝条;true不匹配pattern的行合并到上一行
multiline.match: after
#定義多行內(nèi)容被添加到模式匹配行之后還是之前,默認(rèn)無席噩,可以被設(shè)置為after或者before
fields:
#添加附件字段班缰,可以使values,arrays悼枢,dictionaries或者任何嵌套數(shù)據(jù)
indexdiy: epg
#輸出到es的index
project_tag: asm
#輸出到es的項(xiàng)目標(biāo)簽
fields_under_root: true
# 如果該選項(xiàng)設(shè)置為true埠忘,則新增fields成為頂級(jí)目錄,而不是將其放在fields目錄下。自定義的field會(huì)覆蓋filebeat默認(rèn)的field(我們每個(gè)都是自定義的所以不使用默認(rèn)的莹妒。)
output.kafka: #elasticsearch輸出模塊
enabled: true #啟用模塊
hosts: ["10.10.4.11:9092","10.10.4.12:9092","10.10.4.13:9092"] #ES地址
topic: '%{[indexdiy]}'
output:
file:
path: "/data/filebeat_log"
filename: mix_log
rotate_every_kb: 1000
number_of_files: 3
logging.to_files: true
logging.files: