基于promtail+loki+grafana搭建日志系统
文章目录
- Promtail
- 安装promtail
- 创建配置文件
- 创建systemd 服务文件
- 启动promtail服务
- loki
- 下载loki服务
- 创建config.yml文件
- 创建systemd服务文件
- 启动loki
- grafana
- 下载grafana
本文基于promtail+loki+grafana+prometheus(可选)
搭建一个轻量快速的日志系统,集成了日志收集、查询、监控error、做可视化dasborad的日志系统
Promtail
- 作用:代理,监控日志文件,将日志内容传输到loki中
安装在产生日志的服务器上
安装promtail
安装promtail包
解压
创建config.yml文件
curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.1/promtail-linux-amd64.zip"
apt install unzip
unzip promtail-linux-amd64.zip
chmod +x promtail-linux-amd64
sudo mv promtail-linux-amd64 /usr/local/bin/promtail
cd /etc
mkdir promtail
cd promtail
vim config.yml
创建配置文件
config.yml
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /var/log/positions.yaml
clients:
- url: http://{收集日志的loki服务器ip}/loki/api/v1/push
batchsize: 1048576
batchwait: 5s
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: job_name # 该日志的标签名
__path__: /data/log # 需要监控传输的日志文件
注意loki的url,如果配置了nginx,注意nginx转发问题
创建systemd 服务文件
vim /etc/systemd/system/promtail.service
promtail.service
[Unit]
Description=Promtail service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/promtail -config.file /etc/promtail/config.yml # promtail的config配置文件路径
Restart=on-failure
MemoryLimit=128M
[Install]
WantedBy=multi-user.target
启动promtail服务
systemctl daemon-reload
systemctl start promtail
systemctl enable promtail
systemctl status promtail 查看状态
# systemctl restart promtail 重启服务
# journalctl -u promtail.service -f 查看启动日志
loki
存储日志的数据库,接收promtail传输过来的日志数据,自带高效存储,定时删除等功能
下载loki服务
去到需要收集日志的服务器上
curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.1/loki-linux-amd64.zip"
unzip loki-linux-amd64.zip
chmod +x loki-linux-amd64
sudo mv loki-linux-amd64 /usr/bin/loki
#apt-get update
#apt-get install loki promtail
创建config.yml文件
cd /etc
mkdir loki
cd loki
vim config.yml
config.yml
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
instance_addr: 127.0.0.1
path_prefix: /tmp/loki # loki的存储目录
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
query_range:
align_queries_with_step: true # 启用后,查询会对齐到步长边界,有助于提高缓存命中率。
max_retries: 5 # 查询失败时的最大重试次数。增加重试次数可以提高查询成功率,但也可能增加查询时间。
results_cache:
cache:
embedded_cache:
enabled: true
max_size_mb: 100
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:
max_query_parallelism: 16. # 允许并行执行的最大查询数。增加这个值可以提高查询性能,但会增加服务器负载。
split_queries_by_interval: 15m #将查询按指定时间间隔拆分,以提高查询效率和性能
ingestion_rate_mb: 4 # 每秒最大摄取速率(MB)
ingestion_burst_size_mb: 6 # 突发摄取速率(MB)
max_streams_per_user: 1000 # 每用户最大流数
table_manager:
retention_deletes_enabled: true
retention_period: 15d # 日志保留 15天
创建systemd服务文件
vim /etc/systemd/system/loki.service
loki.service
[Unit]
Description=Loki service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=loki
ExecStart=/usr/bin/loki -config.file /etc/loki/config.yml # loki的config配置文件路径
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec = 120
Restart = on-failure
RestartSec = 2
MemoryLimit=512M #内存大小限制
[Install]
WantedBy=multi-user.target
启动loki
注意创建好对应的loki用户,以及nginx配置
useradd -r -s /sbin/nologin loki
systemctl daemon-reload
systemctl start loki
systemctl enable loki
systemctl status loki 查看状态
# systemctl restart loki 重启服务
# journalctl -u loki.service -f 查看启动日志
grafana
连接loki的日志数据库,基于loki的数据库做可视化报表以及监控告警等
下载grafana
后面再更新