【日志服务CLS】Nginx 访问日志接入腾讯云日志服务

2021-05-24 10:25:07 浏览数 (1)

0x01.产品简介

日志服务CLS:

稳定、可靠、便捷、易用的一站式日志服务平台,轻松管理海量日志数据,助力企业数字化升级

日志服务(Cloud Log ServiceCLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。 

特性特性

一个常见的应用场景就是采集Nginx访问日志。正常运维自然是SSH登录到云主机上去查看访问日志,而接入CLS之后就在腾讯云控制台就可以看到日志了,可以使用Lucene的语法进行搜索,其实也就相当于ES的采集LOG那套东西,只不过腾讯云都给封装好了,对于部分云产品已经接入了可以直接在对应的云产品出打开开关,其他云产品比如内网的云主机可以使用LogListener采集端,至于最后保本也提供有API的采集方式

0x02.日志接入

首先在控制台开通日志服务,然后快速接入

Nginx日志Nginx日志

1,填写日志主题名称和日志集名称

创建日志主题创建日志主题

2.1,安装LogListener,参照https://cloud.tencent.com/document/product/614/17414

机器组机器组

LogListener暂仅支持Linux,于是这里拿一台CentOS进行演示

下载安装LogListener

代码语言:javascript复制
[root@CentOS ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@CentOS ~]# wget https://loglistener-1254077820.cos.ap-shanghai.myzijiebao.com/loglistener-linux-x64-2.5.6.tar.gz && tar -zxvf loglistener-linux-x64-2.5.6.tar.gz -C /usr/local && cd /usr/local/loglistener-2.5.6/tools && ./loglistener.sh install
--2021-05-06 21:37:59--  https://loglistener-1254077820.cos.ap-shanghai.myzijiebao.com/loglistener-linux-x64-2.5.6.tar.gz
Resolving loglistener-1254077820.cos.ap-shanghai.myzijiebao.com (loglistener-1254077820.cos.ap-shanghai.myzijiebao.com)... 119.28.38.63, 119.28.39.146, 119.28.206.40, ...
Connecting to loglistener-1254077820.cos.ap-shanghai.myzijiebao.com (loglistener-1254077820.cos.ap-shanghai.myzijiebao.com)|119.28.38.63|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3808347 (3.6M) [application/x-gzip]
Saving to: 'loglistener-linux-x64-2.5.6.tar.gz'

100%[================================================>] 3,808,347    525KB/s   in 8.2s   

2021-05-06 21:38:09 (452 KB/s) - 'loglistener-linux-x64-2.5.6.tar.gz' saved [3808347/3808347]

loglistener-2.5.6/
loglistener-2.5.6/version.txt
loglistener-2.5.6/bin/
loglistener-2.5.6/bin/loglistener
loglistener-2.5.6/bin/gethostip
loglistener-2.5.6/bin/loglisteneru
loglistener-2.5.6/bin/getmd5
loglistener-2.5.6/bin/getmac
loglistener-2.5.6/bin/check
loglistener-2.5.6/bin/loglistenerm
loglistener-2.5.6/bin/check_net
loglistener-2.5.6/bin/check_key
loglistener-2.5.6/bin/loglistener.2.5.6
loglistener-2.5.6/bin/getip
loglistener-2.5.6/update/
loglistener-2.5.6/update/update.data.temple
loglistener-2.5.6/etc/
loglistener-2.5.6/etc/loglistener.conf.temple
loglistener-2.5.6/tools/
loglistener-2.5.6/tools/loglistenerd.service
loglistener-2.5.6/tools/loglistenerd.temple
loglistener-2.5.6/tools/loglistener.sh
loglistener-2.5.6/tools/update.py
[OK] check dependencies ok
[RESULT] install loglistener success,use './loglistener.sh init' to init loglistener's config
[root@CentOS tools]# cd /usr/local/
[root@CentOS local]# cd loglistener/tools
-bash: cd: loglistener/tools: No such file or directory
[root@CentOS local]# ll
total 76
drwxr-xr-x  2 root root 4096 Nov 28 20:11 bin
drwxr-xr-x  6 root root 4096 Jan 11  2020 curl
drwxr-xr-x  4 root root 4096 Nov 28 20:11 etc
drwxr-xr-x  2 root root 4096 Apr 11  2018 games
drwxr-xr-x  6 root root 4096 Sep 24  2020 include
drwxr-xr-x  7 root root 4096 Nov 28 19:40 lib
drwxr-xr-x  2 root root 4096 Sep 24  2020 lib64
drwxr-xr-x  3 root root 4096 Nov 28  2019 libexec
drwxr-xr-x  6 root root 4096 Jan 11  2020 libiconv
drwxr-xr-x  8 root root 4096 May  6 21:38 loglistener-2.5.6
drwxr-xr-x  3 root root 4096 Jan 11  2020 man
drwxr-xr-x  3 root root 4096 Feb 17  2020 n
drwxr-xr-x 11 root root 4096 Oct 12  2019 nginx
drwxr-xr-x  9 root root 4096 Jan 11  2020 openssl
drwxr-xr-x  6 root root 4096 Mar  7  2020 python3
drwxr-xr-x  2 root root 4096 Nov 28  2019 sbin
drwxr-xr-x 11 root root 4096 Sep 24  2020 share
drwxr-xr-x  2 root root 4096 Apr 11  2018 src
drwxr-xr-x 16 root root 4096 May  6 19:59 v2-ui
[root@CentOS local]# cd loglistener-2.5.6/tools/
[root@CentOS tools]# ll
total 88
-rwxr-xr-x 1 root root 20550 Apr 23 22:08 loglistener.sh
-rw-r--r-- 1 root root   224 Apr 23 22:08 loglistenerd.service
-rwxr-xr-x 1 root root  9346 Apr 23 22:08 loglistenerd.temple
-rw-r--r-- 1 root root 47020 Apr 23 22:08 update.py

初始化LogListener

initinit

其中的参数说明如下,这里指定了机器标识并使用了外网访问,如果是云主机则推荐使用默认的内网访问

参数说明参数说明

启动LogListener

startstart

2.2,配置机器组

新建机器组新建机器组

点击查看可以看到具体的机器状态为正常

机器组机器组

2021-05-22 19:57:15 更新:

LogListener有新版本时可在控制台进行手动更新,推荐在业务低峰期时进行升级

手动更新手动更新

3,采集配置

这里使用的是BT面板:

  1. 访问日志没有切割所以指定到单文件nginx_access.log
访问日志访问日志
  1. Nginx配置直接把配置文件里写的粘贴过来
采集配置采集配置

会自动生成正则表达式,可以拿一条日志才测试切割是否正确

正则表达式正则表达式

4,索引配置

其实对于ES就是index的类型配置

索引配置索引配置

通过以上步骤就完整的创建完一个日志主题了,来总览看一下(可以跳过这部分图

基本信息基本信息
采集配置采集配置
索引配置索引配置

索引生效一般有60s延迟

没错,可能是ESrefresh_interval被设置成了60s

0x03.日志检索

先不输入任何搜索词,可以看到历史日志全当成集中在一个时间段范围索引进来了

历史数据历史数据

然后后续的新日志基本上和Nginx记录的时间相差没有太多,这里应该是访问日志从云主机上传到CLS网络请求的耗时

新数据新数据

使用精确搜索举例

代码语言:javascript复制
http_user_agent: "DNSPod-Monitor/2.0" 
检索检索

其他的搜索方法还有很多,可以用Lucene的语法,参照:https://cloud.tencent.com/document/product/614/47044

0x04.日志分析

然后,来使用ES强大的聚合查询能力,比如绘制状态码饼图

分析语法示例:

代码语言:javascript复制
* | select status, count(*) as count group by status

事先触发一次404的访问,可以看到很快就能检索到了

分析分析

0x05.后记

自己手里只有几台云主机,平常拿SSH或者运维面板去查看日志。但是如果再增加一个数量级的话,显然这不是一件现实的事情,势必需要一套日志采集的系统,常用的ELK套件自然是一种选择,对比腾讯云的CLS可参考下图

成本优势成本优势

并且CLS也提供了日志投递,并且也支持当做grafana的数据源……

最后就是文中所说的时间戳的问题了,对于Nginx这种日志中带时间戳的文本日志,存入CLS之后自己更关注的是日志的生成时间,而不是采集Agent存入CLS的时间,这样历史数据就也能使用常规思维进行数据处理和分析了

参照【日志服务CLS】配置使用 Nginx 访问日志中的原始时间戳,可解决上述问题

0 人点赞