服务器agent日志级别

服务器agent日志级别,第1张

Fluentd是一个日志收集系统,它的特点在于其各部分均是可定制化的,你可以通过简单的配置,将日志收集到不同的地方。

目前开源社区已经贡献了下面一些存储插件:MongoDB, Redis, CouchDB,AmazonS3, Amazon SQS, Scribe, 0MQ, AMQP, Delayed, Growl等等。

安装

可参考http://docs.fluentd.org/categories/installation安装

此版本采用: Installingtd-agent for Redhat and CentOS

http://docs.fluentd.org/articles/install-by-rpm

Fluentd 是由Ruby和C编写的,需要ruby进行,然而安装td-agent 是fluentd 的易安装版本,不用考虑太多的依赖关系。

1.首先please create /etc/yum.repos.d/td.repo with the followingcontents.

[treasuredata]

name=TreasureData

baseurl=http://packages.treasure-data.com/redhat/$basearch

gpgcheck=0

Then,you can install via yum command.

2. $ yumupdate

$ yuminstall td-agent

3. 安装完成后,可使用以下方式启动关闭服务。

$ /etc/init.d/td-agent start

$ /etc/init.d/td-agent stop

$/etc/init.d/td-agent restart

4. 默认的 /etc/td-agent/td-agent.conf 为td-agent的配置文件

/var/log/td-agent/td-agent.log 为td-agent的日志文件

5. 查看td-agent的安装

6.查看ruby fluent插件的列表:ruby的安装路径在/usr/lib64/fluent/ruby/

fluent-plugin-tail-ex与fluent-plugin-tail-multiline为后期安装的插件,其他的为安装td-agent后默认安装的插件。

fluent-plugin-tail-ex:为输入扩展插件,支持对文件路径、日期的扩展

fluent-plugin-tail-multiline:为输入扩展插件,支持多行数据的收集,能够更好的收集异常信息。

5. 插件安装

Fluent插件地址http://fluentd.org/plugin/

两种安装方法:

1) 可以本地安装,下载gem安装包 https://rubygems.org/gems,推荐此方法

2) ruby库远程安装

两种方法的安装命令为:$ /usr/lib64/fluent/ruby/bin/gem install 插件名称

6. 配置

首先我们编辑配置文件/etc/td-agent/td-agent.conf 中的source来设置日志来源

[plain] view plain copy

<source>

type tail

format apache

path /var/log/apache2/access_log

pos_file /var/log/apache2/access_log.pos

tag mongo.apache

</source>

其中:

type tail: tail方式是 Fluentd 内置的输入方式,其原理是不停地从源文件中获取增量日志,与linx命令tail相似,也可以使用其他输入方式如http、forward等输入,也可以使用输入插件,将 tail 改为相应的插件名称 如: type tail_ex ,注意tail_ex为下划线。

format apache: 指定使用 Fluentd 内置的 Apache 日志解析器。可以自己配置表达式。

path /var/log/apache2/access_log: 指定收集日志文件位置。

Pos_file /var/log/apache2/access_log.pos:强烈建议使用此参数,access_log.pos文件可以自动生成,要注意access_log.pos文件的写入权限,因为要将access_log上次的读取长度写入到该文件,主要保证在fluentd服务宕机重启后能够继续收集,避免日志数据收集丢失,保证数据收集的完整性。

tag mongo.apache: 指定tag,tag被用来对不同的日志进行分类,与后面的标签match相匹配。

下面再来编辑输出配置,配置日志收集后存储到MongoDB中,也可以输出到其他组件如文件,转发等。

[plain] view plain copy

<match mongo.**>

# plugin type

type mongo

# mongodb db + collection

database apache

collection access

# mongodb host + port

host localhost

port 27017

# interval

flush_interval 10s

</match>

match标签后面可以跟正则表达式以匹配我们指定的tag,只有匹配成功的tag对应的日志才会运用里面的配置。配置中的其它项都比较好理解,看注释就可以了,其中flush_interval是用来控制多长时间将日志写入MongoDB一次。

7.高可用的配置:http://docs.fluentd.org/articles/high-availability

[plain] view plain copy

# TCP input

<source>

type forward

port 24224

</source>

# HTTP input

<source>

type http

port 8888

</source>

# Log Forwarding

<match mytag.**>

type forward

