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

[经验分享] centos6安装部署ELK以及后续操作

[复制链接]

尚未签到

发表于 2019-1-28 12:15:54 | 显示全部楼层 |阅读模式
  前言:
  ELK Stack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。ELK Stac可以用于实时日志处理,数据分析等领域,目前了解该领域应该是开源界的第一选择。实践中,可跟对具体使用场景选择不同的软件组合,如下是快速安装部署,同样也适合生产环境。
实践环境
名称版本备注OScentos6.4以上7.x未测试,5.x不适用Elasticsearch2.4.0以上适用JDK8.x,采用最新稳定版Logstash2.4.0以上同上Kibana4.6.1以上同上  各种包的资源准备好,可以去官网下载(www.elasticsearch.co),或者去国内的大型源里面,比如阿里源,清华源等等,这里就不详细说明了
  由于这里下载的都是rpm包,安装很简单,JDK的安装配置也不说明了,这个大家应该都没什么问题了

  •   安装配置elasticsearch
      rpm -ivh ela*.rpm
  •   安装插件
      /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
  •   添加系统服务并启动
      chkconfig --add elasticsearch  &&  /etc/inin.d/elasticsearch  start
  •   修改一下配置文件中的network参数,可以让其绑定在每个网卡设备上
  •   测试
      curl 'http://172.16.200.108:9200/?pretty'
  •   #自定义配置文件(/etc/elasticsearch/elasticsearch.yml)
      #组播组播自动发现配置
      cluster.name: my-test     (集群名称,组播自动发现)
      node.name: node-01
      node.master: true
      node.data:true
      index.number_of_shards: 5   (默认分片数)
      index.number_of_replicas: 1  (默认分片副本)
      path.conf:/path/to/conf    (配置文件目录)
      path.data:/usr/local/ver01/elasticsearch/data    (数据存储目录)
      path.work:/                (临时文件目录)
      path.logs:/usr/local/ver01/elasticsearch/logs               (日志文件目录)
      path.plugins:/            (插件目录)
      bootstrap.mlockall:true   (锁住内存,不交换内存数据到swap上)
      network.host:0.0.0.0
      #集群单播配置
      cluster.name: mytest
      node.name: "node-01"
      node.data: true
      bootstrap.mlockall: true
      network.host: 172.16.200.108
      network.publish_host: 172.16.200.108
      discovery.zen.ping.multicast.enabled: false
      discovery.zen.ping.unicast.hosts: ["172.16.200.108","172.16.200.109"]

  •   安装logstach
      rpm -ivh log*.rpm
  •   相关配置文件,管理脚本
      #logstash配置文件默认存放目录
      /etc/logstash/conf.d
      #logstash bin文件
      /opt/logstash/bin/logstash
      #logstash管理脚本
      /etc/init.d/logstash start  #start/stop/restart
      #测试配置文件
      /opt/logstash/bin/logstash agent -f /etc/logstash/conf.d/logstash.conf -t
  •   一个简单收集Nginx访问日志的配置文件
      input {
      file {
      type => "nginx-messages"
      path => ["/home/wwwlogs/access.log"]
      start_position => "beginning"
      }
      }
      output {
      if [type] == "nginx-messages" {
      elasticsearch {
      hosts => ["172.16.200.108:9200"]
      index => "nginx-messages-%{+YYYY-MM}"
      }
      }
      }

  •   安装kibana
      rpm -ivh kibana*.rpm
  •   相关配置
      #修改配置文件指定elasticsearch服务器地址:例如
      vim /opt/kibana/config/kibana.yml
      elasticsearch.url: "http://172.16.200.108:9200"
      server.host: "172.16.200.108"
      #启动
      /etc/init.d/kibana start
      #默认访问地址:http://172.16.200.108:5601
  ### 注意以上用rpm包安装的配置文件,数据目录的默认配置,需要请修改 ###
  安装配置无误的话,可以登录http://172.16.200.108:5601访问玩一下了
  针对目前elk中前端展现的kiabna来说,权限的划分对企业用户使用非常不方便,虽然可以简单的方法加上基本密码认证(HTTP Auth Basic),但是要细分权限就有点坑了。kibana优势不用说,展现及统计都十分强大,所以两者各有千秋,本次主题所说的grafana替换kibana只是部分替换。我们这里2两者可以并用,将grafana提供给运营及开发等人群查看,给予相关分组及查看权限,而对于运维或者数据挖掘等等真正对这些日志进行的分析我们可以使用kibana。实践如下:
  依然选择单机操作,所有的安装均在172.16.200.108上

  •   安装grafana(2.6.0)
      yum install https://grafanarel.s3.amazonaws.com/builds/grafana-2.6.0-1.x86_64.rpm
  •   配置文件
      /etc/grafana/grafana.ini
      #默认数据库sqlite3,默认服务端口3000,等等
  •   启动脚本
      /etc/init.d/grafana-server
  • 添加Elasticsearch数据源
  •   * 登录成功后,Data Sources => Add new
      关键说明:
      Type : 选择elasticsearch类型
      url : elasticsearch 的地址
      access : proxy 本实例选用该选项
      index name : elasticsearch中存储数据的的索引名
      如下所示:

      添加完成后可 Test connection 测试,如果如下图所示则数据源可正常获取数据
    创建一个日志相关统计的图形

      默认的组织,选择 New ,添加一个dashboard(如下图),我们这里简单翻译为仪表盘。仪表盘中可以自定义自己需要的相关信息.

  创建的新仪表盘会看到一个绿色的条,点击可以做相关动作,另外设置里面可以另存为一个具体的名字保持仪表盘.如下:

  绿色条展开后有许多选项,如下:

  我们点击上面的Graph创建一个图形,然后如下,做相关参数调整

  General =>>

  Metrics => Query 可以输入相关查询条件(lunece 语法),右下角的nginx红框代表当前数据源是之前定义的数据源名称

  Axes & Grid => Legend 是否显示,及显示的位置
  Axes & Grid => Values 对应是否显示相关值,如下:
