Prometheus+Grafana搭建日志采集

介绍

一、什么是日志数据采集

日志数据采集是指通过各种手段获取应用程序运行时产生的各类日志信息,并将这些信息存储到特定的地方,以便后续分析和使用。通常情况下,这些日志信息包括系统运行状态、错误信息、用户操作记录等等。通过对这些信息的统计和分析,可以有效地监控应用程序的运行状况,及时发现和解决问题。

二、为什么需要进行日志数据采集

对于企业应用系统而言,日志数据采集至关重要。首先,在应用程序出现问题时,通过查看相关日志信息可以快速定位原因,并进行相应处理。其次,在系统运行期间,通过对日志信息的统计和分析,可以发现系统存在的潜在问题,进而进行优化和改进。此外,对于一些业务场景,如在线广告、电商等,日志数据采集更是必不可少,它可以帮助企业更好地了解用户行为、偏好等信息,从而提升营销效果和用户体验。

三、常见的日志采集方案

方案介绍

• Promtail 是日志收集器,负责收集应用的日志并发送给 Loki。

• Loki 用于日志的存储和解析,并提供查询 API 给下游展示。

• Grafana 负责将 Loki 的日志可视化

Grafana搭建

之前写过,见文章:Prometheus+Grafana搭建

Loki安装

下载

https://github.com/grafana/loki/releases

shell 复制代码
#规划:安装在/usr/local下面,数据放在/data下
#以root账号,在/usr/local创建文件夹loki,并将安装包放置在此目录下
mkdir loki
#新建存储路径,数据放在/data下
mkdir  /data
mkdir  /data/loki
mkdir  /data/loki/{chunks,index}
#将安装包loki-linux-amd64.zip移动到/usr/local下,解压
unzip loki-linux-amd64.zip
#解压后重新生成文件夹loki-linux-amd64 ,将文件移动到loki目录下
mv loki-linux-amd64 /usr/local/loki/

在/usr/local/loki目录下,修改配置,如没有则新增
vi config.yaml

yml 复制代码
#在编辑页面可以插入下述脚本,可自行调整部分配置
auth_enabled: false
server:
  http_listen_port: 3100
ingester:
  lifecycler:
    address: xx.xx.xx.xx #ip地址
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 5m
  chunk_retain_period: 30s
 
schema_config:
  configs:
  - from: 2022-07-01
    store: boltdb
    object_store: filesystem
    schema: v11
    index:
      prefix: index_
      period: 168h   #每张表的时间范围7天
 
storage_config:
  boltdb:
    directory: /data/loki/index   #索引文件存储地址
 
  filesystem:
    directory: /data/loki/chunks  #块存储地址
 
limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h
chunk_store_config:
#最大可查询历史日期 28天,这个时间必须是schema_config中的period的倍数,否则报错。
  max_look_back_period: 672h
#表的保留期28天
table_manager:
  retention_deletes_enabled: true
  retention_period: 672h

#启动服务
nohup ./loki-linux-amd64 -config.file=./config.yaml >./loki.log 2>&1 &

#设置开机自启动

cd /etc/systemd/system/

vi loki.service

#可复制下述页面,调整文件路径即可
[Unit]
Description=loki
After=network.target 

[Service]
ExecStart=/usr/local/loki/loki-linux-amd64 \
        -config.file=/usr/local/loki/config.yaml &>> /usr/local/loki/loki.log
Restart=on-failure

[Install]
WantedBy=multi-user.target

设置自启动

systemctl daemon-reload

启动服务

systemctl start loki #systemctl stop loki systemctl restart loki

查看启动结果

systemctl status loki

加入开机自启动

systemctl enable loki

部署promtail

需要到日志采集端部署

下载

shell 复制代码
wget https://github.com/grafana/loki/releases/download/v2.8.0/promtail-linux-amd64.zip
#规划:安装在/usr/local下面
#以root账号,在/usr/local创建文件夹promtail,并将安装包放置在此目录下
mkdir promtail
#将安装包promtail-linux-amd64.zip移动到/usr/local下,解压
unzip promtail-linux-amd64.zip
#解压后重新生成文件夹promtail-linux-amd64 ,将文件移动到promtail目录下
mv promtail-linux-amd64  /usr/local/promtail/

在/usr/local/promtail目录下,修改配置,如没有则新增
vi promtail.yaml

yml 复制代码
#在编辑页面可以插入下述脚本,可自行调整部分配置
server:
  http_listen_port: 9080
  grpc_listen_port: 0
 
positions:
  filename: ./positions.yaml
 
clients:
  - url: http://xx.xx.xx.xx:3100/loki/api/v1/push   #loki地址,xx是ip地址
 
scrape_configs:
##jobname
 - job_name: centername                         #jobname
   static_configs:
   - targets: 
       - xx.xx.xx.xx                           #xx是ip地址
   - labels:
      job: centername                          #jobname
      host: xx.xx.xx.xx                        #xx是ip地址
      __path__: /home/script/log/*.log        #监控的日志地址,你们根据具体情况选择自己的路径

Promtail默认端口是9080,启动完成后,可以采用上边的方式查看进程是否启动成功

nohup ./promtail-linux-amd64 -config.file=promtail-local-config.yaml > promtail.log 2>&1 &

同样按照上面loki自启动的写法,也可以加入自启动中去

Grafana展示

模版导入

配置Loki数据源,导入监控模版 13639

相关推荐
晴天飛 雪1 天前
Grafana监控PostgreSQL
数据库·postgresql·grafana
大虾别跑2 天前
docker安装zabbix +grafana
docker·zabbix·grafana
菜鸟挣扎史2 天前
grafana+prometheus+windows_exporter实现windows进程资源占用的监控
windows·grafana·prometheus·进程·process
tester Jeffky3 天前
JMeter监听器与压测监控之Grafana
jmeter·eureka·grafana
牙牙7053 天前
Prometheus结合K8s(二)使用
容器·kubernetes·prometheus
牙牙7054 天前
Prometheus结合K8s(一)搭建
容器·kubernetes·prometheus
福大大架构师每日一题5 天前
32.2 prometheus倒排索引统计功能
ios·iphone·prometheus
DB菜鸟6 天前
Grafana Username password invalid
java·服务器·grafana
让生命变得有价值6 天前
使用 Grafana api 查询 Datasource 数据
grafana·prometheus
福大大架构师每日一题6 天前
31.3 XOR压缩和相关的prometheus源码解读
prometheus