filebeat多實例運行,kibana組件的基本使用

filebeat多實例運行:
?? ?1)需求
一臺服務器上,需要運行多個filebeat實例

?? ?2)啟動filebeat實例1
cat > config/11-log_tcp-to-console.yaml <<EOF
filebeat.inputs:
- type: log
? paths:
? ? - /tmp/oldboyedu-linux82/*.log
??
? # 監聽TCP的參數
- type: tcp
? # 監聽的IP:port
? host: 0.0.0.0:8888

output.console:
? pretty: true
EOF
./filebeat -e -c config/11-log_tcp-to-console.yaml
?? ?
?? ?
?? ?3)啟動filebeat實例2
cat > config/10-es_error-to-es.yaml <<EOF
filebeat.inputs:
- type: log
? paths:
? ? - /oldboyedu/logs/es7/oldboyedu-linux82-es7.log
? multiline.type: pattern
? multiline.pattern: '^\['
? multiline.negate: true
? multiline.match: after
output.elasticsearch:
? hosts:?
? - "http://10.0.0.101:9200"
? - "http://10.0.0.102:9200"
? - "http://10.0.0.103:9200"
? index: "oldboyedu-linux82-es-error-%{+yyyy.MM.dd}"?
setup.ilm.enabled: false?
setup.template.name: "oldboyedu-linux82-es"
setup.template.pattern: "oldboyedu-linux82-es-*"
setup.template.settings:
? index.number_of_shards: 3
? index.number_of_replicas: 0
EOF
./filebeat -c config/10-es_error-to-es.yaml --path.data /tmp/oldboyedu-linux82-filebeat-data --path.logs /tmp/oldboyedu-linux82-filebeat-logs

Q1: 寫多個輸入端使用一個filebeat和啟動多個filebeat實例哪種方案更好?請說明原因?
?? ?
?? ?方案一: 寫多個輸入端使用一個filebeat
?? ??? ?優點:
?? ??? ??? ?1)啟動一個filebeat實例即可;
?? ??? ??? ?2)配置需要配置一個即可;
?? ??? ??? ?3)當業務不是特別復雜時,維護起來相對來說比較方便;
?? ??? ??? ?
?? ??? ?缺點:
?? ??? ??? ?1)有特定要求,輸出端只有一個;
?? ??? ??? ?2)維護起來耦合性較強,當多個input類型,有任何一個需要修改時,需要停止整個服務,盡管其他的input類型不需要修改,影響較大;
?? ??? ??? ?3)當配置文件參數較多時,可讀性較差,拍錯成功也增長了;
?? ??? ??? ?
?? ??? ?
?? ?方案二: 啟動多個filebeat實例
?? ??? ?優點:
?? ??? ??? ?1)方便指定多個輸出類型,可以定制化;
?? ??? ??? ?2)沒有太強的耦合性,如果某個業務需要修改,僅需要修改對應的filebeat實例的配置文件即可,其他filebeat實例并不會受到影響;
?? ??? ??? ?3)當配置較多時,后期維護也非常方便;
?? ??? ??? ?
?? ??? ?缺點:
?? ??? ??? ?1)需要運維人員維護多份配置文件;
?? ??? ??? ?2)需要啟動多個filebeat實例;
?? ??? ??? ?
?? ??? ??? ?

cat > config/12-tcp_http-to-console.yaml <<EOF
filebeat.inputs:
- type: tcp
? host: 0.0.0.0:8888

? # 對應的是一個http協議的輸入端。?
- type: http_endpoint
? # 監聽地址
? listen_address: 0.0.0.0
? # 監聽的端口
? listen_port: 8080
? # 響應狀態碼
? response_code: 222
? # 響應消息
? response_body: '{"message": "oldboyedu linux82 success"}'
? # 客戶端請求路徑
? url: "/linux82"
? # 頂級字段接受消息的前綴名稱
? prefix: "oldboyedu-linux82-json"

output.console:
? pretty: true
EOF


filestream和log類型的區別:
?? ?1)配置JSON解析格式字段有區別
cat > config/13-filestream-to-console.yaml <<EOF
filebeat.inputs:
? # 指定類型是一個文件流
- type: filestream
? # 指定文件的路徑
? paths:
? ? - /var/log/nginx/access.log
? # 配置解析器
? parsers:
? ? # 配置JSON格式解析的
? - ndjson:
? ? ? # 指定解析JSON格式的數據存儲路徑的KEY,若不指定,則將解析后的結果存放在頂級字段。
? ? ? target: ""

output.console:
? pretty: true
EOF


?? ?2)多行匹配問題
cat > config/14-filestream-to-console.yaml <<EOF
filebeat.inputs:
- type: filestream
? paths:
? ? - /oldboyedu/logs/es7/oldboyedu-linux82-es7.log
? parsers:
? ? # 配置多行匹配
? - multiline:
? ? ? type: pattern
? ? ? pattern: '^\['
? ? ? negate: true
? ? ? match: after


output.elasticsearch:
? hosts:?
? - "http://10.0.0.101:9200"
? - "http://10.0.0.102:9200"
? - "http://10.0.0.103:9200"
? index: "oldboyedu-linux82-es-error-%{+yyyy.MM.dd}"?

setup.ilm.enabled: false?
setup.template.name: "oldboyedu-linux82-es"
setup.template.pattern: "oldboyedu-linux82-es-*"
setup.template.settings:
? index.number_of_shards: 3
? index.number_of_replicas: 0
EOF


filebeat的模塊使用:
?? ?1)模塊的基本管理
./filebeat modules enable nginx tomcat mysql
?? ?啟用模塊
./filebeat modules list
?? ?查看模塊列表
./filebeat modules disable tomcat mysql
?? ?禁用模塊
?? ?
?? ?
?? ?2)模塊的管理的底層原理
mv modules.d/{tomcat.yml.disabled,tomcat.yml}
mv modules.d/{mysql.yml.disabled,mysql.yml}
?? ?啟用tomcat和mysql模塊。
?? ?
mv modules.d/{mysql.yml,mysql.yml.disabled}
mv modules.d/{tomcat.yml,tomcat.yml.disabled}
?? ?禁用tomcat和mysql模塊。


?? ?3)修改nginx模塊的配置文件
cat > modules.d/nginx.yml <<EOF
- module: nginx
? access:
? ? enabled: true
? ? var.paths: ["/var/log/nginx/access.log*"]
? error:
? ? enabled: true
? ? var.paths: ["/var/log/nginx/error.log*"]
? ingress_controller:
? ? enabled: false
EOF
?? ?
?? ?4)使用nginx模塊測試
cat > config/15-modules-to-console.yaml <<EOF
# 啟動模塊,若啟用了模塊,則可以不指定input類型
filebeat.config.modules:
? # 指定模塊的配置文件路徑,"${path.config}"是filebeat的內置變量,表示filebeat安裝目錄。
? path: ${path.config}/modules.d/*.yml
? # 是否支持熱加載
? reload.enabled: true

output.elasticsearch:
? hosts:?
? - "http://10.0.0.101:9200"
? - "http://10.0.0.102:9200"
? - "http://10.0.0.103:9200"
? index: "oldboyedu-linux82-nginx-access-%{+yyyy.MM.dd}"?

setup.ilm.enabled: false?
setup.template.name: "oldboyedu-linux82-nginx"
setup.template.pattern: "oldboyedu-linux82-nginx-access-*"
setup.template.settings:
? index.number_of_shards: 3
? index.number_of_replicas: 0
EOF


?? ?5)請說一下Modules工作原理
1.啟動filebeat實例;
2.讀取配置文件,找Input|modules,output?
?? ?若沒有指定input,則必須配置modules,找到啟用的modules文件后讀取相關的配置文件。從而找到需要watch的文件。
3.模塊的作用不僅僅是指定input的文件位置,而且還會源源數據進行解析為JSON格式喲,只不過這個解析方式是官方指定的,我們去修改這種格式定義就不太方便啦;

?? ?
?? ?溫馨提示:
?? ??? ?(1)實際工作中,很多運維小伙伴都會直接使用input,因為input可以定制化源日志格式;
?? ??? ?(2)官方的modules支持的中間件服務類型是有限的,在實際工作中,可能有的中間件或者你們公司開發的閉源產品日志可能需要你手動配置;

filebeat輸入端通用字段:
?? ?enabled:?
?? ??? ?表示是否啟用當前的input類型,若不設置,則默認值為true。
?? ??? ?
?? ?tags:
?? ??? ?filebeat給每條消息打標記。
?? ??? ?
?? ?fields:
?? ??? ?為消息添加自定義字段
?? ??? ?
?? ?fields_under_root:
?? ??? ?若指定為true,則將自定義字段放在消息的頂級字段中
?? ??? ?若不指定,則默認值為false,會將自定義字段放在一個"fields"字段下喲~
?? ??? ?
?? ?processors:
?? ??? ?自定義處理器,可以根據用戶需求,來對input數據源進行處理分析。
?? ??? ?推薦閱讀:
?? ??? ??? ?https://www.elastic.co/guide/en/beats/filebeat/7.17/defining-processors.html
?? ??? ??? ?https://www.elastic.co/guide/en/beats/filebeat/7.17/defining-processors.html#processors
?? ??? ?
參考案例:
cat > config/16-input_common_options-to-console.yaml <<EOF
filebeat.inputs:
- type: tcp
? host: 0.0.0.0:8888
? # 是否啟用該類型,默認值為true。
? enabled: false
? # 給當前類型打tag
? tags: ["oldboyedu-linux82-tcp","oldboyedu-elk","oldboyedu-linux"]
? # 為消息添加自定義字段
? fields:
? ? school: oldboyedu
? ? class: linux82
? # 若指定為true,則將自定義字段放在消息的頂級字段中
? # 若不指定,則默認值為false,會將自定義字段放在一個"fields"字段下喲~
? fields_under_root: true
? # 自定義處理器,可以對數據進行處理
? # processors:
? # ? ? # 刪除事件(event)
? # ? - drop_event:
? # ? ? ? # when語句表示當滿足某個條件執行相應的動作
? # ? ? ? when:
? # ? ? ? ? # 匹配正則表達式
? # ? ? ? ? regexp:
? # ? ? ? ? ? # 要求message字段包含以"INFO:"開頭的時間,直接刪除時間!
? # ? ? ? ? ? message: "^INFO:"
? #

- type: log
? enabled: true
? paths:
? - /tmp/oldboyedu-linux82/*
? # 自定義處理器,刪除包含"info:"所有事件。
? processors:
? ? - drop_event:
? ? ? ? when:
? ? ? ? ? contains:
? ? ? ? ? ? message: "info:"?


output.console:
? pretty: true
EOF
?? ?


filebeat收集docker日志:
?? ?1)安裝docker環境
tar xf oldboyedu-docker-ce-20_10_17.tar.gz?
cd docker-ce-20_10_17/ && yum -y localinstall *.rpm
?? ?
?? ?2)添加自動補全功能
source /usr/share/bash-completion/bash_completion

?? ?3)配置鏡像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
? "registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

?? ?4)加載nginx鏡像
docker load -i oldboyedu-nginx_1-20-1.tar.gz


?? ?5)啟動nginx容器
docker run -dp 88:80 --name oldboyedu-linux82-nginx ?nginx:1.20.1 ?# 啟動容器
docker logs -f oldboyedu-linux82-nginx ? # 查看日志

?? ?6)使用filebeat收集docker日志案例一,7.2版本已廢棄,不推薦使用。
cat > config/17-docker-to-console.yaml ?<<EOF
filebeat.inputs:
? # 數據源的類型為docker
- type: docker
? # 指定docker容器的ID,可以匹配所有的容器ID,也可以指定容器ID進行匹配
? containers.ids:?
? ? - '*'

output.console:
? pretty: true
EOF


?? ?7)使用filebeat收集docker日志案例二,推薦使用。
cat > config/18-container-to-console.yaml <<EOF
filebeat.inputs:
? # 數據源的類型為container
- type: container
? # 指定容器日志的路徑
? paths:?
? ? - '/var/lib/docker/containers/*/*.log'?
? # 指定收集的日志類型,合法的參數為: all,stdout,stderr
? stream: stdout