创建一个可查看相关详细日志的表格

  我们点击绿色条,然后”Add Pannel”=>”Table”,然后如下,做相关参数调整,如下:


grafana相关用户及权限功能展示

  grafana用户的功能是比较丰富的,这里简单展示下,可仔细查看下/etc/grafana/grafana.ini 配置文件中更多对用户这块的控制与定制.



kibana地图显示
思路
这里用最简单的思路实现,如下(nginx中client IP):

  •   logstash
      input:通过制定文件采集(这里采集的nginx源日志已经设置为json格式了)
      filter:通过geoip插件指定字段client
      output:把日志导出到elasticsearch(这里重点注意,index名字如果在你没指定自定义模板之前,必须用”logstash-“开头,不理解没关系,按照我的例子操作一遍先实现即可)
  •   kibana
      先在Settings中创建好对应的index
      然后在Discover中查看对应index是否有采集到相关数据,数据采集是否正确
      再就是Visualize中Title map功能就可以查看相关client IP在地图中的显示及访问统计
实践

  •   logstash配置文件
  input {
  file {
  type => "nginx-access"
  path => ["/logs/nginx/access.log"]
  }
  }
  filter {
  json {
  source => "message"
  }
  geoip {
  source => "client"
  }
  }
  output {
  elasticsearch {
  hosts => ["10.154.19.58:9200"]
  index => "logstash-nginx-access-%{+YYYY.MM}"
  }
  }

  •   kibana操作
      先在Settings中创建好对应的index

  然后在Discover中查看对应index是否有采集到相关数据,数据采集是否正确

  再就是Visualize中Title map功能就可以查看相关client IP在地图中的显示及访问统计





日志统计分析--filebeat
  Filebeat 是elastic官方Beats系列之一,用来采集文件日志推荐实践工具。采用当前流行高效率go语言开发,客户端采集日志无需安装jdk。
