03-Loki 日志监控

打印 上一主题 下一主题

主题 838|帖子 838|积分 2514

1 Loki

1.1 简介

功能强大;轻量级,可以在设置更低的设备上摆设;完全契合当代化摆设方式;
github
Loki是受Prometheus开导的水平可扩展、高可用、多租户日志聚合系统。它的设计非常具有成本效益且易于操作。它不索引日志的内容,而是索引每个日志流的一组标签。
1.2 优点

与其他日志聚合系统相比,Loki优势在于:
不对日志进行全文索引。通过存储压缩的非布局化日志和仅索引元数据,Loki 更易操作且运行成本更低。
使用你已经在 Prometheus 中使用的相同标签对日志流进行索引和分组,让你能使用你已在 Prometheus 中使用的相同标签在指标和日志之间无缝切换。
尤其适合存储 Kubernetes Pod 日志。Pod 标签等元数据会被自动抓取和索引。
在 Grafana 中有本机支持(必要 Grafana v6.0)。
1.3 Loki日志栈


  • promtail,署理,收集日志并发给Loki
  • loki,主服务器,存储日志和处理查询
  • Grafana,查询和显示日志
Loki 像 Prometheus,但对于日志:我们更喜欢基于多维标签的索引方法,并想要单二进制、易于os且没有依赖关系的系统。Loki 与 Prometheus 不同在于专注日志而非指标,并通过push而非pull交付日志。
1.4 下载及安装

Github

① 解压loki的安装包至指定目录(/data/software/loki/)
  1. mkdir /data/software/loki/
  2. unzip -q loki-linux-amd64.zip -d /data/software/loki/
复制代码
② 新建或上传loki设置文件到指定目录(/data/software/loki/etc)
  1. mkdir /data/software/loki/etc
  2. vim /data/software/loki/etc/loki-local-config.yaml
复制代码
设置文件内容
  1. # 认证配置
  2. auth_enabled: false
  3. # 端口配置
  4. server:
  5.         # 监听的端口
  6.   http_listen_port: 3100
  7. ingester:
  8.   lifecycler:
  9.     address: 127.0.0.1
  10.     ring:
  11.       kvstore:
  12.         store: inmemory
  13.       replication_factor: 1
  14.     final_sleep: 0s
  15.   chunk_idle_period: 5m
  16.   chunk_retain_period: 30s
  17.   max_transfer_retries: 0
  18. schema_config:
  19.   configs:
  20.     - from: 2020-07-29
  21.       store: boltdb
  22.       object_store: filesystem
  23.       schema: v11
  24.       index:
  25.         prefix: index_
  26.         period: 168h
  27. # 存储位置配置
  28. storage_config:
  29.         # 流文件存储地址
  30.   boltdb:
  31.           # 自定义boltdb目录
  32.     directory: /data/software/loki/data/index
  33.         # 索引存储地址
  34.   filesystem:
  35.           # 自定义filesystem目录
  36.     directory: /data/software/loki/data/chunks
  37. # 采集限制配置
  38. limits_config:
  39.   enforce_metric_name: false
  40.   reject_old_samples: true
  41.   reject_old_samples_max_age: 168h
  42.   # 修改每用户摄入速率限制,即每秒样本量,默认值为4M
  43.   ingestion_rate_mb: 30
  44.   # 修改每用户摄入速率限制,即每秒样本量,默认值为6M
  45.   ingestion_burst_size_mb: 15
  46. # 日志回看配置
  47. chunk_store_config:
  48.         #  max_look_back_period: 0s
  49.         # 回看日志行的最大时间,只适用于即时日志,7天
  50.   max_look_back_period: 168h
  51. # 表的保留期配置
  52. #table_manager:
  53. #  retention_deletes_enabled: false
  54. #  retention_period: 0s
  55. table_manager:
  56.         # 日志保留周期开关,默认false
  57.   retention_deletes_enabled: true
  58.   # 日志保留周期
  59.   retention_period: 168h  
复制代码
1.5 启动loki
  1. [root@service-monitoring etc]# nohup /data/software/loki/loki-linux-amd64 -config.file=/data/software/loki/etc/loki-local-config.yaml &
  2. [1] 10508
  3. [root@service-monitoring etc]# nohup: ignoring input and appending output to ‘nohup.out’
复制代码
1.6 验证是否启动成功
  1. [root@service-monitoring etc]# ps -ef|grep loki
  2. root     10508  9405  0 17:27 pts/4    00:00:00 /data/software/loki/loki-linux-amd64 -config.file=/data/software/loki/etc/loki-local-config.yaml
  3. root     10535  9405  0 17:27 pts/4    00:00:00 grep --color=auto loki
复制代码
2 安装promtail

Grafana可以和loki摆设在同一台服务器。
而promtail需安装在每台有日志输出文件的应用服务器。

2.1 解压安装包至指定目录
  1. unzip -q promtail-linux-amd64.zip -d /data/software/promtail/
复制代码

2.2 新建或上传loki设置文件到指定目录

/data/software/promtail/etc/
  1. vim /data/software/promtail/etc/promtail-local-config.yaml
