您好,登錄后才能下訂單哦!
本篇內容主要講解“Loki怎么配置使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Loki怎么配置使用”吧!
Kubernetes
已經成為編排領域事實上的標準,同時Prometheus
也成為基于Kubernetes
平臺之上、監控領域的標配。Prometheus
能夠收集業務metrics
數據,Grafana
界面展示,AlertManager
告警,一站式的監控框架就此誕生。通過這一套框架可以在線監控服務運行狀態,如果不正常,能夠通過各種途徑通知給相關人員;相關人員通過查看告警信息,通過日志分析出現問題具體原因。
如何查看日志?
我們可以進入Pod
中查詢,如果Pod
進程已經崩潰,那么將無法進入容器內部,沒關系,Pod
所在宿主機掛載的日志文件,你不得不查詢已經崩潰Pod
所在宿主機,然后通過命令行進入宿主機中查詢日志,這樣的話如果碰到一個服務多個副本運行在同一個節點上,那么可能會出現日志交叉打印的情況,服務崩潰還沒有解決,你已經崩潰了,其實出現這種問題的真正原因是Kubernetes
超強的自動橫向擴容能力,你可能無法準確預測到服務副本數量和所在節點,大多數公司是基于ELK
(日志收集解決方案)搭建一套日志收集和查看平臺,就這一套平臺不僅耗費資源,而且需要Kibina
和Grafana
兩套平臺之間頻繁切換,影響工作效率,為了解決此問題Loki
問世。
從此,一站式的監控、告警、日志分析平臺解決了我們不用頻繁切換系統的麻煩。
基于Loki
的完整的日志收集框架需要三部分完成
Promtail
:日志收集客戶端,以DaemonSet
方式運行在各個計算節點上、當然也可以通過sidercar
方式運行在Pod
內部。Promtail
本身可以替換為fluent-bit
或者fluentd
Loki
:日志收集服務端,接收來自Promtail
發送的日志
Grafana
:日志展示
Loki
是一個高可用、可擴展、多租戶的日志收集系統,受Prometheus
啟發而出現,但Loki
側重點在于日志并且通過客戶端推送獲取日志信息,Prometheus
更多在于監控指標并且通過拉取獲取指標信息,相比于其它日志系統具有以下優勢:
非常節省資源,提供日志壓縮功能。
沒有把全文添加到索引中,而是把標簽加入到索引中,對于用過Prometheus
的人來說,使用起來非常順手。
非常適合存儲和搜索Kubernetes Pod
的日志,因為它能夠把Pod
所在的節點信息、容器信息、命名空間、標簽添加到索引中。
原生支持Grafana 6.0
以上版本。
它的主要功能是接收來自客戶端的日志,Distributor
接收到日志之后,首先會校驗正確性,校驗通過之后會把它劃分為多個批次,并發送給Ingester
。每個發送過來的流都對應一個Ingester
,當日志發送到Distributor
之后,Distributor
會根據hash
和元數據算法計算應該路由到那個Ingester
上。
其中Distributor
和Ingester
之間是通過gRPC
通信,都是無狀態應用,支持橫向擴展。
它的主要功能是接收來自Distributor
發送的日志并寫入到后端存儲中,其中后端存儲可以是DynamoDB、 S3、 Cassandra、FS
等等。其中需要注意,ingester
會嚴格驗證接收到的日志行是以時間戳升序接收的(即,每個日志的時間戳都比之前的日志晚一些)。
當ingester
收到不遵循此順序的日志時,日志行將被拒絕,并返回錯誤(Entry out of order
)。
總結起來說,首先distributor
會接受來自外部數據流請求發送,每個數據流都有自己的一致性hash
,然后distributor
通過計算hash
,把數據流發送到正確的ingester
上面;ingester
會創建chunk
或者或者追加數據到已存在chunk
上面(必須保證租戶和標簽唯一),最后完成數據存儲。
Chunks
是Loki
長期數據存儲,旨在提供查詢和寫入操作,支持DynamoDB、Bigtable、 Cassandra、S3、FS
(單機)。index
是根據chunks
中元數據生成的索引,支持DynamoDB、Bigtable、 Apache Cassandra、BoltDB
(單機)。默認情況下Chunks
使用FS
本地文件系統存儲,文件系統存儲存在一定的限制,大約可以存儲550W
個chunk
,超過這個限制可能會有問題。
Index
使用BoltDB
存儲,BoltDB
是相當出名的Go
實現的KV
讀寫引擎, 用戶有etcd
等。如果需要支持高可用部署,則需要引入大數據組件
Ingesters
內存中查詢數據,然后再回退到后端存儲中查詢數據,支持并行化查詢和數據緩存。Loki
的配置比較多,配置在/etc/loki/loki.yaml
中,如果需要優化存儲或者日志接收出現異常問題時可能需要修改配置。比如Loki
在接收客戶端發送日志可能會出現發送速率超過限制,這個時候可能需要修改ingestion_rate_mb
。
使用Loki
的過程中,可能會疑惑,為了提升查詢速度,是不是應該使用盡可能多的標簽,因為Loki
本身的索引是由標簽生成的,使用其它日志系統的情況下,可以通過添加盡可能多的索引解決查詢速度慢的問題,這是常見的思維方式。然而Loki
數據存儲設計思想是使用盡可能少的索引,因為Loki
本身會把數據存儲為多個數據塊,并通過標簽中的索引匹配數據塊。如果你覺得查詢速度慢,可以重新配置分片大小和間隔,也可以通過配置的方式使用盡可能多的查詢器并行查詢。較小的索引和并行蠻力查詢與較大/較快的全文本索引之間的這種權衡使Loki
與其他系統相比可以節省成本。操作大索引的成本和復雜性很高,而且索引一旦建立,通常是固定的,如果您要查詢或不查詢,則全天24
小時付費,這種設計的優點意味著您可以決定要擁有查詢要求是什么,可以根據需要進行更改,同時數據被大量壓縮并存儲在低成本對象存儲中,以將固定的運營成本降至最低,同時仍然具有令人難以置信的快速查詢功能,Loki
跟云原生思想也是契合的。
Loki
的安裝方式大致有四種,TK
(官方推薦)、helm、docker
、二進制部署,我是通過k8s statefulset
方式編排運行的。具體請參考:
https://github.com/grafana/loki/blob/v1.5.0/docs/installation/README.md
看到這個名字就會想到Prometheus
,其實它們設計思想也是相通的,它作為一個客戶端端代理運行在計算節點上,當然也可以通過邊車模式運行在Pod
中,主要功能是收集日志、為日志流添加標簽、推送日志。
clients
:用于配置Loki
服務端地址
positions
:收集日志文件位置,在Kubernetes
中服務以Pod
形式運行,Pod
生命周期有可能隨時結束,所以需要記錄日志收集位置并掛載到宿主機,通過位置記錄方便下次繼續收集。
scrape_configs
:日志文件收集配置,支持收集syslog、jouanl、docker、Kubernetes
、以及日志文件。根據收集需求,自行配置。
推薦使用DaemonSet
方式運行,具體參考官方yaml
編排示例:
https://github.com/grafana/loki/blob/v1.5.0/docs/clients/promtail/installation.md
不在贅述。
Grafana
版本應該使用6.0
以上版本。
admin
賬號登錄
Grafana
實例Configuration > Data Sources
+ Add data source
按鈕Loki
服務地址,如果在本地輸入
http://localhost:3100
或者
Loki svc
地址:
https://loki:3100
Explore
,會提示
Log labels
搜索按鈕,點擊即可搜索。到此,相信大家對“Loki怎么配置使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。