引言
分享一个日志监控工具,openobserve(简称 o2),它是一个云原生可观察性平台,专为日志、指标、跟踪、分析 而构建,旨在以 PB 级规模运行。与 Elasticsearch 不同,OpenObserve 不需要了解和调整大量设置,他能在 2 分钟内启动并运行,极大地降低了学习成本。下面通过一个使用案例来分享o2的使用。
工作原理
首先是我们的服务产生日志,然后使用 filebeat 将日志解析并发送到 o2 平台,最后 o2 平台对日志进行可视化展示、分析等等。
需要的组件
- 从工作原理即可看出,首先要有日志,这里我是使用 loguru 来记录日志,相关使用教程可以参考 loguru。
- 有了日志后就需要通过 filebeat 来解析和发送日志到 o2,当然你也可以使用其他的工具来发送,比如 FluentBit、Fluentd、Vector、Logstash等等,更多内容参考官网。
- 最后就是登录 o2,进行日志的分析和可视化等等。
实践案例
- 记录的日志以及格式,这里以我自己记录的一些日志(app.log)为例:
2025-03-12 15:34:56.654 | INFO | order_id=67ec8516-f8d5-11ef-bba1-3cecef05179e | func=services.transcribe.transcribe | Transcription engine received the request: endpoint=/transcribe
2025-03-12 15:35:56.655 | WARNING | order_id=67ec8516-f8d5-11ef-bba1-3cecef05179e | func=services.transcribe.transcribe | Transcription engine received the request: endpoint=/transcribe
2025-03-12 15:36:56.655 | ERROR | order_id=67ec8516-f8d5-11ef-bba1-3cecef05179e | func=services.transcribe.transcribe | Transcription engine received the request: endpoint=/transcribe
2025-03-12 15:37:56.655 | CRITICAL | order_id=67ec8516-f8d5-11ef-bba1-3cecef05179e | func=services.transcribe.transcribe | Transcription engine received the request: endpoint=/transcribe
- filebeat 的安装和使用
因为需要用到 filebeat,所以先简单讲一下它的安装和使用。
1.下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.3-linux-x86_64.tar.gz2.解压
tar -xvf filebeat-8.17.3-linux-x86_64.tar.gz3. 配置filebeat
cd filebeat-8.17.3-linux-x86_64
vim my_filebeat.yml
"""
my_filebeat.yml 内容如下
setup.ilm.enabled: false
setup.template.enabled: false# 指定独立的路径,避免冲突。如果需要同时开启多个 filebeat 服务,就需要为每个服务设置数据保存目录,这个目录下存贮当前服务已经传送的数据等信息,便于管理不同的filebeat服务,也避免重启服务后重复传送日志
#path.data: /data/chenkj/filebeat-8.17.3-linux-x86_64/data2 # 数据路径改为 data2
#path.logs: /data/chenkj/filebeat-8.17.3-linux-x86_64/logs2 # 日志路径改为 logs2filebeat.inputs:
- type: logenabled: truepaths:- ../paths/to/your/logs/app.logprocessors: # 这里需要对日志进行解析,具体的日志格式参考上面- dissect:tokenizer: '%{my_timestamp} | %{level} | speaker_id=%{speaker_id} | func=%{func} | %{msg}'field: "message"target_prefix: ""- timestamp:field: my_timestamp# target_field: '@timestamp'layouts:#- '2006-01-02T15:04:05.999'#- '2006-01-02 15:04:05,999'- '2006-01-02 15:04:05.999'test:#- '2006-01-02T15:04:05.999'#- '2006-01-02 15:04:05,999'- '2006-01-02 15:04:05.999'timezone: 'Asia/Shanghai'output.elasticsearch:hosts: ["http://localhost:5080"] # 开启 o2 的服务器以及端口timeout: 10path: "/api/default/"index: "log" # 日志的index,取不同的index可以对不同的日志进行分组管理username: "123@gmail.com"password: "123456"
"""4. 启动 filebeat
./filebeat -e -c my_filebeat.yml
- o2 的安装和使用
这里有很多方式可以安装和启动 o2,这里以 docker 启动进行讲解,非常简单,一个命令就能把 o2 服务run起来。其他方式参考这里。
sudo docker run -d \--name openobserve \-p 5080:5080 \-e ZO_ROOT_USER_EMAIL="123@gmail.com" \-e ZO_ROOT_USER_PASSWORD="123456" \public.ecr.aws/zinclabs/openobserve:latest
- 查看和分析日志
现在 o2 服务已经 run 起来了,filebeat 也在实时监控日志并发送日志到 o2,这个时候我们就可以打开浏览器,访问 o2 服务。以我的这个例子来说,就是访问 “http://localhost:5080” 这个地址。当然,你也可以把日志发送到官方提供的 OpenObserve Cloud 平台,这样我们就不用自己开启 o2 服务了。
下面展示一下 o2 的服务界面:
总结
以上就是全部的内容了,介绍的比较简单,也是为了方便入门,后面更多的功能还需要进一步探索。