文章目录

  • Loki 日志平台搭建
    • 注意点
    • 1. 二进制文件安装
      • 启动与安装Grafana
      • 启动 Promtail 与 loki
        • 下载与安装 Promtail 与 loki
        • 下载 Loki 与 Promtail 的配置文件
        • 修改 Loki 与 Promtail 的配置文件
        • 启动 Loki 与 Promtail
      • grafana 配置数据源
      • 停止服务
    • 2. docker安装
      • 下载配置文件
      • 启动容器
        • 运行 loki 容器
        • 运行 promtail 容器
        • 运行 grafana 容器
      • 确认开启状态
        • 查看 loki 数据
        • 查看 loki 运行状态
      • grafana 配置数据源
    • 3. docker-compose安装
      • 官方推荐安装
        • 下载配置文件
        • 修改配置文件(同上)
      • 自定义配置安装
        • docker-compose.yaml
        • loki-config.yaml
        • promtail-config.yaml
      • 启动
    • 4. Grafana 添加数据源
      • 添加数据源
      • logQL 查询
    • 5. 多节点设置
    • 注意点

Loki 日志平台搭建

参考文档:
https://blog.csdn.net/tcy1429920627/article/details/109679363

Loki的GitHub地址:https://github.com/grafana/loki

配置文件官网地址:https://grafana.com/docs/loki/latest/installation/local/

Grafana下载官网:https://grafana.com/grafana/download

注意点

1. loki 与 promtail 的配置文件需要手动获取wget github2. promtail 的配置文件需要修改 clients配置为 Loki服务器的ip地址 3. 想要添加不同节点的机器, 需要在节点中部署 promtail 并指向loki4. 不同 job 需要指定不同的 labels 与 __path__labels:job: xxxapp: xxx__path__: /xx/xxx/*log 5. grafana 是一个展示插件需要配置数据源, 才能正确展示查询6. 生成日志文件echo "error May-20 15:21:14 === Started libdnf-0.39.1 ===" >> hawkey.log7. 建议直接docker-compose 方式部署安装, 然后配置Grafana数据源使用即可8. 文档中的服务器ip地址都已替换为1.1.1.1, 使用时请注意替换.

1. 二进制文件安装

启动与安装Grafana

mkdir /data/test_grafanna
cd /data/test_grafanna#下载安装grafana命令,下列命令执行成功后。
wget https://dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm
sudo yum -y install grafana-7.3.6-1.x86_64.rpm#启动grafana,grafana会占用服务器3000端口
systemctl start grafana-server.service
systemctl status grafana-server.servicerm -f grafana-7.3.6-1.x86_64.rpm

启动 Promtail 与 loki

下载与安装 Promtail 与 loki

#下载压缩文件
curl -O -L "https://github.com/grafana/loki/releases/download/v2.0.0/loki-linux-amd64.zip"
curl -O -L "https://github.com/grafana/loki/releases/download/v2.0.0/promtail-linux-amd64.zip"#解压文件
unzip "loki-linux-amd64.zip"
unzip "promtail-linux-amd64.zip"#执行文件授权
chmod a+x "loki-linux-amd64"
chmod a+x "promtail-linux-amd64"# 删除安装包
rm -f loki-linux-amd64.zip
rm -f promtail-linux-amd64.zip

下载 Loki 与 Promtail 的配置文件

查看 https://github.com/grafana/loki 项目, 根据目录找到对应的 yaml文件地址, 参考https://www.cnblogs.com/sanduzxcvbnm/p/14234953.html

wget  --no-check-certificate https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
wget  --no-check-certificate https://raw.githubusercontent.com/grafana/loki/master/clients/cmd/promtail/promtail-local-config.yaml

修改 Loki 与 Promtail 的配置文件

vim loki-local-config.yaml # 去掉这几行, 否则会报错wal:enabled: truedir: /tmp/walrecover: truevim promtail-local-config.yaml# 修改 clients, 将host改为服务器地址# 添加 scrape_configs 对应的 labels 进行日志收集

启动 Loki 与 Promtail

# 启动Loki命令  默认端口为 3100
nohup ./loki-linux-amd64 -config.file=loki-local-config.yaml  > loki.log 2>&1 &# 到收集日志的服务器上配置 Promtail 并启动,传输文件到收集日志的服务器。 Promtail默认端口是9080
nohup ./promtail-linux-amd64 -config.file=promtail-local-config.yaml > promtail.log 2>&1 &

grafana 配置数据源

详见下方

停止服务

- 停止 grafana 服务systemctl stop grafana-server.service- 当前终端关闭 nuhup 任务jobskill %1kill %2- 清理进程ps -ef | grep lokips -ef | grep promtailkill -9 

2. docker安装

官网: https://github.com/grafana/loki/blob/v1.5.0/docs/installation/docker.md

下载配置文件

mkdir -p /data/loki/config && cd /data/loki/config wget https://raw.githubusercontent.com/grafana/loki/v1.5.0/cmd/loki/loki-local-config.yaml -O loki-config.yamlwget https://raw.githubusercontent.com/grafana/loki/v1.5.0/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml

启动容器

运行 loki 容器

docker run -d --name loki \
-v /data/loki/config:/mnt/config \
-p 3100:3100 grafana/loki:1.5.0 \
-config.file=/mnt/config/loki-config.yaml

错误: failed parsing config: open /mnt/config/loki-config.yaml: permission denied

问题原因及解决办法原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数:docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash2.临时关闭selinux:setenforce 03.添加selinux规则,改变要挂载的目录的安全性文本

运行 promtail 容器

注意点:
启动容器时, 需要将日志所在文件夹映射至容器内部, 否则无法读取日志文件

docker run -d --name promtail \
-v /data/loki/config:/mnt/config \
-v /var/log:/var/log \
grafana/promtail:1.5.0 \
-config.file=/mnt/config/promtail-config.yaml

promtail作为日志收集代理可部署在任意要收集日志的节点上,配置文件中指定 loki 节点IP地址即可,另外需要挂载要收集的节点日志文件目录到 promtail 容器中。

运行 grafana 容器

docker run -d --name=grafana \--restart always \-p 3000:3000 \-v grafana-storage:/var/lib/grafana \grafana/grafana

确认开启状态

查看 loki 数据

http://1.1.1.1:3100/metrics

查看 loki 运行状态

http://1.1.1.1:3100/ready
# ready

如果想要收集指定目录及所有子目录下以.log结尾的日志文件,修改promtail-config.yaml 配置文件:

# vim promtail-config.yaml
......__path__: /var/log/**/*.log

