ELK日志分析系统部署

ELK介绍
 
环境的困境:
  一、开发人员不能登陆线上服务器查看详细的日志
  二、各个系统都有日志,日志数据分散难以查找
  三、日志数据量大,查询速度慢,或者数据不够实时
 
ELK Stack解决方案:
  Elastic Search(对日志进行存储搜索) + LogStash(对日志进行搜集) + Kibana(图形化展现) = ELK Stack
 
 
Elasticsearch部署
  IP:192.168.88.1
 
一、安装JDK
# tar zxf jdk-8u101-linux-x64.tar.gz -C /opt/
# vim /etc/profile.d/java.sh
	export JAVA_HOME=/opt/jdk1.8.0_101
	export JAVA_BIN=/opt/jdk1.8.0_101/binls
	export PATH=$PATH:$JAVA_HOME/bin
	export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
	export JAVA_HOME JAVA_BIN PATH CLASSPATH
# source  /etc/profile.d/java.sh 
# java -version
二、建立普通用户
# useradd heboan
# passwd heboan
三、以普通用户heboan安装Elasticsearch
# tar zxf elasticsearch-5.2.0.tar.gz -C /opt/
# cd /opt/
# ln -s elasticsearch-5.2.0/ elasticsearch
# chown -R heboan elasticsearch-5.2.0 elasticsearch
# su heboan
$ tree -L 1
	.
	├── bin 		//运行Elasticsearch实例和管理插件的一些脚本
	├── config		//配置文件路径,包含Elastichsearch.yml基本配置文件
	├── lib			//Elasticsearch使用的库
	├── LICENSE.txt
	├── modules
	├── logs 		//日志目录
	├── NOTICE.txt
	├── plugins            //插件安装目录
	└── README.textile

四、改下配置文件/opt/elasticsearch/config/elasticsearch.ymljava

cluster.name: my-application   //集群名字
node.name: node-88.1           //节点名字
path.data: /data/es-data       //数据存放路径,确保建立此目录
# mkdir -p /data/es-data
# chown -R heboan /data/es-data
network.host: 192.168.88.1
http.port: 9200

	----官方建议进行的配置说明------------
	虽然Elasticsearch仅须要不多的配置,但有一些设置须要手动配置,而且在进入生产以前进行配置
☻ path.data 和 path.logs
	#若是使用.zip或.tar.gz安装文件,则data和logs目录是在目录$ES_HOME中。若是这些重要的文件夹保留在默认位置,则在将Elasticsearch升级到新版本时存在将其删除的高风险
☻ cluster.name
	#节点只能cluster.name在与集群中全部其余节点共享集群时才加入集群。咱们应该将其更改成描述集群用途的适当名称
☻ node.name
	#默认状况下,Elasticsearch将使用随机生成的UUID的第一个字符做为节点ID,节点ID是持久的,重启不会更改,咱们应该配置一个更有意义的名称
☻ bootstrap.memory_lock
	#对节点的健康相当重要,没有一个JVM被交换到磁盘,一种实现方法是将bootstrap.memory_lock设置设置为true
☻ network.host
	#默认状况下,Elasticsearch仅绑定到环回地址,为了与其余服务器带上的节点进行通讯和造成集群,咱们须要将节点绑定到非环回地址
☻ discovery.zen.ping.unicast.hosts
 #当与其余服务器的节点造成集群时,咱们必须提供集群中多是活动和可联系的其余节点列表
☻ discovery.zen.minimum_master_nodes
	#为了防止数据丢失,此配置相当重要,为了不脑裂,此设置应该设置为主合格节点的法定 数量(master_eligible_nodes / 2)+1,
         换句话说,若是有三个主合格节点,则最小主节点应设置为(3 / 2 ) + 1或2: discovery.zen.minimum_master_nodes:2
五、启动Elasticsearch
$ /opt/elasticsearch/bin/elasticsearch -d      //-d 表示在后台运行
>>启动报错,日志以下
	   bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
	   ERROR: bootstrap checks failed
	   max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
	   max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

