文章目录
- 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: 9080grpc_listen_port: 0positions:filename: /var/log/positions.yamlclients:- url: http://{收集日志的loki服务器ip}/loki/api/v1/pushbatchsize: 1048576batchwait: 5sscrape_configs:- job_name: systemstatic_configs:- targets:- localhostlabels: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: falseserver:http_listen_port: 3100grpc_listen_port: 9096common:instance_addr: 127.0.0.1path_prefix: /tmp/loki # loki的存储目录storage:filesystem:chunks_directory: /tmp/loki/chunksrules_directory: /tmp/loki/rulesreplication_factor: 1ring:kvstore:store: inmemoryquery_range:align_queries_with_step: true # 启用后,查询会对齐到步长边界,有助于提高缓存命中率。max_retries: 5 # 查询失败时的最大重试次数。增加重试次数可以提高查询成功率,但也可能增加查询时间。results_cache:cache:embedded_cache:enabled: truemax_size_mb: 100schema_config:configs:- from: 2020-10-24store: boltdb-shipperobject_store: filesystemschema: v11index:prefix: index_period: 24hruler:alertmanager_url: http://localhost:9093limits_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: trueretention_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
后面再更新