PLG日志平台搭建: Promtail + Loki + Grafana 全步骤
文章目录
- 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 全步骤相关推荐
- 轻量级日志分析PLG平台Loki安装部署及使用(promtail+loki+Grafana)
轻量级日志分析PLG平台Loki安装部署及使用(promtail+loki+Grafana) Loki简介 简介 Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用 ...
- 从ELK/EFK到PLG – 在EKS中实现基于Promtail + Loki + Grafana容器日志解决方案
ELK/EFK日志系统 如果今天谈论到要部署一套日志系统,相信用户首先会想到的就是经典的ELK架构,或者现在被称为Elastic Stack.Elastic Stack架构为Elasticsearch ...
- kubernetes日志架构PLG(promtail+loki+grafana)
k8s集群loki日志采集架构 elk用起来是不是感觉很笨重,维护起来也很耗费精力,而且资源占用也比较高,那就来尝试另一套日志工具,之所以推荐她,是因为笔者越用越发现她的好 loki官网文档参考: h ...
- Promtail + Loki + Grafana实现日志管理系统
参考文献https://blog.csdn.net/weixin_52270081/article/details/124801308 介绍 日志监控告警系统,较为主流的是ELK(Elasticsea ...
- EKS日志收集方案-PLG(Promtail+Loki+Grafana)
组件概述(什么是PLG?) Promtail:日志收集代理,它通常被部署到需要监视应用程序的每台机器/容器上.Promtail主要是用来发现目标.将标签附加到日志流以及将日志推送到Loki.截止到目前 ...
- 轻量级日志系统 PLG(**Promtail + Loki + Grafana**)架构技术调研
开源的容器云日志方案 1.Promtail Promtail 是代理,负责收集日志并将其发送给loki.对标ELK中的Logstash. Promtail是一个日志收集的代理,它的主要工作模式是发现存 ...
- ELK日志平台搭建(一)
ELK企业级日志分析系统 ELK是由Elasticsearch.Logstash.Kiban三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公 ...
- RabbitMQ + ELK 搭建日志平台
CentOS下使用ELK套件搭建日志分析和监控平台 2015年01月30日 17:32:29 i_chips 阅读数:24252 https://blog.csdn.net/i_chips/artic ...
- 日志平台(网关层) - 基于Openresty+ELKF+Kafka
背景介绍 1.问题现状与尝试 没有做日志记录的线上系统,绝对是给系统运维人员留下的坑.尤其是前后端分离的项目,后端的接口日志可以解决对接.测试和运维时的很多问题.之前项目上发布的接口都是通过Oracl ...
最新文章
- Java Scoket之java.io.EOFException解决方案
- 中科院计算机全国重点实验室,国家重点实验室
- 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 D.寻找-树上LCA(树上a到b的路径上离c最近的点)...
- Lexus OpenCart 自适应主题模板 ABC-0017
- python怎么改界面颜色_Python的matplotlib绘图如何修改背景颜色的实现
- 下拉菜单实现树状结构_树形图:复杂层次结构的数据可视化
- LINUX系统无线网频繁断开_Ubuntu系统安装amp;amp;解决WiFi不可用
- PAT (Basic Level) Practice (中文)1041 考试座位号 (15 分)
- mysql表名怎么拼接_自学MySQL第九天
- PL/SQL 连接Oracle 11g
- 前端数据可视化echarts.js使用指南
- 树的叶子结点与完全二叉树结点计算方法
- JSP 创建 CRUD 示例 MyBatis DAO 用于数据库JSTL 用于遍历记录
- 高级软件工程(2022春)课程总结
- MACOS 打开 Pycharm2020 闪退解决方法
- 微分算子法 求微分方程特解 (超简单)
- Delphi API
- 计算机房灭火器如何配置,机房灭火器配置标准
- pytorch遇到Error loading “C:\Anaconda3\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll“
- 报错 error: use of undeclared identifier (AS)