ELK6.5 环境搭建及一般应用

ELK概述

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

各工具合作流程图

各工具合作流程图

  • Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Logstash工作流程

Logstash工作流程

  • Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。
    可以用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互(增删改数据都可以)。
    可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。
    Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的变化。

  • Filebeat隶属于Beats。目前Beats包含四种工具:
    1.Packetbeat(搜集网络流量数据)
    2.Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
    3.Filebeat(搜集文件数据)
    4.Winlogbeat(搜集 Windows 事件日志数据)

Filebeat具体工作流程

Filebeat监听数据/传输数据

ELK6.5 环境搭建

先在各服务器上安装JDK并配置

	cd /usr/local/src
	wget https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz
		tar xf jdk-8u191-linux-x64.tar.gz 
		mv jdk1.8.0_191/ /usr/local/java
		vim /etc/profile.d/java.sh
		export JAVA_HOME=/usr/local/java
		export PATH=$PATH:$JAVA_HOME/bin
		source /etc/profile
安装ElasticSearch6.5.2
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.2.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.2.tar.gz.sha512
shasum -a 512 -c elasticsearch-6.5.2.tar.gz.sha512 
tar -xzf elasticsearch-6.5.2.tar.gz
cd elasticsearch-6.5.2/ 


## 由于虚拟机只分配了1G内存,所以需要修改JVM的初始化内存,这里修改配置文件 jvm.options
cd /usr/local/src/elasticsearch-6.5.2/config

vim config/jvm.options

修改 jvm.options

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms384m
-Xmx384m

修改配置文件 config/elasticsearch.yml

cluster.name: myapplication
node.name: node-105
path.data: /usr/local/src/elasticsearch-6.5.2/data
path.logs: /usr/local/src/elasticsearch-6.5.2/logs
bootstrap.memory_lock: false
network.host: 192.168.56.105
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.56.105", "192.168.56.101", "192.168.56.103"]
discovery.zen.minimum_master_nodes: 2
gateway.recover_after_nodes: 3

注意:bootstrap.memory_lock:true 配置的意义:锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高。

创建ElasticSearch进程用户 es

sudo groupadd es
sudo useradd es -g es
## 为es用户设置一个密码
sudo passwd es 

修改 /etc/security/limits.conf 加入以下内容

es    	soft    memlock         unlimited
es    	hard    memlock         unlimited
es 		hard 	nofile 		65536
es 		soft 	nofile 		65536
es 		hard 	nproc 		65536
es 		soft 	nproc 		65536
注意:修改后必须退出重新登录才会生效

将ElasticSearch相关的目录的所有者改为es账户

sudo chown -R es:es /usr/local/src/jdk1.8.0_191
sudo chown -R es:es /usr/local/src/elasticsearch-6.5.2

启动ElasticSearch

cd /usr/local/src/elasticsearch-6.5.2
su es 
./bin/elasticsearch
启动报错:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

vim /etc/sysctl.conf
	vm.max_map_count=262144
	sudo sysctl -p

	sysctl -w vm.max_map_count=262144

查看集群启动后能否正常工作

curl -X GET "192.168.56.105:9200/"
{
  "name" : "node-105",
  "cluster_name" : "myapplication",
  "cluster_uuid" : "dBHz7YwUQLa3F943QhsW2g",
  "version" : {
    "number" : "6.5.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "9434bed",
    "build_date" : "2018-11-29T23:58:20.891072Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

查看es集群节点状态
curl http://192.168.56.105:9200/_cluster/health?pretty

{
  "cluster_name" : "myapplication",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "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
}
Elasticsearch安装插件
./bin/elasticsearch-plugin install analysis-icu
./bin/elasticsearch-plugin install analysis-smartcn
查看已安装的elasticsearch插件
./bin/elasticsearch-plugin list
Elasticsearch内部原理

Elasticsearch 天生就是分布式的,并且在设计时屏蔽了分布式的复杂性.
Elasticsearch 尽可能地屏蔽了分布式系统的复杂性。这里列举了一些在后台自动执行的操作:

  • 分配文档到不同的容器 或 分片 中,文档可以储存在一个或多个节点中
  • 按集群节点来均衡分配这些分片,从而对索引和搜索过程进行负载均衡
  • 复制每个分片以支持数据冗余,从而防止硬件故障导致的数据丢失 将集群中任一节点的请求路由到存有相关数据的节点
  • 集群扩容时无缝整合新节点,重新分配分片以便从离群节点恢复

一个运行中的 Elasticsearch 实例称为一个 节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。

当一个节点被选举成为 主 节点时, 它将负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等。 而主节点并不需要涉及到文档级别的变更和搜索等操作,所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会成为瓶颈。 任何节点都可以成为主节点。

作为用户,我们可以将请求发送到 集群中的任何节点 ,包括主节点。 每个节点都知道任意文档所处的位置,并且能够将我们的请求直接转发到存储我们所需文档的节点。 无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回給客户端。 Elasticsearch 对这一切的管理都是透明的。

kibana 安装配置
cd /usr/local/src
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.2-linux-x86_64.tar.gz
tar -zxf kibana-6.5.2-linux-x86_64.tar.gz
cd kibana-6.5.2-linux-x86_64		
		##修改配置文件
		vim config/kibana.yml		
		# 修改kibana外网地址的host
		server.host: "192.168.56.102"		
		# 修改kibana要连接的ES服务器
		elasticsearch.url: "http://192.168.56.105:9200"		
./bin/kibana

验证是否成功 浏览器中输入 http://192.168.56.102:5601

Logstash 安装配置
cd /usr/local/src
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.2.tar.gz
tar -zxf logstash-6.5.2.tar.gz
cd logstash-6.5.2
	
## 新建配置文件 config/default.conf
	# 监听5044端口作为输入
	input {
			beats {
					port => "5044"
				  }
		  }

	# 数据过滤
	filter {
			grok {
					match => { "message" => "MAINNGINXLOG %{COMBINEDAPACHELOG} %{QS:x_forwarded_for}" }
				 }
			date {
					match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
					target => ["datetime"]
				 }
			geoip {
					source => "clientip"
				  }
		   }

	# 输出配置为ES服务器的9200端口
	output {
			elasticsearch {
					hosts => ["192.168.56.105:9200"]
					index => "access_log"
			}
	}

# 启动服务
./bin/logstash -f config/default.conf
Filebeat 安装配置
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.2-linux-x86_64.tar.gz
tar -zxf filebeat-6.5.2-linux-x86_64.tar.gz
cd filebeat-6.5.2-linux-x86_64

	## 修改配置文件 filebeat.yml	
	# 修改数据来源,配置为nginx的日志目录,包括access.log及error.log
	filebeat.inputs:
		- type:log
		enabled: true
		paths:
		- /var/log/nginx/*.log  
		
	# kibana相关设置,配置为kibana服务器地址
	setup.kibana:
		host: "192.168.56.102:5601"
	   
	# logstash的host地址及端口
	output.logstash:
		hosts: ["192.168.56.102:5044"]
	
	
## 运行filebeat -e 在终端显示一些处理过程信息
./filebeat -e -c filebeat.yml &
在kibana中查看access_log索引的日志内容

可以看到已经有日志内容

kibana开启监控后可以看到整个集群有3个节点,6个分片

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值