详情页标题前

阿里云日志服务SLS使用Syslog协议上传日志-云淘科技

详情页1

您可以使用RsyslogSyslog-ng采集日志并通过Syslog协议上传到日志服务。本文介绍通过Syslog协议将日志上传到日志服务的操作步骤。

相关限制

  • Syslog协议必须为标准的RFC5424协议。
  • 每条日志最大支持64 KB。
  • 为保证数据传输安全性,数据传输必须使用基于TCP的TLS1.2(Transport-level security)。

配置方式


注意 通常线下的VPN、路由器等设备不支持TLS协议或配置RFC5424格式,建议使用Logtail的Syslog插件采集这些设备的数据。具体操作,请参见采集Syslog。

使用Syslog协议上传日志时,需配置日志上传地址,格式为Project名称.日志服务Endpoint:Syslog协议端口,例如test-project-1.cn-hangzhou-intranet.log.aliyuncs.com:10009。请根据您的日志服务Project所在地域选择Endpoint。更多信息,请参见服务入口。Syslog的端口为10009。同时您需要在STRUCTURED-DATA字段中配置日志服务Project、Logstore,阿里云账号AccessKey等信息。

参数 说明 示例
STRUCTURED-DATA 固定为Logservice。 Logservice
Project 日志服务Project名称,请提前在日志服务中创建Project。具体操作,请参见创建Project。 test-project-1
Logstore 日志服务Logstore名称,请提前在日志服务中创建Logstore。具体操作,请参见创建Logstore。 test-logstore-1
access-key-id AccessKey ID。建议使用RAM用户的AccessKey。更多信息,请参见授权。 LT****9k
access-key-secret AccessKey Secret。建议使用RAM用户的AccessKey。更多信息,请参见授权。 Wp****bA

示例1:使用Rsyslog采集日志

Linux服务器默认自带Rsyslog。您可以使用Rsyslog采集系统日志,然后通过syslog协议上传到日志服务。不同版本的Rsyslog的配置文件略有不同,您可执行man rsyslogd命令查看Rsyslog版本。


