iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
DevOps

DevOps需要的技能樹...(應該)都點得到!系列 第 11

Day 11: Logstash 配置與查詢系統日誌

  • 分享至 

  • xImage
  •  

本章節「OpenSource」概要

Day 10: ELK Stack 安裝與多節點
Day 11: Logstash 配置與查詢系統日誌
Day 12: Redis 安裝與配置
Day 13: Redis 高可用性與集群設置
Day 14: Prometheus 與 Grafana 安裝與監控
Day 15: 配置 Prometheus 監控 Kubernetes 叢集
Day 16: 使用 Grafana 進行數據視覺化及串接告警

認識 Logstash

Logstash 是一個開源數據處理管道,專為收集、解析和轉換來自多種來源的日誌數據而設計。它支持多種輸入和輸出插件,將數據從各種格式轉換為 Elasticsearch 可搜索的格式。Logstash 常與 Elasticsearch 和 Kibana 一起使用,形成 ELK Stack,實現強大的日誌分析和可視化功能。

認識 Filebeat

Filebeat 是一個輕量級的日誌傳輸代理,專為收集和轉發伺服器上的日誌數據而設計。它監控和讀取指定的日誌文件,並將數據發送到如 Elasticsearch、Logstash 或其他目標。Filebeat 是 Elastic Stack 的一部分,適合大規模日誌收集,並提供低延遲和簡易的配置。

事前準備

需要安裝一個beat類型工具將日誌打進logstash
這裡採用的是filebeat作為練習

sudo nano docker-compose-filebeat.yml
version: '3.7'

services:

  filebeat:
    container_name: filebeat
    image: docker.elastic.co/beats/filebeat:7.15.1
    #最高權限用戶執行
    user: "0"
    restart: on-failure
    environment:
      #上海時區
      - TZ=Asia/Shanghai
    volumes:
      #將配置文件掛載出來
      - ./filebeat.yml:/usr/share/filebeat/filebeat.yml
      #將系統日誌掛載出來
      - /var/log:/var/log

先別急著啟動!
它還需要一個conf文件才可以成立

sudo nano filebeat.yml

貼入以下內容

filebeat.shutdown_timeout: 5s
filebeat.inputs:
- type: log
  enabled: true
  paths:
    #把系統日誌打出來
    - /var/log
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after
output.logstash:
  hosts: ["logstash主機地址"]

再來才是啟動filebeat

docker compose -f docker-compose-filebeat.yml up -d

配置logstash

文件路徑:logstash > pipeline > logstash.conf

#這裡是輸入區塊
input {
	beats {
        port => 5044
	}
}

#這裡是過濾器區塊
filter {
	mutate {
		add_field => {"[topic_name]" => "%{[@metadata][topic]}"}
	}
		grok {
			match => {
				"message" => [
					"%{TIMESTAMP_ISO8601:logTimestamp} (?<logLevel>.?*) \[(?<logThreadName>.?*)\] \[(?<logDetail>.?*)\] \: (?<logMessage>.?*)"
				]
			}
		}
		date {
			match => ["logTimestamp", "yyyy-MM-dd HH:mm:ss,SSS"]
		}
}

#這裡是輸出區塊
output {
	elasticsearch {
		hosts => "elasticsearch主機地址:9200"
		user => "elasticsearch用戶帳號"
		password => "elasticsearch用戶密碼"
		ilm_rollover_alias => "syslog-%{+YYYY.MM.dd}"
		ilm_pattern => "{now/d}-000001"
	}
}

編輯完了之後只需要重啟logstash就好

docker compose -f docker-compose-cluster.yml restart logstash

此時查看kibana後台已經可以看到syslog的出現
左側選單 > 向下拉到底Stack Management > Index Management

https://ithelp.ithome.com.tw/upload/images/20240804/20168384N9iDdlsXjY.jpg

也可以讓日誌數據在kibana後台可視化
左側選單 > 向下拉到底Stack Management > Index patterns

https://ithelp.ithome.com.tw/upload/images/20240804/20168384H18bGP1oCm.jpg

再來就可以查詢
左側選單 > Discover > 下拉選單選中剛才建立的syslog-*

https://ithelp.ithome.com.tw/upload/images/20240804/2016838498kKxGKKX0.jpg

當然ELK Stack的調教之路遠不止於此
不過至此我們完成了ELK集群的架設以及日誌的串接囉


上一篇
Day 10: ELK Stack 安裝與多節點
下一篇
Day 12: Redis 安裝與後台
系列文
DevOps需要的技能樹...(應該)都點得到!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言