# primary host

<server>

host 192.168.0.1

port 24224

</server>

# use secondary host

<server>

host 192.168.0.2

port 24224

standby

</server>

# use longer flush_interval to reduce CPU usage.

# note that this is a trade-off against latency.

flush_interval 60s

</match>

8.fluent对java的支持:fluent-logger-java is a Java library, to record events via Fluentd, from Java application.

http://fluentd.org/releases/java/ 可下载最新的jar

[java] view plain copy

import java.util.HashMap

import java.util.Map

import org.fluentd.logger.FluentLogger

public class Main {

private static FluentLogger LOG = FluentLogger.getLogger("app", "192.168.0.1", 24224)

public static void main(String[] args) {

// ...

Map<String, String>data = new HashMap<String, String>()

data.put("from", "aaa")

data.put("to", "bbb")

LOG.log("follow", data)//...

FluentLogger.close()

}

}

配置fluentd服务器端/etc/td-agent/td-agent.conf

添加:

[plain] view plain copy

<source>

##必须启动tcp端口,端口号为24224,不加port属性默认为24224

type tcp

port 24224

</source>

##app.** 与java中的app匹配

<match app.**>

##匹配输出到/var/log/td-agent/td-agent.log

type stdout

</match>

查看td-agent.log输出结果:

2013-06-06 12:56:01 +0800 app.follow: {"to":"bbb","from":"aaa"}

nginx日志的错误级别

error_log的错误日志级别: 

debug info notice warn error crit

级别的定义格式

error_log   logs/nginx_error.log  debug

Apache的配置文件日志的错误级别

httpd.conf是Apache的配置文件,Apache中的常见配置主要都是通过修改该文件来实现的,该文件更改后需要重启Apache服务使更改的配置生效。《Linux就该这么学》一起学习linux

ErrorLog "logs/error_log"     #设置错误日志位置

LogLevel warn                 #设置错误日志级别

不仅仅是日志的格式,还是其他的一些可选项上,操作系统管理员有了更多的选择。如下图所示,就是IIS日志记录配置管理的基本页面。

在Windows7操作系统中,IIS日志记录应该视为ISS所必需的而不是可选的组件。这主要是因为日志文件对于管理IIS服务器来说具有很关键的作用。如在这个IIS服务器在受到安全威胁的情况下,可以利用日志文件并对其中包含的内在细节执行排疑式审查。如到IIS服务器发生故障后也可以利用这个日志文件中所记录的信息来检查维护过程并识别系统中的问题。笔者这里就给大家介绍一下Windows7操作系统中IIS日志记录相比Windows2003操作系统的一些新特性,并帮助大家部署一种得心应手的日志管理模式。

一、选择合适的日志记录级别。

在IIS7.0版本中,系统管理员可以根据自己的需要选择合适的日志记录级别。如可以在服务器级别上进行日志记录管理,也可以在网站、WEB应用程序文件或者目录级别上实现它。具体要在那个级别上实现,主要看系统管理员的需要。不过需要注意的是,其实现级别的不同,所支持的日志文件格式也是不同的。如在“服务器”级别实现的话,其支持的日志格式就只有两种,分别为“W3C”格式与二进制格式。而如果选择“网站”级别上实现日志管理的话,则其支持的日志格式有三种,分别为IIS、NCSA、W3C格式。而且系统管理员如果觉得这些格式还不满足的话,可以通过“自定义”的方式来自定义自己需要的格式。所以在选择日志记录级别的时候,除了需要考虑在什么级别上进行日志管理比较方便与安全,同时还需要结合自己喜欢的日志格式。笔者个人喜欢在网站级别上对日志进行管理。因为在一台服务器上,如果只部署IIS服务的话,可能比较浪费。也就是说,在同一台服务器上可能有多个应用服务。为了跟其他应用服务与服务器操作系统的日志区分开来,笔者就建议大家在网站级别上进行管理。当然,在哪个级别上进行日志管理,对于日志的内容没有实际性的差异。主要是看服务器的部署以及系统管理员的工作习惯而定。

二、为日志记录选择合适的格式。