说明 请确保Rsyslog已安装了gnutls模块。如果未安装,请执行sudo apt-get install rsyslog-gnutls或sudo yum install rsyslog-gnutls命令进行安装。

  1. 打开Rsyslog配置文件。通常Rsyslog配置文件路径为/etc/rsyslog.conf。
  2. 根据实际情况,配置如下信息,并添加到Rsyslog配置文件的末尾。
    • Rsyslog V8及以上

      其中$DefaultNetstreamDriverCAFile配置为系统根证书所在路径。

      # Setup disk assisted queues 
      $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 
      $ActionSendTCPRebindInterval 100  # close and re-open the connection to the remote host every 100 of messages sent. 
      #RsyslogGnuTLS set to default ca path 
      $DefaultNetstreamDriverCAFile /etc/ssl/certs/ca-bundle.crt 
      template(name="LogServiceFormat" type="string" 
      string="1 %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [logservice project=\"test-project-1\" logstore=\"test-logstore-1\" access-key-id=\"\" access-key-secret=\"\"] %msg%
      " 
      ) 
      # Send messages to Loggly over TCP using the template. 
      action(type="omfwd" protocol="tcp" target="test-project-1.cn-hangzhou.log.aliyuncs.com" port="10009" template="LogServiceFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.cn-hangzhou.log.aliyuncs.com")
    • Rsyslog V7及以下

      其中$DefaultNetstreamDriverCAFile配置为系统根证书所在路径。

      # Setup disk assisted queues 
      $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 $ActionSendTCPRebindInterval 100        # close and re-open the connection to the remote host every 100 of messages sent. 
      # RsyslogGnuTLS set to default ca path 
      $DefaultNetstreamDriverCAFile /etc/ssl/certs/ca-bundle.crt 
      $ActionSendStreamDriver gtls 
      $ActionSendStreamDriverMode 1 
      $ActionSendStreamDriverAuthMode x509/name 
      $ActionSendStreamDriverPermittedPeer test-project-1.cn-hangzhou.log.aliyuncs.com 
      template(name="LogServiceFormat" type="string" string="1 %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [logservice project=\"test-project-1\" logstore=\"test-logstore-1\" access-key-id=\"\" access-key-secret=\"\"] %msg%
      ") 
      *.* action(type="omfwd" protocol="tcp" target="test-project-1.cn-hangzhou.log.aliyuncs.com" port="10009" template="LogServiceFormat")
  3. 重启Rsyslog。执行sudo service rsyslog restart、sudo /etc/init.d/syslog-ng restart或systemctl restart rsyslog命令重启Rsyslog。
  4. 使用logger命令生成测试日志。例如执行logger hello world!命令生成日志。

示例2:使用Syslog-ng采集日志

syslog-ng是基于syslog协议的Unix和类Unix系统的开源软件。您可以执行sudo yum install syslog-ng或sudo apt-get install syslog-ng命令安装Syslog-ng。


说明 Linux服务器上默认安装Rsyslog,但是Rsyslog和Syslog-ng无法同时工作,如果您要使用Syslog-ng请先卸载Rsyslog。

  1. 打开Syslog-ng配置文件。通常Syslog-ng配置文件地址为/etc/syslog-ng/syslog-ng.conf。
  2. 根据实际情况,配置如下信息,并添加到Syslog-ng配置文件的末尾。
    ### Syslog-ng Logging Config for LogService ### 
    template LogServiceFormat { 
        template("1 ${ISODATE} ${HOST:--} ${PROGRAM:--} ${PID:--} ${MSGID:--} [logservice project=\"test-project-1\" logstore=\"test-logstore-1\" access-key-id=\"\" access-key-secret=\"\"] $MSG
    "); template_escape(no); 
    }; 
    destination d_logservice{ 
         tcp("test-project-1.cn-hangzhou.log.aliyuncs.com" port(10009) 
         tls(peer-verify(required-untrusted)) 
         template(LogServiceFormat)); 
    }; 
    log { 
         source(s_sys); # default use s_sys 
         destination(d_logservice); 
    }; 
    ### END Syslog-ng Logging Config for LogService ###
  3. 重启Syslog-ng。执行sudo /etc/init.d/syslog-ng restart、sudo service syslog-ng restart或sudo systemctl restart syslog-ng命令重启Syslog-ng。
  4. 使用logger命令生成测试日志。例如执行logger hello world!命令生成日志。

日志样例

上传日志后,您需要先配置索引,然后才能在日志服务控制台中查看日志。具体操作,请参见配置索引。

日志字段说明,请参见RFC5424协议。


注意 为避免泄露AccessKey信息,日志服务默认删除Logservice字段。

阿里云日志服务SLS使用Syslog协议上传日志-云淘科技

字段名 说明
__source__ 原始日志中的hostname字段。
__topic__ 固定为syslog-forwarder。
__facility__ facility(设备、模块)信息。
__program__ 进程名。
__serverity__ 日志严重性。
__priority__ 日志优先级。
__unixtimestamp__ 原始日志中的时间戳(单位:纳秒)。
content 原始日志中的msg字段。

常见问题与排查

  • 测试日志上传

    您可以使用Netcat测试日志上传,以检查网络是否连通以及AccessKey是否具有上传权限。

    1. 登录要测试日志上传的服务器。
    2. 执行以下命令安装Netcat。
      sudo yum install nmap-ncat
    3. 执行以下命令连接日志服务。
      ncat --ssl . 10009

      示例命令:

      ncat --ssl test-project-1.cn-hangzhou.log.aliyuncs.com 10009
    4. Netcat不会自动判断网络连接是否中断,您需要在执行ncat命令后的30秒内,输入要发送的日志,然后按回车键。
      1 2019-03-28T03:00:15.003Z mymachine.example.com su - ID47 [logservice project="" logstore="" access-key-id="" access-key-secret=""] this is a test message

      示例命令:

      1 2019-03-28T03:00:15.003Z mymachine.example.com su - ID47 [logservice project="trace-doc-test" logstore="doc-test-001-logs" access-key-id="LTAI4***" access-key-secret="HfJEw***"] this is a test message
    5. 在日志服务控制台预览日志,验证日志是否上传成功。

      具体操作,请参见日志预览。

      阿里云日志服务SLS使用Syslog协议上传日志-云淘科技

  • 诊断采集错误

    如果手动上传日志失败,您可通过诊断采集错误查看具体报错信息。更多信息,请参见如何查看Logtail采集错误信息。

  • 查看Rsyslog报错日志
    Rsyslog日志默认保存在/var/log/message中,您可通过vim命令查看。

    • 报错信息(1)
      dlopen: /usr/lib64/rsyslog/lmnsd_gtls.so: cannot open shared object file: No such file or directory

      该错误是因为没有安装gnutls模块,请执行sudo apt-get install rsyslog-gnutls或sudo yum install rsyslog-gnutls安装gnutls并重启Rsyslog。

    • 报错信息(2)
      unexpected GnuTLS error -53 - this could be caused by a broken connection. GnuTLS reports:Error in the push function

      该错误是因为TCP连接长期闲置被强制关闭,Rsyslog会进行自动重连,您无需关注。

  • 查看Syslog-ng报错日志

    Syslog-ng日志默认保存在Journal日志中,您可执行systemctl status syslog-ng.service和journalctl -xe命令查看日志。

    如果出现如下报错,请检查配置文件格式是否合法或配置是否存在冲突,例如不支持配置多个internal()

    Job for syslog-ng.service failed because the control process exited with error code. See "systemctl status syslog-ng.service" and "journalctl -xe" for details

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/162899.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云大数据开发治理平台 DataWorksScanSensitiveData-云淘科技

    调用ScanSensitiveData识别输入数据中是否存在敏感数据。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 ScanSensitiveData 系统规定参数。…

  • 阿里云日志服务SLS如何实现文件中的日志被采集多份-云淘科技

    本文介绍文件中的日志被采集多份的解决方案。 默认情况下,一个文件只能匹配一个Logtail配置。当多个Logtail配置匹配同一个文件时,只会生效1个。因为在客户端上对文件中的日志采集多份需要消耗多倍的CPU、内存、磁盘IO和网络IO开销,将对同机部署的其他服务性能造成额外影响,并非优化的日志采集方案。 一份日志需要被存储到不同Logstore时,您可以使用…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS数据脱敏-云淘科技

    数据脱敏可以有效地减少敏感数据在加工、传输、使用等环节中的暴露,降低敏感数据泄露的风险,保护用户权益。本文介绍日志服务数据加工过程中常见的脱敏场景、对应的脱敏方法及示例。 背景信息 使用敏感数据包括手机号、银行卡号、邮箱、IP地址、AK、身份证号网址、订单号、字符串等场景中,您需要为敏感数据进行脱敏操作。在日志服务数据加工服务中,常见的脱敏方法有正则表达式替…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云云原生大数据计算服务 MaxComputeREMOVE ACCOUNTPROVIDER-云淘科技

    删除当前项目空间的RAM账号体系。 使用限制 本文中的命令您需要在MaxCompute客户端执行。本命令为CMD命令,仅支持在客户端(odpscmd)工具中运行。 注意事项 项目空间非工作空间。项目空间名称获取方式:登录MaxCompute控制台,选择工作区 > 项目管理,项目管理页面的MaxCompute项目名。 MaxCompute没有提供创建和删…

  • 阿里云日志服务SLS使用分隔符模式采集日志-云淘科技

    日志服务提供Logtail分隔符模式快速采集日志。采集到日志后,您可以进行多维度分析、加工、投递等操作。本文介绍如何通过日志服务控制台创建分隔符模式的Logtail配置采集日志。 前提条件 已创建Project和Logstore。更多信息,请参见创建Project和创建Logstore。 用于安装Logtail的服务器具备访问远端服务器80端口和443端口的…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。