文章目錄
- Filebeat
- Filebeat主要特點
- Filebeat使用場景
- ELK簡介
- Elasticsearch簡介
- Elasticsearch主要特點
- Elasticsearch使用場景
- Logstash簡介
- Logstash主要特點
- Logstash使用場景
- Kibana簡介
- Kibana主要特點
- Kibana使用場景
- 簡單理解
- 環境
- 一、ELK集群部署
- 1.軟件安裝
- 2.軟件配置及啟動
- (1).kibana軟件配置及啟動
- (2).elasticsearch軟件配置及啟動
- (3).logstash軟件配置及啟動
- (4).kibana訪問
- (5).編寫logstash用于收集日志配置文件
- (6).運行logstash
- 二、收集k8s集群節點系統日志
- 1.下載filebeat鏡像
- 2.創建filebeat資源清單文件
- 3.應用filebeat資源清單文件
- 4.驗證結果
- 5.在kibana中添加索引
本次部署的應用有Filebeat+ELK,讓我們先簡單了解一下
Filebeat
Filebeat 是一個輕量級的日志數據發送器,作為 ELK 堆棧的一個組件,主要用于從各種來源收集日志數據并將其發送到 Logstash 或 Elasticsearch。它是 Elastic Stack 中 Beats 產品家族的一部分。
Filebeat主要特點
輕量級:
Filebeat 設計簡單,資源占用低,非常適合部署在邊緣節點或資源受限的環境中。
多種輸入源:
Filebeat 支持從文件、Docker 日志、容器日志、系統日志等多種來源收集日志數據。
日志傳輸:
Filebeat 可以將收集到的日志數據發送到多個目標,包括 Logstash、Elasticsearch、Kafka 等。
日志處理:
Filebeat 具有基本的日志處理能力,可以通過模塊化的方式實現常見的日志解析和處理。
可靠性:
具有保證至少一次傳遞的能力,確保日志數據在傳輸過程中不會丟失。
模塊化:
Filebeat 提供了一系列預配置的模塊,用于處理常見的日志格式,如 Nginx、Apache、MySQL、系統日志等。
Filebeat使用場景
集中式日志管理: 在分布式系統中集中收集各個節點的日志。
實時日志分析: 通過 Filebeat 將日志數據實時發送到 Elasticsearch,進行實時搜索和分析。
監控和報警: 結合 ELK 堆棧,實現日志數據的實時監控和報警。
ELK簡介
ELK 是 Elasticsearch、Logstash 和 Kibana 三個開源工具的組合,常用于數據搜索、日志管理和數據可視化
Elasticsearch簡介
Elasticsearch 是一個分布式搜索和分析引擎,基于 Apache Lucene 構建,主要用于存儲、搜索和分析大量數據。
Elasticsearch主要特點
實時搜索和分析: 支持實時的數據存儲和檢索。
分布式: 能夠在多個節點上分布數據,提供高可用性和擴展性。
全文搜索: 支持復雜的查詢語法,能夠進行高效的全文搜索。
RESTful API: 通過 RESTful API 進行數據操作,便于集成和擴展。
Elasticsearch使用場景
日志和事件數據分析: 集中管理和分析日志數據。
全文搜索: 如網站的搜索功能。
監控和報警: 實時監控數據變化并觸發報警。
Logstash簡介
Logstash 是一個數據收集引擎,能夠從多個來源收集數據,進行過濾和轉換,然后將數據發送到存儲引擎(如 Elasticsearch)。
Logstash主要特點
數據收集: 支持從多種數據源(如文件、數據庫、消息隊列等)收集數據。
數據處理: 通過過濾器對數據進行處理和轉換,如解析日志格式、添加字段等。
數據輸出: 將處理后的數據發送到多個目標(如 Elasticsearch、文件、數據庫等)。
Logstash使用場景
日志收集和處理: 收集和處理分布在不同系統和應用中的日志。
數據轉換: 對原始數據進行格式轉換、過濾和增強。
Kibana簡介
Kibana 是一個數據可視化和分析平臺,專為與 Elasticsearch 一起使用而設計。它提供強大的圖形界面,幫助用戶進行數據分析和可視化。
Kibana主要特點
**數據可視化:**通過圖表、地圖、表格等方式展示數據。
**儀表盤:**創建和共享動態儀表盤,實時監控數據變化。
**查詢和分析:**通過簡單的界面進行數據查詢和分析。
Kibana使用場景
日志分析: 可視化分析日志數據,快速發現問題。
業務監控: 創建業務指標的實時監控儀表盤。
安全分析: 用于安全信息和事件管理(SIEM)解決方案。
簡單理解
看不懂上面的,沒關系,看懂下面就行
Filebeat: 部署在個節點,收集日志
Logstash: 過濾,格式化日志
Elasticsearch: 存儲、搜索、分析日志
Kibana: 圖形化界面,展示日志、監控系統狀態
環境
虛擬機
Ip | 主機名 | cpu | 內存 | 硬盤 |
---|---|---|---|---|
192.168.10.11 | master01 | 2cpu雙核 | 4G | 100G |
192.168.10.12 | worker01 | 2cpu雙核 | 4G | 100G |
192.168.10.13 | worker02 | 2cpu雙核 | 4G | 100G |
192.168.10.17 | ELK | 1cpu雙核 | 4G | 40G |
版本 centos7.9
已部署k8s-1.27
注:如果有條件,可以ELK分別放在三臺主機上,我這里是資源有限,所以才全放在一臺主機上了
一、ELK集群部署
elk主機部署
1.軟件安裝
安裝jdk
可考慮使用openjdk也可以使用oracle jdk
yum -y install java-11-openjdk
安裝kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.2-x86_64.rpm
yum -y install kibana-7.17.2-x86_64.rpm
安裝elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.2-x86_64.rpm
yum -y install elasticsearch-7.17.2-x86_64.rpm
安裝logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.2-x86_64.rpm
yum -y install logstash-7.17.2-x86_64.rpm
2.軟件配置及啟動
(1).kibana軟件配置及啟動
vim /etc/kibana/kibana.yml
修改如下內容
行號 + 修改后的結果
有的只需要去#號即可
有的不需要更改
2 server.port: 56017 server.host: "192.168.10.17"32 elasticsearch.hosts: ["http://192.168.10.17:9200"]115 i18n.locale: "zh-CN"
說明:
server.port 是開啟kibana監聽端口
server.host 設置遠程連接主機IP地址,用于遠程訪問使用
elasticsearch.hosts 設置elasticsearch.hosts主機IP,用于連接elasticsearch主機,可以為多個值
i18n.locale 設置語言支持,不需要再漢化,直接修改后即可支持中文
啟動服務并驗證
systemctl enable kibana
systemctl start kibana
ss -anput | grep ":5601"
(2).elasticsearch軟件配置及啟動
vim /etc/elasticsearch/elasticsearch.yml
同上
17 cluster.name: k8s-elastic23 node.name: elastic33 path.data: /var/lib/elasticsearch37 path.logs: /var/log/elasticsearch56 network.host: 192.168.10.1761 http.port: 920070 discovery.seed_hosts: ["192.168.10.17"]74 cluster.initial_master_nodes: ["192.168.10.17"]
說明
cluster.name 集群名稱
node.name 節點名稱
path.data 數據目錄
path.logs 日志目錄
network.host 主機IP
http.port 監聽端口
discovery.seed_hosts 主機發現列表
cluster.initial_master_nodes 集群master節點
啟動服務并驗證
systemctl enable elasticsearch
systemctl start elasticsearch
ss -anput | grep ":9200"
curl http://192.168.10.17:9200
(3).logstash軟件配置及啟動
vim /etc/logstash/logstash.yml
同上
19 node.name: logstash28 path.data: /var/lib/logstash133 api.http.host: 192.168.10.17139 api.http.port: 9600-9700280 path.logs: /var/log/logstash
啟動服務
logstash進程不用預先啟動,使用時啟動即可
現在先不啟動
驗證logstash可用性
/usr/share/logstash/bin/logstash -e 'input {stdin{} } output {stdout {} }'
輸入abc,查看輸出內容
abc
ctrl +c 退出
使用logstash輸入內容到elasticsearch驗證
/usr/share/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.10.17:9200"] index => "logstash-%{+YYYY.MM.dd}" } }'
輸入
hello elasticsearch
此內容將會通過kibana頁面中的索引看到,但是需要在kibana頁面中添加索引
(4).kibana訪問
宿主機瀏覽器訪問
192.168.10.17:5601
在歡迎界面選擇自己瀏覽后會進入主界面
(5).編寫logstash用于收集日志配置文件
通過filebeat進行收集
vim /etc/logstash/conf.d/logstash-to-elastic.conf
input {beats {host => "0.0.0.0"port => "5044"}
}filter {}output {elasticsearch {hosts => "192.168.10.17:9200"index => "k8s-%{+YYYY.MM.dd}"}
}
(6).運行logstash
如果不涉及多個配置文件,可以直接使用systemctl start logstash;如果有多個配置文件,只想啟動一個配置文件,可以使用如下方法。
直接在后臺運行
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-to-elastic.conf --path.data /usr/share/logstash/data1 &
不輸出內容后按兩下回車
看看端口
netstat -lntp | grep :5044
二、收集k8s集群節點系統日志
通過在work節點以DaemonSet方法運行filebeat應用實現
1.下載filebeat鏡像
所有worker節點
下載filebeat鏡像
docker pull elastic/filebeat:7.17.2
docker images
master節點
2.創建filebeat資源清單文件
vim filebeat-to-logstash.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: k8s-logs-filebeat-confignamespace: kube-systemdata:filebeat.yml: |filebeat.inputs:- type: logpaths:- /var/log/messagesfields:app: k8stype: modulefields_under_root: truesetup.ilm.enabled: falsesetup.template.name: "k8s-module"setup.template.pattern: "k8s-module-*"output.logstash:hosts: ['192.168.10.17:5044']index: "k8s-module-%{+yyyy.MM.dd}"---apiVersion: apps/v1
kind: DaemonSet
metadata:name: k8s-logsnamespace: kube-system
spec:selector:matchLabels:project: k8sapp: filebeattemplate:metadata:labels:project: k8sapp: filebeatspec:containers:- name: filebeatimage: docker.io/elastic/filebeat:7.17.2args: ["-c", "/etc/filebeat.yml","-e",]resources:requests:cpu: 100mmemory: 100Milimits:cpu: 500mmemory: 500MisecurityContext:runAsUser: 0volumeMounts:- name: filebeat-configmountPath: /etc/filebeat.ymlsubPath: filebeat.yml- name: k8s-logsmountPath: /var/log/messagesvolumes:- name: k8s-logshostPath:path: /var/log/messages- name: filebeat-configconfigMap:name: k8s-logs-filebeat-config
3.應用filebeat資源清單文件
kubectl apply -f filebeat-to-logstash.yaml
4.驗證結果
kubectl get pod -n kube-system -o wide
5.在kibana中添加索引
宿主機瀏覽器訪問192.168.10.17:5601
web頁面操作
基本和上次一樣
現在就能看到日志了
這是系統日志
后面還會寫怎么看應用程序的日志
以及容器內部署的應用程序日志
寫完已經快噶了
應該會隔一天
如果對您有幫助可以點下關注