智能日志管理平台

  • syslog 日志采集

    最近更新时间:2018-07-13 10:27:09

    本场景主要教大家如何将 syslog 统一管理,主要针对比较知名的一款 syslog 管理软件,即 rsyslog。 众所周知,syslog,或者说基于 Syslog 协议的软件(如 rsyslog),在开源的类 Unix 系统中是非常知名的,它会自动收集内核及一些核心软件的服务日志,以确保系统正常运行。 syslog 作为一种rfc标准, 不仅支持内核程序的数据,同样也支持其他上层的业务软件向其发生数据。正是基于此,我们可以通过对 syslog 的统一收集,做到日志数据的统一管理。所以程序统一向 syslog 发送数据,而我们提供中心化管理 syslog,就可以更简单的实现安全审计、应用程序监控、以及追踪其他重要数据。

    对于一台机器来说,我们可以将该机器上所有业务产生的日志统一发送到 syslog 服务,然后我们只需要将 syslog 日志转发到 logkit Pro,最后通过 logkit Pro 发送到 Pandora 日志分析平台。 以此类推,就可以实现完整的数据中心日志统一化管理。分为 6 个步骤:

    1.准备工作

    2.安装 logkit Pro

    3.选择监听的 IP 和端口

    4.使用 logkit Pro 收集数据

    5.安装 rsyslog

    6.配置 rsyslog 发送

    7.在七牛云智能日志管理平台中查看日志


    1.准备工作

    1.准备一台机器,安装 logkit Pro, 机器需要打开一个 web 界面用于收集数据和监控,默认使用的端口为 3000,请确保开启;为了接收 syslog 日志,还需要开启 5140 端口(该端口可以改为其他端口,配置中也相应变更即可), rsyslog-client 需要能访问 logkit Pro 机器的 5140 端口。

    2.准备一台机器(假设为 Ubuntu14.04),安装 rsyslog-client;最好再部署一个能将日志发送到 rsyslog 的业务程序(可选)。

    rsyslog-client 和 logkit Pro 确保网络联通。

    logkit Pro 所在机器可以访问外网 https://pipeline.qiniu.com 。(私有部署没有这个要求)

    做好上述准备工作后,我们开始完整的实践。


    2.安装 logkit Pro

    1.根据您机器的操作系统版本下载 logkit Pro,logkit Pro 下载地址请阅读 logkit 安装

    解压后您可以看到

    其中 logkit.conf 为主配置文件,用于配置 logkit Pro 的 web 页面及端口配置,其中

    • bind_host 是设置绑定的端口,启动后可以根据这个配置打开 logkit Pro web 页面,默认的端口为 3000

    2.命令行进入 logkit Pro 所在文件夹,输入如下命令启动 logkit Pro:

    ./logkit-pro -f logkit-pro.conf

    3.通过浏览器访问 logkit Pro:

    http://127.0.0.1:3000

    logkit首页

    4.本地登录 logkit Pro:

    在 logkit Pro 首页右上角,点击登录

    本地登录

    本地登录的默认用户名和密码都是 admin。


    3.选择监听的 IP 和端口

    logkit Pro 需要接收 rsyslog 发送过来的日志,所以要确保 logkit Pro 和 rsyslog 的网络连通性,只要 rsyslog 能访问 logkit Pro 即可,如果 logkit Pro 有多个 IP,为了确保安全性,我们尽可能选择 rsyslog 机器能访问到的内网 IP。

    查看 IP 的方法, ifconfig -a

    可能获得的结果如下:

    eth0      Link encap:Ethernet  HWaddr 04:01:06:a7:6f:01  
              inet addr:101.46.8.0  Bcast:123.456.78.255  Mask:255.255.255.0
              inet6 addr: fe80::601:6ff:fea7:6f01/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:168 errors:0 dropped:0 overruns:0 frame:0
              TX packets:137 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:18903 (18.9 KB)  TX bytes:15024 (15.0 KB)
    
    eth1      Link encap:Ethernet  HWaddr 04:01:06:a7:6f:02  
              inet addr:10.100.20.41  Bcast:10.128.255.255  Mask:255.255.0.0
              inet6 addr: fe80::601:6ff:fea7:6f02/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:6 errors:0 dropped:0 overruns:0 frame:0
              TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:468 (468.0 B)  TX bytes:398 (398.0 B)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    

    可以看到 eth0 设备为外网可访问的 IP,而 eth1 为内网 IP,若 rsyslog 可以访问 10.200.20.41,那就选择内网 IP, 通过 ping 命令可以验证网络联通性。

    $ping 10.200.20.41
    sun@lcoal:~/logkit_test/_package$ ping 10.200.20.41
    PING 10.200.20.41 (10.200.20.41) 56(84) bytes of data.
    64 bytes from 10.200.20.41: icmp_seq=1 ttl=64 time=0.122 ms
    64 bytes from 10.200.20.41: icmp_seq=2 ttl=64 time=0.105 ms
    ^C
    --- 10.200.20.41 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 999ms
    rtt min/avg/max/mdev = 0.105/0.113/0.122/0.013 ms
    

    如上所示表示网络可以联通,我们将 10.200.20.41 选做我们监听的 IP 地址,而 5140 作为监听的端口(514一般为 rsyslog server 默认的监听端口,我们不使用514一方面是不与服务端本身可能存在的 rsyslog 的514冲突,另外一方面也是选用一个非常用端口,避免权限不够,logkit Pro 此处使用 5140 作为示例,也可以配置为别的端口)。


    4.配置 logkit Pro 收集数据

    进入数据收集页面,点击添加收集器开始配置收集器。

    1.添加数据源

    如下图所示,选择从 Socket 读取,在监听的地址一栏填入我们之前确定好的 IP 和端口内容,协议可以使用 udp,也可以使用 tcp,一般 syslog 使用 udp 协议传输,对于重要的数据,建议使用 tcp。

    udp://10.200.20.40:5140
    

    2.配置解析方式:默认的 syslog 日志选择按 syslog 格式解析即可,但是需要注意的是,对于应用程序自己定义的日志格式,默认的 syslog 格式无法解析,可以根据实际情况选择别的解析方式。

    3.继续下一步,直到发送数据

    如图所示,填写您的工作流名称,数据源名称,七牛公钥以及七牛私钥,日志分析仓库名称五项,其他都可以不作修改。

    其中工作流名称,数据源名称可以根据需要自定义一个名称,如 myworkflow 以及 mysyslog,而七牛公钥和七牛私钥 可以在七牛官网的【个人面板】-> 【秘钥管理】页面获得,如下图所示。

    4.确认添加收集器:


    5.安装 rsyslog

    默认情况下,机器应该已经安装了 rsyslog,如果还没有安装,可以执行如下命令安装:

    sudo apt-get install rsyslog
    安装好以后,你会在系统的目录中看到文件夹 /etc/rsyslog.d/

    其中包含 2 个文件:

    sun@local:/etc/rsyslog.d$ ls
    20-ufw.conf  50-default.conf
    

    6.配置 rsyslog 发送

    打开 sudo vi /etc/rsyslog.d/50-default.conf,增加一行发送的配置。

    *.* @10.200.20.41:5140
    如图所示:

    其中 *.*表示我们会发送所有的数据,当然,你也可以配置 rsyslog 只发送某些你关心的数据,关于如何配置 rsyslog 有策略性的发送数据,可以参阅 rsyslog 相关文档,在这里我们不多做展开。

    剩下的部分表示发送到哪里, @ 符号表示用 UDP 协议传输,如果使用 TCP 协议,可以改为使用@@ 2 个符号替换,当然,如果替换,那么 logkit Pro 端也要对应替换为 tcp 接收数据。 紧接着 @ 符号,是我们刚刚确认的 logkit Pro 所在机器的一个内网 IP,在我们这个例子中是 10.200.20.41,请根据你的实际情况修改,最后是端口号,也与 logkit Pro 那边配置的保持一致,在我们的例子中是 5140。

    配置完成后,保存配置,并重启 rsyslog

    service restart rsyslog

    至此,我们的配置就全部完成了,你可以在 logkit Pro 的页面看到数据接收和发送的情况。


    7.七牛云智能日志管理平台中查看日志

    登录 七牛云智能日志管理平台 查看日志。

    logkit Pro 配置时输入的日志仓库名称,会出现在日志仓库中,我们选择并搜索:

    默认情况下,系统发送的 syslog 日志就自带一些信息,如 标签(tag),设备(facility),优先级(priority),重要性(severity)等等,其他日志都在content字段内。

    如我们要搜一个 sudo 基本的日志,并且优先级(priority)为 86 的日志,搜索结果如下。

    以上内容是否对您有帮助?
  • Close