grafana + loki 采集日志
·
1.架构简介
Loki 是主服务器,负责存储日志和处理查询 。 promtail 是代理,负责收集日志并将其发送给 loki 。 Grafana 用于 UI 展示。 只要在应用程序服务器上安装promtail来收集日志然后发送给Loki存储,就可以在Grafana UI界面通过添加Loki为数据源进行日志查询(如果Loki服务器性能不够,可以部署多个Loki进行存储及查询)。作为一个日志系统不关只有查询分析日志的能力,还能对日志进行监控和报警
2.系统架构
1.promtail收集并将日志发送给loki的 Distributor 组件
2.Distributor会对接收到的日志流进行正确性校验,并将验证后的日志分批并行发送到Ingester
3.Ingester 接受日志流并构建数据块,压缩后存放到所连接的存储后端
4.Querier 收到HTTP查询请求,并将请求发送至Ingester 用以获取内存数据 ,Ingester 收到请求后返回符合条件的数据 ;如果 Ingester 没有返回数据,Querier 会从后端存储加载数据并遍历去重执行查询 ,通过HTTP返回查询结果
3.ELK区别对比
1.ELK虽然功能丰富,但规模复杂,资源占用高,操作苦难,很多功能往往用不上,有点杀鸡用牛刀的感觉。 2.不对日志进行全文索引。通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成本。 3.通过使用与 Prometheus 相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高。 4.安装部署简单快速,且受 Grafana 原生支持。
4.安装部署loki,promtail
1)下载安装包以及获取默认配置文件 # loki、promtail、grafana官网、loki-local-config.yaml、promtail-local-config.yaml curl -O -L "https://github.com/grafana/loki/releases/download/v1.5.0/loki-linux-amd64.zip" curl -O -L "https://github.com/grafana/loki/releases/download/v1.5.0/promtail-linux-amd64.zip" wget https://dl.grafana.com/oss/release/grafana-7.1.1.linux-amd64.tar.gz wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml wget https://raw.githubusercontent.com/grafana/loki/master/cmd/promtail/promtail-local-config.yaml # 记得看自己系统版本 2.创建环境 创建文件夹 /opt/loki #解压loki-linux-amd64.zip unzip promtail-linux-amd64.zip #根据需要修改配置文件 vim loki-local-config.yaml [root@91elk loki]#cat loki-local-config.yaml auth_enabled: false server: http_listen_port: 3100 grpc_listen_port: 3110 grpc_server_max_recv_msg_size: 1073741824 #grpc最大接收消息值,默认4m grpc_server_max_send_msg_size: 1073741824 #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 #一个timeseries块在内存中的最大持续时间。如果timeseries运行的时间超过此时间,则当前块将刷新到存储并创建一个新块 schema_config: configs: - from: 2021-01-01 store: boltdb object_store: filesystem schema: v11 index: prefix: index_ period: 168h storage_config: boltdb: directory: /opt/loki/index #存储索引地址 filesystem: directory: /opt/loki/chunks limits_config: enforce_metric_name: false reject_old_samples: true reject_old_samples_max_age: 168h ingestion_rate_mb: 30 #修改每用户摄入速率限制,即每秒样本量,默认值为4M ingestion_burst_size_mb: 15 #修改每用户摄入速率限制,即每秒样本量,默认值为6M chunk_store_config: # max_look_back_period: 168h #回看日志行的最大时间,只适用于即时日志 max_look_back_period: 0s table_manager: retention_deletes_enabled: false #日志保留周期开关,默认为false retention_period: 0s #日志保留周期 #启动loki进程 nohup /opt/loki/loki-linux-amd64 -config.file=/opt/loki/loki-local-config.yaml >loki.out 2>&1 & 2、安装promtail #解压promtail-linux-amd64.zip unzip promtail-linux-amd64.zip #根据需要修改配置文件 vim promtail-local-config.yaml [root@91elk loki]#cat promtail-local-config.yaml server: http_listen_port: 9080 grpc_listen_port: 0 grpc_server_max_recv_msg_size: 900000000000 grpc_server_max_send_msg_size: 900000000000 positions: filename: /opt/loki/positions.yaml clients: - url: http://127.0.0.1:3100/loki/api/v1/push batchwait: 10s batchsize: 40960000 scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs host: localhost __path__: /var/log/nginx/access.log* #你要采集的日志位置 #启动promtail 进程 nohup /opt/loki/promtail-linux-amd64 -config.file=/opt/loki/promtail-local-config.yaml >promtail.out 2>&1 & #查看端口 [root@91elk loki]#ss -ntl | grep 31[0\1]0 LISTEN 0 4096 *:3100 *:* LISTEN 0 4096 *:3110 *:* [root@91elk loki]#ss -ntl | grep 9080 LISTEN 0 4096 *:9080 *:*
5.安装部署grafana可视化
1.安装依赖 apt-get install -y adduser libfontconfig1 musl 2.下载软件 wget https://dl.grafana.com/oss/release/grafana_10.2.0_amd64.deb 3.安装 dpkg -i grafana_10.2.0_amd64.deb 4.查看是否启动 systemctl start grafana-server systemctl status grafana-server.service [root@91elk loki]#ss -tnl | grep 3000 LISTEN 0 4096 *:3000 *:* 5.访问测试 http://10.0.0.91:3000/ '初始用户名和密码是admin '初次登陆会提示更改密码 '至此grafana安装完成 --------------------------------------------------- 注意:访问web界面时,如果出现If you're seeing this Grafana has failed to load its application files,解决办法:更换浏览器。如果不能访问界面,注意关闭centos防火墙,systemctl stop firewalld.service
登录进入主界面之后点击左侧菜单栏Data sources

添加数据源loki

做如下配置

之后页面下拉点击Save&test 出现对号证明连接loki成功
之后进入Explore选择标签,也可以对指定字段进行搜索


然后就可以看到日志数据

# 注意选label filters 要看自己设置的日志是路径还是其他 # Line contains 是过滤字段 # loki也可以识别json格式 也要在nginx.config配置和filebeat配置是一样的
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)