>>解决办法
	   切换到root用户修改配置sysctl.conf
	   # vi /etc/sysctl.conf
		vm.max_map_count=655360
	   # sysctl -p
	   # echo "* soft nofile 65536" >>/etc/security/limits.conf
	   # echo "* hard nofile 65536" >>/etc/security/limits.conf
	   修改后从新登陆heboan用户,使用以下命令查看是否修改为功
	   $ ulimit -Hn
	   65536
六、查看监听的端口,咱们发现启动了端口9200,9300
$ netstat -lntp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 192.168.88.1:9200       :::*                    LISTEN      2428/java           
tcp6       0      0 192.168.88.1:9300       :::*                    LISTEN      2428/java           
tcp6       0      0 :::22                   :::*                    LISTEN      -                   
tcp6       0      0 ::1:25                  :::*                    LISTEN      -       
七、访问9200端口
$ curl 192.168.88.1:9200
{
      "name" : "node-88.1",
      "cluster_name" : "my-application",
      "cluster_uuid" : "5j87qZ4dS9uBIoZc0CEseg",
      "version" : {
  	    "number" : "5.2.0",
    	    "build_hash" : "24e05b9",
    	    "build_date" : "2017-01-24T19:52:35.800Z",
    	    "build_snapshot" : false,
     	    "lucene_version" : "6.4.0"
           },
  	"tagline" : "You Know, for Search"
     }
八、按照以上步骤在192.168.88.2上部署Elasticsearch,这样咱们能够创建一个集群
/opt/elasticsearch/config/elasticsearch.yml更改以下:
	cluster.name: my-application   //集群名字
	node.name: node-88.2          //节点名字
	path.data: /data/es-data       //数据存放路径,确保建立此目录
	# mkdir -p /data/es-data
	# chown -R heboan /data/es-data
	network.host: 192.168.88.2
	http.port: 9200
	discovery.zen.ping.unicast.hosts: ["192.168.88.1", "192.168.88.2"]    在192.168.88.1也修改此配置,内容同样
	部署过程当中遇到问题请参考192.168.88.1解决方案

九、查看集群状态node

$ curl -XGET 'http://192.168.88.1:9200/_cluster/health?pretty'
{
  	"cluster_name" : "my-application",
  	"status" : "green",
  	"timed_out" : false,
  	"number_of_nodes" : 2,
  	"number_of_data_nodes" : 2,
  	"active_primary_shards" : 0,
  	"active_shards" : 0,
  	"relocating_shards" : 0,
  	"initializing_shards" : 0,
  	"unassigned_shards" : 0,
  	"delayed_unassigned_shards" : 0,
  	"number_of_pending_tasks" : 0,
  	"number_of_in_flight_fetch" : 0,
  	"task_max_waiting_in_queue_millis" : 0,
  	"active_shards_percent_as_number" : 100.0
}

 

 

logstash部署
 
一、安装JDK
# tar zxf jdk-8u101-linux-x64.tar.gz -C /opt/
# vim /etc/profile.d/java.sh
	export JAVA_HOME=/opt/jdk1.8.0_101
	export JAVA_BIN=/opt/jdk1.8.0_101/binls
	export PATH=$PATH:$JAVA_HOME/bin
	export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
	export JAVA_HOME JAVA_BIN PATH CLASSPATH
# source  /etc/profile.d/java.sh 
# java -version
二、安装
YUM安装下载并安装公共签名密钥
	# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
例如/etc/yum.repos.d/,在具备.repo后缀的文件中的目录中添加如下内容logstash.repo
	[logstash-5.x]
	name=Elastic repository for 5.x packages
	baseurl=https://artifacts.elastic.co/packages/5.x/yum
	gpgcheck=1
	gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
	enabled=1
	autorefresh=1
	type=rpm-md	
能够安装
	$sudo yum install logstash

由于使用YUN安装网络慢的缘由,这里我使用二进制包安装
	☻下载并解压logstash
		# tar zxf logstash-5.2.0.tar.gz -C /opt/
		# cd /opt/
		# ln -s logstash-5.2.0 logstash
		# chown -R heboan logstash*
		# su heboan
	☻准备logstash.conf配置文件
	☻运行 bin/logstash -f logstash.conf