如果选择网站级别来管理日志的话,这个日志的格式有多种选择。最重要的是,系统管理员可以选择IIS的日志记录格式。这个IIS日志记录格式是基于文本的日志记录。跟W3C日志记录格式类似,都是通过HTTP.SYS来控制的。不过这个IIS日志记录格式是一个核心模式过程。而以前的日志记录都是通过用户模式来管理的。两者之间有比较大的变化。超文本传输协议侦听程序被实现为名为 HTTP.SYS的内核模式设备驱动程序。HTTP.SYS 是 Windows 网络子系统的一个重要组成部分。在以前的版本中,当在 IIS 中创建网站时,使用 HTTP.SYS注册站点,然后HTTP.SYS将 Web 请求传送到正在运行网站的用户模式进程中。同时HTTP.SYS也将响应送回客户端。除了从其内部缓存中检索存储的响应以外,HTTP.SYS并不处理它所接收到的请求。因此,应用程序特定代码永远不会加载到内核模式中。但是有些系统管理员希望HTTP.SYS能够以核心模式运行。此时就需要采用IIS日志格式。另外IIS是基于文本的日志记录,跟二进制格式的日志记录不同,直接可以通过文本浏览器等工具来查看日志信息。所以阅读起来也更加的方便。

当然,日志文件的格式不同,其所存储的内容都是相同的。所以日志文件的格式并不会影响日志的实际管理价值。不过为了日后管理维护的方便,笔者建立系统管理员最好还是根据自己的工作习惯来选择合适的日志格式。

三、选择合适的编码格式。

一般情况下,IIS日志文件的编码格式有两种,分别为UTF-8与ANSI两种格式。在所有的字符集中,虽然ANSI比较有名。但是这个编码格式可以说是专门为英文所设计的。用来存储其他的语言时会出现乱码的情况。如对于汉语就支持的不是很好。为了解决这个问题,特意提出了一种新的编码格式,即UTF-8。这是一种UNICODEd 一种变长字符编码。如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。UTF-8编码可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本。 UTF-8 是字节顺序无关的.。它的字节顺序在所有系统中都是一样的。

这些字符集的格式对于某些系统管理员来说可能有点深奥。其实系统管理员也不需要了解的这么清楚。只需要明白一个原则。即如果日志中显示的如果都是英文的话,那么采用ANSI编码格式也不会有问题。但是如果日志中还会存在其他语言的话,则可能会出现乱码。为此笔者建议,还是采用UTF-8的编码格式为好。毕竟,其对于英文的支持力度也是很好的。为此还不如一劳永逸的将其设置为UTF-8格式为好。免得以后再日志阅读中遇到乱码的烦恼。

四、选择合适的日志文件滚动更新机制。

如果将IIS的日志记录都保存在一个文件中,显然文件会很长。到时候,查看记录的时候,会很麻烦。为此最好能够将日志文件进行分割,分割成一个个小文件。这方便与后续的查询与阅读。在Windows7操作系统的IIS日志中,提供了很多的日志文件滚动更新的方法。如可以根据时间来创建新的日志文件。如可以按天、按周或者按月来实现日志文件的滚动更新。一般情况下,按月来更新即可。如果IIS服务器访问比较频繁,也可以适当缩短这个日志文件滚动更新的时间间隔。如可以将时间间隔调整为一周或者一天等等。这个时间间隔到底多少为好,主要是看其记录的数量。如果日志记录数量多的话,那么可以适当缩短时间。相反,如果日志记录数量不是很多的话,则可以以月为单位建立新的日志文件。

除了可以根据时间来建立新的日志文件之外,还可以根据日志文件的大小来创建新的日志文件。在IIS日志管理器中可以选择“最大文件大小”。然后输入一个合适的尺寸。如此的话,当这个日志文件达到指定的大小之后,系统就会自动对其进行日志切换。不过笔者并不赞同采用这种方法。虽然其可以将重做日志文件控制在一个合理的大小内,但是其会打破其内在的时间联系。到时候,在遇到问题时查询起来会非常的不方便。故笔者还是建立按时间来对重做日志文件进行分割。

另外管理器还提供另一个有用的选项,即是否要将本地时间用户文件命名与翻滚。这是一个很有用途的选项。选中这个选项后,在系统自动建立的日志文件中就会反映这个时间信息。这对于系统管理员来查找日志文件,能够提供很大的帮助。特别是如果按文件大小来分割重做日志文件的话,一定要选中这个选项,以方便后续的查找。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/362089.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存