一,简介ELK由三部分组成elasticsearch,logstash,kibana,elasticsearch是一个近似实时的搜索平台,它让你以前所未有的速度处理大数据成为可能.Elasticsearch所涉及到的每一项技术都不是创新或者革命性的,全文搜索,分析系统以及分布式数据库这些早就已经存在了。它的革命性在于将这些独立且有用的技术整合成一个一体化的,实时的应用.Elasticsearch是面向文档(面向文档)的,这意味着它可以存储整个对象或文档(文档)。然而它不仅仅是存储,还会索引(索引)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引,搜索,排序,过滤。这种理解数据的方式与以往完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。应用程序的日志大部分都是输出在服务器的日志文件中,这些日志大多数都是开 人员来看,然后开发却没有登陆服务器的权限,如果开发人员需要查看日志就需要到服务器来拿日志,然后交给开发;试想下,一个公司有10个开发,一个开发每天找运维拿一次日志,对运维人员来说就是一个不小的工作量,这样大大影响了运维的工作效率,部署ELKstack之后,开发任意就可以直接登陆到Kibana中进行日志的查看,就不需要通过运维查看日志,这样就减轻了运维的工作。日志种类多,且分散在不同的位置难以查找:如LAMP / LNMP网站出现访问故障,这个时候可能就需要通过查询日志来进行分析故障原因,如果需要查看阿帕奇的错误日志,就需要登陆到阿帕奇服务器查看,如果查看数据库错误日志就需要登陆到数据库查询,试想一下,如果是一个集群环境几十台主机呢?这时如果部署了ELKstack就可以登陆到Kibana页面进行查看日志,查看不同类 型的志只需要电动鼠标切换一下索引即可。
Logstash:日志收集工具,可以从本地磁盘,网络服务(自己监听端口,接受用户日志),消息队列中收集各种各样的日志,然后进行过滤分析,并将日志输出到Elasticsearch中。
Elasticsearch:日志分布式存储/搜索工具,原生支持集群功能,可以将指定时间的日志生成一个索引,加快日志查询和访问。
Kibana:可视化日志网页展示工具,对Elasticsearch中存储的日志进行展示,还可以生成炫丽的仪表盘可以生成炫丽的仪表
index.number_of_replicas:1设置默认索引副本个数,默认为1个副本。
path.data:/ path / to / data设置索引数据的存储路径
path.logs:/ path / to / logs设置日志文件的存储路径
path.plugins:/ path / to / plugins设置插件的存放路径
network.host设置对外的网关IP,默认本地回环。
http:port:9200设置对外服务的http端口,默认为9200。
transport.tcp.port:9300设置节点间交互的tcp端口,默认是9300。
5:用浏览器打开http:// localhost:9200 /,显示如下,表示安装并且启动成功
## kibana的安装
### 1:下载地址:https
://www.elastic.co/downloads/kibana ### 2:解压kibana到某个目录
### 3:进入配置文件夹打开kibana.yml文件,改kibana。 ym文件server.port:5601(kibana的端口号)server.host:“localhost”(kibana的请求地址)elasticsearch.url:“http:// localhost:9200”(elasticsearch的请求路径)kibana .index:“ .kibana”(kibana的日志的索引名称)
### 4:进入bin文件夹,双击执行kibana.bata文件
### 5:打开http:// localhost:5601
3:在配置文件夹内创建的conf文件夹,进入CONF文件夹,创建portal.conf文件,内容如下:
input {
file {
path => "E:\opt\projectLog\portal.log" //需要索引的文件
type => "syslog" //索引的类型(相当于数据库的表)
//合并多行,如果不合并,文件是安行来索引,这样导致一个日子的异常信息会变成多条记录,不方便日志查询
codec => multiline {
pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}"
negate => true
what => "previous"
}
}
}
filter {
// 日志的过滤器
grok {
match => [ "message", "%{SYSLOGBASE} %{GREEDYDATA:content}" ]
}
}
output {
//日志的输出,这里面输出到elasticsearch
elasticsearch {
//elasticsearch的地址
hosts => "127.0.0.1:9200"
//索引的名称
index => "protal-syslog-%{+YYY.MM.dd}"
}
stdout { codec => rubydebug }
}