您的位置:首页 > 其它

ELK安装配置

2015-11-19 19:11 417 查看
一环境说明
程序部署路径/opt/devops/
centos7 64位操作系统
服务器 192.168.80.20
客户端 192.168.80.10
logstash2.0
elasticsearch-2.0.0
kibana-4.2.0
二安装前的准备工作
1 关闭防火墙、selinxu
2 安装redis
#yum install epel-release –y
#yum install redis –y
修改redis配置文件使redis监听所有ip,默认情况下只监听127.0.0.01
vi /etc/redis.conf
bind 0.0.0.0
启动redis
#systemctl restart redis.service

三 logstash(服务端客户端均需安装)
1 logstash安装
参考文档http://udn.yyuap.com/doc/logstash-best-practice-cn/input/file.html
参考文档 https://www.elastic.co/guide/en/logstash/current/introduction.html
grok正则测试工具网址为https://grokdebug.herokuapp.com/
grok正则表达式 https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns

第一步:安装java
logstash2.0版本需要java7及以上版本的支持,如果系统没有安装java环境需使用下面的命令进行安装。
#rpm -ivh jdk-8u51-linux-x64.rpm
#vi /etc/profile.d/java.sh
exportJAVA_HOME="/usr/java/jdk1.8.0_51"
exportJRE_HOME="/usr/java/jdk1.8.0_51/jre/"
export PATH=$JAVA_HOME/bin:$PATH
#source /etc/profile
第二步:安装logstash
将下载的logstash拷贝到/opt/devops/目录下
mv logstash-2.0.0 /opt/devops/logstash
第三步:简单测试
#cd/opt/devops/logstash/
#bin/logstash -e 'input { stdin { } } output { stdout {} }'

显示启动完成,手动输入helloworld测试logstash是否正常启动
The
-e
flagenables you to specify a configuration directly from the command line.Specifying configurations at the command line lets you quickly testconfigurations without having to edit a file between iterations. This pipelinetakes input from the standard input,
stdin
, andmoves that input to the standard output,
stdout
, in astructured format. Type hello world at the command prompt to see Logstashrespond:
2logstatsh配置
logstatsh默认情况下并没有区分服务端和客户端,在此我们人为的将其分为服务端和客户端。客户端负责收集日志、按照预定义的正则进行切割日志并将信息输出到redis中,客户端配置文件格式如下,有两个配置文件input.conf和output.conf组成(当然也可以使用一个配置文件)整个配置文件有三部分组成input(输入)、filter(过滤)、output(输出)
2 客户端配置
客户端负责收集日志、切割日志并将切割后的日志保存到redis中,我们假设将logstatsh部署在/opt/devops目录,其配置文件位于/opt/devops/conf目录
第一步配置详解
#mkdir –pv /opt/devops/conf
#mkdir –pv /opt/devops/ patterns
#vi input.conf
input {file { type =>"apachelog" tags=>"im/apache" path =>"/opt/devops/logstash/logs/logstash-tutorial-dataset" start_position => beginning sincedb_path => "/opt/devops/logstash/im_nginxlog.sincedb" }}filter { if [type] == "nginxlog" {grok { patterns_dir=> "/opt/devops/logstash/patterns" match =>{"message"=>"%{COMBINEDAPACHELOG}"} } geoip { source =>"clientip" } }}解释:input段主要负责日志的收集工作,其主要包含的字段及含义如下type => "apachelog" type主要用来判断日志的类型,例如:此处表示收集的日志为apache产生的日志tags=> "im/apache" tags主要为日志打标签的,例如:如果多台apache生成不同的日志,可以通过tags为apache日志打标签,表示是由哪个应用产生的apahe日志,此处表示是由im应用产生的日志path=> "/opt/devops/logstash/logs/logstash-tutorial-dataset"path用于指定日志的位置start_position=> beginning start_position用于指定logstatsh第一次启动时从什么地方开始读取日志,如果不指定为start_position => beginning logstatsh收集日志是从最新的位置开始收集的,类似于tail –f 命令;如果logstatsh并不是第一次启动还想从头收集日志在停止logstatsh后需手动删除sincedb文件,如果配置文件中不指定sincedb文件的位置,logstatsh启动后为在/root/生成一个以.sincedb_开头的隐藏文件,该文件的主要作用是记录logstatsh收集日志的位置logstatsh进程意外关闭,启动后继续从该位置收集日志。sincedb_path => "/opt/devops/logstash/im_nginxlog.sincedb"sincedb_path指定sincedb文件位置filter字段主要负责将收集的日志按照预定义的正则进行日志切割grok子段主要是logstatsh的正则部分,其主要包含的字段及含义如下if [type] == "nginxlog" if [type]子段主要是用于做判断的,如果满足要求就执行下面的正则进行日志切割 grok正则测试工具网址为https://grokdebug.herokuapp.com/ ,使用该工具需翻墙 match => {"message" => "%{COMBINEDAPACHELOG}"} match表示使用某种正则进行日志切割geoip子段的主要作用是通过ip来获取地理位置,ip必须是日志切割时通过正则定义的字段source =>"clientip"souce用来提取日志切割后的ip地址 #vi output.confoutput {stdout {}redis {host => "172.20.19.113"port => "6379"data_type => "list"key => "logstash"}}

