文章目录
- 场景
- 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: false
server:
http_listen_port: 3100
ingester:
lifecycler:
ring:
kvstore:
store: inmemory
replication_factor: 1
chunk_idle_period: 3m
chunk_retain_period: 1m
limits_config:
reject_old_samples: true
reject_old_samples_max_age: 168h
allow_structured_metadata: false
schema_config:
configs:
- from: 2024-12-01
store: boltdb-shipper # 使用 boltdb-shipper 作为存储
object_store: filesystem
schema: v11 # 选择受支持的 schema 版本
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper: # 使用 boltdb-shipper 作为存储后端
active_index_directory: /loki/index/active
cache_location: /loki/cache
filesystem: # 文件系统配置
directory: /loki/chunks # 使用 chunks 存储目录
compactor:
working_directory: /loki/boltdb-shipper-compactor
table_manager:
retention_deletes_enabled: false
retention_period: 0s
common:
path_prefix: /loki # 设置路径前缀
维护docker-compose.yml配置
version: '3.8'
services:
loki:
image: grafana/loki:latest
container_name: loki
ports:
- "3100:3100"
volumes:
# 挂载配置文件到容器内
- ./local-config.yaml:/etc/loki/local-config.yaml
command:
- '--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,查看日志