output.console:
? pretty: true
EOF


kibana組件的基本使用:
?? ?(1)安裝kibana
yum -y localinstall kibana-7.17.5-x86_64.rpm

?? ?(2)修改kibana的配置文件
vim /etc/kibana/kibana.yml?
...
# kibana的監聽端口
server.port: 5601
# kibana的服務器IP
server.host: "0.0.0.0"
# kibana服務器的名稱,可以自定義
server.name: "oldboyedu-linux82-kibana"
# 指定ES集群的地址
elasticsearch.hosts: ["http://10.0.0.101:9200","http://10.0.0.102:9200","http://10.0.0.103:9200"]
# kibana支持的語言
i18n.locale: "zh-CN"

?? ?(3)啟動kibana服務
systemctl start kibana


?? ?(4)查看kibana的端口號
ss -ntl | grep 5601


?? ?(5)訪問kibana的WebUI
http://10.0.0.101:5601/


?? ?(6)添加官方樣例圖
見視頻。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38138.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38138.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38138.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

centos 安裝docker

1.更新你的系統: sudo yum update -y2.安裝必需的軟件包: Docker 需要 yum-utils, device-mapper-persistent-data 和 lvm2 軟件包來運行。安裝它們&#xff1a; sudo yum install -y yum-utils device-mapper-persistent-data lvm23.設置 Docker 的倉庫: 使用以下命令添加 D…