三、运行Logstash管道测试logstashan安装
一个Logstash管道有两个必需的元素,input和output,和一个可选的元素filter.输入插件从源消耗数据,过滤器插件根据咱们指定的内容修改数据,输出插件将数据写入目标。
>>运行最基本的管道:
$ /opt/logstash/bin/logstash -e 'input {stdin {}} output {stdout {}}'
-e表示直接从命令行指定配置,上面的管道是从标准输入stdin,并将该输入以stdout结构化格式移动到标准输出,
启动Logstash后,请等待,直到看到"Successfully started Logstash API endpoint {:port=>9600}",而后在命令提示符处输入:
hello heboan
2017-02-15T10:21:08.599Z host-2.heboan.com hello heboan
my name is heboan
2017-02-15T10:21:22.909Z host-2.heboan.com my name is heboan
这样咱们已建立并运行基本的logstash管道了
 
>>更直观的展现信息
$ /opt/logstash/bin/logstash -e 'input {stdin {}} output {stdout {codec => rubydebug}}'
hello heboan
{
    "@timestamp" => 2017-02-15T10:31:46.127Z,
      "@version" => "1",
          "host" => "0.0.0.0",
       "message" => "hello heboan"
}

 

>>如今咱们就将输出到Elasticsearch
$ /opt/logstash/bin/logstash -e 'input {stdin {}} output {elasticsearch {hosts => ["192.168.88.1:9200"]}}'
hello heboan
如今咱们来查看192.168.88.1上面Elasticsearch的索引全部列表
$ curl '192.168.88.1:9200/_cat/indices?v'
health status index               uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   logstash-2017.02.15 wLuFEV4rRsS87DruuoX6fQ   5   1          1            0      4.6kb          4.6kb
咱们发现有一个索引logstash-2017.02.15
删除索引
$ curl -XDELETE  '192.168.88.1:9200/logstash-2017.02.15'

 

 

Kibana部署
 
