<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>OpenWRT on Colinx Blog</title>
    
    
    
    <link>/tags/openwrt/</link>
    <description>Recent content in OpenWRT on Colinx Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 13 Oct 2024 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="/tags/openwrt/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>来谈谈日志集中管理方案 - syslog 是你的好伙伴</title>
      <link>/posts/%E6%9D%A5%E8%B0%88%E8%B0%88%E6%97%A5%E5%BF%97%E9%9B%86%E4%B8%AD%E7%AE%A1%E7%90%86%E6%96%B9%E6%A1%88-syslog%E6%98%AF%E4%BD%A0%E7%9A%84%E5%A5%BD%E4%BC%99%E4%BC%B4/</link>
      <pubDate>Sun, 13 Oct 2024 00:00:00 +0000</pubDate>
      
      <guid>/posts/%E6%9D%A5%E8%B0%88%E8%B0%88%E6%97%A5%E5%BF%97%E9%9B%86%E4%B8%AD%E7%AE%A1%E7%90%86%E6%96%B9%E6%A1%88-syslog%E6%98%AF%E4%BD%A0%E7%9A%84%E5%A5%BD%E4%BC%99%E4%BC%B4/</guid>
      <description>
        
          
          
          
        
        
        

&lt;p&gt;身为一个数码宅，家里总是会有越来越多的数码设备，智能化的设备多起来，总是难免会遇到各种各样的问题，排查问题的时候日志就很重要了，对于一些偶发的 case, 比如偶发网络卡顿，能够看到足够完整清晰的日志，就很方便了。&lt;/p&gt;

&lt;p&gt;对于一些低功耗设备，比如路由器，其磁盘资源很紧张，日志通常不会保存很久。这个时候要排查一些偶发的持续时间长的小 bug 就很头痛了。好在 openwrt 原生就支持将日志通过 syslog 协议发送到远程服务器。不过看了一圈，发送是发送过去了，但是看日志还得命令行一个个看，要想有个方便的地方看的话就得上 ELK 那一套非常繁琐且吃资源的那一套，我的需求是这样的：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;免费，可以持续使用&lt;/li&gt;
&lt;li&gt;能够通过 syslog 协议收集日志&lt;/li&gt;
&lt;li&gt;能够自部署最佳，但是不希望是 ELK 那种繁琐且非常消耗资源的&lt;/li&gt;
&lt;li&gt;有个 web 界面能方便的查找日志&lt;/li&gt;
&lt;li&gt;能够配置监控，那样的话如果设备有 fatal 日志我可以立即知道&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;搜寻了一番，发现有个 datalust 公司出的 seq 看起来挺不错，在自己服务器上部署了一套，完美符合我的需求，分享一下。&lt;/p&gt;

&lt;p&gt;seq 不仅支持 syslog, 还支持程序主动上报、采集容器日志等很多功能，这里只主要围绕 syslog, 收集各种终端设备日志做介绍&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128864.png&#34; alt=&#34;Pasted image 20241013170403&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128865.png&#34; alt=&#34;Pasted image 20241013170340&#34; /&gt;&lt;/p&gt;

&lt;h2 id=&#34;安装-通过-docker-compose-部署-seq&#34;&gt;安装：通过 docker compose 部署 seq&lt;/h2&gt;

&lt;p&gt;首先生成下默认密码，这里需要通过程序自身的指令生成明文密码对应的密文才行。比如我这里指定初始密码的明文为&lt;code&gt;initP@ss&lt;/code&gt;, 运行这个指令，就会输出对应的密文，这个待会部署的时候需要使用&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;➜ echo &#39;initP@ss&#39; | sudo docker run --rm -i datalust/seq config hash


QE6k2bZLWkh7BwWYRNsG3h9sZPcLskSLKJGii4mvU0rsDyN0/UqW1TwEZp43O09wvOCjbOgswZxHX7FeNo05cfiv3KkB8/q/Msj8nlXL4TGd
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;之后通过 docker compose 进行部署，下面为 compose 文件示例&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;services:
  seq-input-syslog:
    image: datalust/seq-input-syslog:latest
    container_name: seq_syslog_input
    depends_on:
      - seq
    ports:
      - &amp;quot;20014:514/udp&amp;quot; # 接收 syslog 协议请求的端口，这里配置的是 20014, 可以自定义，后面需要用到
    environment:
      SEQ_ADDRESS: &amp;quot;http://seq:5341&amp;quot; # 要转发到主程序进行处理，端口为默认的 5341, 不用改
    restart: unless-stopped

  seq:
    image: datalust/seq:latest
    container_name: seq_log
    ports:
      - &amp;quot;20054:80&amp;quot; # web ui
    environment:
      ACCEPT_EULA: Y
      SEQ_FIRSTRUN_ADMINPASSWORDHASH: QE6k2bZLWkh7BwWYRNsG3h9sZPcLskSLKJGii4mvU0rsDyN0/UqW1TwEZp43O09wvOCjbOgswZxHX7FeNo05cfiv3KkB8/q/Msj8nlXL4TGd # 这里填写刚生成的密文
    restart: unless-stopped
    volumes:
      - /data/seq-data:/data
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;之后执行 sudo docker compose up -d , 顺利的话，在配置的 web ui 端口，就可以看到管理台了。默认账户为 admin, 密码为刚才设置的密码的原始明文。&lt;/p&gt;

