再见笨重的ELK!这套轻量级日志收集方案要火!

优采云 发布时间: 2022-05-21 01:39

  再见笨重的ELK!这套轻量级日志收集方案要火!

  之前一直使用的日志收集方案是ELK,动辄占用几个G的内存,有些配置不好的服务器有点顶不住!最近发现一套轻量级日志收集方案:Loki+Promtail+Grafana(简称LPG), 几百M内存就够了,而且界面也挺不错的,推荐给大家!

  简介

  LPG日志收集方案内存占用很少,经济且高效!它不像ELK日志系统那样为日志建立索引,而是为每个日志流设置一组标签。下面分别介绍下它的核心组件:

  

  日志收集流程图安装

  实现这套日志收集方案需要安装Loki、Promtail、Grafana这些服务,直接使用docker-compose来安装非常方便。

  version: "3"<br /><br />services:<br />  # 日志存储和解析<br />  loki:<br />    image: grafana/loki<br />    container_name: lpg-loki<br />    volumes:<br />      - /mydata/loki/:/etc/loki/<br />    # 修改loki默认配置文件路径<br />    command: -config.file=/etc/loki/loki.yml<br />    ports:<br />      - 3100:3100<br /><br />  # 日志收集器<br />  promtail:<br />    image: grafana/promtail<br />    container_name: lpg-promtail<br />    volumes:<br />      # 将需要收集的日志所在目录挂载到promtail容器中<br />      - /mydata/app/mall-tiny-loki/logs/:/var/log/<br />      - /mydata/promtail:/etc/promtail/<br />    # 修改promtail默认配置文件路径<br />    command: -config.file=/etc/promtail/promtail.yml<br /><br />  # 日志可视化<br />  grafana:<br />    image: grafana/grafana<br />    container_name: lpg-grafana<br />    ports:<br />      - 3000:3000<br />

  auth_enabled: false<br /><br />server:<br />  http_listen_port: 3100<br /><br />ingester:<br />  lifecycler:<br />    address: 127.0.0.1<br />    ring:<br />      kvstore:<br />        store: inmemory<br />      replication_factor: 1<br />    final_sleep: 0s<br />  chunk_idle_period: 1h       # Any chunk not receiving new logs in this time will be flushed<br />  max_chunk_age: 1h           # All chunks will be flushed when they hit this age, default is 1h<br />  chunk_target_size: 1048576  # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first<br />  chunk_retain_period: 30s    # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m)<br />  max_transfer_retries: 0     # Chunk transfers disabled<br /><br />schema_config:<br />  configs:<br />    - from: 2020-10-24<br />      store: boltdb-shipper<br />      object_store: filesystem<br />      schema: v11<br />      index:<br />        prefix: index_<br />        period: 24h<br /><br />storage_config:<br />  boltdb_shipper:<br />    active_index_directory: /loki/boltdb-shipper-active<br />    cache_location: /loki/boltdb-shipper-cache<br />    cache_ttl: 24h         # Can be increased for faster performance over longer query periods, uses more disk space<br />    shared_store: filesystem<br />  filesystem:<br />    directory: /loki/chunks<br /><br />compactor:<br />  working_directory: /loki/boltdb-shipper-compactor<br />  shared_store: filesystem<br /><br />limits_config:<br />  reject_old_samples: true<br />  reject_old_samples_max_age: 168h<br /><br />chunk_store_config:<br />  max_look_back_period: 0s<br /><br />table_manager:<br />  retention_deletes_enabled: false<br />  retention_period: 0s<br /><br />ruler:<br />  storage:<br />    type: local<br />    local:<br />      directory: /loki/rules<br />  rule_path: /loki/rules-temp<br />  alertmanager_url: http://localhost:9093<br />  ring:<br />    kvstore:<br />      store: inmemory<br />  enable_api: true<br />

  server:<br />  http_listen_port: 9080<br />  grpc_listen_port: 0<br /><br />positions:<br />  filename: /tmp/positions.yaml<br /><br />clients:<br />  - url: http://loki:3100/loki/api/v1/push<br /><br />scrape_configs:<br />- job_name: system<br />  static_configs:<br />  - targets:<br />      - localhost<br />    labels:<br />      job: varlogs<br />      __path__: /var/log/*log<br />

  docker-compose up -d<br />

  [root@local-linux lpg]# docker ps |grep lpg<br />64761b407423        grafana/loki                            "/usr/bin/loki -conf…"   3 minutes ago       Up 3 minutes        0.0.0.0:3100->3100/tcp                           lpg-loki<br />67f0f0912971        grafana/grafana                         "/run.sh"                3 minutes ago       Up 3 minutes        0.0.0.0:3000->3000/tcp                           lpg-grafana<br />f2d78eb188d1        grafana/promtail                        "/usr/bin/promtail -…"   3 minutes ago       Up 3 minutes                                                         lpg-promtail<br />

  使用

  接下来我们将使用LPG日志收集系统来收集SpringBoot应用的日志,SpringBoot应用基本不用做特殊配置。

  spring:<br />  application:<br />    name: mall-tiny-loki<br /><br />logging:<br />  path: /var/logs<br />  level:<br />    com.macro.mall.tiny: debug<br />

  docker run -p 8088:8088 --name mall-tiny-loki \<br />-v /etc/localtime:/etc/localtime \<br />-v /mydata/app/mall-tiny-loki/logs:/var/logs \<br />-e TZ="Asia/Shanghai" \<br />-d mall-tiny/mall-tiny-loki:1.0-SNAPSHOT<br />

  

  

  

  

  总结

  本文主要介绍了LPG日志系统的搭建及使用它收集SpringBoot应用的日志,LPG日志收集方案确实非常轻量级,性能也不错!不过如果你有对日志进行全文搜索的需求的话,还是得使用ELK系统。如果你对Grafana还不熟悉的话,可以参考下这篇文章。

  参考资料项目源码地址

  微信8.0将好友放开到了一万,小伙伴可以加我大号了,先到先得,再满就真没了

  扫描下方二维码即可加我微信啦,2021,抱团取暖,一起牛逼。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线