安装 Loki 日志系统
-
Promtail + Loki + Grafana 搭建的日志监控系统
下载安装包以及获取默认配置文件(loki、promtail、loki-local-config.yaml、promtail-local-config.yaml)
-
Loki 是主服务器,负责存储日志和处理查询
-
promtail 是代理,负责收集日志并将其发送给 loki
-
Grafana 用于 UI 展示
创建对应的目录下载
-
Loki 服务器部署 Loki 环境
mkdir -p /data/loki
# 创建 /data/loki 目录
cd /data/loki
# 进入目录
wget https://github.com/grafana/loki/releases/download/v2.5.0/loki-linux-amd64.zip
# curl -O -L https://github.com/grafana/loki/releases/download/v2.5.0/loki-linux-amd64.zip
# 下载 loki-linux-amd64.zip
unzip loki-linux-amd64.zip
# 解压
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
# 下载 loki-local-config.yaml
# wget 失败可以访问网址,创建 yaml 档
-
Loki 优化配置
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
log_level: debug #日志等级为debug
common:
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
replication_factor: 1
ring:
instance_addr: 127.0.0.1
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
limits_config:
enforce_metric_name: false
reject_old_samples: true # 是否拒绝旧样本
reject_old_samples_max_age: 168h # 168小时之前的样本被拒绝
ingestion_rate_mb: 40
ingestion_burst_size_mb: 20
max_entries_limit_per_query: 9999 # 优化最大查询数
-
业务服务器部署 Promtail 收取日志
mkdir /loki
cd /loki
wget https://github.com/grafana/loki/releases/download/v2.5.0/promtail-linux-amd64.zip
# curl -O -L https://github.com/grafana/loki/releases/download/v2.5.0/promtail-freebsd-amd64.zip
# 下载 promtail-linux-amd64.zip
unzip promtail-linux-amd64.zip
# 解压
wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml
# 下载 promtail-local-config.yaml
-
Promtail 配置修改
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://192.168.119.130:3100/loki/api/v1/push # 指向 Loki 服务器地址
scrape_configs:
- job_name: nginx
static_configs:
- targets:
- nginx
labels:
job: nginx02logs # Job 名称
__path__: /usr/local/nginx/logs/* # 收集日志路径
pipeline_stages:
- json: # 日志为json格式 选择需要的字段
expressions:
output: log
-
配置 grafana 仓库
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
# curl -O -L https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-8.5.2-1.x86_64.rpm
-
安装
yum -y install grafana
-
启动
/loki-linux-amd64 -config.file=loki-local-config.yaml # 先启动 Loki 服务
./promtail-linux-amd64 -config.file=promtail-local-config.yaml
systemctl enable grafana-server --now
-
初始账密为 admin ,登录后修改
-
创建用户
-
添加数据源 Loki
-
安装 nginx ,测试收集 nginx 日志
修改 nginx.conf 日志格式为 json
日志是由 Promtail 处理的,所以需要修改 Promtail 配置文件
修改 promtail-local-config.yaml 配置文件,添加 pipeline_stages 配置
- job_name: nginx
static_configs:
- targets:
- nginx
labels:
job: nginxlogs
__path__: /usr/local/nginx/logs/*log
pipeline_stages:
- json: # 日志为json格式 选择需要的字段
expressions:
output: log
-
重新加载配置文件后,Loki 查询日志
{filename="/usr/local/nginx/logs/host.access.log",job="nginx02logs"} |= "status" |= "200"
# Loki 查询日志关键字