没有电子邮箱格式怎么注册怎么处理

Centos 6.4 安装elasticsearch+kibana_Linux_第七城市
Centos 6.4 安装elasticsearch+kibana
elasticsearch和kibanna的链接地址:https://www.elastic.co/downloads,我的环境里用的包为kibana-4.1.1-linux-x64.tar.gz和elasticsearch-1.7.1.zip。安装Elasticsearch以为此前已经配置过java环境,所以直接安装就可以了。[root@laiym ~]# unzip elasticsearch-1.7.1.zip [root@laiym ~]# mv elasticsearch-1.7.1/usr/local/elasticsearch安装Kibana[root@laiym ~]# tar zxvf kibana-4.1.1-linux-x64.tar.gz[root@laiym ~]# mv kibana-4.1.1-linux-x64/usr/local/kibana启动Elasticsearch[root@laiym ~]# cd /usr/local/elasticsearch/bin/[root@laiym bin]# ./elasticsearch另起一个终端启动Kibana[root@laiym ~]# cd /usr/local/kibana/bin/[root@laiym bin]# ./kibana完成。
最新教程周点击榜
微信扫一扫1674人阅读
【Docker】(1)
【Android 基础】(147)
【Linux 系统运维】(17)
最近遇到一个困惑,在kibana上捞客户端用户行为相关的数据,无奈无法提取一个字段中的kv值。作为一个移动开发人员,对这种东西简直就是日了狗了,请教了下公司推荐组的人,也没有得到结果,靠人不如靠自己去。
这个数据在kibana上显示的是一个用英文逗号分隔,用等号连接的键值对,假设这个字段显示的是args,其值为:
args:key1=value1,key2=value2,key3=value3
而我想要的结果就是提取args中的键值对到外层,便于进行一些图表方面的统计,比如某个字段的成功率等,提取后的内容如下:
args:key1=value1,key2=value2,key3=value3
key1:value1
key2:value2
key3:value3
在这之前,需要把对应的环境先搭建起来,这里使用Docker进行搭建,对Logstash+Elasticsearch+Kibana不了解的可以简单了解下这篇文章,。而Logstash,个人找到一篇相对比较详细入门的介绍,也可以看下,在写这篇文章之前,我个人也是对这三个东西一无所知,完全从0开始。
Mac下Docker的安装见,elasticsearch需要暴露两个端口,,我们直接使用docker run命令运行一个elasticsearch容器。
docker run --name myes -d -p 9200:9200 -p 9300:9300 elasticsearch
容器运行起来后可以在日志中找到对应的ip:port,注意这里不能使用localhost,具体原因可能localhost指的是该容器本身,而我们需要在另一个容器中访问该容器,因此需要。。。。(计算机网络的内容忘得差不多了,专业术语无视就好)
从图中看到,ip加端口的值为172.17.0.2:9200
kibana的安装
kibana容器的运行需要指定elasticsearch的url,通过环境变量传递进去即可,并暴露默认端口5601供浏览器访问
docker run --name mykibana -e ELASTICSEARCH_URL=http://172.17.0.2:9200 -p 5601:5601 -d kibana
到目前为止,还没有日志输入到es中,kibana自然也没有什么内容可以查询了。
Logstash的安装
docker运行logstash的容器的时候,需要指定输入输出及过滤器,我们先使用控制台输入,然后输出到控制台。
docker run -it
然后在控制台输入helloworld,你就能立即看到输出了
文章开头说到了日志内容不能被解析的问题,简单尝试了下,可以进行解析,不过需要对logstash的配置进行修改
source =& "message"
field_split =& "|"
value_split =& "="
source =& "args"
field_split =& "&"
value_split =& "="
elasticsearch {
hosts =& ["172.17.0.2:9200"]
codec =& rubydebug
这里使用了kv插件进行解析,举一个例子,我的日志输入内容为:
arg1=a1|arg2=b2|arg3=c3|args=a=b&b=c&c=d&d=e
最终上面的内容会被解析成
运行docker命令,传入刚刚的logstash的配置
docker run -it --rm logstash -e 'input { stdin { } } filter { kv { source =& "message" field_split =& "|" value_split =& "=" } kv { source =& "args" field_split =& "&" value_split =& "=" } } output { elasticsearch {
hosts =& ["172.17.0.2:9200"] } stdout { codec =& rubydebug } }'
在控制台中输入
arg1=a1|arg2=b2|arg3=c3|args=a=b&b=c&c=d&d=e
然后控制台就会输出解析后的内容
打开kibana验证一下,浏览器输入,先建立索引,直接点击create即可
然后就能看的解析后的内容了
如果字段上出现黄色的警告,必要时到Setting Tab刷新一下filed list即可。
经过自己的一番实验,对于args中的内容,解析出来是完全没有什么问题的,关键在于logstash的配置问题,然后问题并没有这么简单,对于同一个配置,发现一部分日志中的args能被解析出来,还有大部分的日志的args并不能解析出来,这个原因没找到。。。。。同一种方式解析,理论上应该不存在一部分解析的出来一部分解析不出来,除非使用的配置是不一样的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:620489次
积分:8380
积分:8380
排名:第1843名
原创:162篇
评论:610条
阅读:54528
阅读:15243
阅读:70700
阅读:19123
阅读:27731安装Elasticsearch
1.下载https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.1.tar.gz包
2.tar zxvf&elasticsearch-5.0.1.tar.gz
3. 运行/bin/elasticsearch -d。按守护进程启动
4.curl -XGET 'localhost:9200/?pretty' 查看是否启动服务。
备注:默认情况下,只有内网可以访问
可以在配置文件中设置:&network.host: 0.0.0.0
考虑到安全问题设置需要慎重。
5.日志文件默认在工作目录的log文件夹下。
6.配置文件在工作目录的config文件夹下的elasticsearch.yml中。
7.教程:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
安装Logstash
1.下载https://artifacts.elastic.co/downloads/logstash/logstash-5.0.1.tar.gz包
2.tar zxvf&logstash-5.0.1.tar.gz
3.运行bin/logstash -f logstash.conf
4.教程:https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html
安装Kibana
1.下载https://artifacts.elastic.co/downloads/kibana/kibana-5.0.1-darwin-x86_64.tar.gz
2.修改config/kibana.yml,设置elasticsearch.url指向elasticsearch的实例。
3.bin/kibana
4.浏览器输入 localhost:5601
5.教程:https://www.elastic.co/guide/en/kibana/current/getting-started.html
阅读(...) 评论()1、安装Elastic Search
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎&
1.1、下载Elastic Search
使用的es版本为1.3.2
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.zip
unzip elasticsearch-1.3.2.zip
1.2、配置Elastic Search
es的配置文件在/config/elasticsearch.yml &(ps:以下的目录路径都是/elasticsearch-1.3.2/下)
配置如下: 
cluster.name: elasticsearch // 配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群node.name: "Squirrel" //es节点名称,做标识用,可随意定义http.enabled: true //是否使用http协议对外提供服务,默认为true,开启http.port: 9200 //设置对外服务的http端口,默认为9200
1.3、启动Elastic Search
bin/elasticsearch
nohup /bin/elasticsearch & /logs/elasticsearch.log 2&&1 &
访问http://localhost:9200/如下图:
安装成功!
分布式集群部署就是在不同机子上重复以上操作即可
1.4、安装Elastic Search插件
  elasticsearch-head插件