一、解压安装
# tar zxf kibana-5.2.0-linux-x86_64.tar.gz -C /opt/
# cd /opt/
# ln -s kibana-5.2.0-linux-x86_64 kibana
# chown -R heboan kibana*
二、目录布局
tar.gz安装包是彻底独立的。默认状况下,全部文件和目录都包含在$KIBANA_HOME(解压时建立的目录)中,这是很是方便的,由于
咱们没必要建立任何目录开始使用Kibana,卸载$KIBANA_HOME就像删除目录同样简单。可是,建议更改配置和数据目录的默认位置,以便
之后不会删除重要数据
# cd kibana
# tree -L 1
.
├── bin                          //二进制脚本包括kibana启动Kibana 服务器和kibana-plugin安装插件
├── config			 //配置文件
├── data			 //Kibana及其插件写入磁盘的数据文件的位置
├── LICENSE.txt
├── node
├── node_modules
├── optimize			 //Transpiled源代码。某些管理操做(例如插件安装)致使源代码被即时从新转换
├── package.json
├── plugins			 //插件文件位置。每一个插件都将包含在一个子目录中
├── README.txt
├── src
├── ui_framework
└── webpackShims
三、配置Kibana
Kibana服务器kibana.yml在启动时从文件读取属性。默认配置kibana运行localhost:5601。要更改主机或端口号,或链接到在不一样计算机
上运行的Elasticsearch,咱们须要更新kibana.yml文件。咱们还能够启用SSL并设置各类其余选项。
/opt/kibana/config/kibana.yml
server.port: 默认值:5601 Kibana由后端服务器提供服务。此设置指定要使用的端口
server.host: 默认值:“localhost”此设置指定后端服务器的主机               //这里我把kibana安装在88.1上面,因此我指定了IP:192.168.88.1
server.basePath: 使您可以指定一个路径来挂载Kibana在若是你在代理后面运行。这只影响Kibana生成的URL,
您的代理应该在将请求转发到Kibana以前删除basePath值。此设置不能以斜杠(/)结尾
server.maxPayloadBytes: 默认值:1048576传入服务器请求的最大有效负载大小(以字节为单位)
server.name: 默认值:“your-hostname”用于标识此Kibana实例的可读的显示名称
server.defaultRoute: 默认值:“/ app / kibana”此设置指定打开Kibana时的默认路由,
您可使用此设置在打开Kibana时修改着陆页
elasticsearch.url: 默认值:“http:// localhost:9200”要用于全部查询的Elasticsearch实例的URL     //这里我改成http://192.168.88.1:9200
elasticsearch.preserveHost: 默认值:true当此设置的值为true时Kibana使用server.host设置中指定的主机名,
当此设置的值为时false,Kibana使用链接到此Kibana实例的主机的主机名
kibana.index: 默认值:“.kibana”Kibana使用 Elasticsearch中的索引来存储保存的搜索,
可视化和仪表板。若是索引不存在,Kibana将建立一个新索引
kibana.defaultAppId: 默认值:“discover”要加载的默认应用程序
tilemap.url: Kibana用于在tilemap可视化中显示地图图块的图块服务的URL。
默认状况下,Kibana从外部元数据服务读取此URL,但用户仍能够覆盖此参数以使用本身的Tile Map Service。
例如:"https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"
tilemap.options.minZoom: 默认值:1最小缩放级别
tilemap.options.maxZoom: 默认值:10最大缩放级别
tilemap.options.attribution: 默认:"© [Elastic Tile Service](https://www.elastic.co/elastic-tile-service)"地图属性字符串
tilemap.options.subdomains: tile服务使用的子域的数组。指定带有令牌的URL的子域的位置{s}
elasticsearch.username:
和 elasticsearch.password:
若是您的Elasticsearch受基本认证保护,这些设置提供Kibana服务器用于在启动时对Kibana索引执行维护的用户名和密码,
您的Kibana用户仍须要使用经过Kibana服务器代理的Elasticsearch进行身份验证
server.ssl.cert:
和 server.ssl.key:
分别指向PEM格式SSL证书和SSL密钥文件的路径。这些文件为从Kibana服务器到浏览器的传出请求启用SSL
elasticsearch.ssl.cert:
和 elasticsearch.ssl.key:
提供PEM格式SSL证书和密钥文件路径的可选设置。这些文件验证您的Elasticsearch后端使用相同的密钥文件
elasticsearch.ssl.ca: 可选设置,使您可以为Elasticsearch实例指定证书颁发机构的PEM文件的路径
elasticsearch.pingTimeout: 默认值:值elasticsearch.requestTimeout设置以毫秒为单位的时间等待Elasticsearch对PING做出响应
elasticsearch.requestTimeout: 默认值:30000等待来自后端或Elasticsearch的响应的时间(以毫秒为单位)。此值必须为正整数
elasticsearch.requestHeadersWhitelist: 默认值:[ 'authorization' ]要发送到Elasticsearch的Kibana客户端头标列表。要发送任何客户端头,请将此值设置为[](一个空列表)
elasticsearch.customHeaders: 默认值:{}要发送到Elasticsearch的标题名称和值。不管配置如何,
任何自定义标头都不能被客户端头elasticsearch.requestHeadersWhitelist覆盖
elasticsearch.shardTimeout: 默认值:0 Elasticsearch等待来自分片的响应的时间(毫秒)。设置为0可禁用
elasticsearch.startupTimeout: 默认值:5000重试前等待Kibana启动时Elasticsearch的时间(以毫秒为单位
pid.file: 指定Kibana建立进程标识文件的路径
logging.dest: 默认值:stdout容许您指定Kibana存储日志输出的文件
logging.silent: 默认值:false将此设置的值设置true为禁止全部日志记录输出
logging.quiet: 默认值:false将此设置的值设置true为禁止除错误消息以外的全部日志记录输出
logging.verbose 默认值:false将此设置的值设置为true记录全部事件,包括系统使用信息和全部请求
ops.interval 默认值:5000设置示例系统和过程性能指标的间隔(以毫秒为单位)。最小值为100
status.allowAnonymous 默认值:false若是启用了验证,则将此设置为true容许未经身份验证的用户访问Kibana服务器状态API和状态页
console.enabled 默认值:true设置为false可禁用控制台。切换这将致使服务器在下次启动时从新生成资产,这可能会致使在开始投放网页以前出现延迟
console.proxyFilter 默认值:.*用于验证来自控制台的任何传出请求的正则表达式列表。若是没有匹配,请求将被拒绝
console.proxyConfig 基于代理目标的配置选项列表。使用此选项能够为特定主机设置自定义超时或SSL设置。
这是经过match使用通配符/ globs 定义一组标准来完成的,这将根据每一个请求进行检查。而后将全部匹配规则中的配置合并在一块儿,以配置用于该请求的代理
有效匹配关键字match.protocol,
match.host,match.port,
和match.path
全部这些键默认为*,这意味着它们将匹配任何值。有关示例,请参阅配置控制台
elasticsearch.tribe.url: 用于全部查询的Elasticsearch部落实例的可选URL
elasticsearch.tribe.username:
和 elasticsearch.tribe.password:
若是您的Elasticsearch受基本认证保护,这些设置提供Kibana服务器用于在启动时对Kibana索引执行维护的用户名和密码。
您的Kibana用户仍须要使用经过Kibana服务器代理的Elasticsearch进行身份验证
elasticsearch.tribe.ssl.cert:
和 elasticsearch.tribe.ssl.key:
提供PEM格式SSL证书和密钥文件路径的可选设置。这些文件验证您的Elasticsearch后端使用相同的密钥文件
elasticsearch.tribe.ssl.ca: 可选设置,使您可以为Elasticsearch实例指定证书颁发机构的PEM文件的路径
elasticsearch.tribe.ssl.verify: 默认值:true要忽略SSL证书的有效性,请将此设置的值更改成false
elasticsearch.tribe.pingTimeout: 默认值:值elasticsearch.tribe.requestTimeout设置以毫秒为单位的时间等待Elasticsearch对PING做出响应
elasticsearch.requestTimeout: 默认值:30000等待来自后端或Elasticsearch的响应的时间(以毫秒为单位)。此值必须为正整数

elasticsearch.tribe.requestHeadersWhitelist:
默认值:[ 'authorization' ]要发送到Elasticsearch的Kibana客户端头标列表。要发送任何客户端头,请将此值设置为[](一个空列表)
elasticsearch.tribe.customHeaders: 默认值:{}要发送到Elasticsearch的标题名称和值。不管配置如何,
任何自定义标头都不能被客户端头elasticsearch.tribe.requestHeadersWhitelist覆盖
三、运行Kibana
# su heboan
$ cd /opt/kibana/bin/
$ ./bin/kibana
默认状况下,Kibana在前台运行,将其日志打印到标准输出(stdout),并能够经过按中止Ctrl-C
四、访问Kibana
浏览器访问192.168.88.1:5601,当咱们访问Kibana时,默认状况下将加载"发现"页面,并选择默认索引模式。时间过滤器为最近15分分钟,搜索查询设置为match-all(\*)
若是没有看到任何文档,请尝试将时间过滤器设置为更宽的时间范围。若是尚未看到任何结果,这多是咱们不具有任何文件
咱们能够经过导航到达Kibana服务器的状态页192.168.88.1:5601/status ,状态页面显示有关服务器资源使用状况的信息,并列出已安装的插件
 
 
实践--->Logstash收集Java日志
 
日志:
$ tree /home/heboan/logs
/home/heboan/logs
├── log-error.2017-02-10.log
├── log-error.2017-02-15.log
└── log-info.2017-02-10.log
error日志格式:
2017-02-10 14:23:24.636 [http-nio-8082-exec-7] ERROR com.bagtree.api.app.AppDeviceController 145 - [userFollow:device = 1788223859148804 no bind to children]
2017-02-10 14:23:24.637 [http-nio-8082-exec-7] ERROR com.bagtree.common.extend.CommExceptionHandler 28 - 设备未关联到宝贝
com.bagtree.common.extend.CommException: 设备未关联到宝贝
	at com.bagtree.api.app.AppDeviceController.userFollow(AppDeviceController.java:146) ~[classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_101]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_101]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101]
