0x01.产品简介
日志服务CLS:
稳定、可靠、便捷、易用的一站式日志服务平台,轻松管理海量日志数据,助力企业数字化升级
日志服务(Cloud Log Service
,CLS
)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
一个常见的应用场景就是采集Nginx
访问日志。正常运维自然是SSH
登录到云主机上去查看访问日志,而接入CLS
之后就在腾讯云控制台就可以看到日志了,可以使用Lucene
的语法进行搜索,其实也就相当于ES
的采集LOG
那套东西,只不过腾讯云都给封装好了,对于部分云产品已经接入了可以直接在对应的云产品出打开开关,其他云产品比如内网的云主机可以使用LogListener
采集端,至于最后保本也提供有API
的采集方式
0x02.日志接入
首先在控制台开通日志服务,然后快速接入
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
其中的参数说明如下,这里指定了机器标识并使用了外网访问,如果是云主机则推荐使用默认的内网访问
启动LogListener
2.2,配置机器组
点击查看可以看到具体的机器状态为正常
2021-05-22 19:57:15
更新:
当LogListener
有新版本时可在控制台进行手动更新,推荐在业务低峰期时进行升级
3,采集配置
这里使用的是BT
面板:
- 访问日志没有切割所以指定到单文件
nginx_access.log
Nginx
配置直接把配置文件里写的粘贴过来
会自动生成正则表达式,可以拿一条日志才测试切割是否正确
4,索引配置
其实对于ES
就是index
的类型配置
通过以上步骤就完整的创建完一个日志主题了,来总览看一下(可以跳过这部分图
索引生效一般有60s延迟
没错,可能是ES
的refresh_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 访问日志中的原始时间戳,可解决上述问题