安装命令:bin/plugin --install mobz/elasticsearch-head
安装完成后,访问http://localhost:9200/_plugin/head/即可使用head插件,如下图
  bigdesk插件
安装命令:bin/plugin --install lukas-vlcek/bigdesk
安装完成后,访问http://localhost:9200/_plugin/bigdesk/即可使用bigdesk插件,如下图
 ElasticSearch Paramedic插件
安装命令:bin/plugin -install karmi/elasticsearch-paramedic
 安装完成后,访问http://localhost:9200/_plugin/paramedic/即可使用Paramedic插件,如下图 
1.5、Elastic Search配置
如果你的elasticsearch运行在专用服务器上,经验值是分配一半内存给elasticsearch。另一半用于系统缓存,这东西也很重要的。
你可以通过修改ES_HEAP_SIZE环境变量来改变这个设定。在启动elasticsearch之前把这个变量改到你的预期值。另一个选择设置elasticsearch的ES_JAVA_OPTS变量,这个变量时在启动脚本(elasticsearch.in.sh或elasticsearch.bat)里传递的。你必须找到-Xms和-Xmx参数,他们是分配给进程的最小和最大内存。建议设置成相同大小。ES_HEAP_SIZE其实就是干的这个作用。
设置该值的文件路径为:bin/elasticsearch.in.sh
#修改ES占用的内存大小,可根据服务器情况而定。
#例如服务器有24G内存,因此将一半给ES使用
if [ "x$ES_MIN_MEM" = "x" ]; then
ES_MIN_MEM=10g
if [ "x$ES_MAX_MEM" = "x" ]; then
ES_MAX_MEM=10g
#关于线程大小,主要是考虑到ES虽然会开很多线程,但承载的数据量较大,同时Xss并不是直接分配掉设定的内存,所以进行如下设置。
JAVA_OPTS="$JAVA_OPTS -Xss128m"
当jvm开始swapping时es的效率会降低,所以要保证它不swap,在/config/elasticsearch.yml配置文件中配置强制所有内存锁定,不要因为swap的来影响性能,设置为bootstrap.mlockall为true来锁住内存。通过上面配置ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit -l unlimited`命令。
bootstrap.mlockall: true &
/config/elasticsearch.yml 配置文件的其他配置说明如下:
# 由于ES基于广播方式发现集群内的服务器,所以配置起来相对简单
# 集群名称可以自动生成,当然也可以手动配置。如果你想要在同一网络中运行多个集群,就需要独一无二的集群名来区分他们
cluster.name: elasticsearch
# 节点名称同理,可自动生成也可手动配置。
node.name: "Squirrel"
# 配置该节点为主节点(默认开启)
# node.master: true
# 允许该节点存储数据(默认开启)
# node.data: true
# 一些高级的集群配置
# 1. 如果你想让节点从不选举为主节点,只用来存储数据,可作为负载器
# node.master: false
# node.data: true
# 2. 如果想让节点成为主节点,且不存储任何数据,并保有空闲资源,可作为协调
# node.master: true
# node.data: false
# 3. 如果想让节点既不称为主节点,又不成为数据节点,那么可将他作为搜索器,从节点中获取数据,生成搜索结果等。
# node.master: false
# node.data: false
# 设置索引的分片数,默认为5
# index.number_of_shards: 5
# 设置索引的副本数,默认为1
# 配置文件中提到的最佳实践是,如果服务器够多,可以将分片书提高,将数据分布到大集群中去
# 同时,如果增加副本数量可以有效的提高搜索性能
# 由于我现在集群较小,所以仍使用默认配置
# 配置文件存储位置
path.conf: /usr/local/elasticsearch-1.3.2/config
# 数据存储位置
path.data: /syslog/ESdata
# 临时文件的路径
# path.work: /path/to/work
# 日志文件的路径
# path.logs: /path/to/logs
# 插件安装路径
# path.plugins: /path/to/plugins
# 当JVM开始写入交换空间时(swapping)ElasticSearch性能会低下,你应该保证它不会写入交换空间
# 设置这个属性为true来锁定内存
bootstrap.mlockall: true
# 下面的配置控制怎样以及何时启动一整个集群重启的初始化恢复过程
# (当使用shard gateway时,是为了尽可能的重用local data(本地数据))
# 一个集群中的N个节点启动后,才允许进行恢复处理
gateway.recover_after_nodes: 1
# 设置初始化恢复过程的超时时间,超时时间从上一个配置中配置的N个节点启动后算起
gateway.recover_after_time: 5m
# 设置这个集群中期望有多少个节点。一旦这N个节点启动(并且recover_after_nodes也符合),
# 立即开始恢复过程(不等待recover_after_time超时)
gateway.expected_nodes: 2
# 下面这些配置允许在初始化恢复,副本分配,再平衡,或者添加和删除节点时控制节点间的分片分配
# 设置一个节点的并行恢复数
# 1. 初始化恢复期间
cluster.routing.allocation.node_initial_primaries_recoveries: 4
# 2. 添加/删除节点,再平衡等期间
cluster.routing.allocation.node_concurrent_recoveries: 4
# 设置恢复时的吞吐量(例如,100mb,默认为无限制。如果同上联还有其他业务在跑的话还是限制一下的好)
indices.recovery.max_size_per_sec: 400mb
# Set to limit the number of open concurrent streams when
# recovering a shard from a peer:
# 设置当一个分片从对等点恢复时能够打开的并发流的上限
indices.recovery.concurrent_streams: 5
# 多播的就不翻了,就两条,自己看配置文件
# 当多播不可用或者集群跨网段的时候集群通信还是用单播吧
# 探查的超时时间,默认3秒,提高一点以应对网络不好的时候
discovery.zen.ping.timeout: 20s
# 1. 禁用多播探查(默认可用)
# discovery.zen.ping.multicast.enabled: false
# 2. 这是一个集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测
# discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]
discovery.zen.ping.unicast.hosts: ["192.168.69.9", "192.168.69.10"]
# out of memory错误 避免过于频繁的查询时集群假死
# 1.设置es的缓存类型为Soft Reference,它的主要特点是据有较强的引用功能。只有当内存不够的时候,才进行回收这类内存,因此在内存足够的时候,它们通常不被回收。另外,这些引 用对象还能保证在Java抛出OutOfMemory 异常之前,被设置为null。它可以用于实现一些常用图片的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory。在es的配置文件加上index.cache.field.type: soft即可。
# 2.设置es最大缓存数据条数和缓存失效时间,通过设置index.cache.field.max_size: 50000来把缓存field的最大值设置为50000,设置index.cache.field.expire: 10m把过期时间设置成10分钟。
index.cache.field.max_size: 50000
index.cache.field.expire: 10m
index.cache.field.type: soft
2、安装Kibana
Kibana 是一个为&&和&&提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。
2.1、下载Kibana
使用的版本为3.1.0
wget https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.zip
unzip kibana-3.1.0.zip
2.2、配置Kibana
kibana的配置文件为kibana-3.1.0/config.js
修改如下值:elasticsearch: "http://"+window.location.hostname+":9200"
修改为 elasticsearch: "http://localhost:9200" 或 elasticsearch: "http://192.168.69.xxx:9200"
此属性值为kibana与es集成时,关联es的IP和端口
kibana是一个web服务,完全由js实现,所以配置完成之后,部署到任何一种web服务器上就可以使用了,以下是部署到Tomcat中的操作
将kibana拷贝到tomcat中cp -r kibana-3.1.0/* tomcat/webapps/ROOT/启动tomcattomcat/bin/catalina.sh start
访问http:localhost:8080/即可访问kibana界面了,如下图: 此时的es中没有数据,所以kibana也没有数据进行展示,接下来就可以安装Logstash,采集数据到es中,再通过kibana进行实时查询了
3、安装Logstash
Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日志进行收集管理
3.1、下载Logstash&
使用的Logstash版本为1.4.2
wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz
解压Logstash
tar -zvxf&logstash-1.4.2.tar.gz
3.2、启动Logstash&
Logstash&可以抓取多种数据,以下是Logstash官网的展示(地址:http://www.logstash.net/docs/1.4.2/)
进入logstash-1.4.2目录执行命令启动Logstash
bin/logstash -e 'input {
  stdin{} &}
  elasticsearch { host =& localhost }}'
以上命令为将命令行输入的数据写入elasticsearch去
输入命令后在当前命令行中输入&hello world!!&后,通过kibana页面就可以查看到刚才写入es中的数据了,如下图:
通过logstash收集日志文件数据到es中
bin/logstash -e 'input {
  file {
    path =& "xxxx/tomcat/logs/data.log"
    type =& "log"
    start_position =& "end"
  elasticsearch { host =& localhost }}'
以上是用logstash的File插件收集日志文件数据
分析网站访问日志应该是一个运维工程师最常见的工作了。而用 logstash 就可以来处理日志文件。
Logstash 使用一个名叫 FileWatch 的 Ruby Gem 库来监听文件变化。这个库支持 glob 展开文件路径,而且会记录一个叫 .sincedb 的数据库文件来跟踪被监听的日志文件的当前读取位置。所以,不要担心 logstash 会漏过你的数据。
logstash File插件配置说明:
一些比较有用的配置项,可以用来指定 FileWatch 库的行为:
收集的日志的文件路径
discover_intervallogstash 每隔多久去检查一次被监听的 path 下是否有新文件。默认值是 15 秒。
exclude不想被监听的文件可以排除出去,这里跟 path 一样支持 glob 展开。
sincedb_path如果你不想用默认的 $HOME/.sincedb,可以通过这个配置定义 sincedb 文件到其他位置。
sincedb_write_intervallogstash 每隔多久写一次 sincedb 文件,默认是 15 秒。
stat_intervallogstash 每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒。
start_positionlogstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有数据,把这个设定改成 &beginning&,logstash 进程就从头开始读取,有点类似 cat,但是读到最后一行不会终止,而是继续变成 tail -F。
elasticsearch+kibana+logstash 安装部署
Linux是基于命令行的操作,虽然现在Node有集成软件开发出来,但是安装部署的时候,不注意还是很容易出错。这里记录下我安装时查看的一些不错的资料:egret官方文档http
LVS+Heartbeat安装部署文档所需软件
、storm安装  选用最新的0.9.2版本进行安装部署,下载地址  1、安装前提(自行先安装java、python)    Java6及以上    Python2.6.6及以上  2、安装storm包
根据原文如下:Calamari是管理和监控Ceph集群的工具,并且提供RESTapi。建议的部署平台是ubuntu,本文使用CentOS6.5。安装部署获取calamari相关代码
Memcached安装部署发表回复简述: Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态
文章简单介绍了zabbix,并阐述了zabbix在centos6.5系统上的部署与安装。一、Zabbix简介1、zabbix是一个基于WEB界面的,并提供分布式系统监视以及网络监视功能的企业级的开源
命名,右击"DataServiceHost"&&"属性窗口",其中"Value"属性设为"[TARGETDIR]DataServiceHost.exe"。如此,便实现了开机启动。实现安装后
环境虚拟机:VMWare10.0.1build-1379776操作系统:CentOS764位步骤1、使用yum安装yuminstallhttpdhttpd-devel2、启动
正则表达式在线测试工具
FaceYe @ 2015 &&&&
ICP备案号:粤ICP备1500070> 博客详情
摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticSearch,一款基于Apache Lucene的开源分布式搜索引擎)中便于查找和分析,在研究此方案可行性的时候,我发现ELK(ElasticSearch, Logstash, Kibana)平台恰好可以同时实现日志收集、日志搜索和日志分析的功能,于是又去学习了一番。之后发现如果使用这三者,收集日志也可以不再使用Kafka了,Logstash就可以帮我们完成。当然,虽然Logstash也支持使用Kafka作为数据源输入,但是使用这三者就没有必要再增加系统复杂度了。
ELK平台介绍
在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:
以下内容来自:
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
----------------------------摘抄内容结束-------------------------------
画了一个ELK工作的原理图:
如图:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。
ELK平台搭建
System: Centos release 6.7 (Final)
ElasticSearch: 2.1.0
Logstash: 2.1.1
Kibana: 4.3.0
Java: openjdk version &"1.8.0_65"
注:由于Logstash的运行依赖于Java环境, 而Logstash 1.5以上版本不低于java 1.7,因此推荐使用最新版本的Java。因为我们只需要Java的运行环境,所以可以只安装JRE,不过这里我依然使用JDK,请自行搜索安装。
ElasticSearch
配置ElasticSearch:
tar&-zxvf&elasticsearch-2.1.0.tar.gz
cd&elasticsearch-2.1.0
安装Head插件(Optional):
./bin/plugin&install&mobz/elasticsearch-head
然后编辑ES的配置文件:
vi&config/elasticsearch.yml
修改以下配置项:
cluster.name=es_cluster
node.name=node0
path.data=/tmp/elasticsearch/data
path.logs=/tmp/elasticsearch/logs
#当前hostname或IP,我这里是centos2
network.host=centos2
network.port=9200
其他的选项保持默认,然后启动ES:
./bin/elasticsearch
可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。
使用ctrl+C停止。当然,也可以使用后台进程的方式启动ES:
./bin/elasticsearch&&
然后可以打开页面localhost:9200,将会看到以下内容:
返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。
刚刚安装的head插件,它是一个用浏览器跟ES集群交互的插件,可以查看集群状态、集群的doc内容、执行搜索和普通的Rest请求等。现在也可以使用它打开页面来查看ES集群状态:
可以看到,现在,ES集群中没有index,也没有type,因此这两条是空的。
Logstash的功能如下:
其实它就是一个收集器而已,我们需要为它指定Input和Output(当然Input和Output可以为多个)。由于我们需要把Java代码中Log4j的日志输出到ElasticSearch中,因此这里的Input就是Log4j,而Output就是ElasticSearch。
配置Logstash:
tar&-zxvf&logstash-2.1.1.tar.gz
cd&logstash-2.1.1
编写配置文件(名字和位置可以随意,这里我放在config目录下,取名为log4j_to_es.conf):
mkdir&config
vi&config/log4j_to_es.conf
输入以下内容:
#&For&detail&structure&of&this&file
#&Set:&https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html
&&#&For&detail&config&for&log4j&as&input,&
&&#&See:&https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
&&&&mode&=&&"server"
&&&&host&=&&"centos2"
&&&&port&=&&4567
&&#Only&matched&data&are&send&to&output.
&&#&For&detail&config&for&elasticsearch&as&output,&
&&#&See:&https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
&&elasticsearch&{
&&&&action&=&&"index"&&&&&&
#The&operation&on&ES
&&&&hosts&&=&&"centos2:9200"
#ElasticSearch&host,&can&be&array.
&&&&index&&=&&"applog"&&&&&
#The&index&to&write&data&to.
logstash命令只有2个参数:
因此使用agent来启动它(使用-f指定配置文件):
./bin/logstash&agent&-f&config/log4j_to_es.conf
到这里,我们已经可以使用Logstash来收集日志并保存到ES中了,下面来看看项目代码。
照例先看项目结构图:
pom.xml,很简单,只用到了Log4j库:
&dependency&
&&&&&groupId&log4j&/groupId&
&&&&&artifactId&log4j&/artifactId&
&&&&&version&1.2.17&/version&
&/dependency&
log4j.properties,将Log4j的日志输出到SocketAppender,因为官网是这么说的:
log4j.rootLogger=INFO,console
#&for&package&com.demo.elk,&log&would&be&sent&to&socket&appender.
.demo.elk=DEBUG,&socket
#&appender&socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=4567
log4j.appender.socket.RemoteHost=centos2
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d&[%-5p]&[%l]&%m%n
log4j.appender.socket.ReconnectionDelay=10000
#&appender&console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d&[%-5p]&[%l]&%m%n
注意:这里的端口号需要跟Logstash监听的端口号一致,这里是4567。
Application.java,使用Log4j的LOGGER打印日志即可:
package&com.demo.
import&org.apache.log4j.L
public&class&Application&{
&&&&private&static&final&Logger&LOGGER&=&Logger.getLogger(Application.class);
&&&&public&static&void&main(String[]&args)&throws&Exception&{
&&&&&&&&for&(int&i&=&0;&i&&&10;&i++)&{
&&&&&&&&&&&&LOGGER.error("Info&log&["&+&i&+&"].");
&&&&&&&&&&&&Thread.sleep(500);
用Head插件查看ES状态和内容
运行Application.java,先看看console的输出(当然,这个输出只是为了做验证,不输出到console也可以的):
再来看看ES的head页面:
切换到Browser标签:
单击某一个文档(doc),则会展示该文档的所有信息:
可以看到,除了基础的message字段是我们的日志内容,Logstash还为我们增加了许多字段。而在中也明确说明了这一点:
上面使用了ES的Head插件观察了ES集群的状态和数据,但这只是个简单的用于跟ES交互的页面而已,并不能生成报表或者图表什么的,接下来使用Kibana来执行搜索并生成图表。
配置Kibana:
tar&-zxvf&kibana-4.3.0-linux-x86.tar.gz
cd&kibana-4.3.0-linux-x86
vi&config/kibana.yml
修改以下几项(由于是单机版的,因此host的值也可以使用localhost来代替,这里仅仅作为演示):
server.port:&5601
server.host:&“centos2”
elasticsearch.url:&http://centos2:9200
kibana.index:&“.kibana”
启动kibana:
./bin/kibana
用浏览器打开该地址:
为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index。这里我输入之前配置的Index名字applog,Kibana会自动加载该Index下doc的field,并自动选择合适的field用于图标中的时间字段:
点击Create后,可以看到左侧增加了配置的Index名字:
接下来切换到Discover标签上,注意右上角是查询的时间范围,如果没有查找到数据,那么你就可能需要调整这个时间范围了,这里我选择Today:
接下来就能看到ES中的数据了:
执行搜索看看呢:
点击右边的保存按钮,保存该查询为search_all_logs。接下来去Visualize页面,点击新建一个柱状图(Vertical Bar Chart),然后选择刚刚保存的查询search_all_logs,之后,Kibana将生成类似于下图的柱状图(只有10条日志,而且是在同一时间段的,比较丑,但足可以说明问题了:) &):
你可以在左边设置图形的各项参数,点击Apply Changes按钮,右边的图形将被更新。同理,其他类型的图形都可以实时更新。
点击右边的保存,保存此图,命名为search_all_logs_visual。接下来切换到Dashboard页面:
单击新建按钮,选择刚刚保存的search_all_logs_visual图形,面板上将展示该图:
如果有较多数据,我们可以根据业务需求和关注点在Dashboard页面添加多个图表:柱形图,折线图,地图,饼图等等。当然,我们可以设置更新频率,让图表自动更新:
如果设置的时间间隔够短,就很趋近于实时分析了。
到这里,ELK平台部署和基本的测试已完成。
人打赏支持
码字总数 184677
什么applog?
applog就是配置文件中output 下的index
仔细看了下文章,发现之前的log4j_to_es.conf文件中的output下的elasticsearch中的index
=& "ec",实际应该写为index
=& "applog",误导了大家,已修改,谢谢指正。
仔细看了下文章,发现之前的log4j_to_es.conf文件中的output下的elasticsearch中的index =& "ec",实际应该写为index =& "applog",误导了大家,已修改,谢谢指正。
额,很遗憾的告诉你,我只是在本地环境使用了几台服务器搭建了这个框架,我也没研究过如何使这套系统的性能达到最优,也没研究过这套系统的上限是多大。抱歉
那段时间只是在研究一套收集和分析日志的系统,没有试过使用Java代码去访问ES中的日志哦。请问这样做有什么优点呢?
嗯嗯,成功了就好。我还在想我在写博客的时候有没有忽略什么呢,也没有时间再去重现你的问题了,所以一直没有回复你。
引用来自“摆渡者”的评论额,很遗憾的告诉你,我只是在本地环境使用了几台服务器搭建了这个框架,我也没研究过如何使这套系统的性能达到最优,也没研究过这套系统的上限是多大。抱歉公司目前的日志系统没有用到ELK方案,整个日志系统架构与ELK相似,但核心也是elasticsearch。实时日志记录都是1秒内查询成功,最近10天,日均日志量在12G左右,一点问题没有
引用来自“摆渡者”的评论额,很遗憾的告诉你,我只是在本地环境使用了几台服务器搭建了这个框架,我也没研究过如何使这套系统的性能达到最优,也没研究过这套系统的上限是多大。抱歉用java去查ES着实有点蛋疼,做个日志聚合分析curl简洁但换成java感觉就麻烦多了。如果要做强烈建议还是看官网,遍寻很多博客最后还是在官网get到想要的
引用来自“摆渡者”的评论额,很遗憾的告诉你,我只是在本地环境使用了几台服务器搭建了这个框架,我也没研究过如何使这套系统的性能达到最优,也没研究过这套系统的上限是多大。抱歉引用来自“痕迹EX”的评论公司目前的日志系统没有用到ELK方案,整个日志系统架构与ELK相似,但核心也是elasticsearch。实时日志记录都是1秒内查询成功,最近10天,日均日志量在12G左右,一点问题没有你好,请问你公司的日志环境是多少台机器?每台每天都是12G的量吗?欢迎分享
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区

我要回帖

更多关于 电子邮箱格式怎么写 的文章

 

随机推荐