grafana 配置数据源

  • 详见下方配置数据源

    http://1.1.1.1:3000/
    

3. docker-compose安装

docker-compose 文件
https://raw.githubusercontent.com/grafana/loki/v1.5.0/production/docker-compose.yaml 注意点:容器运行时, 需要将日志所在文件夹映射至容器内部, 否则无法读取日志文件

官方推荐安装

$ wget https://raw.githubusercontent.com/grafana/loki/v1.5.0/production/docker-compose.yaml -O docker-compose.yaml
$ docker-compose -f docker-compose.yaml up

下载配置文件

wget https://raw.githubusercontent.com/grafana/loki/v1.5.0/cmd/loki/loki-local-config.yaml -O loki-config.yamlwget https://raw.githubusercontent.com/grafana/loki/v1.5.0/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml

修改配置文件(同上)

vim loki-local-config.yaml # 去掉这几行, 否则会报错wal:enabled: truedir: /tmp/walrecover: truevim promtail-local-config.yaml# 修改 clients, 将host改为服务器地址# 添加 scrape_configs 对应的 labels 进行日志收集

自定义配置安装

问题点:使用   multiline 控制多行合并采集, 注意缩进与正则一个奇怪的现象, 使用docker部署promtail采集, 如果发现loki中没有数据, 重启promtail容器后, 就又有了....

docker-compose.yaml

version: "3.6"networks:loki:services:loki:image: grafana/lokicontainer_name: lokivolumes:- $PWD:/etc/lokiports:- "3100:3100"command: -config.file=/etc/loki/loki-config.yamlnetworks:- lokipromtail:image: grafana/promtailcontainer_name: promtailvolumes:- /var/log:/var/log- $PWD:/etc/promtail- /data/log/:/data/log/     # 该地址为映射 log 日志文件存放地址command: -config.file=/etc/promtail/promtail-config.yamlnetworks:- lokigrafana:image: grafana/grafanacontainer_name: grafanaports:- "3000:3000"networks:- loki

