• ELK日志框架(1):安装Elasticsearch组建单服务器多节点集群


    ELK简介

      最近有个需求搭建一套日志系统用于集成几个业务系统的日志提供快速的检索功能,目前是用Log4net存数据库+Error级别发邮件方式,也算简单暴力好用,但历史日志的模糊查询确实很慢,所以使用ELK是比较理想的解决方案。三年前写过两篇文章log4net.NoSql +ElasticSearch 实现日志记录log4net.redis+logstash+kibana+elasticsearch+redis 实现日志系统,感觉有点凌乱,这次借着项目需要重新整理一下。参考ELK不权威指南可以对ELK做个大体了解它的应用场景和优缺点,总之“ELK 三个字母分别是三个软件产品的缩写。 E代表Elasticsearch,负责日志的存储和检索; L代表Logstash, 负责日志的收集,过滤和格式化;K代表Kibana,负责日志的展示统计和数据可视化。”。以前常见的ELK架构如下:

    现在官方的推荐架构是https://www.elastic.co/cn/products

    就像知乎上说的Elasticsearch是ELK的核心, L和K都有相应的替代方案(日记采集可以不使用Logstash,而是直接使用log4net.nosql 输出到ES,或者像我那样自己写个log4net.redis输出到redis),所以先从Elasticsearch开始。

     环境说明

    1. windows server 2012 R2 64位

    2. jdk-8u131-windows-x64.exe

    3. elasticsearch-5.4.0.zip 

    Elasticsearch 安装

    1.  下载Elasticsearch 

      打开官网 https://www.elastic.co/downloads/elasticsearch ,目前最新版本是5.4.3,下载Zip格式文件,解压到E:elkelasticsearch,路径不要包括中文。

     2. 从命令行运行Elasticsearch 

    命令行下到bin目录,运行elasticsearch.bat,出现如下界面表示服务起来了(不代表成功)。

    在IE浏览器里输入 http://localhost:9200,弹出一个json文件下载内容如下表示成功了:

    {
      "name" : "KaeR6Q2",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "S4uOl5YERqaq1NBk9wId-g",
      "version" : {
        "number" : "5.4.0",
        "build_hash" : "780f8c4",
        "build_date" : "2017-04-28T17:43:27.229Z",
        "build_snapshot" : false,
        "lucene_version" : "6.5.0"
      },
      "tagline" : "You Know, for Search"
    }

    按ctrl+c停止服务。

    如果输入 http://localhost:9200 报错,使用netstat -anp tcp 还可以看到9200、9300端口都在监听了,那么就看一下命令行输出里是否有乱码,如下图: 

     在E:elkelasticsearchlogselasticsearch.log里可以看到日志

    [2017-07-05T17:48:07,373][INFO ][o.e.n.Node ] [] initializing ...
    [2017-07-05T17:48:07,811][INFO ][o.e.e.NodeEnvironment ] [KaeR6Q2] using [1] data paths, mounts [[新加卷 (E:)]], net usable_space [98.2gb], net total_space [99.9gb], spins? [unknown], types [NTFS]
    [2017-07-05T17:48:07,826][INFO ][o.e.e.NodeEnvironment ] [KaeR6Q2] heap size [1.9gb], compressed ordinary object pointers [true]

    右键查看磁盘属性把卷标“新加卷”去掉就可以了。

     3. 配置Elasticsearch 

      Elasticsearch从configelasticsearch.yml文件加载默认配置,也可以在命令行里用-E前缀指定,比如:

    elasticsearch.bat -Ecluster.name=myCluster -Enode.name=myNode

      访问http://localhost:9200,返回值:

    {
      "name" : "myNode",
      "cluster_name" : "myCluster",
      "cluster_uuid" : "S4uOl5YERqaq1NBk9wId-g",
      "version" : {
        "number" : "5.4.0",
        "build_hash" : "780f8c4",
        "build_date" : "2017-04-28T17:43:27.229Z",
        "build_snapshot" : false,
        "lucene_version" : "6.5.0"
      },
      "tagline" : "You Know, for Search"
    }

    修改elasticsearch.yml文件实现配置,格式说明Configuring Elasticsearch

    # Use a descriptive name for your cluster:
    #
    cluster.name: esLogCluster
    
    # Use a descriptive name for the node:
    #
    node.name: esLogNode_175
    
    # Set the bind address to a specific IP (IPv4 or IPv6):
    #
    network.host: 192.168.5.175

    再次运行elasticsearch.bat,就可以使用ip地址远程访问了。

     4. 安装Elasticsearch服务elasticsearch-master

      elasticsearch可以后台服务的方式运行,通过elasticsearch-service.bat脚本安装、卸载、启动、停止、管理服务,参数说明如下:

    install

    Install Elasticsearch as a service

    remove

    Remove the installed Elasticsearch service (and stop the service if started)

    start

    Start the Elasticsearch service (if installed)

    stop

    Stop the Elasticsearch service (if started)

    manager

    Start a GUI for managing the installed service

     参数后面可以跟一个可选参数 service_id,用于指定服务名称,默认的名称是 elasticsearch-service-x64,安装服务:

    elasticsearch-service install elasticsearch-master
    配置服务:
    elasticsearch-service manager elasticsearch-master
    
    

    注意修改启动类型为自启动,java初始内存(默认是2G)可以调小一些。

     5. 安装Elasticsearch服务elasticsearch-slave,组成单服务器多节点集群

       a.复制E:elkelasticsearch文件夹重命名为E:elkelasticsearch-slave

       b.删除E:elkelasticsearch-slavedata文件夹下的内容,切记一定要删除

       c.修改E:elkelasticsearch-slaveconfigelasticsearch.yml文件

    node.name: esLogNode_175_slave
    
    node.master: false
    
    discovery.zen.ping.unicast.hosts: ["192.168.5.175"] 
      d.安装服务
    elasticsearch-service install elasticsearch-slave

      e.验证集群,输入http://192.168.5.175:9200/_cluster/health?pretty,number_of_nodes和number_of_data_nodes等于2表示成功。

    {
      "cluster_name" : "esLogCluster",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 2,
      "number_of_data_nodes" : 2,
      "active_primary_shards" : 0,
      "active_shards" : 0,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 0,
      "delayed_unassigned_shards" : 0,
      "number_of_pending_tasks" : 0,
      "number_of_in_flight_fetch" : 0,
      "task_max_waiting_in_queue_millis" : 0,
      "active_shards_percent_as_number" : 100.0
    }

    踩坑总结

    1. 磁盘卷标是中文,端口监听了通过http://localhost:9200访问失败

    2. 组建集群时复制elasticsearch文件夹没有清空data里的内容,出现错误“found existing node {node-1}{vP19PMOyT2ilJKRAqgn78w}{jDULCExERXGHp4VXpbyuJA}{127.0.0.1}{127.0.0.1:9300} with the same id but is a different node instance]” 

    参考链接

    1.Install Elasticsearch on Windows,官方文档

    2.ElasticSearch 5学习(1)——安装Elasticsearch、Kibana和X-Pack Linux环境教程

    3.ELK不权威指南

    4.ELK介绍

    5.ELK+FileBeat+Log4Net搭建日志系统

    6.Elk 进阶部署

  • 相关阅读:
    Beginning Silverlight 4 in C#数据绑定和Silverlight List控件
    使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
    分布式事物:第一章:分布式事物简介
    Redis数据结构存储系统:第三章:Redis在项目中如何使用?
    Android “NetworkOnMainThreadException”出错原因及解决办法
    asp.net 运行时, 报控件不存在
    Only the original thread that created a view hierarchy can touch its views
    android模拟器打开时比较慢,Run As就找不到模拟器
    db2数据库还原
    去掉代码中自动生成的TODO Autogenerated method stub
  • 原文地址:https://www.cnblogs.com/zeroes/p/elk-elasticsearch.html
Copyright © 2020-2023  润新知