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