目录

  • 简介
  • 一、部署elasticsearch
  • 二、添加可视化界面
  • 三、elasticsearch节点角色
  • 四、logstash部署


简介

在部署集群时,日志文件通常会散落分布在各个节点上,这对于集群的日常管理,故障排查等显然造成了障碍,因此我们需要有一种系统能够将集群中服务器的日志进行集中管理,ELK即实现了这样的功能,它的整体组成部分如下:

  1. Elasticsearch 它是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能
  2. Logstash 是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch
  3. Kibana 是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据

一、部署elasticsearch

下载安装:
rpm -ivh elasticsearch-7.6.1.rpm	     %7.6版本自带jdk,如果下载其它版本需要先安装jdk

修改配置文件:
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-es			    %集群名称
node.name: server1			     %主机名需要解析
path.data: /var/lib/elasticsearch	%数据目录
path.logs: /var/log/elasticsearch	%日志目录
bootstrap.memory_lock: true	       %锁定内存分配(默认锁定1G内存,即保证该程序有1G的运行内存,因此主机内存越大越好)
network.host: 172.25.0.1		   %主机ip
http.port: 9200			      %http服务端口
discovery.seed_hosts: [“server1“,……]      %指定集群中的主节点
cluster.initial_master_nodes: [“server1“,…..]       %指定集群引导时的初始主节点

修改系统限制:
vim /etc/security/limits.conf
elasticsearch soft memlock unlimited          %表示系统对memlock没有限制,让系统自己锁定
elasticsearch hard memlock unlimited
elasticsearch 	   - 	nofile 	65536         %最大内存
elasticsearch	   -	nproc 	4096          %开启的线程数

修改systemd启动文件:
vim /usr/lib/systemd/system/elasticsearch.service
[Service]		                    %在service语句块下添加
LimitMEMLOCK=infinity

systemctl daemon-reload
systemctl start elasticsearch

es如何可视化_数据


es如何可视化_linux_02


es如何可视化_数据_03


es如何可视化_linux_04


es如何可视化_es如何可视化_05


es如何可视化_linux_06


es如何可视化_elk_07

再开启两个节点,创建集群:
server2和server3上做同样的配置,只需将/etc/elasticsearch/elasticsearch.yml中的域名和ip修改为自己对应的即可,能访问到下述页面表示部署成功

es如何可视化_linux_08

二、添加可视化界面

我们为elasticsearch添加elasticsearch-head插件来为其创建可视化界面

只需在server1上部署:
1、更换npm源安装(使用国内的镜像源)
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm   -v

2、下载elasticsearch-head插件
unzip elasticsearch-head-master.zip
[root@server1 7.6]# cd elasticsearch-head-master/
[root@server1 elasticsearch-head-master]# yum install -y bzip2
[root@server1 elasticsearch-head-master]# cnpm install
✔ Installed 10 packages
✔ Linked 0 latest versions
✔ Run 0 scripts
✔ All packages installed (used 19ms(network 16ms), speed 0B/s, json 0(0B), tarball 0B)

3、安装nodejs
rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm

4、修改ES主机ip
[root@server1 elasticsearch-head-master]# cd _site/
[root@server1 _site]# vim app.js     %/9200过滤,然后将ip改为本机ip172.25.0.1
[root@server1 _site]# cd ..
[root@server1 elasticsearch-head-master]# pwd
/root/7.6/elasticsearch-head-master
[root@server1 elasticsearch-head-master]# cnpm run start &     %启动head插件
[1] 3740
[root@server1 elasticsearch-head-master]# 
> elasticsearch-head@0.0.0 start /root/7.6/elasticsearch-head-master
> grunt server

(node:3766) ExperimentalWarning: The http2 module is an experimental API.
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
[root@server1 ~]# cd /etc/elasticsearch/
[root@server1 elasticsearch]# ls
elasticsearch.keystore  jvm.options        role_mapping.yml  users
elasticsearch.yml       log4j2.properties  roles.yml         users_roles
[root@server1 elasticsearch]# vim elasticsearch.yml    %修改ES跨域支持
http.cors.enabled: true	        % 是否支持跨域
http.cors.allow-origin: "*"	% *表示支持所有域名
[root@server1 elasticsearch]# systemctl restart elasticsearch.service        %重启ES服务

