Skip to content

Commit 3b96b5b

Browse files
committed
feat: add new post
1 parent 9710939 commit 3b96b5b

File tree

1 file changed

+152
-0
lines changed

1 file changed

+152
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
---
2+
title: 来谈谈日志集中管理方案 - syslog是你的好伙伴.md
3+
date: 2024-10-13
4+
lastmod: 2024-10-13
5+
description: 身为一个数码宅, 家里总是会有越来越多的数码设备, 智能化的设备多起来, 总是难免会遇到各种各样的问题, 排查问题的时候日志就很重要了, 对于一些偶发的 case, 比如偶发网络卡顿, 能够看到足够完整清晰的日志, 就很方便了.
6+
categories:
7+
- 技术
8+
tags:
9+
- Linux
10+
- NAS
11+
- OpenWRT
12+
- Docker
13+
---
14+
15+
16+
身为一个数码宅, 家里总是会有越来越多的数码设备, 智能化的设备多起来, 总是难免会遇到各种各样的问题, 排查问题的时候日志就很重要了, 对于一些偶发的 case, 比如偶发网络卡顿, 能够看到足够完整清晰的日志, 就很方便了.
17+
18+
对于一些低功耗设备, 比如路由器, 其磁盘资源很紧张, 日志通常不会保存很久. 这个时候要排查一些偶发的持续时间长的小 bug 就很头痛了. 好在 openwrt 原生就支持将日志通过 syslog 协议发送到远程服务器. 不过看了一圈, 发送是发送过去了, 但是看日志还得命令行一个个看, 要想有个方便的地方看的话就得上 ELK 那一套非常繁琐且吃资源的那一套, 我的需求是这样的:
19+
20+
- 免费,可以持续使用
21+
- 能够通过 syslog 协议收集日志
22+
- 能够自部署最佳, 但是不希望是 ELK 那种繁琐且非常消耗资源的
23+
- 有个 web 界面能方便的查找日志
24+
- 能够配置监控, 那样的话如果设备有 fatal 日志我可以立即知道
25+
26+
搜寻了一番, 发现有个 datalust 公司出的 seq 看起来挺不错, 在自己服务器上部署了一套, 完美符合我的需求, 分享一下.
27+
28+
seq 不仅支持 syslog, 还支持程序主动上报、采集容器日志等很多功能, 这里只主要围绕 syslog, 收集各种终端设备日志做介绍
29+
30+
![Pasted image 20241013170403](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202410132128864.png)
31+
32+
![Pasted image 20241013170340](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202410132128865.png)
33+
34+
## 安装: 通过 docker compose 部署 seq
35+
36+
首先生成下默认密码, 这里需要通过程序自身的指令生成明文密码对应的密文才行. 比如我这里指定初始密码的明文为`initP@ss`, 运行这个指令, 就会输出对应的密文, 这个待会部署的时候需要使用
37+
38+
```bash
39+
echo 'initP@ss' | sudo docker run --rm -i datalust/seq config hash
40+
41+
42+
QE6k2bZLWkh7BwWYRNsG3h9sZPcLskSLKJGii4mvU0rsDyN0/UqW1TwEZp43O09wvOCjbOgswZxHX7FeNo05cfiv3KkB8/q/Msj8nlXL4TGd
43+
```
44+
45+
之后通过 docker compose 进行部署, 下面为 compose 文件示例
46+
47+
```yaml
48+
services:
49+
seq-input-syslog:
50+
image: datalust/seq-input-syslog:latest
51+
container_name: seq_syslog_input
52+
depends_on:
53+
- seq
54+
ports:
55+
- "20014:514/udp" # 接收 syslog 协议请求的端口, 这里配置的是20014, 可以自定义, 后面需要用到
56+
environment:
57+
SEQ_ADDRESS: "http://seq:5341" # 要转发到主程序进行处理, 端口为默认的5341, 不用改
58+
restart: unless-stopped
59+
60+
seq:
61+
image: datalust/seq:latest
62+
container_name: seq_log
63+
ports:
64+
- "20054:80" # web ui
65+
environment:
66+
ACCEPT_EULA: Y
67+
SEQ_FIRSTRUN_ADMINPASSWORDHASH: QE6k2bZLWkh7BwWYRNsG3h9sZPcLskSLKJGii4mvU0rsDyN0/UqW1TwEZp43O09wvOCjbOgswZxHX7FeNo05cfiv3KkB8/q/Msj8nlXL4TGd # 这里填写刚生成的密文
68+
restart: unless-stopped
69+
volumes:
70+
- /data/seq-data:/data
71+
```
72+
73+
之后执行 sudo docker compose up -d , 顺利的话, 在配置的 web ui 端口, 就可以看到管理台了. 默认账户为 admin, 密码为刚才设置的密码的原始明文.
74+
75+
## 使用: syslog 配置
76+
77+
基本上所有 Linux-base 系统都支持将系统日志通过 syslog 协议发送到远端服务器. 我手头主要的 openwrt 路由器、运行 truenas 系统的 nas、树莓派上跑的 debian, 以及其他 linux 云服务器都可以无缝接入, 这里简单介绍下
78+
79+
### openwrt 配置远程 log
80+
81+
在 system -> system 菜单下, 有个 logging 的 tab, 里面配置好服务器 ip、端口就可以使用了. 协议记得选 udp
82+
83+
![Pasted image 20241013165852](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202410132128867.png)
84+
85+
### truenas 配置远程 log
86+
87+
在 system setting -> advaned -> syslog 菜单下, 配置远程服务器地址和端口, 协议选择 udp, 保存就可以了
88+
89+
![Pasted image 20241013171725](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202410132128868.png)
90+
91+
### linux 服务器配置远程 log
92+
93+
大多数 Linux 发行版已经预装了 rsyslog。可以通过以下命令检查是否已安装:
94+
`rsyslogd -version`
95+
如果未安装,可以使用以下命令安装:
96+
97+
```bash
98+
# Debian/Ubuntu:
99+
sudo apt update
100+
sudo apt install rsyslog
101+
102+
# CentOS/RHEL:
103+
sudo yum install rsyslog
104+
```
105+
106+
步骤 2:配置客户端的 rsyslog
107+
编辑 rsyslog 配置文件: 打开配置文件进行编辑,通常位于 `/etc/rsyslog.conf` 或 `/etc/rsyslog.d/` 目录下。
108+
109+
```bash
110+
sudo nano /etc/rsyslog.conf
111+
```
112+
113+
添加远程服务器配置: 在文件末尾,添加以下行以指定远程服务器的 IP 地址和端口(默认是 UDP 514 或 TCP 514):
114+
115+
```conf
116+
*.* @remote-server-ip:514 # 使用 UDP
117+
*.* @@remote-server-ip:514 # 使用 TCP
118+
```
119+
120+
这里我们需要使用 udp 协议的.
121+
将 remote-server-ip 替换为远程 Syslog 服务器的实际 IP 地址或者域名, 保存并关闭文件。
122+
123+
比如
124+
125+
```conf
126+
*.* @syslog.myserver.com:20014
127+
```
128+
129+
步骤 3:重启 rsyslog 服务
130+
在进行更改后,重启 rsyslog 服务以应用新配置:
131+
132+
```bash
133+
sudo systemctl restart rsyslog
134+
```
135+
136+
## 其他配置
137+
138+
### 配置日志定期清理
139+
140+
默认情况下, 是没有配置日志清理规则的, 时间一长服务器硬盘可能直接满了, 所以这里一定不要忘记配置自动清理. 在菜单里的 retention 可以配置过多少天删除
141+
142+
![Pasted image 20241013170659](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202410132128869.png)
143+
144+
![Pasted image 20241013170654](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202410132128870.png)
145+
146+
### 配置告警通知
147+
148+
各种通知渠道的支持是通过插件形式提供的, 在 设置里可以自行安装. 可以支持 email、http webhook, 钉钉机器人、telegram 机器人等多种渠道.
149+
150+
[插件市场链接](https://www.nuget.org/packages?q=Tags%3A%22seq-app%22)
151+
152+
---

0 commit comments

Comments
 (0)