不難理解,我們的日志通常都是在日志文件中存儲的,所以,當我們在使用INPUT插件時,收集日志,需要使用file模塊,從文件中讀取日志的內容,那么接下來講解的是,將日志內容輸出到另一個文件中,如此一來,我們可以將日志文件同意目錄,方便查找。
注意:Logstash與其他服務不同,收集日志的配置文件需要我們根據實際情況自己去寫。
前提:需要Logstash對被收集的日志文件有讀的,并且對要寫入的文件,有寫入的權限。
[root@web01 ~]# vim /etc/logstash/logstash.ymlpath.config: /etc/logstash/conf.d
[root@web01 ~]# cd /etc/logstash/conf.d/[root@web01 /etc/logstash/conf.d]# vim message_file.confinput { file { path => "/var/log/messages" start_position => "beginning" }}output { file { path => "/tmp/messages_%{+YYYY-MM-dd}" }}[root@web01 /etc/logstash/conf.d]# vim message_file.conf#輸入插件input {#文件模塊 file {#日志類型 type => "message-log"#日志路徑 path => "/var/log/messages"#第一次收集日志從頭開始 start_position => "beginning" }}#輸出插件output {#文件模塊 file {#輸出路徑 path => "/tmp/message_%{+yyyy.MM.dd}.log" }}
#檢測語法[root@web01 ~]# logstash -f /etc/logstash/conf.d/message_file.conf -t#啟動[root@web01 ~]# logstash -f /etc/logstash/conf.d/message_file.conf &
#實時監控收集到的日志[root@web01 ~]# tail -f /tmp/messages_2020-12-04#手動添加一臺日志[root@web01 ~]# echo 111 >> /var/log/messages
[root@web01 ~]# vim /etc/logstash/conf.d/message_es.conf input { file { path => "/var/log/messages" start_position => "beginning" }}output { elasticsearch { hosts => ["10.0.0.71:9200"] index => "message_%{+YYYY-MM-dd}" }}
[root@web01 ~]# logstash -f /etc/logstash/conf.d/message_es.conf &[2] 82713
logstash收集日志時使用多實例方式啟動,不是使用system管理啟動,但是啟動多實例會報錯,怎么處理?
[root@web01 ~]# vim /etc/logstash/conf.d/secure_es.conf input { file { path => "/var/log/secure" start_position => "beginning" }}output { elasticsearch { hosts => ["10.0.0.71:9200"] index => "secure_%{+YYYY-MM-dd}" }}
logstash只啟動一個不需要數據目錄,如果想要啟動多個進程,需要每個進程指定不同的數據目錄,需要加 --path.data參數,然后可以啟動多實例1.創建數據目錄[root@web01 ~]# mkdir /data/logstash/messages_es -p[root@web01 ~]# mkdir /data/logstash/secure_es -p[root@web01 ~]# chown -R logstash.logstash /data/logstash/2.分別指定數據目錄再啟動兩個進程[root@web01 ~]# logstash -f /etc/logstash/conf.d/message_es.conf --path.data=/data/logstash/messages_es &[root@web01 ~]# logstash -f /etc/logstash/conf.d/secure_es.conf --path.data=/data/logstash/secure_es &
[root@web01 ~]# vim /etc/logstash/conf.d/morefile_file.conf#輸入的插件input { #文件模塊 file { #收集文件的路徑 path => "/var/log/messages"#第一次收集從頭收集 start_position => "beginning"#收集日志間隔時間3秒 stat_interval => "3" } #第二個文件模塊 file { #第二個收集日志的路徑 path => "/var/log/secure" }}#輸出插件output { #輸出時的文件模塊 file { #輸出的文件路徑 path => "/tmp/morefile.txt" }}
[root@web01 ~]# logstash -f /etc/logstash/conf.d/morefile_file.conf &
[root@web01 ~]# tail -f /tmp/morefile.txt#手動添加文件[root@web01 ~]# echo 111 >> /var/log/messages[root@web01 ~]# echo 2222 >> /var/log/secure
[root@web01 ~]# vim /etc/logstash/conf.d/morefile_es.conf input { file { path => "/var/log/messages" } file { path => "/var/log/secure" }}output { elasticsearch { hosts => ["10.0.0.71:9200"] index => "morefile_%{+YYYY-MM-dd}" }}
[root@web01 ~]# logstash -f /etc/logstash/conf.d/morefile_es.conf &
#配置[root@web01 ~]# cat /etc/logstash/conf.d/morefile_es.confinput { file { type => "messages_log" path => "/var/log/messages" } file { type => "secure_log" path => "/var/log/secure" }}output { if [type] == "messages_log" { elasticsearch { hosts => ["10.0.0.71:9200"] index => "messages_log_%{+YYYY-MM-dd}" } } if [type] == "secure_log" { elasticsearch { hosts => ["10.0.0.71:9200"] index => "secure_log_%{+YYYY-MM-dd}" } }}#啟動[root@web01 ~]# logstash -f /etc/logstash/conf.d/morefile_es.conf
#配置[root@web01 ~]# cat /etc/logstash/conf.d/second_morefile_es.confinput { file { type => "messages_log" path => "/var/log/messages" } file { type => "secure_log" path => "/var/log/secure" }}output { elasticsearch { hosts => ["10.0.0.71:9200"] index => "%{type}_%{+YYYY-MM-dd}" }}#啟動[root@web01 ~]# logstash -f /etc/logstash/conf.d/second_morefile_es.conf
[root@web01 ~]# cat /etc/nginx/nginx.conf ... ...http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; log_format json '{"@timestamp":"$time_iso8601",' '"host":"$server_addr",' '"clientip":"$remote_addr",' '"size":$body_bytes_sent,' '"responsetime":$request_time,' '"upstreamtime":"$upstream_response_time",' '"upstreamhost":"$upstream_addr",' '"http_host":"$host",' '"url":"$uri",' '"referer":"$http_referer",' '"agent":"$http_user_agent",' '"status":"$status"}'; #access_log /var/log/nginx/access.log main; access_log /var/log/nginx/access.log json; sendfile on; client_max_body_size 100M; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf;}
[root@web01 ~]# systemctl restart nginx[root@web01 ~]# tail -f /var/log/nginx/access.log{"@timestamp":"2020-12-04T17:39:22+08:00","host":"10.0.0.7","clientip":"10.0.0.1","size":0,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host":"10.0.0.7","url":"/index.html","referer":"-","agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36","status":"304"}
[root@web01 ~]# vim /etc/logstash/conf.d/nginx_log_es.confinput { file { path => "/var/log/nginx/access.log" start_position => "end" type => "access_log" }}output { elasticsearch { hosts => ["10.0.0.71:9200"] index => "nginx_access_log_%{+YYYY-MM-dd}" }}
[root@web01 ~]# logstash -f /etc/logstash/conf.d/nginx_log_es.conf
在企業中,我們看到tomcat日志遇到異常(exception)一條日志可能是幾行或者十幾行甚至幾十行,組成的,那么,我們需要將多行日志變成一行日志,來收集
這里我們有幾種方式可以實現:1.將日志改成Json格式在企業中,想要將java日志改成json格式,并沒有那么容易。因為將日志改成Json格式,查看起來會很難受,有些開發人員不希望將日志格式改成Json的,所以,在改日志格式之前需要跟開發人員進行溝通,那么將tomcat日志格式改成Json格式也有兩種方式。1)開發自己更改,通過程序代碼,或者log4j2)運維修改tomcat的server配置文件2.通過logstash的mutiline模塊實現多行匹配
1.上傳代碼包[root@web01 ~]# rz[root@web01 ~]# ll-rw-r--r-- 1 root root 11026056 2020-12-04 18:04 apache-tomcat-9.0.30.tar.gz2.解壓tomcat包[root@web01 ~]# tar xf apache-tomcat-9.0.30.tar.gz3.將安裝包移動并改名[root@web01 ~]# mv apache-tomcat-9.0.30 /usr/local/tomcat-9.0.304.做軟連接[root@web01 ~]# ln -s /usr/local/tomcat-9.0.30 /usr/local/tomcat
1.寫一個測試頁面到站點目錄下的index.html文件中[root@web01 ~]# echo 'TEST elk' > /usr/local/tomcat/webapps/ROOT/index.html2.啟動tomcat[root@web01 ~]# /usr/local/tomcat/bin/startup.sh3.檢測tomcat端口是否啟動[root@web01 ~]# netstat -lntup|grep 8080tcp 0 0 :::8080 :::* LISTEN 12569/java
http://10.0.0.7:8080/
[root@web01 ~]# vim /etc/logstash/conf.d/tomcat_log_es.conf input { file { path => "/usr/local/tomcat/logs/localhost_access_log.*.txt" start_position => "end" type => "tomcat_log" }}output { elasticsearch { hosts => ["10.0.0.71:9200"] index => "tomcat_log_%{+YYYY-MM-dd}" }}
[root@web01 ~]# logstash -f /etc/logstash/conf.d/tomcat_log_es.conf
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
北京電視臺選擇欄目主持人?王為念,1959年5月1日出生,導演、主持人。王芳,電視主持人。主持北京電視臺《快樂生活一點通》 《健康生活》、《數字生活》 《身邊》、《在選擇》等節目。雷明,男,著名心理咨詢專家、管理培訓專家,現任國家人力資源開發研究會常務理事,科學院研究生院兼職教授,浙江大學MBA導師,北京陳暉心理咨詢有限公司董事長,長期專注于管理咨詢、親子教育、家庭婚姻等領域。北京衛視健康節目女主...
安卓平板怎么投屏到電腦?將平板電腦和電腦連接到同一個熱點,完成屏幕投影。安卓平板可以連接主機當顯示器用嗎?可以,但是比較麻煩。首先下載軟件(電腦和手機打包的),安裝電腦。電腦安裝運行后,屏幕會在這里閃幾次。閃爍后右下角會有一個灰色的雙屏圖標,然后用數據線連接平板。如果提示安裝驅動,可以用91助手等軟件安裝,然后在平板上運行軟件,點擊usb連接,等待即可。連接后,電腦右下角的灰標亮起。然后,你可以在...
索尼各個機型發布時間?1.索尼愛立信T682001年10月推出這是索尼愛立信在2001年推出的第一款手機。雖然在當時是一款功能手機,但是憑借著不錯的外形和內置的一些娛樂功能,在市場上引起了極大的關注。然后在2002年6月,索尼推出了升級版T68i。這也成為索尼愛立信未來的一個策略。特別是索尼愛立信T68是一款外接數碼相機的手機,支持彩信。2.索尼愛立信P8002003年1月推出一年后,索尼愛立信推...