本地日志监控是什么?
本地日志监控是指使用云监控的Agent在本地对日志进行格式化处理,然后将处理后的格式化数据上报到云监控的指标仓库。而不用上报原始日志。
在本地处理日志(而非上报原日志)有几个重要的理由:
1,上报原始日志需要消耗大量的云端存储和网络IO,甚至为了查询还需要创建索引,费用不低;
2,部分场景下的原始日志涉及到商业数据,不便上报,如订单信息,客户信息等。
本地日志被处理成指标数据上报到指标仓库,然后以符合Prometheus规范的方式将这些数据输出到云监控自建的Grafana,Prometheus报警等。甚至可以将这些数据对接到线下Grafana。
本地日志监控的主要过程是通过云监控的控制台设置日志解析的配置并下发到日志所在的机器,云监控Agent会根据这些配置对原始日志进行解析,之后会将解析所得的格式化的数据上报到云监控的指标仓库。
流程如下图(图1):
本地日志监控实现过程
本地日志监控实现具体流程如下:
1,在输出日志的机器上安装云监控Agent;
2,将该机器加入到应用分组中(之所以需要添加到应用分组中,是因为输出日志的一般不是单台机器,而是服务某个业务的多台机器,它们往往是动态创建和释放的。加入分组有利于实现自动化管理);
3,在云监控的控制台进行日志解析的配置;
4,查看及使用数据,如配置Grafana大盘,设置Prometheus报警等。
为了展示实现过程,以我们自己的一个真实的例子来详细说明。
我们有一个web服务,通过http的访问都会被记录在日志文件里,我们需要统计其中两类请求的访问量。
日志文件所在的目录下有多个文件,如下图(图2)所示,
其中,只有pre.cms.console.aliyun.com.XXXX-XX-XX.log文件是我们的目标日志文件。
目标日志文件的内容如下图(图3)所示,
我们的目标是实现统计VIPServer和KeepAliveClient这两类请求各自的访问量趋势。
根据上面的步骤,我们逐个展开来说,
1,在输出日志的机器上安装云监控Agent
安装Agent分两种情况,
(1)单机安装;
(2)应用分组内机器安装。
对于单机安装,参照云监控控制台上的文档行进行安装就行,
但有几点需要注意:
(1)安装Agent的机器需要能访问公网,因为下载Agent安装包和通过Agent上报指标数据都需要通过公网;
(2)安装的Agent版本号需要 大于等于 3.5.5,最好是安装最新版。
Agent安装文档在云监控控制台的主机监控页面可以找到,
https://cloudmonitornext.console.aliyun.com/hostMonitoring/all
如图:
安装完成后,通过 ps -aux | grep argusagent 看到如图所示,意味着Agent安装成功
通过/usr/local/cloudmonitor/bin/argusagent -v 可以查看Agent的版本号。
对于应用分组内的机器,只需要在创建应用分组的时候,打开“初始化安装监控插件”开关即可,具体见步骤2。
2,将该机器加入到应用分组中
创建一个应用分组(如果已经有可用应用分组,则不用创建),在创建的时候需要保持“初始化安装监控插件”开关处于打开状态,那么此后通过动态的方式添加进来的实例,都会自动安装Agent。见图
创建应用分组后会自动跳转到“组内资源”页面,然后点击“添加产品”,会弹出添加实例的页面。在该页面的产品选择框,选中“云服务器ECS”,然后搜索我们步骤1中安装了云监控Agent的机器,选中该机器,点击“确定”即可(如果是动态匹配规则添加,流程都类似)。
见图
3,添加日志解析的配置
在设置日志解析之前需要先创建指标仓库(如果已经创建则省去这步),用于储存上报的数据,这里我们使用一个已经创建好的指标库cangfan_test,见图
日志解析的配置入口有两个,分别是分组内的业务监控(见步骤2的图),和企业云监控的“业务监控”,见图,
点击“接入数据”,就会展开配置页面,见图
(1)任务名,根据提示规范填写即可。
(2)应用分组,既就是我们步骤2中创建的应用分组,分组内包含了输出日志和已经安装了云监控Agent的机器。
(3)日志路径,这个需要重点关注,它支持通配符(Linux系统)和根据一定的规则来过滤。例如我们这个例子中,我们的日志目录下有多个日志文件(见图2),其中只有pre.cms.console.aliyun.com.XXXX-XX-XX.log是我们的目标文件(例如需要排除error.log文件),可以使用@FUNC__DateFormat__yyyy-MM-dd@这种方式来过滤日志名称里面包含了日期的文件。
(4)匹配方式,目前支持完整正则模式,分隔符模式,和JSON模式,下面我们会详细介绍。
接下来看就是日志解析重头戏了,日志解析我们目前支持3种方式,分别是完整正则模式,分隔符模式,JSON模式。
我们逐个模式来介绍。
完整正则模式
正则模式就是使用正则表达式来解析日志内容,支持两种方式,手动编写正则和系统自动生成正则。见图
输入示例日志后点击“确定输入”,就可以开始编写正则来匹配日志了,如果嫌麻烦,可以选择“自动生成正则表达式”切换到自动模式。见图
我们使用该方法,解析出三个字段,并根据字段意义输入每个字段的名称(key),见图
其中需要特别说明的是“列值翻译”,列值翻译就是将解析出来的日志字段换成另外一个值(被改变后的值)上报,
例如,我们对上图中的http_code进行列值转换,将http code转换成对应的实体字符串,见图
配置好日志解析后,接下来就是配置需要的监控项(指标)。
日志和监控项的关系是,日志用于产生原数据,而监控项则是对这些原数据进行统计和计算,例如计数,求和等。只有将这些原数据转换成指标,才能实现看图,报警等功能。
点击“监控项设置”下的“添加监控项”按钮,便会展开监控项设置,见图
配置好监控项之后,最后就剩下指标仓库的选择和标签的设置,见图
标签“__cms_app__”用于对指标进行分类,例如这里设置为“locallogtest”,具体使用见后面的数据查询及使用部分。
至此,完整正则模式解析日志就配置完成了。点击“确定”按钮,完成配置。
分隔符模式
分隔符模式与上面的完整正则模式配置类似,不同地方在于日志解析,分隔符模式是使用指定位置的指定字符来进行日志解析,具体操作见图
将匹配模式选为“分隔符模式”,然后点击“增加列”,展开列设置页面,见图
分隔符模式其它的设置同前面的完整正则模式是一样的,这里就不再赘述。
JSON模式
如果日志是按照JSON格式输出的,则可以采用JSON模式来解析,实现起来非常简单,只需要输入示例日志,系统会自动解析出字段,见图
其它的设置同前面的完整正则模式是一样的,这里同样不再赘述。
至此,日志配置部分就全部介绍完了,剩下的就是数据查看和使用了。
数据查看
查看数据,用于校验上报数据是否符合预期,以我们前面配置的解析为例,在本地日志页面找到我们刚才配置的解析任务,然后点击“查看数据”就会打开数据查看页面,见图
数据查看页面,选择指标
选择一个监控项,就会看到数据,见图
配置Grafana大盘
在数据查看页面,点击“管理Grafana大盘”,就会跳转到云监控自建的Grafana页面,然后就可以根据需要创建图表了,见图
设置Prometheus报警
在数据查看页面点击“另存为报警”,就会打开报警设置页面,见图
其中标签和注释(Annotations)用于报警通知中附带内容,例如上面截图配置的规则,
手机短信收到通知如下:
报警规则的其它设置项,如报警联系人,通道沉默等根据需要和提示正常设置就行。
对接线下Grafana
为了满足更多场景,云监控指标仓库的数据可以通过公网或VPC对接到到线下Grafana,见图
点击“对接线下”,就会打开操作文档,根据文档操作即可,见图
至此,使用云监控的本地日志监控就介绍完了,使用过程中如果遇到任何问题,请钉钉联系 云监控support群(群号:21705108)