文章目录
- 场景
- 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,查看日志