设为首页 收藏本站
查看: 798|回复: 0

[经验分享] ELK安装配置

[复制链接]

尚未签到

发表于 2019-1-28 08:24:13 | 显示全部楼层 |阅读模式
  一环境说明
  程序部署路径/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.confoutput.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生成不同的日志,可以通过tagsapache日志打标签,表示是由哪个应用产生的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"
}
  }
  
  解释:
  客户端logstashoutput段主要负责将收集切割后的日志输出到redis中进行保存,方便服务端logstashredis中获取日志,其主要包含的字段及含义如下
stdout {}子段表示将切割后的日志通过标准输出打印到屏幕上,其主要作用是用来确认logstash是否正常工作,正式上线后可禁用此字段
redis子段表示将切割后的日志存储到redis,其主要包含的字段及含义如下
host => "172.20.19.113"   host表示redis服务所在主机ip
port => "6379"    port表示redis所使用的端口为6379
data_type => "list"   data_type表示将切割后的日志保存成redislist类型
key =>"logstash" 表示此日志在rediskeylogstatsh(服务端的input段中的key需要和这里的保持一致)


第二步启动 logstatsh
假设logstatsh部署在/opt/devops/logstash/,其两个配置文件input.confoutput.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服务所在服务器ip192.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集群各个节点ipelasticsearch使用的端口
cluster=> "yyuap"  cluset用来定义elasticsearch集群,这里elasticsearch集群名称为elasticsearchlogstatsh2.0已废弃)

第二步启动 logstatsh
假设logstatsh部署在/opt/devops/logstash/,其两个配置文件input.confoutput.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
  bigdeskelasticsearch的一个集群监控工具,可以通过它来查看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.js142行将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
  
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668474-1-1.html 上篇帖子: 【ELK】01、ELK基础 下篇帖子: ELK转EFK-linux运维
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表