栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticStack运维必备技能

ElasticStack运维必备技能

一、背景介绍

首先,我们为什么要用这个产品呢?生产业务中必然会遇到大量业务日志需要分析,在日志量非常大的场景中,直接使用工具,如cat、grep、awk 就可以获得想要的信息,效率非常低,在这种情况下,如何快速搜索想要信息,如查询、排序、归档、展现等,开源实时日志分析ELK就可以很好的解决上面的场景问题。

二、为何使用Elasticsearch

Elasticsearch 很快。由于 Elasticsearch 是在 Lucene 基础上构建而成的,所以在全文本搜索方面表现十分出色。Elasticsearch 同时还是一个近实时的搜索平台,这意味着从文档索引操作到文档变为可搜索状态之间的延时很短,一般只有一秒。因此,Elasticsearch 非常适用于对时间有严苛要求的用例,例如安全分析和基础设施监测。

Elasticsearch 具有分布式的本质特征。Elasticsearch 中存储的文档分布在不同的容器中,这些容器称为分片,可以进行复制以提供数据冗余副本,以防发生硬件故障。Elasticsearch 的分布式特性使得它可以扩展至数百台(甚至数千台)服务器,并处理 PB 量级的数据。

Elasticsearch 包含一系列广泛的功能。除了速度、可扩展性和弹性等优势以外,Elasticsearch 还有大量强大的内置功能(例如数据汇总和索引生命周期管理),可以方便用户更加高效地存储和搜索数据。

Elastic Stack 简化了数据采集、可视化和报告过程。通过与 Beats 和 Logstash 进行集成,用户能够在向 Elasticsearch 中索引数据之前轻松地处理数据。同时,Kibana 不仅可针对 Elasticsearch 数据提供实时可视化,同时还提供 UI 以便用户快速访问应用程序性能监测 (APM)、日志和基础设施指标等数据。

收集-采集多种来源的日志数据
传输-能够稳定的把日志数据传输到中央系统
存储-如何存储日志数据
分析-可以支持 UI 分析
警告-能够提供错误报告,监控机制
ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。
应用程序搜索
网站搜索
企业搜索
日志处理和分析
基础设施指标和容器监测
应用程序性能监测
地理空间数据分析和可视化
安全分析
业务分析

三、ELK介绍和Elastic Stack的由来

那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
Elastic Stack 是 ELK Stack 的更新换代产品。

2015 年,我们向 ELK Stack 中加入了一系列轻量型的单一功能数据采集器,并把它们叫做 Beats。之后ELK 多了一个新成员,并改名为 Elastic Stack

  • Elasticsearch 基于java开发,是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能,提供索引自动分片,索引副本机制,restful风格接口,支持多数据源导入
  • Logstash 基于java开发,主要是用来日志的搜集、分析、存储日志的工具,支持大量的数据获取方式,c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去
  • Kibana 基于nodejs开发,也是一个开源和免费的工具,配合Elasticsearch和Logstash,提供web展示界面
    Beats 是elastic公司开发的采集系统监控数的代理agent,运行在被采集的机器中,把数据直接或者经过Logstash发送给Elasticsearch,进行后续的数据分析,在没Beats出现前,数据采集是由Logstash进行获取的

Beats子项
1)Packetbeat:是一个网络数据包分析器,用户监控和收集网络流量信息
2)Filebeat:用于监控和收集服务器日志文件,已取代Logstash forwarder
3)Metricbeat:定期获取外部系统的监控指标信息,如Apache HAProxy、Mysql、Nginx、redis等等
4)Winlogbeat:用户收集和监控windows系统的日志信息

四、工作原理

原始数据会从多个来源(包括日志、系统指标和网络应用程序)输入到 Elasticsearch 中。数据采集指在 Elasticsearch 中进行索引之前解析、标准化并充实这些原始数据的过程。这些数据在 Elasticsearch 中索引完成之后,用户便可针对他们的数据运行复杂的查询,并使用聚合来检索自身数据的复杂汇总。在 Kibana 中,用户可以基于自己的数据创建强大的可视化,分享仪表板,并对 Elastic Stack 进行管理。

数据处理流程:
数据由Beats采集后,可以选择直接推送给Elasticsearch检索,或者先发送给Logstash处理,再推送给Elasticsearch,最后都通过Kibana进行数据可视化的展示

五、Elastic Stack平台搭建 5.1 环境准备

1)系统环境

IP地址主机名系统版本cpu内存配置磁盘
47.98.187.230xiyu_mastercentos7.8_x6422G40G

说明:
1、 关闭防火墙和selinux
#systemctl stop firewalld.service
#setenforce 0
2、 host绑定
#47.98.187.230 xiyu_master
3、 yum源配置
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2)软件环境

