logtial无落盘采集之rsyslog

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一.简介 日志服务SLS支持通过logtial客户端采集机器组的系统日志到日志服务中,syslog是Linux系统默认的日志守护进程,默认的主配置文件和辅助配置文件分别是/etc/syslog.conf和/etc/sysconfig/syslog文件,在配置采集的过程中,经常会遇到无法采集的情况,本篇文档主要是采集syslog日志的基本概念和采集方法的说明,还有采集失败常见的排查方法。

一.简介

日志服务SLS支持通过logtial客户端采集机器组的系统日志到日志服务中,syslog是Linux系统默认的日志守护进程,默认的主配置文件和辅助配置文件分别是/etc/syslog.conf和/etc/sysconfig/syslog文件,在配置采集的过程中,经常会遇到无法采集的情况,本篇文档主要是采集syslog日志的基本概念和采集方法的说明,还有采集失败常见的排查方法。

二.rsyslog配置文件

文件名称:/etc/syslog.conf
文件内容格式:facility.level action

facility代表消息类型,level代表级别,action代表动作

在 /etc/rsyslog.conf 中根据需要修改配置,例如:

$WorkDirectory /var/spool/rsyslog # where to place spool files
$ActionQueueFileName fwdRule1     # unique name prefix for spool files
$ActionQueueMaxDiskSpace 1g       # 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on     # save messages to disk on shutdown
$ActionQueueType LinkedList       # run asynchronously
$ActionResumeRetryCount -1        # infinite retries if host is down
# 定义日志数据的字段
$template ALI_LOG_FMT,"0.1 sys_tag %timegenerated:::date-unixtimestamp% %fromhost-ip% %hostname%             %pri-text% %protocol-version% %app-name% %procid% %msgid% %msg:::drop-last-lf%\n"
*.*      @@10.101.166.173:11111;ALI_LOG_FMT

配置文件最后一行,. @@10.101.166.173:11111;ALI_LOG_FMT
第一个*代表所有的消息类型
第二个*代表所有级别的消息
@@代表TCP协议(@代表UDP)
10.101.166.173代表该syslog消息要转发到的主机
11111代表11111端口
ALI_LOG_FMT代表模版名称
所以整个一行代表,所有类型、所有级别的消息都通过TCP协议转发到10.101.166.173主机的11111端口,消息内容使用模版 ALI_LOG_FMT

配置文件倒数第二行,$template ALI_LOG_FMT,"0.1 sys_tag %timegenerated:::date-unixtimestamp% %fromhost-ip% %hostname% %pri-text% %protocol-version% %app-name% %procid% %msgid% %msg:::drop-last-lf%n"
$template :模版标识
ALI_LOG_FMT:模版名称
双引号:模版内容
0.1:该日志格式的版本号,Logtail使用该版本号解析user-defined-field 字段。
sys_tag:数据标签,用于寻找Project或Logstore,在控制台中的tag名称
timegenerated:::date-unixtimestamp%:该条日志的时间戳。
%fromhost-ip%:该条日志的对应的机器IP,如果日志中的该字段是 127.0.0.1,最终发往服务端的日志数据中该字段会被替换成 TCP socket的对端地址。
%hostname% ~~ %msgid%:用户自定义字段,中括号表示是可选字段。
%msg:::drop-last-lf%:日志消息正文。

三.ilogtial配置文件

文件名称:/usr/local/ilogtail/ilogtail_config.json
文件格式:

"config_server_address" : "http://logtail.cn-shanghai.log.aliyuncs.com",日志服务访问域名
  "data_server_list" :
  [
      {
          "cluster" : "cn-shanghai",所在区域
          "endpoint" : "cn-shanghai.log.aliyuncs.com",接入点
      }
  ],
  "cpu_usage_limit" : 0.4,CPU占用率阈值
  "mem_usage_limit" : 256,常驻内存使用阈值
  "max_bytes_per_sec" : 20971520,Logtail发送原始数据的流量限
  "buffer_file_num" : 25,缓存文件的最大数目
  "buffer_file_size" : 20971520,缓存文件可以实际使用的最大磁盘空间
  "streamlog_open" : false,是否打开接受syslog功能(非常重要,和rsyslog功能相关)
  "streamlog_pool_size_in_mb" : 50,用于缓存接收到的syslog数据。
  "streamlog_rcv_size_each_call" : 1024,linux socket rcv 接口使用的缓冲区大小
  "streamlog_formats":[],定义接收到的 syslog 日志解析方式。
  "streamlog_tcp_port" : 11111,logtail 用于接收 syslog 日志的 TCP 端口

整个配置文件只有三个参数和rsyslog采集有直接关系,streamlog_open、streamlog_tcp_port和streamlog_formats
streamlog_open:rsyslog采集是否开启
streamlog_tcp_port:ilogtail采集rsyslog日志端口
streamlog_formats:ilogtail采集日志的类型
streamlog_formats:

