tencent cloud

日志服务

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
地域和访问域名
规格与限制
基本概念
购买指南
计费概述
产品定价
按量计费(后付费)
欠费说明
清理日志服务资源
成本优化
常见问题
快速入门
一分钟入门指南
入门指南
使用 Demo 日志快速体验 CLS
操作指南
资源管理
权限管理
日志采集
指标采集
日志存储
指标存储
检索分析(日志主题)
检索分析(指标主题)
仪表盘
数据处理
投递与消费
监控告警
云产品中心
DataSight 独立控制台
历史文档
实践教程
日志采集
检索分析
仪表盘
监控告警
投递和消费
成本优化
开发者指南
通过 iframe 内嵌 CLS(旧方案)
通过 Grafana 使用 CLS
API 文档
History
Introduction
API Category
Making API Requests
Topic Management APIs
Log Set Management APIs
Index APIs
Topic Partition APIs
Machine Group APIs
Collection Configuration APIs
Log APIs
Metric APIs
Alarm Policy APIs
Data Processing APIs
Kafka Protocol Consumption APIs
CKafka Shipping Task APIs
Kafka Data Subscription APIs
COS Shipping Task APIs
SCF Delivery Task APIs
Scheduled SQL Analysis APIs
COS Data Import Task APIs
Data Types
Error Codes
常见问题
健康监测问题解释
采集相关
检索分析相关
其他问题
服务等级协议
CLS 政策
隐私协议
数据处理和安全协议
联系我们
词汇表
文档日志服务实践教程日志采集采集/查询主机文件日志

采集/查询主机文件日志

PDF
聚焦模式
字号
最后更新时间: 2024-01-20 17:28:40
在简单的运维场景下,日志通常先直接输出到服务器本地文件中,再使用 Linux 系统下常用的 grep 命令查找符合要求的日志。此方式在业务系统较为复杂时,会由于日志分散在不同的服务器、命令行操作不直观、服务器权限管理限制等原因导致日志查找困难,严重影响运维效率。或者当用户需要基于日志做一些统计分析或监控告警,更是难上加难。
本文将介绍如何快速将通过 grep 命令查找的本地日志迁移至日志服务(Cloud Log Service,CLS),以获取如下优势:
数据集中存储及检索,无需登录多台服务器分别进行查询,在负载均衡、微服务等架构下尤为关键。
简单单击即可快速检索日志,告别命令行及繁琐的服务器权限管理。
基于日志进行统计分析,获取关键业务指标,例如 PV、接口响应时间、接口错误率等。
实时检测异常日志,通过短信、邮件和微信等多种方式获取通知。
说明:
如果您的日志已经采集到了 CLS,可跳过日志采集和配置索引步骤,直接执行 步骤3:检索日志

步骤1:日志采集

针对服务器本地日志,可使用 LogListener 将原始日志采集至 CLS,LogListener 安装详情请参见 LogListener 安装指南。 如果您的服务器为腾讯云云服务器(Cloud Virtual Machine,CVM),还可以通过控制台自动安装 LogListener,详情请参见 CVM 批量部署 LogListener
与服务器本地日志不同,为了后续对日志进行更方便的检索和统计分析,在采集时可将非格式化的原始日志转换为格式化的数据。例如原始日志为:
10.20.20.10 ::: [Tue Jan 22 14:49:45 CST 2019 +0800] ::: GET /online/sample HTTP/1.1 ::: 127.0.0.1 ::: 200 ::: 647 ::: 35 ::: http://127.0.0.1/
可使用分割符:::切分为八个字段,并为每个字段定义名称:
IP: 10.20.20.10
bytes: 35
host: 127.0.0.1
length: 647
referer: http://127.0.0.1/
request: GET /online/sample HTTP/1.1
status: 200
time: [Tue Jan 22 14:49:45 CST 2019 +0800]
具体操作请参见 分隔符格式。除了使用分隔符切分日志,CLS 还支持正则、JSON、全文等多种日志切分方式,详情请参见 采集文本日志

步骤2:配置索引

配置索引的目的在于定义哪些字段需要检索,字段的类型是什么,以便于后续检索日志。对于大多数使用场景,可使用自动配置索引功能,一键完成配置,详情请参见 配置索引

步骤3:检索日志

本文以常用的 grep 命令为例,介绍如何通过 CLS 实现类似的日志检索效果。
示例原始日志为:
10.20.20.10 ::: [Tue Jan 22 14:49:45 CST 2019 +0800] ::: GET /online/sample HTTP/1.1 ::: 127.0.0.1 ::: 200 ::: 647 ::: 35 ::: http://127.0.0.1/
在 CLS 对应的格式化后日志为:
IP: 10.20.20.10
bytes: 35
host: 127.0.0.1
length: 647
referer: http://127.0.0.1/
request: GET /online/sample HTTP/1.1
status: 200
time: [Tue Jan 22 14:49:45 CST 2019 +0800]

案例1

检索 request为/online/sample 的日志。
使用 grep 命令:
# grep "/online/sample" test.log
使用 CLS 检索方式:
request:"/online/sample"

案例2

检索状态码 status 不为200的日志。
使用 grep 命令:
# grep -v "200" test.log
实际上,此方式可能会把一些日志也排除掉(出现了200,但 status 不是200的字段)。如需准确检索,则需要编写正则表达式。
使用 CLS 检索方式:
NOT status:200
CLS 还支持更加灵活的检索方式,例如检索状态码 status 大于等于500的日志。
status:>=500

案例3

统计 status 不为200的日志条数。
使用 grep 命令:
# grep -c -v "200" test.log
使用 CLS 检索方式:
NOT status:200 | select count(*) as errorLogCounts

案例4

检索状态码 status 为200,且 request 为 /online/sample 的日志。
使用 grep 命令:
# grep "200" test.log | grep "/online/sample"
使用 CLS 检索方式:
status:200 AND request:"/online/sample"

案例5

检索 request 为 /online/sample 或 /offline/sample 的日志。
使用 grep 命令:
# grep -E "/online/sample|/offline/sample" test.log
使用 CLS 检索方式:
request:"/online/sample" OR request:"/offline/sample"

案例6

检索 request 为 /online/sample,但日志文件不是 test.log 的日志。
使用 grep 命令:
# grep -rn "/online/sample" --exclude=test.log
使用 CLS 检索方式:
request:"/online/sample" AND NOT __FILENAME__:"test.log"

案例7

检索 time 为 [Tue Jan 22 14:49:45 CST 2019 +0800] 的日志的前10行日志。
使用 grep 命令:
# grep "[Tue Jan 22 14:49:45 CST 2019 +0800]" -B 10 test.log
使用 CLS 检索方式:
time:"[Tue Jan 22 14:49:45 CST 2019 +0800]"
检索到匹配的日志后,在控制台单击上下文检索,即可查看该条日志附近的日志。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