软件名称版本
jdkjdk-8u211-linux-x64.rpm
elasticsearchelasticsearch-7.15.2-linux-x86_64.tar.gz
elasticsearch-head
logstashlogstash-7.15.2-linux-x86_64.tar.gz
kibanakibana-7.15.2-linux-x86_64.tar.gz

注:由于ELK 5.0之前版本管理比较混乱,所有组件没有统一版本,而Elastic Stack版本之后,进行了统一,本次实践版本均采用7.15.2

5.2 Elasticsearch部署 5.2.1 安装elasticsearch前准备

1)在机器中创建用户

#useradd elsearch

2)创建/home/elsearch/es/目录

#mkdir -p /home/elsearch/es
#chown elsearch:elsearch /home/elsearch

3)将elasticsearch-7.15.2-linux-x86_64.tar.gz上传至es目录(elsearch用户操作)

4)解压tar包(elsearch用户操作)

#tar -zxvf elasticsearch-7.15.2-linux-x86_64.tar.gz

5.2.2 修改elasticsearch配置文件

1) 备份elasticsearch/elasticsearch.yml文件(elsearch用户操作)

#cp elasticsearch.yml elasticsearch.yml.bak

2) 修改vim elasticsearch.yml文件(elsearch用户操作)

network.host 0.0.0.0 #更改ip地址为0.0.0.0,允许任意网络访问
node.name: xiyu_master #添加本机在集群内的节点名称
cluster.initial_master_nodes: [“node-1”] 将注释删除,node-2去掉即可

3) 修改vim config/jvm.options #可根据自己情况修改(elsearch用户操作)

-Xms128m (默认2g且注释状态)
-Xmx128m (默认2g且注释状态)

4) 一个进程在VMAs(虚拟内存区域)创建内存映射最大数量),用户需要手动添加(root用户操作)

vim /etc/sysctl.conf
vm.max_map_count=655360

使配置生效(root用户操作)

sysctl - p

说明:如果network.host不是localhost或者127.0.0.1的话,程序会默认是生产环境,对配置要求较高,因为需要做3)和4)的修改

5.2.4 启动Elasticserch服务

1)进入bin目录下,执行./elasticsearch启动服务

[elsearch@xiyu_master bin]$ ./elasticsearch

通过浏览器访问elasticsearch端口

http://47.98.187.230:9200/.

5.2.5 安装elasticsearch插件head

我们不可能经常通过命令来查看集群的信息,由于官方没有提供ES的界面管理平台或者官方提供的都是收费的,所以我们就使用到了第三方插件 –head,对elasticsearch集群的状态监控与管理配置等功能。head主要用来做集群管理的插件。
下载地址:https://github.com/mobz/elasticsearch-head

5.2.5.1 Elasticsearch head 提供的主要功能

ClusterOverview,它显示集群的拓扑,并允许您执行索引和节点级别的操作
几个搜索界面,使您可以查询集群以原始json或表格格式检索结果
几个快速访问选项卡,显示集群的状态
输入部分,允许对RESTful API进行任意调用。该界面包括几个选项,可以组合使用以产生有趣的结果。
选择请求方法(获取,放置,发布,删除),json查询数据,节点和路径
JSON验证器
能够在计时器上重复请求
能够使用javascript表达式转换结果
能够随时间(使用计时器)收集结果或比较结果
能够以简单的条形图(包括时间序列)绘制转换结果的图表

5.2.5.2 Elasticsearch head安装方法
  • 通过docker安装(推荐)
  • 通过chrome插件安装(推荐)
  • 通过ES的plugin方式安装(不推荐)
  • 源码安装,通过npm run start (不推荐)
5.2.5.3 head安装方法 - docker

#拉取镜像
docker pull mobz/elasticsearch-head:5
#创建容器
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
#启动容器
docker start elasticsearch-head

5.2.5.4 head安装方法 - chrome插件

下载地址:https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm

5.2.5.5 head安装方法 - plugin 5.2.5.6 head安装方法 - 源码

1) 安装npm和git

[root@xiyu-1 ~]# yum -y install npm git

2) 安装elasticsearch-head插件

[root@xiyu-1 ~]# cd /usr/local/src/
[root@xiyu-1 src]# git clone git://github.com/mobz/elasticsearch-head.git
[root@xiyu-1 src]# cd elasticsearch-head/
[root@xiyu-1 elasticsearch-head]# npm install grunt -save --registry=https://registry.npm.taobao.org
[root@xiyu-1 elasticsearch-head]# ll node_modules/grunt #确定该目录有生成文件
总用量 24
drwxr-xr-x. 2 root root 19 4月 6 2016 bin
-rw-r–r--. 1 root root 7111 4月 6 2016 CHANGELOG
drwxr-xr-x. 4 root root 47 7月 4 09:21 lib
-rw-r–r--. 1 root root 1592 3月 23 2016 LICENSE
drwxr-xr-x. 5 root root 50 7月 4 09:21 node_modules
-rw-r–r--. 1 root root 4108 7月 4 09:21 package.json
-rw-r–r--. 1 root root 878 2月 12 2016 README.md
[root@xiyu-1 elasticsearch-head]# npm install --registry=https://registry.npm.taobao.org #执行安装
[root@xiyu-1 elasticsearch-head]# npm run start & #后台启动服务
[root@xiyu-1]# ss -nlt |grep 9100
LISTEN 0 128 *:9100 :