2017-02-10 14:23:27.319 [http-nio-8082-exec-9] ERROR com.bagtree.api.app.AppDeviceController 145 - [userFollow:device = 1788223859148804 no bind to children]
2017-02-10 14:23:27.320 [http-nio-8082-exec-9] ERROR com.bagtree.common.extend.CommExceptionHandler 28 - 设备未关联到宝贝
com.bagtree.common.extend.CommException: 设备未关联到宝贝
	at com.bagtree.api.app.AppDeviceController.userFollow(AppDeviceController.java:146) ~[classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_101]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_101]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_101]

分析:
从上面的日志咱们能够看出,多行事件,就是一个日志事件由多行组成,java的异常日志基本上是这样的
文档说明
input  {
    stdin {
        codec => multiline {
            charset =>...   # 字符编码  ,可选
            max_bytes =>    # bytes类型,设置最大的字节数,可选
            max_lines =>     #number类型,设置最大的行数,默认是500行,可选
            multiline_tag =>    #string类型,设置一个事件标签,默认是"multiline" ,可选
            pattern =>...    # string 类型,设置匹配的正则表达式 ,必选                   patterns_dir =>...    #array类型,能够设置多个正则表达式,可选
            negate =>...    # boolean类型,设置正向匹配仍是反向匹配,默认是false,可选
            what =>...   # 设置未匹配的内容是向前合并仍是向后合并,previous, next 两个值选择,必选
         }
    }
}
info日志格式:
2017-02-10 23:59:41.156 [Thread-4] INFO  com.bagtree.push.OemPushClient 113 - package read length:23
2017-02-10 23:59:41.156 [Thread-4] INFO  com.bagtree.push.impl.response.LTHBCmdResponseHandlerImpl 33 - hb response:11722
2017-02-10 23:59:51.128 [Timer-0] INFO  com.bagtree.push.impl.response.LTLoginCmdResponseHandlerImpl 70 - hb send:117204298
2017-02-10 23:59:51.158 [Thread-4] INFO  com.bagtree.push.OemPushClient 113 - package read length:23
2017-02-10 23:59:51.158 [Thread-4] INFO  com.bagtree.push.impl.response.LTHBCmdResponseHandlerImpl 33 - hb response:11723

