centos7上安装Grafana的日志聚合工具Loki

Loki是 Grafana Labs 团队2019年8月份开源的项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签。项目受 Prometheus 启发,官方的介绍就是:Like Prometheus, but for logs.,类似于 Prometheus 的日志系统。

1.介绍

与其他日志聚合系统相比,Loki具有下面的一些特性:

不对日志进行全文索引。通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成本。
通过使用与 Prometheus 相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高。
特别适合储存 Kubernetes Pod 日志; 诸如 Pod 标签之类的元数据会被自动删除和编入索引。
受 Grafana 原生支持。

Loki 由以下3个部分组成:

loki是主服务器,负责存储日志和处理查询。
promtail是代理,负责收集日志并将其发送给 loki 。
Grafana用于 UI 展示。

官方地址:https://grafana.com/oss/loki/

文档地址:https://grafana.com/docs/grafana/latest/features/datasources/loki/

git地址:https://github.com/grafana/loki/blob/master/docs/README.md

2.环境准备

安装Grafana

安装docker

3.安装

DockerHub 上提供了Loki和Promtail的 Docker 镜像,为了方便我们这里直接使用 docker-compose 进行一键安装,其他方式可以参考Loki的文档介绍(目前只看到docker方式)

(1).在服务端上安装loki(10.2.3.46机器上)

创建配置文件目录

mkdri -p /opt/pmm/loki

vim docker-config.yaml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/*log

- job_name: system_new
  static_configs:
  - targets:
      - localhost
    labels:
      job: mysql46
      __path__: /var/lib/mysql/*.err

chmod 777 -R /opt/pmm

创建docker-compose.yaml文件

mkdir  /root/loki

cd /root/loki

vim docker-compose.yaml

version: "3"

networks:
  monitor:
    driver: bridge        

services: 
  loki:
    image: grafana/loki:1.5.0
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    networks:
      - monitor

  promtail:
    image: grafana/promtail:1.5.0
    volumes:
      - /var/log:/var/log
      - /var/lib/mysql/localhost.localdomain.err:/var/lib/mysql/localhost.localdomain.err
      - /opt/pmm/loki/docker-config.yaml:/etc/promtail/docker-config.yaml   
    command: -config.file=/etc/promtail/docker-config.yaml
    networks:
      - monitor

注:要收集那些日志必须映射到docker容器中(promtail中),服务器端我采集了/var/log下的日志及mysql日志

启动服务端

docker-compose up -d

查看loki服务是否已经启动

 

http://10.2.3.46:3100/metrics

 

(2).在需要采集的机器上安装promtail(10.2.3.68机器上)

创建配置文件目录

mkdri -p /opt/pmm/loki

vim docker-config.yaml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://10.2.3.46:3100/loki/api/v1/push

scrape_configs:
- job_name: logs68
  static_configs:
  - targets:
      - 10.2.3.68
    labels:
      job: varlogs68
      __path__: /var/log/*log
- job_name: tomcatlogs68
  static_configs:
  - targets:
      - 10.2.3.68
    labels:
      job: tomcatlogs68
      __path__: /usr/local/tomcat/tomcat2_clis/logs/infusion-error.log*
- job_name: springbootlogs68
  static_configs:
  - targets:
      - 10.2.3.68
    labels:
      job: springbootlogs68
      __path__: /usr/local/springboot/**/**/LOGS/info/*log

注:将tomcat和springboot的日志发送到3.46上

创建docker-compose.yaml文件

mkdir  /root/loki

cd /root/loki

vim docker-compose.yaml

version: "3"

networks:
  loki:

services:

  promtail:
    image: grafana/promtail:1.5.0
    labels:
      collectLog: "true"
    volumes:
      - /var/log:/var/log
      - /usr/local/springboot/:/usr/local/springboot/
      - /usr/local/tomcat/tomcat2_clis/logs:/usr/local/tomcat/tomcat2_clis/logs
      - /opt/pmm/loki/docker-config.yaml:/etc/promtail/docker-config.yaml
    command: -config.file=/etc/promtail/docker-config.yaml
    networks:
      - loki

启动客户端

docker-compose up -d

查看promtail是否成功启动

http://10.2.3.46:9080/service-discovery

(3).在Grafana上配置Loki

首先打开Grafana界面并登陆:http://10.2.3.46:3000/

添加Loki数据源

添加完成后点击保存

保存完成后,切换到 grafana 左侧区域的Explore,即可进入到Loki的页面:

官方地址:https://github.com/grafana/loki/blob/master/docs/clients/docker-driver/configuration.md

posted @ 2020-06-19 10:01  雍洲无名  阅读(215)  评论(0编辑  收藏  举报