loki-config.yaml

auth_enabled: falseserver:http_listen_port: 3100 # 这个不需要变化, 即使loki接收端口变, 他也不用改ingester:lifecycler:address: 127.0.0.1ring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 5mchunk_retain_period: 30smax_transfer_retries: 0schema_config:configs:- from: 2021-06-04store: boltdbobject_store: filesystemschema: v11index:prefix: index_period: 168hstorage_config:boltdb:directory: /tmp/loki/indexfilesystem:directory: /tmp/loki/chunkslimits_config:enforce_metric_name: falsereject_old_samples: truereject_old_samples_max_age: 168hingestion_rate_mb: 15chunk_store_config:max_look_back_period: 0stable_manager:retention_deletes_enabled: falseretention_period: 0s

promtail-config.yaml

server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /etc/promtail/positions.yamlsync_period: 10clients:- url: http://1.1.1.1:3100/loki/api/v1/pushscrape_configs:- job_name: go_vmp_serverstatic_configs:- targets:- localhostlabels:job: go_vmp_serverapp: go_vmp_serverenv: prod__path__: /data/log/test/*logpipeline_stages:- match:selector: '{job="go_vmp_server"}'stages:- regex:expression: '.*'- multiline:firstline: '^\[\d{4}-\d{2}-\d{2}'max_wait_time: 3s

启动

docker-compose up -d

4. Grafana 添加数据源

添加数据源

访问 Grafana web页面:http://1.1.1.1:3000/  进行登录(账号密码都是admin)
点击 DATA SOURCES => Loki
填写 HTTP 地址, 数据源的访问地址(Lok:3100) => save可以设置每页展示的数量, Maximum lines 会展示最新的日志行, 避免浏览器崩溃.
点击 Explore 即可查看日志了

logQL 查询

可以基于文件名或标签查看:

{job="Promtail 设置的job名"}{filename="配置中的日志文件名"}

5. 多节点设置

  • 多节点时 docker-compose.yaml 文件
version: "3.6"services:promtail:image: grafana/promtailcontainer_name: promtailvolumes:- $PWD:/etc/promtail- /data/log:/data/logcommand: -config.file=/etc/promtail/promtail-config.yaml
  • promtail-config.yaml 文件
server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /etc/promtail/positions.yamlsync_period: 10clients:- url: http://1.1.1.1:3100/loki/api/v1/pushscrape_configs:- job_name: go_vmp_server_accessstatic_configs:- targets:- localhostlabels:job: go_vmp_server_accessenv: access__path__: /data/log/access/*logpipeline_stages:- match:selector: '{job="go_vmp_server_access"}'stages:- multiline:firstline: '^\[\d{4}-\d{2}-\d{2}'max_wait_time: 3s- job_name: go_vmp_server_app-outstatic_configs:- targets:- localhostlabels:job: go_vmp_server_app-outenv: app-out__path__: /data/log/app-out/*logpipeline_stages:- match:selector: '{job="go_vmp_server_app-out"}'stages:- multiline:firstline: '^\[\d{4}-\d{2}-\d{2}'max_wait_time: 3s- job_name: go_vmp_server_errorstatic_configs:- targets:- localhostlabels:job: go_vmp_server_errorenv: error__path__: /data/log/error/*logpipeline_stages:- match:selector: '{job="go_vmp_server_error"}'stages:- multiline:firstline: '^\[\d{4}-\d{2}-\d{2}'max_wait_time: 3s

注意点

在启动docker容器之后, 要注意, 当前配置文件的环境在哪. 比如loki的配置文件中的 server:http_listen_port: , 是docker容器内的端口, 无需和宿主机的端口同步

