日志loki+grafana安装和使用
一.loki的安装和使用
1.1、loki说明
主要3个插件
- loki
主要负责日志的存储和收集,主要安装在日志存储服务器
- grafana
负责日志页面的展示,主要安装在主存储服务器
- promtail
日志收集插件,安装在需要收集日志的服务器,进行日志上传
说明:
loki日志系统安装有多种方式,二进制安装,yum安装、docker安装、helm安装、k8s安装等。
1.2、docker-compose方式安装loki和使用
1、安装
创建日志存储loki的配置文件
vim /opt/loki/loki-local-config.yaml
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 39095 #grpc监听端口,默认为9095
grpc_server_max_recv_msg_size: 15728640 #grpc最大接收消息值,默认4m
grpc_server_max_send_msg_size: 15728640 #grpc最大发送消息值,默认4m
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
max_transfer_retries: 0
max_chunk_age: 20m
schema_config:
configs:
- from: 2018-04-15
store: boltdb
object_store: filesystem
schema: v11
index:
prefix: index_
period: 168h
storage_config:
boltdb:
directory: /loki/index
filesystem:
directory: /loki/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
ingestion_rate_mb: 30
ingestion_burst_size_mb: 15
chunk_store_config:
max_look_back_period: 168h #回看日志行的最大时间,只适用于即时日志
table_manager:
retention_deletes_enabled: true #日志保留周期开关,默认为false
retention_period: 168h #日志保留周期
loki节点
vim /opt/loki/docker-compose.yaml
version: "3"
networks:
loki:
services:
loki:
image: grafana/loki:2.3.0
restart: always
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8
ports:
- "3100:3100"
command: -config.file=/opt/loki/loki-local-config.yaml
networks:
- loki
promtail:
image: grafana/promtail:2.3.0
restart: always
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8
volumes:
- /var/log:/var/log
- /var/lib/docker:/var/lib/docker
- /etc/promtail:/etc/promtail
command: -config.file=/opt/loki/promtail-docker-config.yml
networks:
- loki
grafana:
image: grafana/grafana:latest
restart: always
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8
ports:
- "3000:3000"
networks:
- loki
创建日志收集发送 promtail的配置文件
vim /opt/loki/promtail-local-comfig.yaml
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://localhost:3100/loki/api/v1/push #日志上传地址
scrape_configs:
- job_name: xzyy #namespace名字
static_configs:
- targets:
- node-111 #node节点名字
labels:
job: varlogs #job名字,可以自定义
__path__: /var/lib/docker/overlay2/*/diff/home/jhipster/*log #日志地址根据实际情况修改
promtail节点
创建日志收集发送 promtail的配置文件
vim /opt/loki/promtail-local-comfig.yaml
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://lokiIP:3100/loki/api/v1/push
scrape_configs:
- job_name: xzyy
static_configs:
- targets:
- node-111
labels:
job: varlogs
__path__: /var/lib/docker/overlay2/*/diff/home/jhipster/*log
安装promtail客户端程序
1、下载
https://github.com/grafana/loki/releases/download/v2.3.0/promtail-linux-amd64.zip
2、配置
mkdir /data/promtail unzip promtail-linux-amd64.zip wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml
2、启动promtail
cd /data/promtail nohup ./promtail-linux-amd64 -config.file=promtail.yaml &
2、使用
访问:http://lokiIP:3000
添加数据源:设置--》datasource --》 添加loki 或 ip :3100
nginx代理使用stream或者location
====================================================================================
二. 第二种部署版本
2.1 docker-compose 安装精细验证版本
目录:
loki | docker-compose.yaml | /home/tools/loki |
loki | local-config.yaml | /home/tools/loki/etc/loki |
loki | 数据存储目录 | /datadisk/loki |
grafana | 数据存储目录 | /datadisk/grafana/ |
promtail | config.yml | /etc/promtail |
目录权限
chmod +777 -R /datadisk/grafana
chmod +777 -R /datadisk/loki
#promtail收集端采用docker方式收集,断点续传目录需要持久化
chmod +777 -R /datadisk/promtail/tmp
(1)、docker-compose文件
version: "3"
networks:
loki:
services:
loki:
image: grafana/loki:2.8.6
restart: always
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8
ports:
- "3100:3100"
volumes:
- /home/tools/loki/etc/loki/:/etc/loki/
- /datadisk/loki/:/loki/
command: -config.file=/etc/loki/local-config.yaml
networks:
- loki
promtail:
image: grafana/promtail:2.8.6
restart: always
volumes:
- /var/log:/var/log
- /var/lib/docker:/var/lib/docker
- /etc/promtail:/etc/promtail
- /datadisk/promtail/tmp:/tmp/
command: -config.file=/etc/promtail/config.yml
networks:
- loki
grafana:
image: grafana/grafana:latest
restart: always
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8
ports:
- "3000:3000"
networks:
- loki
volumes:
- /datadisk/grafana/:/var/lib/grafana/
(2). loki的配置文件 local-config.yaml
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
ruler:
alertmanager_url: http://localhost:9093
table_manager:
retention_deletes_enabled: true
retention_period: 720h
limits_config:
# enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 720h
# ingestion_rate_mb: 60
# 每个用户允许的采样突发大小
# ingestion_burst_size_mb: 80
(3). promtail的配置文件 (注意修改IP)
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
#注意ip采用的内网ip
clients:
- url: http://172.26.7.75:3100/loki/api/v1/push #日志上传地址
scrape_configs:
- job_name: xzyy #namespace名字
static_configs:
- targets:
- node-111 #node节点名字
labels:
job: varlogs #job名字,可以自定义
__path__: /var/log/*.log #日志地址根据实际情况修改
注意:如果采用脚本程序运行
下载地址:
https://github.com/grafana/loki/releases/download/v2.8.6/promtail-linux-amd64.zip
nohup ./promtail-linux-amd64 -config.file=/etc/promtail/config.yml &
这里也可以编写成sh脚本运行
或者 开机启动
[root@hw ~]# cat /usr/lib/systemd/system/promtail.service
[Unit]
Description=promtail
Documentation=https://github.com/grafana/loki/tree/master
After=network.target
[Service]
Type=simple
User=root
ExecStart=/home/tools/promtail/promtail-linux-amd64 -config.file=/home/tools/promtail/config/promtail-local-config.yaml
Restart=on-failure
[Install]
WantedBy=multi-user.target
(4). 访问grafana页面,添加loki数据源
以上完成
2.2 、k8s方式安装
请看附件yaml安装文件
三 . loki收集docker日志的方法
3.1 说明
本文通过安装 docker loki plugin 直接采集docker容器日志,并推送至loki。官方文档
3.2 插件安装
# 安装最新的插件
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
# 查看插件
[root@data1 ~]# docker plugin ls
ID NAME DESCRIPTION ENABLED
744b79d5d1a9 loki:latest Loki Logging Driver true
3.3 docker插件操作
#以下根据需要进行
# 停用
docker plugin disable loki --force
# 升级
docker plugin upgrade loki grafana/loki-docker-driver:latest --grant-all-permissions
# 启用
docker plugin enable loki
# 重启docker
systemctl restart docker
#插件卸载
docker plugin disable loki --force
docker plugin rm loki
3.4 插件使用
# (1)单独为一个容器设置日志驱动
# --log-driver=loki
docker run --log-driver=loki \
--log-opt loki-url="http://IP:3100/loki/api/v1/push" \
--log-opt loki-retries=5 \
--log-opt loki-batch-size=400 \
--log-opt max-size=50m \
--log-opt max-file=3 \
grafana/grafana
#(2)为所有的容器设置默认参数
vim /etc/docker/daemon.json
#添加 log-driver 和 log-opts 两项,注意修改IP
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors":[
"https://xxxxxxxxxxx.mirror.aliyuncs.com",
"https://registry.docker-cn.com"
],
"log-driver": "loki",
"log-opts": {
"loki-url": "http://172.26.7.79:3100/loki/api/v1/push",
"max-size": "50m",
"max-file": "10"
}
}
#重载环境
systemctl daemon-reload
systemctl restart docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!