环境:OS X 10.10.5 + JDK 1.8
步骤:
一、下载ELK的三大组件
Elasticsearch下载地址: https://www.elastic.co/downloads/elasticsearch (目前最新版本:2.1.1)
Logstash下载地址: https://www.elastic.co/downloads/logstash (目前最新版本:2.1.1)
Kibana下载地址: https://www.elastic.co/downloads/kibana (目前最新版本:4.3.1)
下载后将其解压到某个目录即可,本文中的解压目录为:
~/app/elasticsearch-2.1.1
~/app/logstash-2.1.1
~/app/kibana-4.3.1-darwin-x64
注:这3个组件相互之间的关系及作用如下:
Logstash(收集服务器上的日志文件) --》然后保存到 ElasticSearch(搜索引擎) --》Kibana提供友好的web界面(从ElasticSearch读取数据进行展示)
二、启动elasticsearch
2.1
进入elasticsearch目录\bin
./elasticsearch
顺利的话,启动成功后,在浏览器里输入http://localhost:9200/ 应该能看到类似下面的输出:
1 { 2 "name" : "Atalanta", 3 "cluster_name" : "elasticsearch", 4 "version" : { 5 "number" : "2.1.1", 6 "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71", 7 "build_timestamp" : "2015-12-15T13:05:55Z", 8 "build_snapshot" : false, 9 "lucene_version" : "5.3.1" 10 }, 11 "tagline" : "You Know, for Search" 12 }
2.2 安装kopf插件
先按Ctrl+C停止elasticsearch,接下来准备安装插件,elasticsearch有大量插件资源,用于增加其功能,bin目录下,输入
./plugin list 可以查看当前安装的插件列表,我们刚刚全新安装,输出的是一个空列表,继续输入
./plugin install lmenezes/elasticsearch-kopf
将会联网安装kopf插件,安装完成后,再次用./plugin list确认下:
Installed plugins in /Users/yjmyzz/app/elasticsearch-2.1.1/plugins: - .DS_Store - kopf
如果输出上述类似,表明kopf安装成功。
然后重启elasticsearch,浏览器里输入http://localhost:9200/_plugin/kopf,将会看到类似下面的界面,可以很直观的看到elasticsearch的一些运行状况
以上操作都ok后,建议Ctrl+C关掉,改用nohup ./elasticsearch & 将其做为后台进程运行,以免退出。
三、logstash的启动与配置
3.1 新建索引配置文件
~/app/logstash-2.1.1/bin 下
mkdir conf
vi conf/logstash-indexer.conf
内容如下:
1 input { 2 file { 3 path => ["/var/opt/log/a.log","/var/opt/log/b.log"] 4 } 5 } 6 7 output { 8 elasticsearch { hosts => ["localhost:9200"] } 9 stdout { codec => rubydebug } 10 }
上面几个步骤的意思就是创建一个名为logstash-indexer.conf的配置文件,input{file{...}}部分指定的是日志文件的位置(可以多个文件),一般来说就是应用程序log4j输出的日志文件。output部分则是表示将日志文件的内容保存到elasticsearch,这里hosts对应的是一个数组,可以设置多个elasticsearch主机,相当于一份日志文件的内容,可以保存到多个elasticsearch中。
至于第9行的stdout,则表示终端的标准输出,方便部署时验证是否正常运行,验证通过后,可以去掉。
3.2 启动
继续保持在logstash的bin目录下,输入
./logstash -f conf/logstash-indexer.conf
稍等片刻,如果看到Logstash startup completed,则表示启动成功。然后另开一个终端窗口,随便找个文本编辑工具(比如:vi),向/var/opt/log/a.log里写点东西,比如:hello world之类,然后保存。观察logstash的终端运行窗口,是否有东西输出,如果有以下类似输出:
1 { 2 "message" => "hello world", 3 "@version" => "1", 4 "@timestamp" => "2016-01-08T14:35:16.834Z", 5 "host" => "yangjunmingdeMacBook-Pro.local", 6 "path" => "/var/opt/log/a.log" 7 }
说明logstash工作正常,此时浏览http://localhost:9200/_search?pretty 也应该能看到一堆输出,表明elasticsearch接收到logstash的数据了。
四、kibana的配置及启动
4.1 修改配置文件
~/app/kibana-4.3.1-darwin-x64/config 下有一个配置文件kibana.yml,大概在12行的位置,改成下面这样:
1 # The Elasticsearch instance to use for all your queries. 2 elasticsearch.url: "http://localhost:9200"
即:指定elasticsearch的访问位置
4.2 启动
~/app/kibana-4.3.1-darwin-x64/bin 下,输入:
./kibana
注:如果启动不成功,请检查版本是否为4.3.1,kibana必须与elasticsearch的版本匹配,一般说来,都从官网下载最新版即可。
启动完成后,在浏览器里输入http://localhost:5601/ 即可看到kibana界面,首次运行,会提示创建index,直接点击Create按钮即可。
然后,就能看到类似下面的界面了:
Windows 安装ELK
在Windows服务器上安装ELK
logstash在windows平台下不能监控磁盘文件,用nxlog代替,监控文件并把内容发送到logstash
部署环境
Os :Windows 7
logstash版本:logstash-2.2.1
elasticsearch版本:elasticsearch-2.2.0
kibana版本:kibana-4.4.2-windows
nxlog版本:2.8.1248
Java版本:jdk-8
下载软件
Java: http://www.oracle.com/technetwork/java/javase/downloads/index.html
Logstash: https://www.elastic.co/downloads/logstash
Elasticsearch: https://www.elastic.co/downloads/elasticsearch
Kibana: https://www.elastic.co/downloads/kibana
Nxlog: http://nxlog.org/products/nxlog-community-edition/download
Nssm: https://nssm.cc/download
帮助文档
Logstash https://www.elastic.co/guide/en/logstash/current/codec-plugins.html
Elasticsearch https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
Kibana https://www.elastic.co/guide/en/kibana/current/index.html
Nxlog http://nxlog.org/docs
解压文件
我创建了文件夹"E:\soft\elk",将所有压缩包解压到此目录,方便以后管理。
目录结构如下所示:
E:\soft\elk\elasticsearch-2.2.0
E:\soft\elk\logstash-2.2.1
E:\soft\elk\kibana-4.4.2-windows
安装java
下载 Java SE Downloads,我下载的是jdk-8u65-windows-x64.exe
安装完成后添加JAVA_HOME 环境变量
Path添加 %JAVA_HOME%\bin
安装nxlog
双击安装,安装过程省略
启动elasticsearch
输入service manager
修改"Startup type " ,Automatic
运行服务
在浏览器中输入http://localhost:9200,出现如下界面,表明elasticsearch安装成功。
安装插件
/bin/plugin install mobz/elasticsearch-head
安装成功后打开http://localhost:9200/_plugin/head/
通过这个页面可以查询和测试elasticsearch的api
新建Logstash配置文件
在E:\soft\elk\logstash-2.2.1\bin\config 文件夹里新建Logstash.conf
内容如下
input {
tcp {
port=>5549
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "test-logstash-%{+YYYY-MM}"
}
}
启动kibana
E:\soft\elk\kibana-4.4.2-windows>bin\kibana
启动logstash
E:\soft\elk\logstash-2.2.1\bin>logstash.bat agent -f config\logstash.conf
Telnet 测试数据
telnet 127.0.0.1 5549
输入
test lostash
打开http://localhost:5601 输入如下内容,点击 create
回到discover 页面显示如下内容
ELK安装完成
把kibana、logstash安装成服务
Logstash 启动可以把logstash.bat agent -f config\logstash.conf 保存到一个 bat文件中,nssm启动这个bat文件
解压缩nssm,通过nssm.exe安装成服务,使用方式 nssm -? 获取帮助信息
监控本地文件到elk,注意要监控的文件格式是ansi的,不能用utf8 的编码,会出现乱码
打开 C:\Program Files (x86)\nxlog\conf\nxlog.conf
Nxlog 配置文件如下
<Input in>
Module im_file
File "E:\\log\\webapi\\\error_*.log"
SavePos TRUE
</Input>
<Output out>
Module om_tcp
Host 127.0.0.1
Port 5549
</Output>
<Route 1>
Path in => out
</Route>
启动noxlog 服务,在文件中输入内容,在kibana中查看内容是否发送成功
检查错误
1.nxlog 检查
C:\Program Files (x86)\nxlog\data\nxlog.log 会有nxlog启动情况,如果配置文件有错,会在这里显示
2.logstash
如果数据发送失败,用控制台启动logstash,数据转换或正则的错误会在控制台里显示
一、ElasticSearch简介
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中, 能够达到实时搜索,稳定,可靠,快速,安装使用方便。 建立一个网站或应用程序,并要添加搜索功能,令我们受打击的 是:搜索工作是很难的。希望我们的搜索解决方案要快,希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单
地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们
要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。
ElasticSearch的Schema与其它DB比较:
ElasticSearch三方访问方式:
环境是CentOS6.4,安装方法有好几种,在这儿我们直接从官网下载包, 1.71版解压后,进入目录执行:
bin/elasticsearch
检查服务是否正常工作
curl -X GET http://localhost:9200/
elasticsearch默认是9200端口,返回一个JSON数据,有版本说明运行正常。
elasticsearch的伸缩性很高,如下示例数据分片:
安装前端elasticsearch-head
elasticsearch/bin/plugin –install mobz/elasticsearch-head
打开 http://localhost:9200/_plugin/head/,可以看如下UI,此处我们配置IP是192.168.0.103,它多语言版,已经自动识别为中文UI
在这儿我们还安装一个管理结点的前端 bigdesk, 安装方式类似,也是推荐插件模式:
$ ./bin/plugin -install lukas-vlcek/bigdesk/<bigdesk_version>
http://192.168.0.103:9200/_plugin/bigdesk/ 之后UI是这样的:
还有其他的前端项目,在这儿我们不一 一 描述,其目的为了更好的管理ElasticSearch集群。
二、ElasticSearch与Asp.net应用程序集成
好了,我们在Asp.net项目中已经安装Elmah,现在我们安装 Elmah.Elasticsearch,这里是1.1.0.27
PM> Install-Package Elmah.Elasticsearch
在web.config中配置节,我们配置index名称:elmahCurrent
1
2
3
4
5
6
7
|
<
elmah
>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on remote access and securing ELMAH.
-->
<
security
allowRemoteAccess="true" />
<
errorLog
type="Elmah.Io.ElasticSearch.ElasticSearchErrorLog, Elmah.Io.ElasticSearch" connectionStringName="ElmahIoElasticSearch" defaultIndex="elmahCurrent" />
</
elmah
>
|
连接字符串增加
1
2
3
|
<
connectionStrings
>
<
add
name="ElmahIoElasticSearch" connectionString="http://192.168.0.103:9200/" />
</
connectionStrings
>
|
让我们来访问一个不存在http://localhost:1960/KK webpage 故意引发异常,然后我们到前端head里可以看到:
接下来,让我们来配置NLOG的日志也输出到ElasticSearch,先安装包 NLog.Targets.ElasticSearch 1.0.14
PM> Install-Package NLog.Targets.ElasticSearch
对应的NLog.config文件是这样的,看加粗字体:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?
xml
version="1.0" encoding="utf-8" ?>
<
nlog
xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
extensions
>
<
add
assembly="NLog.Targets.ElasticSearch"/>
</
extensions
>
<
targets
async="true">
<
strong
> <
target
name="elastic" xsi:type="ElasticSearch" uri="http://192.168.0.103:9200/" index="DevLogging" documentType="logevent"></
strong
>
</
target
>
<
target
name="asyncFile" xsi:type="AsyncWrapper">
<
target
xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${logger} ${uppercase:${level}} ${message} ${exception:format=ToString,StackTrace,method:maxInnerExceptionLevel=5:innerFormat=ToString}" />
</
target
>
</
targets
>
<
rules
>
<
logger
name="*" minlevel="Trace" writeTo="f" />
<
strong
> <
logger
name="*" minlevel="Trace" writeTo="elastic" /></
strong
>
</
rules
>
</
nlog
>
|
这样我们可以把非异常的日志自由输出到ElasticSearch中,例如我们记录webapi请求的日志:
devlogging是我们在配置文件已配置过的index名称。 我们同时使用NLOG记录了文件日志。
搜索:
基于REST方式请求按ID查询:
http://localhost:9200/<index>/<type>/<id>.
如:
http://192.168.0.103:9200/devlogging/logevent/AU9a4zu6oaP7IVhrhcmO
还有一些搜索示例如下:
//索引 $ curl -XPUT http://localhost:9200/twitter/tweet/2 -d '{ "user": "kimchy", "post_date": "2009-11-15T14:12:12", "message": "You know, for Search" }' //lucene语法方式的查询 $ curl -XGET http://localhost:9200/twitter/tweet/_search?q=user:kimchy //query DSL方式查询 $ curl -XGET http://localhost:9200/twitter/tweet/_search -d '{ "query" : { "term" : { "user": "kimchy" } } }' //query DSL方式查询 $ curl -XGET http://localhost:9200/twitter/_search?pretty=true -d '{ "query" : { "range" : { "post_date" : { "from" : "2009-11-15T13:00:00", "to" : "2009-11-15T14:30:00" } } } }'
我们可以配置多个应用程序的日志统一输出到ES中,以便于我们查询与分析。
CentOS
环境
CentOS 7.1 + Oracle JDK 7.0
步骤
- 下载Linux版本的三个组件,官网下载地址:https://www.elastic.co/downloads
- 下载后使用SSH工具传到服务器(客户机是window,安装是在linux服务器上)
- 分别解压到不同的目录下(tar -zxvf XXX)
三大组件之间的关系
- Logstash(收集服务器上的日志文件)
- 保存到 ElasticSearch(搜索引擎)
- Kibana提供友好的web界面(从ElasticSearch读取数据进行展示)
elasticsearch配置
- 进入elasticsearch的bin目录下
- 启动./elasticsearch
- 顺利的话,使用curl命令,可以看到如下代码
- 我们可以在客户端浏览器进行访问,但是发现访问不了,原因是elasticsearch配置文件的设置,由于了解不深,就不做过多介绍,在config目录下修改elasticsearch.yml文件
安装kopf插件,elasticsearch中有很多插件
- 停止elasticsearch进入bin目录
- ./plugin list可以查看已经安装的插件列表
- ./plugin install lmenezes/elasticsearch-kopf
- 使用./plugin list查看是否安装成功,下面是安装成功了
- 然后重新启动elasticsearch,在浏览器中访问http://localhost:9200/_plugin/kopf,将会看到类似下面的界面,可以很直观的看到elasticsearch的一些运行状况
遇到的问题
- 在以admin启动的时候出现异常
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root. at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35) Refer to the log for complete error details.
- 新建用户
useradd elsearch
- 给elsearch用户权限
chown -R elsearch:elsearch elasticsearch
- 启动成功
Logstash的配置
- Logstash用于收集日志,我们在bin目录下新建conf文件,然后新建logstash-indexer.conf配置文件
mkdir conf
vi conf/logstash-indexer.conf
- 添加配置信息
input {
file {
path => ["/var/opt/log/a.log","/var/opt/log/b.log"]
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
- input{file{...}}部分指定的是日志文件的位置(可以多个文件),一般位置就是log4j输出的日志文件
- output部分则是表示将日志文件的内容保存到elasticsearch,这里hosts对应的是一个数组,可以设置多个elasticsearch主机,相当于一份日志文件的内容,可以保存到多个elasticsearch中。
- 启动
./logstash -f conf/logstash-indexer.conf
- 在日志中写入一点文件
- 如有类似输出,表示成功
{
"message" => " stdout { codec => rubydebug }\r",
"@version" => "1",
"@timestamp" => "2016-08-29T06:15:41.538Z",
"path" => "/home/cheng/log/a.log",
"host" => "172.16.103.19"
}
配置Kibana
- 因为Kibana要从ElasticSearch读取数据进行展示,在这里我们要对Kibana进行配置,修改kibana.yml文件,将url改为当前服务器的地址
elasticsearch.url: "http://localhost:9200"
- 在bin目录下启动
- 启动成功之后访问:http://localhost:5601/
- 看到如下界面,就算是好了
作者:橙小张
链接:https://www.jianshu.com/p/ff82bb09301c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。