PLG日志平台搭建: Promtail + Loki + Grafana 全步骤相关推荐

  1. 轻量级日志分析PLG平台Loki安装部署及使用(promtail+loki+Grafana)

    轻量级日志分析PLG平台Loki安装部署及使用(promtail+loki+Grafana) Loki简介 简介 ​ Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用 ...

  2. 从ELK/EFK到PLG – 在EKS中实现基于Promtail + Loki + Grafana容器日志解决方案

    ELK/EFK日志系统 如果今天谈论到要部署一套日志系统,相信用户首先会想到的就是经典的ELK架构,或者现在被称为Elastic Stack.Elastic Stack架构为Elasticsearch ...

  3. kubernetes日志架构PLG(promtail+loki+grafana)

    k8s集群loki日志采集架构 elk用起来是不是感觉很笨重,维护起来也很耗费精力,而且资源占用也比较高,那就来尝试另一套日志工具,之所以推荐她,是因为笔者越用越发现她的好 loki官网文档参考: h ...

  4. Promtail + Loki + Grafana实现日志管理系统

    参考文献https://blog.csdn.net/weixin_52270081/article/details/124801308 介绍 日志监控告警系统,较为主流的是ELK(Elasticsea ...

  5. EKS日志收集方案-PLG(Promtail+Loki+Grafana)

    组件概述(什么是PLG?) Promtail:日志收集代理,它通常被部署到需要监视应用程序的每台机器/容器上.Promtail主要是用来发现目标.将标签附加到日志流以及将日志推送到Loki.截止到目前 ...

  6. 轻量级日志系统 PLG(**Promtail + Loki + Grafana**)架构技术调研

    开源的容器云日志方案 1.Promtail Promtail 是代理,负责收集日志并将其发送给loki.对标ELK中的Logstash. Promtail是一个日志收集的代理,它的主要工作模式是发现存 ...

  7. ELK日志平台搭建(一)

    ELK企业级日志分析系统 ELK是由Elasticsearch.Logstash.Kiban三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公 ...

  8. RabbitMQ + ELK 搭建日志平台

    CentOS下使用ELK套件搭建日志分析和监控平台 2015年01月30日 17:32:29 i_chips 阅读数:24252 https://blog.csdn.net/i_chips/artic ...

  9. 日志平台(网关层) - 基于Openresty+ELKF+Kafka

    背景介绍 1.问题现状与尝试 没有做日志记录的线上系统,绝对是给系统运维人员留下的坑.尤其是前后端分离的项目,后端的接口日志可以解决对接.测试和运维时的很多问题.之前项目上发布的接口都是通过Oracl ...

最新文章

  1. Java Scoket之java.io.EOFException解决方案
  2. 中科院计算机全国重点实验室,国家重点实验室
  3. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 D.寻找-树上LCA(树上a到b的路径上离c最近的点)...
  4. Lexus OpenCart 自适应主题模板 ABC-0017
  5. python怎么改界面颜色_Python的matplotlib绘图如何修改背景颜色的实现
  6. 下拉菜单实现树状结构_树形图:复杂层次结构的数据可视化
  7. LINUX系统无线网频繁断开_Ubuntu系统安装amp;amp;解决WiFi不可用
  8. PAT (Basic Level) Practice (中文)1041 考试座位号 (15 分)
  9. mysql表名怎么拼接_自学MySQL第九天
  10. PL/SQL 连接Oracle 11g
  11. 前端数据可视化echarts.js使用指南
  12. 树的叶子结点与完全二叉树结点计算方法
  13. JSP 创建 CRUD 示例 MyBatis DAO 用于数据库JSTL 用于遍历记录
  14. 高级软件工程(2022春)课程总结
  15. MACOS 打开 Pycharm2020 闪退解决方法
  16. 微分算子法 求微分方程特解 (超简单)
  17. Delphi API
  18. 计算机房灭火器如何配置,机房灭火器配置标准
  19. pytorch遇到Error loading “C:\Anaconda3\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll“
  20. 报错 error: use of undeclared identifier (AS)

热门文章

  1. 机器学习实战-手写识别系统
  2. 趣图:你永远想不到用户怎么使用你的产品
  3. DataTable 服务端模式 进行分页 排序搜索
  4. 不要浪费时间跟踪技术债务
  5. [python]变量作用域问题
  6. 实现一键下载,批量快速爬取B站视频
  7. 复旦大学python教学视频_B站资源推荐:复旦大学机器学习、深度学习公开课,附PDF课件下载...
  8. 程序设计思维与实践 Week15 实验
  9. 工作人员做好项目协调服务器,项目团队协作做好三件事
  10. 用 JavaScript 编写日历