[
    {"version": "2.1", "fields": ["level", "method"]},
    {"version": "2.2", "fields": []},
    {"version": "2.3", "fields": ["pri-text", "app-name", "syslogtag"]}
]

其中"version": "2.1"对应的/etc/rsyslog.conf 中的0.1,fields对应/etc/rsyslog.conf 中的%hostname% ~~ %msgid%,可以设置提取那个字段,如果将/etc/rsyslog.conf 中的0.1改为2.1,就会匹配到{"version": "2.1", "fields": ["level", "method"]},从而日志服务loghub中提取到用户自定义字段的日志格式就是level和method。

四.日志服务配置步骤

1.安装logtial
2.创建syslog类型配置
3.配置/usr/local/ilogtail/ilogtail_config.json
4./etc/syslog.conf
日志服务官网采集syslog日志文档

五.排查步骤

现象:控制台数据无法采集
1.排查rsyslog服务
(1)按照rsyslog排查,理解rsyslog配置文件,可以很简单的排查syslog.conf配置错误的问题,可以配置多个模版。

yuqi1

(2)排查rsyslog服务是否启动使用service rsyslog status

yuqi2

(3)排查rsyslog监听端口和转发端口

yunqi3

这里可以看到一个rsyslog进程,两个sockets监听,一个监听本机的53552端口,转发到本机的11111端口,另一个监听本机的53554端口,转发到本机的11111端口,有两个是因为syslog.conf中配置了两个规则,而ilogtial服务也启动了三个,两个ESTABLISHED状态的监听与两个ESTABLISHED状态的rsyslog监听在进行数据传输。

2.排查ilogtail服务
(1)排查ilogtial服务运行状态,通过/etc/init.d/ilogtaild status判断ilogtial服务的运行状态。

yunqi4

(2)排查ilogtial日志是否有报错,通过ilogtail.LOG判断ilogtial服务是否有报错。

3.排查机器组状态
(1)排查机器组状态是否是OK状态,可参考文档

4.控制台上检查
(1)可以通过控制台诊断判断问题所在,查到的报错关键字对比文档

yq7

(2)通过预览数据看下是否采集到了数据,如果采集到,倒是查询无法查到,应该是没有开启日志索引,或者设置索引错误导致的,可以参考文档

yq8

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
消息中间件 数据采集 JSON
iLogtail社区版使用入门 - iLogtail日志处理实战
本文将会详细介绍使用iLogtail社区版进行日志采集时,对于常见日志格式的处理实战。为了便于调测,以下样例默认将采集到的日志,经过处理后,输出到标准输出,开发者可以根据实际需求进行适当的调整。
3345 0
|
网络协议 Linux Docker
在Linux中,如何指定dns服务器,来解析某个域名?
在Linux中,如何指定dns服务器,来解析某个域名?
|
SQL Cloud Native 关系型数据库
云原生数据仓库操作报错合集之遇到报错“DDL forbidden because backupTask is doing snapshot”如何处理
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
监控 Linux 数据处理
深入了解Linux的logger命令:日志记录与监控
`logger`命令在Linux中用于向系统日志发送消息,便于记录系统事件和应用程序状态。它与`syslogd`配合,允许用户指定优先级、标识符和内容。简单易用,灵活适应不同日志需求。示例:`logger -p user.warning -t MYAPP "A warning occurred."`。注意选择合适优先级,使用有意义的标识符,并结合其他工具如`logrotate`进行日志管理。
|
数据采集 SQL 分布式计算
DataWorks操作报错合集之在执行离线同步时,如果测试连接突然报错并出现类似于“exception occurs:path=[/di/testDetailConnectivity]”,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
存储 缓存 芯片
|
存储 缓存 安全
内核地址清理器(KASAN)
内核地址清理器(KASAN)
726 0
|
弹性计算 运维 监控
【Logtail最佳实践】使用Logtail采集和解析Syslog数据
Syslog是一种行业标准的协议,可用来记录设备的日志。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。 本文档介绍如何使用Logtail采集和解析Syslog数据。
2668 0
|
Kubernetes 安全 Shell
Helm安装部署/添加chart公共仓库/本地仓库搭建
Helm 是 Kubernetes 的包管理器,用于管理charts(即预先配置的Kubernetes资源包)。Helm主要具有以下功能: 1. 软件打包格式:将相关Kubernetes资源打包生成标准的chart软件包格式。 2. 仓库管理:支持将chart上传到仓库进行存储、版本管理、下载等。 3. 发布管理:管理chart的不同版本,控制chart发布更新。 4. 部署安装:在Kubernetes集群中安装、升级和回滚软件。 5. 模板语法:使用模板语法进行参数化安装和配置。 6. 值管理:管理chart中参数值的区分设置。 7. 安全签名:使用数字签名确保chart来源的安全可信。
3886 0