摘要:使用自建日志解決方案下面我們介紹下如何使用來搭建日志解決方案。根據(jù)配置文件創(chuàng)建一個名為的,如下在集群部署。配置在之前部署時,由于我們已經(jīng)將加入到中,已經(jīng)可以對的日志實現(xiàn)監(jiān)控采集。
下面我們介紹下如何使用Elasticsearch+Filebeat+Kibana來搭建UK8S日志解決方案。
Elasticsearch(ES)是一個基于Lucene構(gòu)建的開源、分布式、RESTful接口的全文搜索引擎。Elasticsearch還是一個分布式文檔數(shù)據(jù)庫,其中每個字段均可被索引,而且每個字段的數(shù)據(jù)均可被搜索,ES能夠橫向擴展至數(shù)以百計的服務器存儲以及處理PB級的數(shù)據(jù)。可以在極短的時間內(nèi)存儲、搜索和分析大量的數(shù)據(jù)。通常作為具有復雜搜索場景情況下的核心發(fā)動機
Elasticsearch運行時要求vm.max_map_count內(nèi)核參數(shù)必須大于262144,因此開始之前需要確保這個參數(shù)正常調(diào)整過。
sysctl -w vm.max_map_count=262144
也可以在ES的的編排文件中增加一個initContainer來修改內(nèi)核參數(shù),但這要求kublet啟動的時候必須添加了--allow-privileged參數(shù),uk8s默認開啟了該參數(shù),在后面的示例中采用initContainer的方式。
ES的節(jié)點Node可以分為幾種角色:
Master-eligible node,是指有資格被選為Master節(jié)點的Node,可以統(tǒng)稱為Master節(jié)點。設置node.master: true
Data node,存儲數(shù)據(jù)的節(jié)點,設置方式為node.data: true。
Ingest node,進行數(shù)據(jù)處理的節(jié)點,設置方式為node.ingest: true。
Trible node,為了做集群整合用的。
對于單節(jié)點的Node,默認是master-eligible和data,對于多節(jié)點的集群,需要根據(jù)需求仔細規(guī)劃每個節(jié)點的角色。
為了方便演示,我們把本文所有的對象資源都放置在一個名為 elk 的 namespace 下面,所以我們需要添加創(chuàng)建一個 namespace:
kubectl create namespace elk
不區(qū)分節(jié)點角色
這種模式下,集群中的節(jié)點不做角色的區(qū)分,配置文件請參考elk-cluster.yaml
bash-4.4# kubectl apply -f elk-cluster.yaml
deployment.apps/kb-single created
service/kb-single-svc created
statefulset.apps/es-cluster created
service/es-cluster-nodeport created
service/es-cluster created
bash-4.4# kubectl get po -n elk
NAME READY STATUS RESTARTS AGE
es-cluster-0 1/1 Running 0 2m18s
es-cluster-1 1/1 Running 0 2m15s
es-cluster-2 1/1 Running 0 2m12s
kb-single-69ddfc96f5-lr97q 1/1 Running 0 2m18s
bash-4.4# kubectl get svc -n elk
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
es-cluster ClusterIP None 9200/TCP9300/TCP 2m20s
es-cluster-nodeport NodePort 172.17.177.40 9200:31200/TCP9300:31300/TCP 2m20s
kb-single-svc LoadBalancer 172.17.129.82 117.50.40.48 5601:38620/TCP 2m20s
bash-4.4#
通過kb-single-svc的EXTERNAL-IP,便可以訪問Kibana。
區(qū)分節(jié)點角色
如果需要區(qū)分節(jié)點的角色,就需要建立兩個StatefulSet部署,一個是Master集群,一個是Data集群。Data集群的存儲示例中簡單使用了emptyDir,可以根據(jù)需要使用localStorage或者hostPath,關(guān)于存儲的介紹,可以參考Kubernetes官網(wǎng)。這樣就可以避免Data節(jié)點在本機重啟時發(fā)生數(shù)據(jù)丟失而重建索引,但是如果發(fā)生遷移的話,如果想保留數(shù)據(jù),只能采用共享存儲的方案了。具體的編排文件在這里elk-role-cluster.yaml
bash-4.4# kubectl apply -f elk-role-cluster.yaml
deployment.apps/kb-single created
service/kb-single-svc created
statefulset.apps/es-cluster created
statefulset.apps/es-cluster-data created
service/es-cluster-nodeport created
service/es-cluster created
bash-4.4# kubectl get po -n elk
NAME READY STATUS RESTARTS AGE
es-cluster-0 1/1 Running 0 53s
es-cluster-1 1/1 Running 0 50s
es-cluster-2 1/1 Running 0 47s
es-cluster-data-0 1/1 Running 0 53s
es-cluster-data-1 1/1 Running 0 50s
es-cluster-data-2 1/1 Running 0 47s
kb-single-69ddfc96f5-lxsn8 1/1 Running 0 53s
bash-4.4# kubectl get statefulset -n elk
NAME READY AGE
es-cluster 3/3 2m
es-cluster-data 3/3 2m
bash-4.4# kubectl get svc -n elk
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
es-cluster ClusterIP None 9200/TCP9300/TCP 44s
es-cluster-nodeport NodePort 172.17.63.138 9200:31200/TCP9300:31300/TCP 44s
kb-single-svc LoadBalancer 172.17.183.59 117.50.92.74 5601:32782/TCP
在進行日志收集的過程中,我們首先想到的是使用Logstash,因為它是ELK stack中的重要成員,但是在測試過程中發(fā)現(xiàn),Logstash是基于JDK的,在沒有產(chǎn)生日志的情況單純啟動Logstash就大概要消耗500M內(nèi)存,在每個Pod中都啟動一個日志收集組件的情況下,使用logstash有點浪費系統(tǒng)資源,因此我們更推薦一個輕量級的日志采集工具Filebeat,經(jīng)測試多帶帶啟動Filebeat容器大約只會消耗12M內(nèi)存。
具體的編排文件可以參考filebeat.yaml,本例采用DaemonSet的方式編排。
bash-4.4# kubectl apply -f filebeat.yaml
configmap/filebeat-config created
daemonset.extensions/filebeat created
clusterrolebinding.rbac.authorization.k8s.io/filebeat created
clusterrole.rbac.authorization.k8s.io/filebeat created
serviceaccount/filebeat created
編排文件中將filebeat使用到的配置ConfigMap掛載到/home/uk8s-filebeat/filebeat.yaml,實際啟動filebeat時使用該自定義配置。有關(guān)filebeat的配置可以參見 Configuring Filebeat中相應的說明。
Filebeat命令行參數(shù)可以參考 Filebeat Command Reference,本例中使用到的參數(shù)說明如下:
指定Filebeat使用的配置文件,如果不指定則使用默認的配置文件/usr/share/filebeat/filebeat.yaml
為指定的selectors打開調(diào)試模式, selectors是以逗號分隔的列表,-d "*" 表示對所有組件進行調(diào)試。在實際生產(chǎn)環(huán)境中請關(guān)閉該選項,初次配置時打開可以有效排錯。
指定日志輸出到標準錯誤輸出,關(guān)閉默認的syslog/file輸出
由于Filebeat對message的過濾功能有限,在實際生產(chǎn)環(huán)境中通常會結(jié)合logstash。這種架構(gòu)中Filebeat作為日志收集器,將數(shù)據(jù)發(fā)送到Logstash,經(jīng)過Logstash解析、過濾后,將其發(fā)送到Elasticsearch存儲,并由Kibana呈獻給用戶。
創(chuàng)建Logstash的配置文件,可以參考elk-log.conf,更詳細的配置信息見Configuring Logstash。大部分Logstash配置文件都可以分為3部分:input filter 和 output,示例配置文件中指定Logstash從Filebeat獲取數(shù)據(jù),并輸出到Elasticsearch。
bash-4.4# kubectl create configmap elk-pipeline-config --from-file=elk-log.conf --namespace=elk
configmap/elk-pipeline created
bash-4.4# kubectl get configmap -n elk
NAME DATA AGE
elk-pipeline-config 1 9s
filebeat-config 1 21m
編寫 logstash.yaml ,在yaml文件中掛載之前創(chuàng)建的ConfigMap。需要注意的是,此處使用了logstash-oss鏡像,關(guān)于oss和non-oss版本的區(qū)別請參考鏈接。
bash-4.4# kubectl apply -f logstash.yaml
deployment.extensions/elk-log-pipeline created
service/elk-log-pipeline created
bash-4.4# kubectl get po -n elk
NAME READY STATUS RESTARTS AGE
elk-log-pipeline-55d64bbcf4-9v49w 1/1 Running 0 50m
bash-4.4# kubectl logs -f elk-log-pipeline-55d64bbcf4-9v49w -n elk
[2019-03-19T08:56:03631][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
...
[2019-03-19T08:56:09845][INFO ][logstash.inputs.beats ] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
[2019-03-19T08:56:09934][INFO ][logstash.pipeline ] Pipeline started succesfully {:pipeline_id=>"main" :thread=>"#"}
[2019-03-19T08:56:10034][INFO ][org.logstash.beats.Server] Starting server on port: 5044
items:
- apiVersion: v1
kind: ConfigMap
metadata:
...
data:
filebeat.yml: |
...
output.logstash:
hosts: ["elk-log-pipeline:5044"]
...
前面我們已經(jīng)部署好了Filebeat用于采集應用日志,并將采集到的日志輸出到Elasticsearch,下面我們以一個nginx應用為例,來測試日志能否正常采集、索引、展示。
創(chuàng)建一個Nginx的部署和LoadBalancer服務,這樣可以通過eip訪問Nginx。配置文件請參考nginx.yaml,我們將Nginx訪問日志的輸出路徑以hostPath的形式掛載到宿主的/var/log/nginx/路徑下。
bash-4.4# kubectl apply -f nginx.yaml
deployment.apps/nginx-deployment unchanged
service/nginx-cluster configured
bash-4.4# kubectl get svc -n elk nginx-cluster
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-cluster LoadBalancer 172.17.153.144 117.50.25.74 5680:48227/TCP 19m
bash-4.4# kubectl get po -n elk -l app=nginx
NAME READY STATUS RESTARTS AGE
nginx-deployment-6c858858d5-7tcbx 1/1 Running 0 36m
nginx-deployment-6c858858d5-9xzh8 1/1 Running 0 36m
在之前部署Filebeat時,由于我們已經(jīng)將/var/log/nginx/加入到inputs.paths中,F(xiàn)ilebeat已經(jīng)可以對nginx的日志實現(xiàn)監(jiān)控采集。
filebeat.modules:
- module: system
filebeat.inputs:
- type: log
paths:
- /var/log/containers/*.log
- /var/log/messages
- /var/log/nginx/*.log
- /var/log/*
symlinks: true
include_lines: [hyperkube]
output.logstash:
hosts: ["elk-log-pipeline:5044"]
logging.level: info
index: filebeat-
實時文檔歡迎訪問https://docs.ucloud.cn/uk8s/log/elastic_filebeat_kibana_solution
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/126275.html
摘要:詳細請見產(chǎn)品價格產(chǎn)品概念使用須知名詞解釋漏洞修復記錄集群節(jié)點配置推薦模式選擇產(chǎn)品價格操作指南集群創(chuàng)建需要注意的幾點分別是使用必讀講解使用需要賦予的權(quán)限模式切換的切換等。UK8S概覽UK8S是一項基于Kubernetes的容器管理服務,你可以在UK8S上部署、管理、擴展你的容器化應用,而無需關(guān)心Kubernetes集群自身的搭建及維護等運維類工作。了解使用UK8S為了讓您更快上手使用,享受UK...
摘要:使用日志插件功能推出了一個新的插件功能,旨在幫助用戶快速部署集群所需要的相關(guān)插件。安裝完成后可以在控制臺看到日志儀表盤,查看組件健康狀態(tài)日志信息統(tǒng)計。安裝完成后可以在中進行集群內(nèi)部日志查詢,集群其他日志查詢請至集群提供的進行查詢。使用UK8S日志插件功能UK8S推出了一個新的插件功能,旨在幫助用戶快速部署UK8S集群所需要的相關(guān)插件。使用須知支持UK8S版本:1.15.5、1.14.6(20...
摘要:宋體自年被開源以來,很快便成為了容器編排領(lǐng)域的標準。宋體年月,樂心醫(yī)療的第一個生產(chǎn)用集群正式上線。所以于年推出后,樂心醫(yī)療的運維團隊在開會討論之后一致決定盡快遷移到。Kubernetes 自 2014 年被 Google 開源以來,很快便成為了容器編排領(lǐng)域的標準。因其支持自動化部署、大規(guī)模可伸縮和容器化管理等天然優(yōu)勢,已經(jīng)被廣泛接納。但由于 Kubernetes 本身的復雜性,也讓很多企業(yè)的...
摘要:宋體本文從拉勾網(wǎng)的業(yè)務架構(gòu)日志采集監(jiān)控服務暴露調(diào)用等方面介紹了其基于的容器化改造實踐。宋體此外,拉勾網(wǎng)還有一套自研的環(huán)境的業(yè)務發(fā)布系統(tǒng),不過這套發(fā)布系統(tǒng)未適配容器環(huán)境。寫在前面 拉勾網(wǎng)于 2019 年 3 月份開始嘗試將生產(chǎn)環(huán)境的業(yè)務從 UHost 遷移到 UK8S,截至 2019 年 9 月份,QA 環(huán)境的大部分業(yè)務模塊已經(jīng)完成容器化改造,生產(chǎn)環(huán)境中,后臺管理服務已全部遷移到 UK8...
摘要:添加接收人監(jiān)控中心支持添加郵箱及微信兩種告警,需要注意的是,添加郵箱告警的話,需要預先配置發(fā)件服務器。由于監(jiān)控中心配置了一條告警規(guī)則,只要企業(yè)微信的信息填寫正確,一般分鐘以內(nèi)均可從企業(yè)微信中獲取到告警信息。監(jiān)控中心概述監(jiān)控中心是UK8S提供的產(chǎn)品化監(jiān)控方案,提供基于Prometheus的產(chǎn)品解決方案,涵蓋Prometheus集群的全生命周期管理,以及告警規(guī)則配置、報警設置等功能,省去了自行搭...
閱讀 3540·2023-04-25 20:09
閱讀 3743·2022-06-28 19:00
閱讀 3064·2022-06-28 19:00
閱讀 3087·2022-06-28 19:00
閱讀 3178·2022-06-28 19:00
閱讀 2883·2022-06-28 19:00
閱讀 3051·2022-06-28 19:00
閱讀 2641·2022-06-28 19:00