&lt;h2 id=&#34;使用-syslog-配置&#34;&gt;使用：syslog 配置&lt;/h2&gt;

&lt;p&gt;基本上所有 Linux-base 系统都支持将系统日志通过 syslog 协议发送到远端服务器。我手头主要的 openwrt 路由器、运行 truenas 系统的 nas、树莓派上跑的 debian, 以及其他 linux 云服务器都可以无缝接入，这里简单介绍下&lt;/p&gt;

&lt;h3 id=&#34;openwrt-配置远程-log&#34;&gt;openwrt 配置远程 log&lt;/h3&gt;

&lt;p&gt;在 system -&amp;gt; system 菜单下，有个 logging 的 tab, 里面配置好服务器 ip、端口就可以使用了。协议记得选 udp&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128867.png&#34; alt=&#34;Pasted image 20241013165852&#34; /&gt;&lt;/p&gt;

&lt;h3 id=&#34;truenas-配置远程-log&#34;&gt;truenas 配置远程 log&lt;/h3&gt;

&lt;p&gt;在 system setting -&amp;gt; advaned -&amp;gt; syslog 菜单下，配置远程服务器地址和端口，协议选择 udp, 保存就可以了&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128868.png&#34; alt=&#34;Pasted image 20241013171725&#34; /&gt;&lt;/p&gt;

&lt;h3 id=&#34;linux-服务器配置远程-log&#34;&gt;linux 服务器配置远程 log&lt;/h3&gt;

&lt;p&gt;大多数 Linux 发行版已经预装了 rsyslog。可以通过以下命令检查是否已安装：
&lt;code&gt;rsyslogd -version&lt;/code&gt;
如果未安装，可以使用以下命令安装：&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;# Debian/Ubuntu:
sudo apt update
sudo apt install rsyslog

# CentOS/RHEL:
sudo yum install rsyslog
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;步骤 2：配置客户端的 rsyslog
编辑 rsyslog 配置文件：打开配置文件进行编辑，通常位于 &lt;code&gt;/etc/rsyslog.conf&lt;/code&gt; 或 &lt;code&gt;/etc/rsyslog.d/&lt;/code&gt; 目录下。&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;sudo nano /etc/rsyslog.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;添加远程服务器配置：在文件末尾，添加以下行以指定远程服务器的 IP 地址和端口（默认是 UDP 514 或 TCP 514）：&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-conf&#34;&gt;*.* @remote-server-ip:514    # 使用 UDP
*.* @@remote-server-ip:514   # 使用 TCP
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;这里我们需要使用 udp 协议的。
将 remote-server-ip 替换为远程 Syslog 服务器的实际 IP 地址或者域名，保存并关闭文件。&lt;/p&gt;

&lt;p&gt;比如&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-conf&#34;&gt;*.* @syslog.myserver.com:20014
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;步骤 3：重启 rsyslog 服务
在进行更改后，重启 rsyslog 服务以应用新配置：&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;sudo systemctl restart rsyslog
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&#34;其他配置&#34;&gt;其他配置&lt;/h2&gt;

&lt;h3 id=&#34;配置日志定期清理&#34;&gt;配置日志定期清理&lt;/h3&gt;

&lt;p&gt;默认情况下，是没有配置日志清理规则的，时间一长服务器硬盘可能直接满了，所以这里一定不要忘记配置自动清理。在菜单里的 retention 可以配置过多少天删除&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128869.png&#34; alt=&#34;Pasted image 20241013170659&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128870.png&#34; alt=&#34;Pasted image 20241013170654&#34; /&gt;&lt;/p&gt;

&lt;h3 id=&#34;配置告警通知&#34;&gt;配置告警通知&lt;/h3&gt;

&lt;p&gt;各种通知渠道的支持是通过插件形式提供的，在 设置里可以自行安装。可以支持 email、http webhook, 钉钉机器人、telegram 机器人等多种渠道。&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://www.nuget.org/packages?q=Tags%3A%22seq-app%22&#34;&gt;插件市场链接&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

        
        </description>
    </item>
    
  </channel>
</rss>