分析:这个info日志是一行一个事件
根据上述分析,咱们编写搜集配置文件
$ vim /opt/logstash/conf/logstash.conf
input {
     file {
            path => "/home/heboan/logs/log-error.*.log"
            type => "log_error"
            start_position => "beginning"
            codec => multiline {
                         pattern => "^\d"
                         negate => true
                         what => "previous"
                     }
     }

     file {
            path => "/home/heboan/logs/log-info.*.log"
            type => "log_info"
            start_position => "beginning"
     }
}


output {
     if [type] == "log_error" {
            elasticsearch {
                    hosts => ["192.168.88.1:9200"]
                    index => "log_error_%{+YYYY-MM-dd}"
            }
     }  

     if [type] == "log_info" {
            elasticsearch {
                    hosts => ["192.168.88.1:9200]"
                    index => "log_info_%{+YYYY-MM-dd}"
            }
     }  
}
指定配置文件运行Logstash开始收集日志传送给Elasticsearch
$ /opt/logstash/bin/logstash -f /opt/logstash/conf/logstash.conf

运行成功以后,咱们能够看下索引:
$ curl '192.168.88.1:9200/_cat/indices?v'
health status index                uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   log_info_2017-02-16  iq0HUZKMQtqLgPCQpamXTw   5   1      11633            0      4.7mb          4.7mb
yellow open   .kibana              HesedL8WSiuprZzNObB-3w   1   1          1            0      3.1kb          3.1kb
yellow open   log_error_2017-02-16 lwG1iEsYSNmC5tgFIlUFMA   5   1          9            0     57.5kb         57.5kb
访问Kibana:192.168.88.1:5601
刚刚咱们添加了info日志,如今再添加error日志
点击右边面板“Discover”,选择时间筛选出日志
相关文章
相关标签/搜索