解释:
客户端logstash的output段主要负责将收集切割后的日志输出到redis中进行保存,方便服务端logstash从redis中获取日志,其主要包含的字段及含义如下
stdout {}子段表示将切割后的日志通过标准输出打印到屏幕上,其主要作用是用来确认logstash是否正常工作,正式上线后可禁用此字段redis子段表示将切割后的日志存储到redis,其主要包含的字段及含义如下host => "172.20.19.113" host表示redis服务所在主机ipport => "6379" port表示redis所使用的端口为6379data_type => "list" data_type表示将切割后的日志保存成redis的list类型key =>"logstash" 表示此日志在redis的key为logstatsh(服务端的input段中的key需要和这里的保持一致) 第二步启动 logstatsh假设logstatsh部署在/opt/devops/logstash/,其两个配置文件input.conf和output.conf均在/opt/devops/logstash/conf1 测试配置文件是否正确#/opt/devops/logstash/bin/logstash-f /opt/devops/logstash/conf/ --configtest2 启动logstatsh#nohup/opt/devops/logstash/bin/logstash -f /opt/devops/logstash/conf/ > /dev/null & 2 服务端配置服务端logstatsh负责从redis获取数据,并将数据传递给elasticsearch,我们假设将logstatsh部署在/opt/devops目录,其配置文件位于/opt/devops/conf目录
第一步配置详解
#vi input.conf
input {
redis{
host => "192.168.80.10"
port => "6379"
type => "redis-input"
data_type => "list"
key => "logstash"
}
}
解释:input段主要负责从redis中提取数据,其主要包含的字段及含义如下redis子段是logstatsh服务端从redis中提取数据的相关配置,其主要包含的字段及含义如下host => "192.168.80.10"表示redis服务所在服务器ip为192.168.80.10port => "6379"表示redis服务的端口为6379type => "redis-input" 表示logstatsh是从redis中获取数据的data_type => "list"表示存储在redis切割后的日志数据类型为listkey => "logstash"需和客户端的key保持一致

