Grafana Loki 的日誌數據本身被壓縮並以塊的形式存儲在 S3 或 GCS 等對象存儲中,甚至存儲在本地文件系統中。小索引和高度壓縮的塊簡化了操作並顯著降低了 Loki 的成本。
我們的 Grafana Loki 應用情境已經測試得差不多了,今天就來教大家如何將日誌數據存放在 Azure 儲存體帳戶中的 Blob 吧。
首先到 Azure 建立儲存體並且新增一個容器
切換到存取金鑰頁面,複製您的儲存體帳戶名稱與金鑰機碼。
編輯 Loki 的配置文件
sudo vi /opt/loki/loki-local-config.yaml
文件內容如下
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
path_prefix: /opt/loki
storage:
filesystem:
chunks_directory: /opt/loki/chunks
rules_directory: /opt/loki/rules
replication_factor: 1
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
query_range:
results_cache:
cache:
embedded_cache:
enabled: true
max_size_mb: 100
schema_config:
configs:
- from: "2020-12-11"
index:
period: 24h
prefix: index_
#object_store: filesystem
object_store: azure
schema: v11
store: boltdb-shipper
storage_config:
azure:
# Your Azure storage account name
account_name: your_storage_account_name
# For the account-key, see docs: https://docs.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage?tabs=azure-portal
account_key: your_storage_account_key
# See https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction#containers
container_name: your_container_name
request_timeout: 0
boltdb_shipper:
active_index_directory: /opt/loki/boltdb-shipper-active
cache_location: /opt/loki/boltdb-shipper-cache
cache_ttl: 24h
shared_store: azure
querier:
max_concurrent: 2048
query_scheduler:
max_outstanding_requests_per_tenant: 2048
ruler:
alertmanager_url: http://localhost:9093
記得重啟 Loki 服務
sudo service loki restart
可以看到 Loki 已經將資料存放到 Azure 儲存體中
最後 Grafana 儀表板也可以正常顯示日誌分析數據
根據最佳實踐指出,當 Loki 把壓縮的數據塊 chunk_target_size 填滿又或者數據塊的年齡超過 max_chunk_age 時,該數據塊就會變成唯讀模式不再寫入資料,進而達到讀寫分離增加查詢的效能。
您需要 5–10 倍或 7.5–10MB 的原始日誌數據來填充 1.5MB 的塊。
我們可以把這些唯讀的數據塊移至非經常性儲存體來節省 Azure 費用
切換到生命週期管理,新增規則。
規則名稱填入 Move to cool access tiers for blob data,下一步。
設定上次修改時間超過 1 天,移至非經常性儲存體。
今天的分享就到這邊,希望有幫助到大家。
參考文件