文章目錄
- 場景
- docker 部署grafana
- docker-compose部署loki
- 維護配置文件 local-config.yaml
- 維護docker-compose.yml配置
- 啟動
- grafana 添加loki數據源
- springcloud用法舉例
- 查看loki的explore,查看日志
場景
小公司缺少運維崗位,需要研發自己部署日志系統,elk太過笨重,對于研發來說部署也有困難.下面演示下快速部署loki,grafana 以及在springcloud項目的使用方法
docker 部署grafana
docker run -d --name grafana -p 3000:3000 grafana/grafana:latest
docker-compose部署loki
維護配置文件 local-config.yaml
auth_enabled: falseserver:http_listen_port: 3100ingester:lifecycler:ring:kvstore:store: inmemoryreplication_factor: 1chunk_idle_period: 3mchunk_retain_period: 1mlimits_config:reject_old_samples: truereject_old_samples_max_age: 168hallow_structured_metadata: falseschema_config:configs:- from: 2024-12-01store: boltdb-shipper # 使用 boltdb-shipper 作為存儲object_store: filesystemschema: v11 # 選擇受支持的 schema 版本index:prefix: index_period: 24hstorage_config:boltdb_shipper: # 使用 boltdb-shipper 作為存儲后端active_index_directory: /loki/index/activecache_location: /loki/cachefilesystem: # 文件系統配置directory: /loki/chunks # 使用 chunks 存儲目錄compactor:working_directory: /loki/boltdb-shipper-compactortable_manager:retention_deletes_enabled: falseretention_period: 0scommon:path_prefix: /loki # 設置路徑前綴
維護docker-compose.yml配置
version: '3.8'services:loki:image: grafana/loki:latestcontainer_name: lokiports:- "3100:3100"volumes:# 掛載配置文件到容器內- ./local-config.yaml:/etc/loki/local-config.yamlcommand:- '--config.file=/etc/loki/local-config.yaml'
啟動
docker-compose up -d
grafana 添加loki數據源
springcloud用法舉例
- 定義版本管理
<dependency><groupId>com.github.loki4j</groupId><artifactId>loki-logback-appender</artifactId><version>${loki-logback-appender.version}</version></dependency>
- 引入到微服務
<!-- 使用loki管理日志 --><dependency><groupId>com.github.loki4j</groupId><artifactId>loki-logback-appender</artifactId></dependency>
- 在 logback-spring.xml 添加LOKI的appender
<!-- 引入應用名稱 -->
<springProperty name="name" source="spring.application.name"/><!-- Loki輸出器 --><appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender"><http><url>http://100.64.0.4:3100/loki/api/v1/push</url></http><format><label><pattern>application=${name},level=%level</pattern><readMarkers>true</readMarkers></label><message><pattern>{"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}", "level": "%level", "logger": "%logger{36}.%method", "method":"%M", "line":"%line", "thread": "%thread", "message": "%msg%n"}</pattern></message><sortByTime>true</sortByTime></format></appender><!-- 本地環境 --><springProfile name="local"><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="LOKI"/> </root></springProfile>
查看loki的explore,查看日志