#output.conf
output {
stdout {}
file {
message_format =>"%{message}"
path => "/opt/logs/%{tags}/%{+YYYY-MM-dd}/%{type}"
}
elasticsearch{
hosts =>["192.168.80.10:9200","192.168.80.20:9200"]
}
}
解释:
output段主要负责将从redis提取的数据交给elasticsearch进行分析,,其主要包含的字段及含义如下
stdout {}子段表示将获取的日志通过标准输出打印到屏幕上,其主要作用是用来确认logstash是否正常工作,正式上线后可禁用此字段file子段表示将获取的日志保存到文件中,方便以后查看。elasticsearch子段负责将获取的日志交给elasticsearch进行数据分析,其主要包含的字段及含义如下
hosts =>["192.168.80.10:9200","192.168.80.20:9200"] host字段以数组的形式定义elasticsearch集群各个节点ip及elasticsearch使用的端口
cluster=> "yyuap" cluset用来定义elasticsearch集群,这里elasticsearch集群名称为elasticsearch(logstatsh2.0已废弃) 第二步启动 logstatsh假设logstatsh部署在/opt/devops/logstash/,其两个配置文件input.conf和output.conf均在/opt/devops/logstash/conf1 测试配置文件是否正确#/opt/devops/logstash/bin/logstash-f /opt/devops/logstash/conf/ --configtest2 启动logstatsh#nohup /opt/devops/logstash/bin/logstash -f/opt/devops/logstash/conf/ >/var/log/logstash.log &注意:客户端logstatsh停止后,如果要再次启动需要手动删除/opt/devops/logstash/conf/dump.rdb然后再启动logstatsh
四 elasticsearch
1 elasticsearch安装
elasticsearch插件安装参考文档
http://www.cnblogs.com/huangfox/p/3541300.html
第一步:安装java(192.168.80.10和192.168.80.20均需安装)
elasticsearch2.0版本需要java7及以上版本的支持,如果系统没有安装java环境需使用下面的命令进行安装。
#rpm -ivh jdk-8u51-linux-x64.rpm
#vi /etc/profile.d/java.sh
exportJAVA_HOME="/usr/java/jdk1.8.0_51"
exportJRE_HOME="/usr/java/jdk1.8.0_51/jre/"
export PATH=$JAVA_HOME/bin:$PATH
#source /etc/profile
第二步:安装elasticsearch(192.168.80.10和192.168.80.20均需安装)
将下载的elasticsearch拷贝到/opt/devops/目录下
mv elasticsearch-2.0.0 /opt/devops/elasticsearch
第三步 配置elasticsearch
(1) 192.168.80.10服务器配置
第一步创建mv elasticsearch数据目录和日志目录
mkdir –pv /opt/devops/elasticsearch/data
mkdir –pv /opt/devops/elasticsearch/log
第二步创建elasticsearch运行时所需要的系统账号
elasticsearch-2.0.0版本禁止使用root账号直接运行,所以需要创建账号用于运行elasticsearch
useradd elasticsearch –s /sbin/nologin
第三步修改配置文件
配置文件的位置在/opt/devops/elasticsearch/config/elasticsearch.yml,一个基本的elasticsearch需要做如下配置:
cluster.name: ssfy
位于配置文件的第17行,用于定义集群名称
node.name: ssfy-01
位于配置文件的第23行,用于定义集群节点名称
path.data: /opt/devops/elasticsearch/data
位于配置文件的第33行,用于定义elasticsearch存储数据的位置
path.logs: /opt/devops/elasticsearch/log
位于配置文件的第37行,用于定义elasticsearch日志文件的位置
network.host: 192.168.80.10
位于配置文件的第54行,用于定义elasticsearch侦听ip,这里需要配置为elasticsearch所在服务器ip地址
http.port: 9200
位于配置文件的第58行,用于定义elasticsearch对外使用的端口
discovery.zen.ping.unicast.hosts: ["192.168.80.10", "192.168.80.20"]
位于配置文件的第79行,用于定义elasticsearch发送广播的ip,默认情况下向elasticsearch所在网段的所以ip进行广播
node.max_local_storage_nodes: 1
位于配置文件的第92行,用于定义一台主机只允许启动一个elasticsearch节点
action.destructive_requires_name: true
位于配置文件的第96行,用于定义删除索引时必须明确提供索引名
(2) 192.168.80.10服务器配置
第一步创建mv elasticsearch数据目录和日志目录
mkdir –pv /opt/devops/elasticsearch/data
mkdir –pv /opt/devops/elasticsearch/log
第二步创建elasticsearch运行时所需要的系统账号
elasticsearch-2.0.0版本禁止使用root账号直接运行,所以需要创建账号用于运行elasticsearch
useradd elasticsearch –s /sbin/nologin
第三步修改配置文件
配置文件的位置在/opt/devops/elasticsearch/config/elasticsearch.yml,一个基本的elasticsearch需要做如下配置:
cluster.name: ssfy
node.name: ssfy-02
path.data: /opt/devops/elasticsearch/data
path.logs: /opt/devops/elasticsearch/log
network.host: 192.168.80.20
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.80.10", "192.168.80.20"]
node.max_local_storage_nodes: 1
action.destructive_requires_name: true
(3) 启动elasticsearch
#su – elasticsearch
#nohup/opt/devops/elasticsearch/bin/elasticsearch >/dev/null &

检验是否正常启动
浏览器中输入http://192.168.80.10:9300或者http://192.168.80.20:9300

注释:elasticsearch集群内部通信端口为9300,对外通信端口为9200
(4) 安装elasticsearch插件
第一个插件head
elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es。
安装命令:
$/opt/devops/elasticsearch/bin
$./plugin install mobz/elasticsearch-head
安装完成后\plugins目录下会有head的文件夹。
进入http://192.168.80.10:9200/_plugin/head/

第二个插件——bigdesk
bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。
安装命令:
$/opt/devops/elasticsearch/bin
$./plugin install lukas-vlcek/bigdesk
安装完成后\plugins目录下会有bigdesk的文件夹。
注意:elasticsearch2.0.0不能通过上面的方法进行安装,需要手动下载bigdesk放到/opt/devops/elasticsearch/plugins目录,然后修改两处配置文件
首先添加配置文件plugin-descriptor.propertie
#vi elasticsearch-2.0.0/plugins/bigdesk/plugin-descriptor.properties
description=bigdeskversion=mastersite=truename=bigdesk然后,修改配置文件
elasticsearch-2.0.0/plugins/bigdesk/_site/js/store/BigdeskStore.js第142行将major ==1改为major>= 1
进入http://192.168.80.10:9200/_plugin/bigdesk/ 如下图
五 kibana
1 kibana安装
注意:kibana-4.2.0需要elasticsearch2.0.0及以上版本的支持
第一步拷贝软件包
将下载的elasticsearch拷贝到/opt/devops/目录下
#mv kibana-4.2.0/opt/devops/kibana
第二步修改kibana配置文件
kibana配置文件只需修改一处即可,我们需要告诉Kibana在哪里可以找到elasticsearch。打开配置文件并修改elasticsearch参数:
#vi /opt/devops/kibana/config/
elasticsearch.url: "http://192.168.80.10:9200"
elasticsearch.url: http://192.168.80.20:9200 第三步启动kibana
#nohup /opt/devops/kibana/bin/kibana > /var/log/kibana.log&
第四步测试
kibana端口为5601
在浏览器中输入
http://192.168.80.10:5601http://192.168.80.20:5601
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息