#------------------------补充说明------------------------
由于上面npm安装时候超级慢,使用taobao源同样慢,这里将已安装的打成了包,可以直接下载使用即可
下载地址:https://pan.baidu.com/s/16zDlecKVfmkEeInPcRx9NQ 提取码:h890

[root@xiyu-1 ~]# yum -y install npm
[root@xiyu-1 ~]# cd /usr/local/src/
[root@xiyu-1 src]# ls
elasticsearch-head.tar.gz
[root@xiyu-1 src]# tar xvzf elasticsearch-head.tar.gz
[root@xiyu-1 src]# cd elasticsearch-head/
[root@xiyu-1 elasticsearch-head]# npm run start &
#--------------------------------------------------------

#备注:在运行npm时,需要进入/usr/local/sec/elasticsearch-head目录中
#修改elasticsearch服务配置文件,开启跨域访问支持,然后重启elasticsearch服务
[root@xiyu-1 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true #最下方添加
http.cors.allow-origin: “*”

3) 为了方便管理elasticsearch-head插件,编写一个启动脚本

[root@xiyu-1 ~]# vim /usr/bin/elasticsearch-head
#!/bin/bash
#desc: elasticsearch-head service manager
#date: 2019
data="cd /usr/local/src/elasticsearch-head/; nohup npm run start > /dev/null 2>&1 & "
function START (){
eval $data && echo -e “elasticsearch-head start33[32m ok33[0m”
}
function STOP (){
ps -ef |grep grunt |grep -v “grep” |awk ‘{print $2}’ |xargs kill -s 9 > /dev/null && echo -e “elasticsearch-head stop33[32m ok33[0m”
}
case “$1” in
start)
START
;;
stop)
STOP
;;
restart)
STOP
sleep 3
START
;;
*)
echo “Usage: elasticsearch-head (start|stop|restart)”
;;
esac

[root@xiyu-1 ~]# chmod +x /usr/bin/elasticsearch-head

5.2.5.7 elasticsearch-head测试

1)浏览器访问9100端口,将连接地址修改为elasticsearch地址。

2)测试提交数据

3)验证索引是否存在

4)查看数据

5)Master和Slave的区别

Master的职责:统计各node节点状态信息、集群状态信息统计、索引的创建和删除、索引分配的管理、关闭node节点等

Savle的职责:同步数据、等待机会称为Master

[root@xiyu-1 elk]# #rpm -qa |grep jdk |xargs yum -y remove {};
[root@xiyu-1 elk]# #yum -y localinstall jdk-8u211-linux-x64.rpm
[root@xiyu-1 elk]# java -version
java version “1.8.0_211”
Java™ SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot™ 64-Bit Server VM (build 25.211-b12, mixed mode)

5.3 Logstash部署

Logstash 的用途是什么?
Logstash 是 Elastic Stack 的核心产品之一,可用来对数据进行聚合和处理,并将数据发送到 Elasticsearch。Logstash 是一个开源的服务器端数据处理管道,允许您在将数据索引到 Elasticsearch 之前同时从多个来源采集数据,并对数据进行充实和转换。
参考:https://www.elastic.co/cn/what-is/elasticsearch

  1. 安装logstash
    [root@xiyu-1 ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.8.1.rpm
    [root@xiyu-1 ~]# yum -y localinstall logstash-6.8.1.rpm
  2. 测试logstash
    1)测试标准输入输出
    [root@xiyu-1 ~]# /usr/share/logstash/bin/logstash -e ‘input { stdin {} } output { stdout { codec => rubydebug} }’
    hello world #输入

