摘要:本篇文章介紹瞭如何經過數人云部署一套標準的 ELK 日誌收集系統。第一步,將主機組織成集羣;第二步,發佈 ElasticSearch 實例;第三步,發佈 Kibana 實例;第四步,發佈 Logstash 實例到待收集日誌的應用 server ;第五步,快速擴展/減小 ElasticSearch , Kibana 實例數(可選)。前端
在具體介紹部署步驟前,讓咱們先來了解下 ELK 是什麼。 ELK 是 ElasticSearch+Logstash+Kibana 的縮寫, ElasticSearch 是一款基於 Lucene 的分佈式搜索引擎,大名鼎鼎的 GitHub 就是由它提供的搜索。 Logstash 是一款分佈式日誌收集系統,是一個應用程序日誌、事件的傳輸、處理、管理和搜索的平臺,能夠用來統一對應用程序日誌進行收集管理,提供 Web 接口用於查詢和統計。 Kibana 是一個基於瀏覽器頁面的 ElasticSearch 前端展現工具,內置了各類查詢和聚合操做,並擁有圖形化展現功能。linux
咱們知道,日誌記錄了各類重要信息,如應用程序的 log 記錄的 error,warn 級別的 log,在量小的狀況下,咱們固然能夠直接 vi+awk+sed+grep 定位緣由,而當數量很是大,且須要各類聚合或基於多個異常關鍵詞的組合搜索時,就是 ELK 大顯身手的地方!能夠說, ELK 是運維界的明星,很是適合應用級的實時監控和核心服務預警。git
下面就讓咱們來看看如何經過數人云部署一套標準的 ELK 日誌收集系統吧。github
首先,須要訪問 數人云 註冊並登陸系統,而後進入主機的準備工做。假設有7臺主機,這些主機能夠是鏈接互聯網的私有主機,也能夠是阿里雲、Ucloud、 AWS、Azure、首都在線、華爲雲等公有云上購買的任意一臺雲主機。這7臺主機之間須要網絡互通並可以訪問外網。7臺主機的規劃及配置信息以下:
而後,登陸帳戶,在集羣管理中,點擊建立羣組,填寫集羣名稱( elk ),選擇 3 Master 集羣,點擊完成。 添加主機後,如圖點擊右上角下拉菜單,選擇添加主機。
點擊已有主機下面的按鈕 Ubuntu 或者 CentOS ,填寫主機名稱,並在主機上根據"鏈接主機"的提示進行操做。docker
選擇主機組件:前 3 臺主機( 10.3.10.9 [1-3] )爲 Master 節點, 無可選組件;在添加主機 10.3.10.94 時須要將可選組件中的內部代理勾選上。ubuntu
登陸到將要添加的主機終端瀏覽器
`ssh ubuntu@10.3.10.91 `
安裝 Docker (若主機已安裝 Docker ,這步可跳過)安全
`curl -sSL https://get.docker.com/ | sh `
安裝 Agent :點擊頁面按鈕,點擊「生成命令」生成安裝命令並粘貼到主機終端運行。bash
`sudo -H OMEGA_ENV=prod bash -c "$(curl -Ls https://raw.githubusercontent.com/Dataman-Cloud/agent-installer/master/install-agent.sh)" -s 92a0c8b287d34445b03f8518ce688e66 `
按提示執行以上兩步後,點擊"完成"即成功添加主機。網絡
須要注意的是,因爲數人云默認將加入集羣的前3臺機器做爲 master 節點,爲了符合前期規劃,請確保主機10.3.10.91, 10.3.10.92, 10.3.10.93 首先被加入到集羣中。同時,向同一集羣添加的主機應存在於同一網段內,暫不支持跨公網的主機組建集羣。此外,因爲數人云在主機鏈接後會向主機上安裝基礎服務,因此主機須要一段時間進行初始化,依主機所處的網絡環境,主機初始化的時間有所不一樣。
主機添加完成後,檢查主機運行是否正常,如圖:
咱們將經過數人云將 ES 的 Docker 鏡像以 HOST 模式部署到咱們規劃的主機 10.3.10.95 和 10.3.10.96 上。具體操做以下:
選擇"應用管理"中的"新建應用",如圖:
新建 ES 應用:
填寫應用名稱: es
選擇集羣:elk
添加應用鏡像地址:index.shurenyun.com/dataman/jdk7-elasticsearch-1.4.5
填寫鏡像版本:2015112811
網絡模式:HOST 模式
主機選擇:10.3.10.95,10.3.10.96
容器目錄:容器內的掛載目錄 /data/app/elasticsearch
主機目錄:主機上的掛載目錄 /data (該目錄是咱們主機數據盤所在的目錄)
選擇容器規格: CPU:0.8 內存:4096MB
容器個數:2 而且勾選 1 容器: 1 主機
高級設置:
添加應用地址:
* 應用端口: 9200 * 類型: 對內 * 協議: TCP * 地址: 10.3.10.94:9998
環境變量
* Key: CLUSTERNAME * Value: dataman-es
環境變量
* Key: ZOOKEEPER_ADDRESS * Value: 10.3.10.91:2181,10.3.10.92:2181,10.3.10.93:2181
填寫完成後,點擊建立。 如圖:
第一次向集羣部署 ES 時因爲本地沒有 Docker 鏡像 index.shurenyun.com/dataman/jdk7-elasticsearch-1.4.5,集羣須要大約 1-2 分鐘去拉取鏡像(可能更長時間)。咱們能夠在 ES 的應用詳情頁看到相應的狀態,以及事件等。
點擊新建應用,新建 Kibana 應用:
填寫應用名稱: kibana
選擇集羣:elk
添加應用鏡像地址:index.shurenyun.com/dataman/kibana
填寫鏡像版本:4.1.4
網絡模式:網橋模式
選擇主機: ALL
容器規格: CPU:0.2 內存:256 MB
容器個數:1
高級設置:
應用地址:
* 應用端口: 5601 * 類型: 對內 * 協議: HTTP * 地址: http://10.3.10.94:5601
環境變量:
* KEY: ELASTICSEARCH_URL * VALUE: http://10.3.10.94:9998
注:Kibana 須要經過環境變量 ELASTICSEARCH_URL 來肯定 ElasticSearch 的地址,因爲添加主機時咱們已經設置內部代理的節點爲10.3.10.94,而且在添加 ES 應用時將其端口映射到了內部代理端口 9998 , 因此這裏咱們只須要設置 ELASTICSEARCH_URL=http://10.3.10.94:9998 便可使得 Kibana 發現 ES 實例。
來到 Kibana 的應用詳情頁,若應用狀態爲運行中即應用已正常運行。
打開瀏覽器,訪問地址:http://10.3.10.94:5601(可能須要爲你的瀏覽器設置內網代理),看到以下頁面,則說明 kibana 應用已經成功運行。
點擊新建應用,新建 Logstash 應用:
填寫應用名稱: logstash
選擇集羣:elk
添加應用鏡像地址:index.shurenyun.com/dataman/logstash
填寫鏡像版本:2.1
網絡模式:網橋模式
選擇主機: 10.3.10.97
注:因爲上面咱們假設應用運行在了主機 10.3.10.97 上,因此這裏咱們限制 Logstash 在該主機上收集日誌
主機/容器目錄
數據掛載目錄: /var/log/app
容器目錄: /var/log/app
注: 這裏咱們假設用戶的應用(待採集日誌的應用)日誌存儲在了主機目錄 /var/log/app 下面。
容器規格: CPU:0.3 內存:256 MB
容器個數:1
高級設置:
CMD:
`logstash -e 'input { file { type => "linux-syslog" path => ["/var/log/app/*.log"]}} output { elasticsearch { hosts => "10.3.10.94:9998" }}'`
一樣,等待 1-2 分鐘後 Logstash 將被部署到應用 server 上而且開始收集日誌, 用戶能夠經過訪問 Kibana 的頁面來發掘相應的日誌信息。
爲了提升集羣的資源利用率,咱們可能須要根據負載來擴展或者減小 ElasticSearch , Kibana 等的實例數,在數人云的應用列表頁或者應用詳情頁, 點擊擴展按鈕,便可快速調整相應應用的實例數。
經過前面的五步實戰,你們都嘗試了用數人云去部署 ELK 系統,總結來講,使用數人云去部署 ELK 主要有三大優點:第一,部署方便: 用戶的應用無需任何改造,只須要提供日誌的存儲目錄;第二,可擴展: 若是日誌存儲端( ElasticSearch )須要添加更多的實例, 用戶只須要向集羣中添加更多的機器, 並在應用列表頁點擊擴展相應的 ELK 便可;第三,安全: 用戶應用的全部日誌數據都存儲在了集羣內網的 ES 服務集羣中。