根据关键词文章采集系统(从中找到某个问题可能会留下的日志记录..尤其是现在)
优采云 发布时间: 2022-02-09 07:18根据关键词文章采集系统(从中找到某个问题可能会留下的日志记录..尤其是现在)
查看日志一直是个很头疼的问题。登录服务器查看上百兆的txt文件,发现有问题可能留下的日志记录……尤其是现在,在集群部署的时候发现服务器数量越来越多异常记录几乎要翻遍每一个服务器,想想就崩溃了!这个时候特别希望有集中查看日志的方案来救我。
我曾经找到一个名为 log4Grid 的项目并尝试过。日志数据保存到mssql数据库,通过web项目查询和展示日志记录。只是实现了基本的日志数据采集和展示,项目没有持续更新,使用起来不够稳定。不是一个成熟的日志采集项目。
log4net项目中有一个SimpleSocketServer小应用,可以将多台服务器上的log4net日志集中到一台服务器上,然后选择log4net的某种日志方式记录下来。但是,它不能满足易于查看的要求。
后来因为公司要求学习Java,经常能搜到的ELK系统也进入了考虑范围。初步试用后,感觉可以满足我的基本需求。
虽然可以搜索到很多ELK的部署说明,但是我自己操作的时候还是遇到了很多坑,也遇到了无法继续的情况。这里也记录一下自己的部署过程(因为没有及时记录,有些细节忘记了)。
当时还不知道Exceptionless。
下载列表:
jdk1.8(甲骨文)
日志存储()
弹性搜索()
基巴纳 ()
x64 的 redis (github)
nssm()
一. jdk 安装
ELK 运行在 JVM 上,所以 jdk 也应该安装。Windows系统安装jdk后,需要配置系统环境变量。详细配置可另当别论,请自行上网搜索文章。
二. 弹性搜索
elasticsearch是ELK的核心,负责存储和检索。
将elasticsearch解压到一个目录,在\bin目录下找到服务安装和启动文件service.bat:
执行命令 service.bat install 安装windows服务
执行命令 service.bat start 启动windows服务
用浏览器访问:9200/如果能返回正常页面,说明服务启动成功
三. kibana
kibana 负责在 ELK 中显示搜索结果。
将kibana解压到一个目录,将nssm复制到kibana的\bin目录下(为了简单直接复制nssm):
执行名为 nssm install kibana
在nssm界面选择启动文件kibana.bat,设置自动启动,完成。
用浏览器访问:5601/如果能返回正常页面,说明服务启动成功
四. 日志存储
logstash 负责采集ELK中的转化数据,从日志中获取的数据传递给elasticsearch。
将logstash解压到一个目录下,在\bin同目录下新建一个\conf目录,并将配置文件存放在该目录下。
启动服务时使用命令 logstash.bat -f ..\conf\xx.conf。
在logstash进入工作状态之前,为了测试能否正常工作,做了一个配置example.conf,从日志文件中获取数据:
input {
file {
path => "C:\logs\log.log"
}
}
filter {}
output {
stdout {
codec => rubydebug
}
}
添加日志文件后,会在控制台输出。
一般来说,应该从log4j的输出中获取数据(我的系统是log4j),并配置log4j.conf:
input {
log4j{
mode => "server"
type=>"log4j-json"
port=>4712
}
}
filter {}
output {
stdout { codec => rubydebug }
elasticsearch { hosts => ["127.0.0.1"] }
}
这是单机配置ELK的重点,跨服务器没试过。
logstash的配置文件很容易出错。最后我只放了基本配置,用的是ANSI的,不是中文的,没有注释。
相应地,log4j需要在系统中配置SocketAppender输出,以及log4j属性配置:
log4j.rootLogger=info,logstash
# Socket,logstash
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.Port=4712
log4j.appender.logstash.RemoteHost=localhost
log4j.appender.logstash.ReconnectionDelay=60000
log4j.appender.logstash.LocationInfo=true
所有的日志输出都可以通过将新的输出配置logstash添加到log4j.rootLogger=中来获得。
如果收到如下信息,说明找不到log4j的SocketAppender输出,请检查日志配置是否正确
log4j:WARN No appenders could be found for logger (org.apache.http.client.protoc
ol.RequestAuthCache).
log4j:WARN Please initialize the log4j system properly.
转载于: