Beats 是輕量級(資源高效,無依賴性,小型)和開放原始碼日誌傳送程式的集合,這些日誌傳送程式充當安裝在基礎結構中不同伺服器上的代理,用於收集日誌或指標(Metrics)。這些可以是日誌檔案(Filebeat),網路資料(Packetbeat),伺服器指標(Metricbeat)或 Elastic 和社群開發的越來越多的 Beats 可以收集的任何其他型別的資料。收集後,資料將直接傳送到 Elasticsearch 或 Logstash 中進行其他處理。Beats建立在名為 libbeat 的 Go 框架之上,該框架用於資料轉發,這意味著社群一直在開發和貢獻新的 Beats。
環境準備
作為 Elastic Stack 的補充,在使用 Beats 之前,需要已安裝好 Elasticearch 和Kibana。Elasticsearch 用來儲存,分析和檢索資料,而 Kibana 作為視覺化,監控和管理端。接下來將基於 Elastic Stack 7.13.4 版本為基礎,以 Metricbeat 元件為例,其他Beats 元件使用方法類似。在安裝 Beats 時,需要注意的一點是 Beats 的版本要和Elasticsearch 及 Kibana 的版本一致,或至少是大版本是一致的。
Beats 元件的下載和安裝
tar包方式安裝
我們這裡以linux的為例子:其他的類似:
建立檔案目錄
mkdir -p /usr/local/beats
- 下載解壓包:
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.13.4-linux-x8 6_64.tar.gz tar xzvf metricbeat-7.13.4-linux-x86_64.tar.gz
如果我們的網路比較慢的話,我們可以採用國內映象下載:
- 解壓
tar xzvf metricbeat-7.13.4-linux-x86_64.tar.gz
基礎配置
進入解壓後的 Metricbeat 目錄可以看到,安裝目錄的根目錄下如下檔案及資料夾:
$ ls -l
fields.yml
kibana
LICENSE.txt
metricbeat# 完整的配置檔案模板
metricbeat.reference.yml# 預設的配置檔案
metricbeat.yml
Module
modules.d
NOTICE.txt
README.md
我們只修改使用 metricbeat.yml 這個配置檔案。
如果你的 Elasticsearch 和 Kibana 都安裝在同一臺主機上,並配置了預設的埠,
可以跳過此步驟不修改配置,Metricbeat 預設指定了 localhost。
output.elasticsearch:
hosts: ["localhost:9200"]
# 如果 ElasticSearch 啟用了認證需要配置賬號密碼
username: "YOUR_ACCOUNT"
password: "YOUR_PASSWORD"setup.kibana:
host: "localhost:5601"
# 如果 kibana 啟用了認證需要配置賬號密碼
username: "YOUR_ACCOUNT"
password: "YOUR_PASSWORD"
配置 Metricbeat,指定執行的模組。
# 檢視所有支援的模組
./metricbeat modules list # 開啟 system 模組
./metricbeat modules enable system
設定初始化環境,在此之前確保 Elasticsearch 和 Kibana 已經正常執行:
./metricbeat setup -e
上面的命令輸出為:
./metricbeat setup
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
如上所示。
在 setup 這個過程中,它將為 Beat 生成相應的 Dashboard,Index patterns,Index template, 索引生命週期管理策略以及相應的 Ingest pipeline。這個命令的執行時間比較長。需要耐心等待。上面的命令針對一個 Beat 來說,只需要執行一次就可以了。
Docker 方式安裝
我們在機器:192.168.2.14上的虛擬機器linux的centos/7下安裝。
拉取映象
docker pull docker.elastic.co/beats/metricbeat:7.13.4
啟動 Docker 版 Metricbeat
下載映象
我們也可以先啟動docker容器,然後再次設定es或者kibana的地址:
docker run -d --name=metricbeat docker.elastic.co/beats/metricbeat:7.13.4
下載 metricbeat.docker.yml 模板檔案
curl -L -O https://raw.githubusercontent.com/elastic/beats/7.13/deploy/docker/metricbeat.docker.yml
如果出現以下問題:
[vagrant@loaclhost /]$ curl -L -O https://raw.githubusercontent.com/elastic/beats/7.13/deploy/docker/metricbeat.docker.yml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed connect to raw.githubusercontent.com:443; Connection refused
說明我們不能訪問上面的githubusercontent網路,參考:https://github.com/hawtim/blo...
在ip地址查詢地方輸入:raw.githubusercontent.com得出如下結果:
此時我們需要把對應的raw.githubusercontent.com涉及到的地址新增到linux下的hosts檔案:
185.199.108.133 raw.githubusercontent.com
185.199.108.133 user-images.githubusercontent.com
185.199.108.133 avatars2.githubusercontent.com
185.199.108.133avatars1.githubusercontent.com
在新增es跟kibana資訊:
output.elasticsearch:
hosts: '192.168.2.11:9200'
username: 'elastic'
password: 'elastic'
setup.kibana:
host: 192.168.2.14:5601
啟動 metricbeat 容器
docker run -d \
--name=metricbeat \
--user=root \
--volume="$(pwd)/metricbeat.docker.yml:/usr/share/metricbeat/metricbeat.yml:ro" \
--volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
--volume="/sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro" \
--volume="/proc:/hostfs/proc:ro" \
--volume="/:/hostfs:ro" \
docker.elastic.co/beats/metricbeat:7.13.4
metricbeat 配置 整合kibana、 elasticsearch
進入容器
docker exec -it metricbeat bash
啟動 system 和 容器 監控 modules:
metricbeat modules enable system
metricbeat modules enable docker
啟動 Beats
Metricbeat 啟動後會傳送 system metrics 資料到 Elasticsearch。
./metricbeat -e
是不是覺得記憶上面的安裝步驟很麻煩啊?在 Kibana 中,Elastic 已經為我們如何新增資料做了詳細的描述,而且安裝後的版本一定是和你安裝的 Elasticsearch 及Kibana 的版本是一樣的。
具體的操作步驟如下:
Add data(新增資料)
Metrics
在上面顯示瞭如下安裝各種 Metrics 的具體步驟。以 System metrics 為例,在上面的頁面中向下滾動:
在上面,我們選擇所需要的作業系統。再接著按照上面的安裝步驟一步一步向下走。
我們就可以完成所需要的 Beat 的安裝。
檢查收集到的資料
我們首先開啟 Kibana,並啟動 Dashboard:
在上面,我們搜尋 metricbeat system,我們就可以發現已經預置的 Dashboard。我們選擇 [Metricbeat System] Overview ECS:
常見問題
kibana的metricbeat上的Dashboard不展示系統監控資訊
訪問:http://192.168.2.14:5601/api/...出現:
{"statusCode":403,"error":"Forbidden","message":"Access to Fleet API require the superuser role, and for stack security features to be enabled."}
解決方案:
參考:https://www.elastic.co/guide/...
需要配置kibana的安全訪問密碼。
ES設定密碼:
https://blog.csdn.net/qq_3123...
Exiting: data path already locked by another beat. Please make sure that multiple beats are not sharing the same data path (path.data).
進入docker執行的metricbeat容器中之後出現上面問題,
需要重新啟動
kibana的dashboard中無法看到metricbeat部分system資料
原因是我們查詢監控的時候,選擇的是14分鐘,時鐘不一致導致了我們查詢不到最新的展示資訊
參考
https://blog.csdn.net/u011337...
https://blog.csdn.net/weixin_...
Failed to connect to raw.githubusercontent.com port 443: Connection refused 的問題
https://github.com/hawtim/blo...