zoukankan      html  css  js  c++  java
  • ansible一键部署elk

    一、ELK介绍

    1.1 ElasticSearch

    ElasticSearch 是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    1.2 Logstash

    Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 

    1.3 Kibana

    Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

     1.4 filebeat

    Filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tail file),并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。带有内部模块(auditd,Apache,Nginx,System和MySQL),可通过一个指定命令来简化通用日志格式的收集,解析和可视化。
    工作原理:

    Filebeat涉及两个组件:查找器prospector和采集器harvester,来读取文件(tail file)并将事件数据发送到指定的输出。

    启动Filebeat时,它会启动一个或多个查找器,查看你为日志文件指定的本地路径。对于prospector所在的每个日志文件,prospector启动harvester。每个harvester都会为新内容读取单个日志文件,并将新日志数据发送到libbeat,后者将聚合事件并将聚合数据发送到你为Filebeat配置的输出。

    1.5 zookeeper

    zookeeper它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

    简单来说zookeeper=文件系统+监听通知机制。

    1.6 kafka

    Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景

    特点:

    • 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。

    • 可扩展性:kafka集群支持热扩展

    • 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失

    • 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)

    • 高并发:支持数千个客户端同时读写

    ELK分布式日志收集原理

    1、每台服务器集群节点安装Logstash日志收集系统插件

    2、每台服务器节点将日志输入到Logstash中

    3、Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中

    4、浏览器使用安装Kibana查询日志信息

    二、ansible安装elk

    2.1 环境介绍(安装es,logstash,kibana版本为7.1.1,7以上都可以,jdk为1.8

    官方地址:https://www.elastic.co

    服务 ip
    elasticsearch,jdk 192.168.253.202 192.168.253.53 192.168.253.54 
    logstash 192.168.253.202 192.168.253.53
    kibana 192.168.253.202

    2.2 创建目录

      

    2.3修改主机名(202,53,54)

    202: hostnamectl set-hostname elk01
    53: hostnamectl set-hostname elk02
    54: hostnamectl set-hostname elk03
    • tasks:包含角色要执行的主要任务列表
    • handlers:包含处理程序,可以由此角色使用,甚至可以在此角色之外的任何位置使用
    • defaults:角色默认的变量
    • vars:角色其他的变量
    • files:包含可以通过此角色部署的文件
    • templates:包含可以通过此角色部署的模板
    • meta:角色定义的一些元数据

    2.4 项目架构:

    2.5 代码:(此配置es没有安装head插件,请根据以下内容安装,即可在web页面上查看)

    github地址:elk

    安装head插件

    一、下载 elasticsearch-head-master.zip

    下载地址:https://github.com/mobz/elasticsearch-head

    二、下载node.js

    解压下载的es-head插件,cd到解压目录,下载nodejs,并安装:

    [elasticsearch-head-master]# curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
     
    [elasticsearch-head-master]# yum install -y nodejs

    查看是否安装成功:

    [elasticsearch-head-master]# node -v
     v10.16.0
     
    [elasticsearch-head-master]# npm -v
     6.9.0

    三、安装grunt

    [elasticsearch-head-master]# npm install -g grunt-cli
     
    [elasticsearch-head-master]# npm install    #此过程有些长,请耐心等待哦

    四、修改es配置,加入如下内容(如果使用上面的git文件,则不用修改此处,其中已经包含)

    http.cors.enabled: true
    http.cors.allow-origin: "*"

    作用是开启HTTP对外提供服务,使Head插件能够访问Elasticsearch,修改完成后需要重启es。

    五、修改head配置,

    打开elasticsearch-head-master/Gruntfile.js,找到connect属性,修改hostname的值为es的IP:

    server: {
    options: {
    hostname: '127.0.0.1',
    port: 9100,
    base: '.',
    keepalive: true
      }
    }


    六、启动Head插件

    切换到elasticsearch-head-master目录下,运行启动命令:

    grunt server


    启动成功后,输出如下信息:

    Running "connect:server" (connect) task
    Waiting forever...
    Started connect web server on http://localhost:9100

    2.6 执行顺序

    cd elk
    1
    .ansible-playbook -i hosts jdk.yml 2.ansible-playbook -i hosts es.yml 3.ansible-playbook -i hosts logstash.yml 4.ansible-playbook -i hosts kibana.yml

     三、安装完成后再浏览器访问

    elasticsearch: 192.168.253.202:9200

     es-head插件:192.168.253.202:9100

    kibana:192.168.253.202:5601

    cd /data/kibana
    [root@elk01 kibana]# ls
    bin           data         node_modules  package.json  src
    built_assets  LICENSE.txt  NOTICE.txt    plugins       target
    config        node         optimize      README.txt    webpackShims

    nohup ./bin/kibana >> /tmp/kibana.nohup 2>&1 & #启动



  • 相关阅读:
    yii2.0 干货
    VLD opcodes 在线查看
    定长顺序串的实现
    循环队列
    oracle--DG初始化参数
    oracle --工具 ODU
    Oracle RAC 修改SPFILE路径 文件查看
    oracle 错误 ORA-00020问题解析
    oracle 错误 TNS-01190与oracle 登入没反应操作
    Oracle--RMAN Recover 缺失的归档操作
  • 原文地址:https://www.cnblogs.com/lanist/p/13259046.html
Copyright © 2011-2022 走看看