日志易数据接入之 Syslog 日志上传

在企业运维环境中,运维人员管理的主要对象分别是服务器、存储、网络设备、安全设备等。而在对整个企业网站进行监控时,这些设备的日志数据都需纳入到监控的范围之内。日志分析与监控,这事说大不大,说小也不小。
传统的ES开源解决方案虽然节约了应用成本,但对应的人力维护成本较高。这个中的辛酸故事毋需多言。在此介绍一种商业日志分析解决方案——日志易。好不好用暂不评论,是否拿来对比试用也取决于各位心情。
第一步自然是日志数据接入。数据源如何接入到日志易服务之中呢?

日志易的日志接入方式主要包括以下三种:

  • 日志易Agent:通过使用日志易Agent进行采集,此处方式部署版优先推荐。
  • Rsyslog Agent:使用rsyslog 5.8.0及以上版本,通过配置rsyslog agent转发本地日志文件到日志易。
  • Web方式:使用http post上传日志文件。
    这里我们先介绍Rsyslog日志接入的方式。
    Rsyslog接入既可使用手动部署,也可使用脚本部署。日志易官方站点为Rsyslog接入提供了相应脚本,这在Rsyslog脚本部署环节有相关介绍。

Ryslog手动部署

Rsyslog 手动部署要求操作人员拥有root或sudo权限。
其次需确定rsyslog版本是否为5.8.0及以上版本。Linux系统可使用rsyslog -v命令查看rsyslog版本号,如果版本号较低,可访问rsyslog网站——http://www.rsyslog.com/download/ ——下载最先版本。Rsyslog编译过程在此就不详细提及了。下面的部署步骤以rsyslog 5.8.0及其以上版本为前提进行展开。

1. 配置系统环境

如果/var/spool/rsyslog目录不存在,则创建该目录。如果是Ubuntu系统,还应确保该目录的权限。其相关脚本如下:

sudo mkdir -v /var/spool/rsyslog
if [ "$(grep Ubuntu /etc/issue)" != "" ]; then
  sudo chown -R syslog:adm /var/spool/rsyslog
fi

2. 更新rsyslog配置文件

编辑或创建rsyslog配置文件,将下列内容粘贴在 /etc/rsyslog.d/rizhiyi.conf配置文件中:

$ModLoad imfile
$WorkDirectory /var/spool/rsyslog

