一环境说明
程序部署路径/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.conf
output {
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 服务所在主机ip
port => "6379" port 表示redis 所使用的端口为6379
data_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/conf
1 测试配置文件是否正确
#/opt/devops/logstash/bin/logstash-f /opt/devops/logstash/conf/ --configtest
2 启动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.10
port => "6379" 表示redis 服务的端口为6379
type => "redis-input" 表示logstatsh 是从redis 中获取数据的
data_type => "list" 表示存储在redis 切割后的日志数据类型为list
key => "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/conf
1 测试配置文件是否正确
#/opt/devops/logstash/bin/logstash-f /opt/devops/logstash/conf/ --configtest
2 启动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=bigdesk
version=master
site=true
name=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:5601 或 http://192.168.80.20:5601
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com