一、介绍
日志主要包括系统日志、应用程序日志、访问日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误以及发生的原因。经常分析日志可以了解服务器的负荷、性能安全性,从而及时采取纠正措施。
通常,日志被分散存储在不同设备上。如果数十台上百台服务器,你还在登陆每台服务器,这样是不是感觉很繁琐和效率低下。当务之急我们集中化的日志管理,例如开源的syslog,将所有的服务器上的日志收集和汇总。
集中化管理日志后,日志的统计和检索又成为了一件比较麻烦的事情,一般我们使用grep、awk和wc等linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量使用这样的方法难免有点力不从心。
开源实时日志分析ELK平台能够完美的解决我们上述问题,ELK由elastaticSearch、logstash和kibana三个开源工具组成。官方网站Https://www.elastic.co/products。
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
Kibana 也是一个开源和免费的工具,它可以为logstash和elasticsearch提供的日志分析友好的web界面,可以帮助您汇总、分析和搜索重要数据日志。
![](http://dl2.iteye.com/upload/attachment/0123/5791/29568fae-6f98-3172-a716-49ec65d22343.png)
在需要收集日志的所有服务器上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到logstash indexer,logstash indexer将日志收集在一起交给全文搜索服务elasticsearch,可以用elasticSearch进行自定义搜索通过kiabana来结合自定义搜索进行页面展示。
二、准备工作
Logstash 1.5+推荐使用jre 7以上。Elasticsearch和logstash依赖jre。
1、安装jdk。jdk-7u65-linux-x64.tar.gz需要注册oracle账户,且依赖网络。http://www.oracle.com/technetwork/java/archive-139210.html。
2、安装logstash。logstash-1.5.1.tar.gz 版本,依赖网络,下载很慢。
3、安装ealsticsearch 。elasticsearch-2.2.0.tar.gz 版本,如上。
4、安装kibana 。kibana-3.1.0.zip,文件比较小,可以在网上下载。
5、安装 tomcat 。apache-tomcat-7.0.75.tar.gz,随便下。
6、此上5版本均验证可用。
三、配置说明
1、Jdk
tar -zxvf jdk-7u65-linux-x64.tar.gz -C
vi /etc/profile
![](http://dl2.iteye.com/upload/attachment/0123/5777/013118d9-a60f-35b1-9609-8d5335d8e937.png)
source /etc/profile
shutdown -r now 重启Linux
开机后java -version
![](http://dl2.iteye.com/upload/attachment/0123/5779/46e8fe92-c1b2-3b82-89cd-b468a2d473f7.png)
2、Logstash
解压同上
cd ./bin
![](http://dl2.iteye.com/upload/attachment/0123/5781/e4ef03ce-6346-3a39-9499-61b6c5011605.png)
3、Elasticsearch
解压同上
cd ./bin
![](http://dl2.iteye.com/upload/attachment/0123/5783/431634f7-5614-3e12-be38-c16881eff54b.png)
cd ./config
修改 vi elasticsearch.yml
![](http://dl2.iteye.com/upload/attachment/0123/5785/7f3c3111-3552-39ec-b7a5-1e3bb8353aec.png)
4、Kiabana
unzip kibana-3.1.0.zip
5、Tomcat
Tar -zxvf apache-tomcat-7.0.75.tar.gz
四、环境说明
1、在升级了最新的elasticsearch1.5之后,原来的kibana 3提示无法连接到elasticsearch的9200端口,“kibana 3 Could not contact Elasticsearch”
解决方法:在elasticsearch的配置文件config/elasticsearch.yml下添加配置说明中http相关内容。参考http://blog.csdn.net/fableboy/article/details/44775063
logstash解压目录下./bin vi start_logstash.conf
![](http://dl2.iteye.com/upload/attachment/0123/5787/25f80800-5c87-37ea-b7e2-ea64fa6298bc.png)
运行 ./logstash -f start_logstash.conf
2、elasticsearch
执行 ./bin/elasticsearch
结束ctrl+c或者kill掉pid
安装head插件
方法一、elasticsearch/bin/plugin -install mobz/elasticsearch-head
方法二、https://github.com/mobz/elasticsearch-head下载zip 解压,添加文件\plugins\head\_site,将解压的文件拷贝到此目录下。
启动后查看网站 http://localhost:9200/_plugin/head/ 界面如下。
![](http://dl2.iteye.com/upload/attachment/0123/5789/00433759-242c-3c7a-bdd1-f4f244207456.png)
3、Kibana
放到tomcat的webapps目录下
http://localhost:8080/kibana-3.1.0
4、查看端口
netstat -anp |grep :9200
5、防火墙,访问IP解决
systemctl start firewalld 启动
systemctl stop firewalld 停止
systemctl disable firewalld 禁用 禁用后,firewalld将不会再开机时自动启动。
systemctl enable firewalld 启用
systemctl status firewalld 检查防火墙是否在运行
6、拷贝文件
scp -r /home/wwwroot/www/charts/util [email protected]:/home/wwwroot/limesurvey_back/scp
7、elasticsearch以root用户运行命令
./elasticsearch -Des.insecure.allow.root=true
8、tomcat错误日志正则表达式
input {
file {
path => ["/sdb/deploy/apache-tomcat-mes-node1/webapps/mes/logs/trace-erp.log","/sdb/deploy/apache-tomcat-mes-node2/webapps/mes/logs/trace-erp.log"]
tags => "java-err"
start_position => "beginning"
codec => multiline {
pattern => "%{DATESTAMP}"
negate => true
what => "previous"
}
}
}
#filter for tomcat-error
filter {
grok {
add_field => [ "received_from", "172.16.211.238" ]
match => { "message" => "%{DATESTAMP:timestamp} \[(?<thread_name>.+?)\] %{LOGLEVEL:level} %{JAVACLASS:class}\s*(?<content>.*)"}
}
mutate {
remove_field => "content"
}
if [level] == "ERROR" {
throttle {
after_count => 2
key => "%{content}"
add_tag => "throttled"
}
}
if [level] != "ERROR" {
drop {}
}
}
###output to es
output {
elasticsearch{
host => "172.30.2.13"
protocol =>"http"
index => "java-err-%{+YYYY.MM.dd}"
}
stdout{
codec => json_lines
}
}
五、参考资料
1、linux下安装tomcat http://blog.csdn.net/zhuying_linux/article/details/6583096/
2、Elasticsearch 插件search安装 http://blog.csdn.net/july_2/article/details/24481935
3、kibana 3提示无法连接到elasticsearch的9200 http://blog.csdn.net/fableboy/article/details/44775063
4、Jdk/jre下载 http://www.oracle.com/technetwork/java/archive-139210.html
5、比较全面的ELK搭建参考 http://www.tuicool.com/articles/YR7RRr
6、同5 点,http://baidu.blog.51cto.com/71938/1676798
7、Logstash 参考网站 https://www.elastic.co/guide/en/logstash/1.5/introduction.html
8、用于grok表达式官网 http://grokdebug.herokuapp.com/
9、grok表达式参考 http://blog.csdn.net/liukuan73/article/details/52318243
10、安装jdk http://josh-persistence.iteye.com/blog/1908549