關于Redis,你需要學習了解的知識

關于 Redis &#xff0c;涵蓋多個方面&#xff0c;從基礎概念到高級應用&#xff0c;以及最佳實踐等。比如以下內容&#xff1a; 認識 Redis&#xff1a; Redis 是什么&#xff1f;它的特點和優勢是什么&#xff1f;Redis 的數據結構&#xff1a;字符串、哈希、列表、集合、有序…

Kafka的下載安裝以及使用

一、Kafka下載 下載地址&#xff1a;https://kafka.apache.org/downloads 二、Kafka安裝 因為選擇下載的是 .zip 文件&#xff0c;直接跳過安裝&#xff0c;一步到位。 選擇在任一磁盤創建空文件夾&#xff08;不要使用中文路徑&#xff09;&#xff0c;解壓之后把文件夾內容…

Redis 持久化

一、RDB 1.1 RDB持久化流程 fork子進程是阻塞的&#xff0c;如果同時開啟RDB和AOF&#xff0c;默認使用AOF。 1、Redis父進程首先判斷: 當前是否在執行save&#xff0c;或bgsave/bgrewriteaof (aof文件重寫命令)的子進程&#xff0c;如果在執行則bgsave命令直接返回。 2、父進…

劍指offer專題2:隊列和棧

用兩個棧模擬隊列 class CQueue {stack<int> stack1;stack<int> stack2; public:CQueue() {}void appendTail(int value) {stack1.push(value);}int deleteHead() {int val-1;if(!stack2.empty()){val stack2.top();stack2.pop();}else if(!stack1.empty()){while…

【左神算法刷題班】第18節:漢諾塔問題、島嶼問題、最大路徑和問題

第18節 題目1&#xff1a;漢諾塔問題&#xff08;變體&#xff09; 體系學習班18節有講暴力遞歸的漢諾塔原題。 給定一個數組arr&#xff0c;長度為N&#xff0c;arr中的值只有1&#xff0c;2&#xff0c;3三種 arr[i] 1&#xff0c;代表漢諾塔問題中&#xff0c;從上往下第…

Terraform 系列-批量創建資源時如何根據某個字段判斷是否創建

系列文章 Terraform 系列文章Grafana 系列文章 概述 前文 Grafana 系列 - Grafana Terraform Provider 基礎 介紹了使用 Grafana Terraform Provider 創建 Datasource. 這幾天碰到這么一個現實需求&#xff1a; 使用 Terraform 批量創建日志數據源時, 有的數據源類型是 El…

MongoDB 數據庫詳細介紹

MongoDB 數據庫詳細介紹 MongoDB&#xff08;來自“Humongous”&#xff0c;意為巨大的&#xff09;是一個開源、高性能、無模式&#xff08;NoSQL&#xff09;、文檔導向的分布式數據庫。它以其靈活性、可擴展性和強大的查詢功能而聞名于世。MongoDB 使用 JSON 格式的文檔來存…

主從同步介紹、主從同步原理、主從同步結構、構建思路、配置一主一從、配置一主多從、讀寫分離介紹、工作原理、配置mycat服務、添加數據源、創建集群、指定主機角

Top NSD DBA DAY07 案例1&#xff1a;MySQL一主一從案例2&#xff1a;配置一主多從結構案例3&#xff1a;數據讀寫分離 1 案例1&#xff1a;MySQL一主一從 1.1 問題 數據庫服務器192.168.88.53配置為主數據庫服務器數據庫服務器192.168.88.54配置為從數據庫服務器客戶端192…

網絡編程(8.14)TCP并發服務器模型

作業&#xff1a; 1. 多線程中的newfd&#xff0c;能否修改成全局&#xff0c;不行&#xff0c;為什么&#xff1f; 2. 多線程中分支線程的newfd能否不另存&#xff0c;直接用指針間接訪問主線程中的newfd,不行&#xff0c;為什么&#xff1f; 多線程并發服務器模型原代碼&…

排查docker無法啟動問題

查看Linux系統操作日志(最后200行就可以排查)&#xff1a; tail -200f /var/log/messages

數據分析--帆軟報表--大數據大屏

進入國企公司學習有一段時間了&#xff0c;崗位是數據分析方向------ 母前使用的是帆軟工具進行的開發。 可以進行大數據大屏 也可使嵌入到手機端。 下面是例子

Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取 Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取 Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取 cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode…) img…

數據庫連接池

什么是數據庫連接池 使用數據庫連接池的好處是減少了連接的創建和關閉的開銷&#xff0c;提高了數據庫訪問的性能和效率。 為什么我們要使用數據庫連接池 我們使用數據庫連接池的主要原因是為了提高應用程序訪問數據庫的性能和效率。使用數據庫連接池的好處: 連接重用&…

【Apple】Logic Pro導入7.1.4.wav并自動分析多聲道

Step1: 創建空項目 Step2: 選中下圖“使用麥克風或...”這一項&#xff0c;底下要創建的軌道數填1就行。 點擊創建之后&#xff1a; Step3: 拖動文件、拖動文件、拖動文件到項目中&#xff0c;并選中復選框“所有所選文件都源自一個項目&#xff08;將創建一個智能速度多軌道集…

[NLP]LLM 訓練時GPU顯存耗用量估計

以LLM中最常見的Adam fp16混合精度訓練為例&#xff0c;分析其顯存占用有以下四個部分&#xff1a; GPT-2含有1.5B個參數&#xff0c;如果用fp16格式&#xff0c;只需要1.5G*2Byte3GB顯存, 但是模型狀態實際上需要耗費1.5B*1624GB. 比如說有一個模型參數量是1M&#xff0c;在…

什么是前端框架?怎么學習? - 易智編譯EaseEditing

前端框架是一種用于開發Web應用程序界面的工具集合&#xff0c;它提供了一系列預定義的代碼和結構&#xff0c;以簡化開發過程并提高效率。 前端框架通常包括HTML、CSS和JavaScript的庫和工具&#xff0c;用于構建交互式、動態和響應式的用戶界面。 學習前端框架可以讓您更高效…

nginx的負載均衡

nginx的負載均衡 文章目錄 nginx的負載均衡1.以多臺虛擬機作服務器1.1 在不同的虛擬機上安裝httpd服務1.2 在不同虛擬機所構建的服務端的默認路徑下創建不同標識的文件1.3 使用windows本機的瀏覽器分別訪問3臺服務器的地址 2.在新的一臺虛擬機上配置nginx實現反向代理以及負載均…

使用element UI 的el-upload上傳圖片并攜帶參數的用法

直接看代碼&#xff1a;前端實現 <div class"upload"><el-uploadclass"upload-demo"name"upload_name":data"{user_name:user_name}"action"http://localhost:8000/api/deal_pest_Image":show-file-list"fal…

vb+sql汽車配件管理系統設計與實現

摘 要 目前汽車配件銷售企業大多數在其連鎖店的管理還是手工進行,隨著汽車配件行業的迅速發展,手工管理的種種弊端暴露無疑,給銷售企業的發展帶來了不必要的麻煩。為了規范企業內部管理,提高企業業務管理水平,更好的為客戶服務,應采用計算機來管理汽車配件的進銷存業務。…