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:\elk\elasticsearch,路径不要包括中文。

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:\elk\elasticsearch\logs\elasticsearch.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从config\elasticsearch.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 Elasticsearch as a service |
|
|
Remove the installed Elasticsearch service (and stop the service if started) |
|
|
Start the Elasticsearch service (if installed) |
|
|
Stop the Elasticsearch service (if started) |
|
|
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:\elk\elasticsearch文件夹重命名为E:\elk\elasticsearch-slave
b.删除E:\elk\elasticsearch-slave\data文件夹下的内容,切记一定要删除
c.修改E:\elk\elasticsearch-slave\config\elasticsearch.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" : ,
"number_of_data_nodes" : ,
"active_primary_shards" : ,
"active_shards" : ,
"relocating_shards" : ,
"initializing_shards" : ,
"unassigned_shards" : ,
"delayed_unassigned_shards" : ,
"number_of_pending_tasks" : ,
"number_of_in_flight_fetch" : ,
"task_max_waiting_in_queue_millis" : ,
"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介绍
6.Elk 进阶部署
ELK日志框架(1):安装Elasticsearch组建单服务器多节点集群的更多相关文章
- kubeadm安装K8S单master双节点集群
宿主机:master:172.16.40.97node1:172.16.40.98node2:172.16.40.99 # 一.k8s初始化环境:(三台宿主机) 关闭防火墙和selinux syste ...
- ELK日志框架(2):log4net.ElasticSearch+ Kibana实现日志记录和显示
环境说明 1. windows server 2012 R2 64位 2. log4net.ElasticSearch 3. kibana-5.5.0-windows-x86.zip 架构说明 数据采 ...
- ELK日志分析之安装
ELK日志分析之安装 1.介绍: NRT elasticsearch是一个近似实时的搜索平台,从索引文档到可搜索有些延迟,通常为1秒. 集群 集群就是一个或多个节点存储数据,其中一个节点为主节点,这个 ...
- elk 日志分析系统Logstash+ElasticSearch+Kibana4
elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示clie ...
- ElasticSearch实战系列九: ELK日志系统介绍和安装
前言 本文主要介绍的是ELK日志系统入门和使用教程. ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一 ...
- ELK日志监控平台安装部署简介--Elasticsearch安装部署
最近由于工作需要,需要搭建一个ELK日志监控平台,本次采用Filebeat(采集数据)+Elasticsearch(建立索引)+Kibana(展示)架构,实现日志搜索展示功能. 一.安装环境描述: 1 ...
- elk日志分析平台安装
ELK安装 前言 什么是ELK? 通俗来讲,ELK是由Elasticsearch.Logstash.Kibana 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又 ...
- 【elasticsearch】(2)centos7 超简单安装elasticsearch 的监控、测试的集群工具elasticsearch head
elasticsearch-head是elasticsearch(下面称ES)比较普遍使用的可监控.测试等功能的集群管理工具,是由H5编写的单独的网页程序.使用方法网上很多,这里教大家一个超简单安装h ...
- ELK日志分析系统(4)-elasticsearch数据存储
1. 概述 logstash把格式化的数据发送到elasticsearch以后,elasticsearch负责存储搜索日志数据 elasticsearch的搜索接口还是很强大的,这边不详细展开,因为k ...
随机推荐
- Oracle 11g中的snapshot standby特性
在Oracle 11g中,data guard最吸引人的,除了active data guard的实时查询特性(即可以以只读方式打开物理standby数据库的同时MRP进程能继续做recover),快 ...
- 华为交换机常用命令(以s5700-SI为例)
交换机的三种模式: Access模式: 一般用来连接计算机与交换机. 此模式下有一个PVID就是本端口所属的VLAN号,如果从链路上收到无标签的帧,则打上默认VLAN号,然后发给其他端口,如果从链路上 ...
- LeetCode算法题详解之两个数组的交集
题目背景: 这个与我们高中时期学习的交集是一样的,顺便复习一下相关的数学知识有助于更好的理解. 交集的定义: 对于两个集合A和B,定义A和B的交集为C,其中C={x|x属于A且X属于B},记作A∩B. ...
- Android学习之键盘事件
java代码: package com.example.keyboardtest; import android.app.Activity; import android.os.Bundle; imp ...
- Oracle 存储过程或函数传入的数值参数number
在oralce中,如果存储过程需要接收含有数值类型的参数时,如何声明呢.如下: CREATE OR REPLACE PACKAGE GPS.PKG_MONTH_TARGET AS ---------- ...
- 【LeetCode191】Number of 1 Bits★
1.题目 2.思路 方法一:常规方法. 方法二:给面试官惊喜的解法. 3.java代码 方法一代码: public class Solution { // you need to treat n as ...
- Vue-父子组件传值
在 Vue 中,父子组件的关系可以总结为 prop 向下传递,事件向上传递.一.父组件向子组件传值 使用 Prop 传递数据,父组件的数据需要通过 prop 才能下发到子组件中,子组件要显式地用 pr ...
- 在asp.net web form项目中添加webapi接口
我有一个支付宝服务网关是ASP.NET WEB FORM项目,但是最近这个网关需要对外提供几个接口,想了下,使用web api比较合适,实现很简单,GO 1,首先添加一个文件夹名字叫App_Start ...
- 运行supervisorctl reload报错解决方法
在进行守护进程时运行supervisorctl reload出现“error: <class 'socket.error'>, [Errno 2] No such file or dire ...
- Bash Shebang 小结
在 shell(Bash 是一种 shell) 中执行外部程序和脚本时,Linux 内核会启动一个新的进程,以便在新的进程中执行指定的程序或脚本.内核知道该如何为编译型的程序做这件事,但是对于脚本程序 ...