复制代码
设置文件内容
  1. # 端口配置
  2. server:
  3.   http_listen_port: 9080
  4.   grpc_listen_port: 0
  5. # 记录游标位置
  6. positions:
  7.         # 游标记录上一次同步位置
  8.   filename: /data/software/promtail/tmp/positions.yaml
  9.   # 每10s同步一次
  10.   sync_period: 10s
  11. # Loki服务器地址
  12. clients:
  13.   - url: http://ip:3100/loki/api/v1/push
  14. # 日志文件配置
  15. scrape_configs:
  16. - job_name: monitor-platform-task-test-job-name
  17.   static_configs:
  18.   - targets:
  19.       - localhost
  20.     labels:
  21.       job: monitor-platform-task-test-job
  22.       __path__: /usr/local/javaedge/monitor-platform/task/logs/monitor-platform-task.log
复制代码
2.3 启动promtail
  1. [root@service-monitoring etc]# nohup /data/software/promtail/promtail-linux-amd64 -config.file=/data/software/promtail/etc/promtail-local-config.yaml &
  2. [1] 12772
  3. [root@service-monitoring etc]# nohup: ignoring input and appending output to ‘nohup.out’
复制代码
2.4 验证promtail是否启动成功
  1. [root@service-monitoring etc]# ps -ef|grep promtail
  2. root     12772 12231  0 17:48 pts/1    00:00:00 /data/software/loki/promtail-linux-amd64 -config.file=/data/software/loki/etc/promtail-local-config.yaml
  3. root     12796 12231  0 17:48 pts/1    00:00:00 grep --color=auto promtail
复制代码
重启
  1. # 1 查找正在运行的 Promtail 进程的 PID
  2. [root@javaedge-car-receiver-test etc]# ps aux | grep promtail
  3. root     12711  0.0  0.0 112712   964 pts/0    S+   16:26   0:00 grep --color=auto promtail
  4. root     14423  0.4  0.8 1150788 65720 ?       Sl   Apr02 274:46 /data/software/promtail/promtail-linux-amd64 -config.file=/data/software/promtail/etc/promtail-local-config.yaml
  5. # 这将显示所有包含 promtail 的进程。找到与你之前启动的 Promtail 实例对应的进程,记下其 PID。
  6. # 2 停止正在运行的 Promtail 进程:
  7. [root@javaedge-car-receiver-test etc]# kill PID
  8. # 使用与原始启动命令相同的命令来重新启动 Promtail
  9. [root@javaedge-car-receiver-test etc]# nohup /data/software/promtail/promtail-linux-amd64 -config.file=/data/software/promtail/etc/promtail-local-config.yaml &
  10. [1] 12779
  11. [root@javaedge-car-receiver-test etc]# nohup: ignoring input and appending output to ‘nohup.out’
  12. [root@javaedge-car-receiver-test etc]# ps aux | grep promtail
  13. root     12779 44.7  0.8 1150980 70088 pts/0   Sl   16:28   0:04 /data/software/promtail/promtail-linux-amd64 -config.file=/data/software/promtail/etc/promtail-local-config.yaml
  14. root     12795  0.0  0.0 112712   968 pts/0    S+   16:29   0:00 grep --color=auto promtail
  15. [root@javaedge-car-receiver-test etc]#
复制代码
3 在Grafana中添加Loki数据源

进入Grafana,选择 Configuration -> Data sources -> Add data source 进入选择页面,找到 Loki
选择数据源:

填写 loki 地址:

保存成功之后,切换到 Explore 菜单,在顶部选择数据源中就能找到 Loki 了,选中它:

4 查看日志

进入链接:http://graphna摆设ip:3000/explore:点击 Log browser 展开面板,在下面可以看见我们在 promtail 设置文件中设置的标签在这里面出现了,并且中心有很多日志文件

选择日志文件:

在右侧随意选择一个标签就可以过滤中心的文件,只显示到对应的服务的日志文件。
选择一个文件,然后可以看到下面有查询语句,这个是 Loki 的查询语言,与 Prometheus 查询语言 PromQL 类似,可实现强大的搜刮过滤等查询。
点击下面的 Show log 按钮,即可查看该日志文件最新的日志内容:

常用功能阐明:

5 日志选择和过滤

1 日志选择器

对于查询表达式的标签部门,将其用大括号括起来 {},然后使用键值语法选择标签。多个标签表达式用逗号分隔。
例如下面这个查询语句表现的就是查询 job 标签为 gps_server 中的 /var/log/gps_server/request.log 文件
  1. {filename="/var/log/gps_server/request.log",job="gps_server"}
复制代码
支持以下标签匹配运算符:

  • = 完全相等。
  • != 不相等。
  • =~ 正则表达式匹配。
  • !~ 不进行正则表达式匹配。
2 日志过滤器

编写日志流选择器后,可以通过编写搜刮表达式来进一步过滤效果。搜刮表达式可以是文本或正则表达式。
示例:查询所有哀求 /v1/web/monitor/statistics 接口的日志
  1. {filename="/var/log/gps_server/request.log"}|="/v1/web/monitor/statistics"
复制代码

匹配到效果之后还有高亮显示
过滤器可以多个连续使用,例如:在错误中查找关于邮件发送失败的日志
  1. {filename="/var/log/gps_server/runtime.log",job="gps_server"}|="ERRO"|="邮件"
复制代码

可用的过滤器类型:

  • |= 行包含字符串。
  • != 行不包含字符串。
  • |~ 行匹配正则表达式。
  • !~ 行与正则表达式不匹配。 regex表达式接受RE2语法。默认情况下,匹配项区分巨细写,并且可以将regex切换为不区分巨细写的前缀(?i)。
本文由博客一文多发平台 OpenWrite 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表