filebeat+logstash+elasticsearch+kibana

  •   看下官网的示意图,图中我们暂时只使用Beats家族之一filebeat

  filebeat:客户端采集文件日志信息,然后output给logstash,这里可以做负载
  logstash:通过beat插件收集filebeat发过来的日志,如果需要可以过滤一些规则,然后indexer到elasticsearch
  elasticsearch:保存及搜索日志
  kibana:前端交互及展现
相关安装说明
  1:安装filebeat、curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.1.1-x86_64.rpm
  sudo rpm -vi filebeat-1.1.1-x86_64.rpm
  2:安装logstash
  参照上面的安装
  3:安装logstash-input-beats插件
  /opt/logstash/bin/plugin install logstash-input-beats
配置实例
filebeat:(/etc/filebeat/filebeat.yml)

  •   这里收集3种文件日志,定义了三种文档类型,方便在logstash索引时根据不同文档应用不通过滤规则
  •   其中nginx-access日志源是json格式
  •   output 可以启用负载均衡
  •   shipper 可以定义name tags等等
  filebeat:
  prospectors:
  -
  document_type: "messages"
  paths:
  - /var/log/messages
  -
  document_type: "php-error-5"
  paths:
  - /home/wwwroot/php_error/php.log
  -
  document_type: "nginx-access"
  scan_frequency: "10s"
  backoff: "1s"
  paths:
  - "/usr/local/ver01/nginx/logs/*json.log"
  registry_file: /var/lib/filebeat/registry
  output:
  logstash:
  hosts: ["172.31.27.253:5044","172.31.17.40:5044"]
  worker: 4
  compression_level: 3
  loadbalance: true
  shipper:
  name: test-web-01
  tags: ["web-server", "nginx"]
  启动filebeat
  /etc/init.d/filebeat start
logstash:(/etc/logstash/conf.d/index.conf)

  •   index.conf文件名可自取,以.conf后缀结尾即可
  •   filter 过滤了nginx-access 这种json格式日志,并加入了geoip插件将其客户端IP生成详细的ip位置信息
  •   filter 过滤了php-error-5 phperror日志,并切分好字段
  •   output 根据不通类型文档输入到不同的es索引中
  input {
  beats {
  port => 5044
  }
  }
  filter {
  if [type] == "nginx-access" {
  json {
  source => "message"
  }
  mutate {
  remove_field => [ "message" ]
  }
  geoip {
  source => "client"
  }
  }
  if [type] == "php-error-5" {
  grok {
  break_on_match => false
  match => [ "message", [
  "\[%{MONTHDAY:day}-%{MONTH:month}-%{YEAR:year} %{TIME:time}\] PHP %{DATA:level}\:  %{GREEDYDATA:error}"
  ]
  ]
  add_field    => { "timestamp" => "%{day}-%{month}-%{year} %{time}" }
  remove_field => [ "day", "month", "year", "time" ]
  }
  date {
  match        => [ "timestamp" , "yyyy-MM-dd HH:mm:ss", "dd-MMM-yyyy HH:mm:ss" ]
  }
  mutate {
  remove_field => [ "tags", "offset", "timestamp" ]
  }
  }
  }
  output {
  if [type] == "messages" {
  elasticsearch {
  hosts => ["10.154.19.58:9200"]
  index => "logstash-messages-%{+YYYY.MM}"
  }
  }
  if [type] == "nginx-access" {
  elasticsearch {
  hosts => ["10.154.19.58:9200"]
  index => "logstash-nginx-access-%{+YYYY.MM}"
  }
  }
  if [type] == "php-error-5" {
  elasticsearch {
  hosts => ["10.154.19.58:9200"]
  index => "logstash-php-error-%{+YYYY.MM}"
  }
  }
  #stdout { codec => rubydebug }
  }
  测试配置文件:
  /opt/logstash/bin/logstash agent -f /etc/logstash/conf.d/index.conf -t
  启动logstach:
  /etc/init.d/logstash start


运维网声明 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-668695-1-1.html 上篇帖子: 快速搭建ELK日志分析系统 下篇帖子: 实战 Elastic Stack
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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