$InputFileName FILEPATH
$InputFileTag APPNAME
$InputFileStateFile stat_APPNAME
$InputFileSeverity info
$InputFilePersistStateInterval 20000
$RepeatedMsgReduction off
$InputRunFileMonitor
$InputFilePollInterval 3
$template RizhiyiFormat_APPNAME,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [TOKEN@32473 tag=\"TAG\"] %msg%\n"

if $programname == ‘APPNAME‘ then @@log.rizhiyi.com:5140;RizhiyiFormat_APPNAME
if $programname == ‘APPNAME‘ then ~

配置文件参数替换说明:

  • TOKEN: 使用“运行--用户标识”页面中的用户标识符替换它。示例:ba1f2511fc30423bdbb183fe33f3dd0f
  • FILEPATH: 需要上传的日志文件的绝对路径,必须包含日志文件名。示例:/var/log/nginx/access.log
  • APPNAME: 用于标识上传的唯一应用来源,可用来定义日志分组,这将帮助使用者有效划分日志,缩小搜索范围。APPNAME设置正确与否直接影响到后台对日志字段的提取。Appname由英文、数字及下划线组成。不可以与/etc/rsyslog.d下已有的配置重复(通过rsyslog上传时也不能包含空格),否则会导致新配置的token和tag不生效。如果您是VIP用户,日志易为您定制了日志解析规则,请填写日志易提供的针对该日志的APPNAME,以使定制的日志解析规则生效。示例:nginx_access
  • TAG: 标签,标识日志的扩展信息,可定义多个标识,这里替换为您自行定义的标签,可用来定义日志分组,这将帮助使用者有效划分日志,缩小搜索范围。示例: rizhiyi_search

注意
在 /etc/rsyslog.d/ 下的rsyslog配置文件中:

  • $InputFileTag定义的APPNAME必须唯一,同一台主机上不同的应用应当使用不同的APPNAME,否则会导致新定义的TOKEN和TAG不生效;
  • $template定义的模板名必须唯一,否则会导致新定义的TOKEN和TAG不生效;
  • $InputFileStateFile定义的StateFile必须唯一,它被rsyslog用于记录文件上传进度,否则会导致混乱;
  • @@log.rizhiyi.com:5140 用于指定接收日志的服务器域名或者主机名。默认是 log.rizhiyi.com:5140
  • Ubuntu系统因为rsyslog是以syslog用户运行,所以会存在因为无读权限而无法采集日志的问题。为了检查syslog用户是否有权限读取日志文件可以用 su -s /bin/sh -c "head -n 1 /PATH/TO/YOUR/LOGFILE" syslog 命令验证

3. 重启rsyslog

$ sudo service rsyslog restart

4. 验证

例如,配置文件中的tag字段已修改为"accesslog",可使用"tag:accesslog" 搜索过去一小时的事件,检查日志易是否成功接收并正确识别日志,建立索引可能需要几十秒钟时间,需要等待几十秒钟。

Rsyslog脚本部署

通用的Linux平台上,Rsyslog脚本部署需要满足以下基础条件:

  • Rsyslog为5.8.0或更高版本(较低版本可访问rsyslog网站下载更新);
  • 拥有root或sudo权限;
    配置完成后,新增的日志文件将默认通过514端口发送到日志易。

可以使用日志易提供的configure_linux_rsyslog.sh 脚本自动初始化运行环境并生成配置文件,以便上传日志。在Linux系统上相关执行命令如下:

curl -O https://www.rizhiyi.com/install/configure_linux_rsyslog.sh
chmod 755 configure_linux_rsyslog.sh
sudo ./configure_linux_rsyslog.sh -h RIZHIYI_LOG_SERVER_ADDRESS -t YOUR_TOKEN --filepath /PATH/TO/YOUR/LOGFILE --appname TYPE_OF_YOUR_LOG --tag CUSTOM_ATTRIBUTES_OF_YOUR_LOG 

相关参数说明如下:

  • -h RIZHIYI_LOG_SERVER_ADDRESS:后跟地址为负责接收日志的日志易服务器域名。
    示例:-h log.u.rizhiyi.com
  • -t YOUR_TOKEN:后跟用户的token。获取方法:当您开始设置帐户,可以通过进入日志易页面"运行" --> "用户标识",查看用户标识符。
    示例:-t ba1f2511fc30423bdbb183fe33f3dd0f
  • --filepath /PATH/TO/YOUR/LOGFILE:后跟需要上传的日志文件的绝对路径,必须包含日志文件名。
    示例:--filepath /var/log/nginx/access.log
  • --appname TYPE_OF_YOUR_LOG:需要上传的日志类型。appname设置正确与否直接影响到后台对日志字段的提取。如果您是VIP用户,请填写日志易提供的针对该日志的appname。
    示例: --appname nginx_access
    注意:appname不可以与/etc/rsyslog.d下已有的配置重复,否则会导致新配置的token和tag不生效。如果你需要用同一个appname上传多个日志文件,请参考手动配置rsyslog。
  • --tag CUSTOM_ATTRIBUTES_OF_YOUR_LOG:后跟用户自定义属性标签,日志上传后可以根据该tag进行搜索或定义日志分组;用户可配置多个tag,多个tag之间使用英文半角逗号分隔,中间不能有空格。
    示例:--tag rizhiyi_search 或 --tag tag1,tag2,tag3
    错误用例:--tag tag1, tag2 由于tag1与tag2之间有额外的空格,tag2将不被识别。

脚本解释
该脚本将进行以下系统检测及操作,以确保上传日志的系统与日志易兼容。配置系统的内容与手动配置rsyslog中相同,即通过编写/etc/rsyslog.d/rizhiyi.conf 配置文件来实现rsyslog日志上传。配置完成后,重启rsyslog服务则配置生效,在日志易端如果能够检索到日志信息,则配置成功。
系统检测和配置过程包括如下几步:

  1. 检查脚本是否支持操作系统,如果否,则退出(仅支持Linux,不支持Windows或Mac OS);
  2. 检查Linux发行版本是否是CentOS、Redhat、Ubuntu,如果否,则退出;
  3. 检查用户是否有root权限运行脚本;
  4. 检查selinux服务是否执行,如果是,提示用户手动关闭并退出脚本;
  5. 检查主机名(hostname)是否为空、localhost或127.0.0.1,如果是,则警告后退出;
  6. 检查rsyslog的版本是否至少是5.8.0,如果不符合条件,则退出;
  7. 检查rsyslog是否配置为系统服务自动启动,如果否,则退出;
  8. 检查网络连通性,如果有问题,通知用户检查网络连接并退出;
  9. 在rsyslog配置文件目录/etc/rsyslog.d/下生成配置文件;
  10. 重启rsyslog服务。

上传网络设备日志

路由器、交换机、负载均衡、***防护系统等网络设备,可以通过syslog输出日志。使用本地的中央rsyslog可转发这些日志给日志易。
大多数网络设备使用旧的非结构化的日志格式,并使用UDP协议传输。日志易使用新的RFC5424标准来结构化日志,使用更可靠的TCP传输协议。以下将展示将旧日志转换为这种新的标准格式,并通过Linux系统的rsyslog协议转发到日志易的配置。

Linux后端配置步骤如下:

1. 添加UDP输入

创建一个新的UDP配置文件或打开现有的:
sudo vim /etc/rsyslog.d/forward_udp_2_tcp.conf
复制并粘贴以下内容配置启用syslog,默认 UDP输入端口为514,会通过TCP协议转发数据到collector01的5140端口

# Modules
$ModLoad imudp
$UDPServerRun 514
# log every host in its own directory
$template RemoteHost,"/data/syslog/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%.log"

# 写本地文件
$template LocalFileFormat,"%timestamp:::date-rfc3339% %HOSTNAME% %syslogfacility-text% %syslogseverity-text% %syslogtag%%msg%\n"
# 写远程Collector,这里将appname固定为"switch",注意修改token和tag
$template RizhiyiFormat,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% switch %procid% %msgid% [your-token@32473 tag=\"udp\"]%msg%\n"

# 发送数据,注意修改collector01为具体的collector地址
#if $inputname == ‘imudp‘ then ?RemoteHost;LocalFileFormat
if $inputname == ‘imudp‘ then @@collector01:5140;RizhiyiFormat
if $inputname == ‘imudp‘ then ~

重启rsyslog进程:

sudo service rsyslog restart

2. 发送一条测试日志

使用netcat发送一条测试日志,使用rsyslog来验证能够接收UDP信息:

echo ":hello" | nc -u -w 1 localhost 514

该消息应显示在您的系统日志和日志易中,可使用 tail -f 查看日志内容。

3. 配置网络设备

获取本地中央rsyslog的IP地址,然后配置网络设备发送日志到这个IP,请查看您的网络设备文档进行配置。
ifconfig eth0

4. 校验:

搜索过去一小时的网络设备日志。这可能需要几十秒钟的时间来索引日志。

日志易端配置

当我们把数据源的rsyslog转发配置添加了日志易服务器的主机名后,还要在日志易系统里开启相应的端口接收数据。其相关配置如下:

  1. 进入日志易界面,点击左侧菜单栏“设置——Agent管理”,点击数据源的IP地址,点击“添加”。在“选择来源”中选择“Syslog”,在右侧需要配置监听的IP和端口和协议信息处,通常我们会用监听UDP的514,用来接收Syslog;



  2. 配置好监听端口信息后,点击下一步,配置IP映射;

    所谓IP映射,是指为不同IP发来的Syslog标注不同的appname、tag和编码。 IP支持192.168.1. 的通配符配法, 但 必须单独占据某一段,而不能是192.1*8.1.1。靠前的映射优先被匹配。

  3. 配置好IP映射后,点击下一步,进入最后检查页面:;
  4. 检查无误后,点击下一步,完成Syslog数据源的添加。

Syslog 数据接入日志易端配置可点击 轻松实现 Syslog 数据接入 | “3 分钟玩转日志易” 系列一查看相关视频。

原文地址:https://blog.51cto.com/13533303/2365571

时间: 2024-09-29 22:16:54

日志易数据接入之 Syslog 日志上传的相关文章

日志易使用系列四:日志采集 Agent 的配置

第二期日志易使用系列中<日志易产品使用系列二:使用日志易 SaaS 版本完成一次 JSON 日志分析>,通过"本地上传"的方式,我们已经能够基于日志易自动解析的 JSON 日志创建分析图表.第三期日志易使用系列中<日志易使用系列三:仪表盘的创建与使用>,通过仪表盘,我们可以将这些图形保存下来,并用于分析展示.然而,实时数据的分析.展示依赖于实时的日志采集,日志易可通过 Agent.Syslog 等方式实现日志的实时采集.根据服务器.设备.或IT系统的不同,日志易

springMVC数据校验与单文件上传

spring表单标签:    <fr:from/> 渲染表单元素    <fr:input/>输入框组件    <fr:password/>密码框组件标签    <fr:hidden/>隐藏框组件标签0    <fr:textarea/>多行输入框组件标签    <fr:radiobutton/>单选框组件标签    <fr:checkbox/>复选框组件标签    <fr:select/>下拉列表组件标签 

ebay商品基本属性组合成数据表格式,可用上传到系统递交数据

该刊登表设计是利用VB写的,当时因为两个系统的数据不能直接对接,又copy并且组合SKU,一个表格一个表格填写,比较麻烦,还好刊登系统可以允许用excel表格上传数据 所以就下好模板,学了VB语言,在业余的时候做了这个数据自动组合功能用刊登数据广告. 另外也使用VB写了一个excel表格几千行数据的处理(这个另做解释) *****************************************************************************************

【iOS开发-99】POST四种数据提交方式以及NSURLSession上传任务的一些知识

(1)POST四种数据提交方式 --Content-Type:application/x-www-form-urlencoded,提交的数据格式就是key1=value1&key2=value2的方式. NSURL *url=nil; NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:2.0f]; NSString *str=[NSString st

iOS经验1:自己写的网络数据请求 第三方框架 断点续传 上传下载

镔哥哥做项目,一般的数据请求不管他多复杂,只要自己写好了请求,那么调用永远是那么的简单,那么我介绍一下 一:需要用到第三方框架AFNetworking,直接写在工程pch头文件里就行因为经常用到它,这在网上随便下载就行,最好用cocopod来下载,这样什么都有了,cocopod是什么,我就不说,博客上面有介绍. 开始啦: 1:自定义网络请求DataRequestManager类专门管理网络用的 朋友们以下代码就可以直接复制来用了 .h文件 //  DataRequestManager.h // 

SpringMVC【参数绑定、数据回显、文件上传】

前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定... 默认支持的参数类型 从上面的用法我们可以发现,我们可以使用request对象.Model对象等等,其实是不是可以随便把参数写上去都行???其实并不是的... Controller方法默认支持的参数类型有4个,这4个足以支撑我们的日常开发了 HttpServletRequest HttpServl

upload4j安全、高效、易用的java http文件上传框架

简介 upload4j是一款轻量级http文件上传框架,使用简单,实现高效,功能专一,摆脱传统http文件上传框架的繁琐. upload4j的诞生并不是为了解决所有上传需求,而是专注于基础通用需求. upload4j带来的            ·  实现直接文件流上传.html表单流上传两种上传模式. ·  io操作部分采用nio机制. ·  支持文件过滤,并且基于二进制文件头进行过滤,而非传统的文件扩展名过滤. ·  上传文件大小不受内存大小限制. upload4j给不了的 ·  文件上传进

Java 数据Entity加密和文件上传

一,数据加密 1.org.apache.commons.codec.digest.DigestUtils 提供了,md5,Hex,Sha等不可逆算法加密 public static String  MD5(String src) { return DigestUtils.md5Hex(src); } public static String  sha256Hex(String src) { return DigestUtils.sha256Hex(src); } 2.  AES加密,此加密方式瘦

配置华为交换机把日志发送到远程centos syslog服务器上

huawei switch: #指定发送消息基本,表示从0-7都发送 info-center source default channel 2 log level debugging #指定从哪个接口发送 info-center loghost source Vlanif1 #指定远程syslog服务器ip info-center loghost x.x.x.x Centos Server: vim /etc/rsyslog.conf #启用udp 514端口监听. $ModLoad imudp