引言
分享一个日志监控工具,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.gz
2.解压
tar -xvf filebeat-8.17.3-linux-x86_64.tar.gz
3. 配置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 # 日志路径改为 logs2
filebeat.inputs:
- type: log
enabled: true
paths:
- ../paths/to/your/logs/app.log
processors: # 这里需要对日志进行解析,具体的日志格式参考上面
- 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: 10
path: "/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 的服务界面:
总结
以上就是全部的内容了,介绍的比较简单,也是为了方便入门,后面更多的功能还需要进一步探索。