{
“@version” => “1”, #事件版本号,一个事件就是一个ruby对象
“@timestamp” => 2019-07-04T04:30:35.106Z, #当前事件发生的事件
“host” => “xiyu-1.exmaple.com”, #标记事件发生在哪里
“message” => “hello world” #消息的具体内容
}
2)测试输出到文件
[root@xiyu-1 ~]# /usr/share/logstash/bin/logstash -e ‘input { stdin{} } output { file { path => “/tmp/log-%{+YYYY.MM.dd}messages.gz”}}’
hello world #输入
[INFO ] 2019-07-04 17:33:06.065 [[main]>worker0] file - Opening file {:path=>"/tmp/log-2019.07.04messages.gz"}
[root@xiyu-1 ~]# tail /tmp/log-2019.07.04messages.gz
{“message”:“hello world”,"@version":“1”,“host”:“xiyu-1.exmaple.com”,"@timestamp":“2019-07-04T09:33:05.698Z”}
3)测试输出到elasticsearch
[root@xiyu-1 ~]# /usr/share/logstash/bin/logstash -e ‘input { stdin{} } output { elasticsearch {hosts => [“172.16.132.154:9200”] index => “mytest-%{+YYYY.MM.dd}” }}’
4)elasticsearch服务器验证收到数据
[root@xiyu-1 ~]# ll /elk/data/nodes/0/indices/
总用量 0
drwxr-xr-x. 8 elasticsearch elasticsearch 65 7月 4 17:23 4jaihRq6Qu6NQWVxbuRQZg
drwxr-xr-x. 8 elasticsearch elasticsearch 65 7月 4 17:22 kkd_RCldSeaCX3y1XKzdgA

5.4 kibana部署

Kibana 的用途是什么?
Kibana 是一款适用于 Elasticsearch 的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。Kibana 同时还包括诸如 Canvas 和 Elastic Maps 等高级应用程序;Canvas 允许用户基于自身数据创建定制的动态信息图表,而 Elastic Maps 则可用来对地理空间数据进行可视化。
参考:https://www.elastic.co/cn/what-is/elasticsearch

  1. 安装Kibana
    [root@xiyu-1 ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.8.1-x86_64.rpm
    [root@xiyu-1 ~]# yum -y localinstall kibana-6.8.1-x86_64.rpm
    [root@xiyu-1 ~]# vim /etc/kibana/kibana.yml
    [root@xiyu-1 ~]# grep 1 /etc/kibana/kibana.yml
    server.port: 5601 #监听端口
    server.host: “172.16.132.154” #监听地址
    elasticsearch.hosts: [“http://172.16.132.154:9200”] #elasticsearch服务器地址
    i18n.locale: “zh-CN” #修改为中文

  2. 启动kibana并验证

[root@xiyu-1 ~]# systemctl start kibana
[root@xiyu-1 ~]# systemctl enable kibana
[root@xiyu-1 ~]# ss -nlt |grep 5601
LISTEN 0 128 172.16.132.154:5601 :

查看状态

通过logstash收集系统message日志
说明:通过logstash收集别的日志文件,前提需要logstash用户对被收集的日志文件有读的权限并对写入的文件有写的权限
1)配置logstash配置文件

[root@xiyu-1 ~]# vim /etc/logstash/conf.d/system-log.conf
input {
file {
path => “/var/log/messages” #日志路径
type => “systemlog” #类型,自定义,在进行多个日志收集存储时可以通过该项进行判断输出
start_position => “beginning” #logstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有数据,把这个设定改成 “beginning”,logstash 进程就从头开始读取,类似 less +F 的形式运行。
stat_interval => “2” #logstash 每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒
}
}

output {
elasticsearch {
hosts => [“172.16.132.154:9200”] #elasticsearch服务器地址
index => “logstash-%{type}-%{+YYYY.MM.dd}” #索引名称
}
}

2)检测配置文件语法是否有错误
执行/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/system-log.conf -t 检查语法验证,或者下面的也可。
[root@xiyu-1 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system-log.conf -t #检测配置文件是否有语法错误
WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaults
Could not find log4j2 configuration at path /usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console
[WARN ] 2019-07-05 10:09:59.423 [LogStash::Runner] multilocal - Ignoring the ‘pipelines.yml’ file because modules or command line options are specified
Configuration OK
[INFO ] 2019-07-05 10:10:27.993 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

3)修改日志文件的权限并重启logstash

[root@xiyu-1 ~]# ll /var/log/messages
-rw-------. 1 root root 786219 7月 5 10:10 /var/log/messages
#这里可以看到该日志文件是600权限,而elasticsearch是运行在elasticsearch用户下,这样elasticsearch是无法收集日志的。所以这里需要更改日志的权限,否则会报权限拒绝的错误。在日志中查看/var/log/logstash/logstash-plain.log 是否有错误。
[root@xiyu-1 ~]# chmod 644 /var/log/messages
[root@xiyu-1 ~]# systemctl restart logstash

#cd /usr/share/logstash/bin #进入这个目录
执行#./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/system-log.conf

4)elasticsearch界面查看并查询

5)kibana界面创建索引并查看

Beats类别:
用来采集数据,分为日志文件(Filebeat)、服务指标(Metricbeat)、网络流量(Packetbeat)等等


  1. a-Z ↩︎

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号