es如何可视化_elasticsearch_09


es如何可视化_elasticsearch_10


es如何可视化_elasticsearch_11


es如何可视化_数据_12


es如何可视化_linux_13


es如何可视化_elasticsearch_14


es如何可视化_elk_15

添加索引,查看ES状态
灰色表示没有副本
黄色代表没有主分片丢失

es如何可视化_elasticsearch_16


es如何可视化_elk_17


es如何可视化_es如何可视化_18


重启server2上的es服务,分片即可恢复

三、elasticsearch节点角色

  1. Master: 主要负责集群中索引的创建、删除以及数据的Rebalance等操作。Master不负责数据的索引和检索,所以负载较轻。当Master节点失联或者挂掉的时候,ES集群会自动从其他Master节点选举出一个Leader。
  2. Data Node: 主要负责集群中数据的索引和检索,一般压力比较大。
  3. Coordinating Node: 原来的Client node的,主要功能是来分发请求和合并结果的。所有节点默认就是Coordinating node,且不能关闭该属性。
  4. Ingest Node: 专门对索引的文档做预处理
  • 在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题。
  • 默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,也都存储数据,还可以提供查询服务。
  • 节点角色是由以下属性控制:
  • node.master: false|true 这个属性表示节点是否具有成为主节点的资格 注意:此属性的值为true,并不意味着这个节点就是主节点。 因为真正的主节点,是由多个具有主节点资格的节点进行选举产生的。
  • node.data: true|false 这个属性表示节点是否存储数据。
  • node.ingest: true|false 是否对文档进行预处理。
  • search.remote.connect: true|false 是否禁用跨集群查询
    默认情况下这些属性的值都是true。
示例:
vim elasticsearch.yml 
systemctl restart elasticsearch.service

es如何可视化_es如何可视化_19

注意:因为之前我们在server1上存有数据,因此在做上述更改前需要先使用指定命令来对数据清除,否则无法启动服务

es如何可视化_linux_20


es如何可视化_linux_21


es如何可视化_数据_22

四、logstash部署

  1. Logstash是一个开源的服务器端数据处理管道。
  2. logstash拥有200多个插件,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多都是 Elasticsearch。)
  3. Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。
  • 输入:采集各种样式、大小和来源的数据
  • Logstash 支持各种输入选择 ,同时从众多常用来源捕捉事件。
  • 能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
  • 输出:选择您的存储库,导出您的数据
  • 尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。
  • Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。
yum search openjdk
yum install -y java-11-openjdk.x86_64       %安装jdk
rpm -ivh logstash-7.6.1.rpm        %安装logstash
cd /etc/elasticsearch/
vim elasticsearch.yml     %禁用内存锁
systemctl restart elasticsearch.service     %重启服务
/usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'     %标准输入到标准输出

标准输入到文件:
cd /etc/logstash/conf.d/
vim demo.conf       
input {
        stdin { }
}
output {
        file {
                path => "/tmp/demo"        	%输出的文件路径
                codec => line { format => "custom format: %{message}"}	  %定制数据格式
        }
}
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/demo.conf     %指定配置文件运行
cd /tmp/
cat demo         %查看输出

标准输入到es主机:
cd -
vim demo.conf          
input {
       file {
                path => "/var/log/messages"        	%输入的文件路径
                start_position => "beginning"          %起始位置
        }
}
output {
        elasticsearch {
                hosts => "172.25.0.1:9200"           %输出到的ES主机与端口
                index => "syslog-%{+YYYY.MM.dd}"          %定制索引名称
        }
}
 
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/demo.conf   %指定配置文件运行

es如何可视化_elk_23


es如何可视化_elasticsearch_24


es如何可视化_es如何可视化_25


es如何可视化_elk_26


es如何可视化_elk_27


es如何可视化_数据_28


es如何可视化_es如何可视化_29


es如何可视化_数据_30


es如何可视化_elk_31


es如何可视化_elasticsearch_32


es如何可视化_elasticsearch_33


es如何可视化_数据_34