3
Dccf016db1
其他tt09 • 于 2018-02-02发布 • 57次阅读 • (原文: gitissue.com)

前言

之前写过关于搭建日志统一收集系统的方法,针对中小型系统,可以简单适用,参考这里:日志服务—使用Flume-NG/Kafaka搭建日志搜集服务

传统自建日志服务,有一些弊端:

  • 维护成本高
  • 经济成本高

试用了阿里云的日志服务,发现有几个亮点:

  • 支持ECS/非ECS服务的日志搜集:意味着如果想要汇总公司局域网的后台日志,也是可以滴;
  • 日志采集客户端可以云端配置:这个就非常方便了;
  • 强大的日志分析与处理;
  • 经济实惠;

过程记录

下面就只是记录下安装Logtail过程中的一点问题,具体使用以及原理,官网文档足够详细。

操作系统: CentOS 7.4

一、安装Logtail

在阿里云上创建日志服务的「项目」,需要注意的是,「项目」选择哪个区域,在官网的Logtail下载地址也需要选择对应链接,否则,Logtail客户端将无法和日志服务通信。

例如,创建 「华东2」区域的日志项目:

1、ECS下安装Logtail

对于ECS(VPC网络),选择「华东2」区域的下载:

[root@localhost ~]# wget http://logtail-release-sh.vpc100-oss-cn-shanghai.aliyuncs.com/linux64/logtail.sh; chmod 755 logtail.sh; sh logtail.sh install cn_shanghai_vpc

2、非ECS安装Logtail

步骤1: 下载Logtail

对于非ECS服务器,选择「华东2」区域的下载:

[root@localhost ~]# wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/logtail.sh; chmod 755 logtail.sh; sh logtail.sh install cn_shanghai_internet

步骤2: 配置用户标志

参考链接:非ECS(或线下机器)创建用户标志

步骤3: 重新启动Logtail

[root@izuf6dm5xm1ukjp6vlgmqzz ~]# /etc/init.d/ilogtaild stop
[root@izuf6dm5xm1ukjp6vlgmqzz ~]# /etc/init.d/ilogtaild start
[root@izuf6dm5xm1ukjp6vlgmqzz ~]# /etc/init.d/ilogtaild status

二、日志分段解析配置

目前服务器的日志,类似如下:

127.0.0.1|2018-02-10 14:22:24.542| INFO|http-nio-2003-exec-1|com.johnnian.Interceptor.InterceptorHandler:49|/query| - [HTTP请求]开始处理---------------
127.0.0.1|2018-02-10 14:22:24.543| INFO|http-nio-2003-exec-1|com.johnnian.Interceptor.InterceptorHandler:94|/query| - [请求信息]类型JSON RAW 

可以通过简单的配置规则,将log中的各个字段拆分出来,步骤如下:

应用到机器组中之后,新的日志上来,阿里的日志服务会自动将其分段,示例如下:

参考: 分隔符日志

附:遇到问题

可以通过Logtail日志来排查问题:

[root@localhost ~]# tail -100f /usr/local/ilogtail/ilogtail.LOG

1、Logtail心跳失败——无法读取本地IP地址,因为网卡名字的原因

在线下机器上安装Logtail,登录阿里云管理平台,发现Logtail客户端心跳异常,查看了下,原因是Logtail客户端无法读取本机IP地址导致。

默认情况下,Logtail 客户端会读取系统第一个网卡(eth0)的IP地址,而操作的CentOS默认的网卡名字不是 「eth0」,因此就一直读取不到IP地址。

可以从Logtail的应用配置文件看出问题:

[root@localhost ~]# cat /usr/local/ilogtail/app_info.json
{
   "UUID" : "01122243-****-4CBF-****-278ED0536481",
   "hostname" : "****",
   "instance_id" : "*",
   "ip" : "",
   "logtail_version" : "0.16.3",
   "os" : "Linux; 3.10.0-693.2.2.el7.x86_64; #1 SMP Tue Sep 12 22:26:13 UTC 2017; x86_64",
   "update_time" : "2018-02-09 15:56:53"
}
[root@izuf6dm5xm1ukjp6vlgmqzz ~]#

解决方案: 修改CentOS默认网卡名字为「eth0」,然后重启Logtail,即可,参考 CentOS 7 更改网卡名

2、心跳成功,但是日志上传失败, 查看Logtail日志,报错如下:

[2018-02-09 14:31:28.540046] [ERROR] [2838] [build/release64/sls/ilogtail/Sender.cpp:191] send data to SLS fail:discard data StatusCode:401 RequestId:5A7D40401BABB893FC91730A ErrorCode:Unauthorized ErrorMessage:no authority, denied by ACL projectName:ticketcom logstore:ticketcom_dev RetryTimes:1 LogLines:389 bytes:15334 endpoint:http://cn-shanghai.log.aliyuncs.com
[2018-02-09 14:31:32.364462] [WARNING] [2838] [build/release64/sls/ilogtail/ConfigManager.cpp:1860] GetAccessKey:Fail no GetAccessKey in response:{"Error":{"Code":"OLSParameterInvalid","Message":"The parameter is invalid : uuid=none AccessKeyId pair","RequestId":"5A7D40444F64FDCD6B8FD55E"}}

Deny By ACL, 原因是因为当前的登录账号没有配置 AccessKey,配置一下就可以了(配置主账号AccessKey,而不是子账号),参考:错误诊断:SEND_DATA_FAIL_ALARM

官方参考文档

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Top