乐趣区

关于运维:同步服务器日志到-SeaTable让日志更好的可视化和协同处理

SeaTable 开发者版是一款收费易用、可扩大的数据中台产品。它同时联合了协同表格的易用性和数据库弱小的数据处理能力。SeaTable 提供了 Restful API,这样你就能够很不便的随时随地通过 HTTP 协定来写入数据。

本文咱们次要介绍怎么用 SeaTable 来记录服务器上多种服务的谬误日志,实现日志的可视化,避免错误信息被忽视。总体的架构如下图:

示例如下图:

特色包含

  • 日志用 Markdown 格局放在一个代码块中并记录到 SeaTable 的长文本列中
  • 咱们能够用 SeaTable 多视图的性能建设多个不同的视图,每个视图包含特定的过滤条件,不便咱们疾速的删选查看数据

上面来具体介绍搭建过程。

用 filebeat 来把日志发送到 Redis

装置 filebeat

在宿主机上安装,以 Ubuntu 20.04 为例

apt update && apt install filebeat -y

filebeat 配置文件

vim /etc/filebeat/filebeat.yml

内容如下,依据理论配置批改

https://github.com/seatable/s…

filebeat.inputs:

  - type: log

    paths:

      - /opt/seatable/shared/seatable/logs/dtable_web.log        # 日志门路

    tags: ["dtable-web"]                                         # 对应表格中的 Service

    multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}|^[[0-9]{4}-[0-9]{2}-[0-9]{2}'

    multiline.negate: true        # 多行匹配,以日期结尾的信息,例如:'2021-10-12' 或 '[2021-10-12'

    multiline.match: after

  
  - type: log

    paths:

      - /opt/seatable/shared/seatable/logs/dtable-server.log

    tags: ["dtable-server"]

    multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}|^[[0-9]{4}-[0-9]{2}-[0-9]{2}'

    multiline.negate: true

    multiline.match: after


output.redis:

  hosts: ["redis host"]

  password: "redis password"

  db: 0

  timeout: 5

  keys:

    - key: "seatable-error-logs"  # Redis key,不可批改

      when.contains:

        message: "[ERROR]"        # 匹配日志中的关键词

以上的示例配置适宜于日志中的工夫格局为相似 2021-10-12 或者 [2021-10-12结尾,可能辨认出多行的谬误日志。

启动 filebeat

filebeat 会把匹配的日志发送到 Redis 中

service filebeat start

用脚本从 Redis 读取音讯记录到 SeaTable

SeaTable 表

  1. 生成 API Token
  2. 创立以下列,辨别大小写
名称 首列 类型
Service 文本 或 单选
Time x 日期,准确到分钟
Log x 长文本

脚本

在宿主机上安装,门路 /opt/ 为例

cd /opt/

git clone git@github.com:seatable/seatable-syncer.git

装置 Python 依赖

cd seatable-syncer/log-sync/

pip3 install -r requirements.txt

配置文件

vim log_syncer_settings.py

内容如下,依据理论配置批改

# SeaTable

server_url = 'SeaTable 服务器地址'

api_token = '表格的 api_token'

table_name = 'table name'


# Redis

redis_host = 'redis host'

redis_db = 0

redis_port = 6379

redis_password = None

启动脚本

脚本从 Redis 中读取匹配的日志,发送到 SeaTable 中

python3 log_syncer.py

log_syncer.py 可能解决以下格局结尾的日志

2020-01-01 01:02:02

2020-01-01T01:02:02

[2020-01-01 01:02:02

[2020-01-01T01:02:02

如果你的日志格局不合乎下面的要求,能够自行批改下文件 log_syncer.py。

在 SeaTable 中共享和后续解决

在把日志同步到 SeaTable 的一个表格后,咱们就能够不便的把日志信息共享到群组和其余集体,不便协同来剖析问题。还能够应用 揭示规定 自动化规定 将日志信息即时告诉给合作人。还能够退出主动解决规定,比方合乎某些条件的日志,加上能够疏忽的标签,合乎某些条件日志,加上待处理的标签。

总结

通过 filebeat, Redis 和 Python 脚本,咱们就能够收集多个服务器的日志到 SeaTable 的一个表格中。通过表格的过滤条件、多视图性能,咱们能够不便的对日志进行剖析和查看。通过共享合作性能,咱们就能够不便的实现多人协同解决。此文抛砖引玉,心愿大家发现 SeaTable 更多的用法,晋升工作效率!

退出移动版