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

ELK实时日志分析--elasticsearch,logstash

ELK实时日志分析--elasticsearch,logstash

目录
    • 一.elasticsearch简介及安装配置
        • 1.什么是elasticsearch
        • 2.elasticsearch安装与配置
        • 3.elasticsearch插件安装
        • 4.elasticsearch节点优化:
    • 二. logstash数据采集
        • 1.logstash简介
        • 2.Logstash安装与配置
        • 3.标准输入到标准输出
        • 4.标准输入到文件
        • 5.Syslog输入插件
        • 6.搭建apache

一.elasticsearch简介及安装配置 1.什么是elasticsearch

Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全
• Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎库 Apache Lucene基础之上。
• 一个分布式的实时文档存储,每个字段 可以被索引与搜索
• 一个分布式实时分析搜索引擎
• 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

基础模块:
• cluster:管理集群状态,维护集群层面的配置信息。
• alloction:封装了分片分配相关的功能和策略。
• discovery:发现集群中的节点,以及选举主节点。
• gateway:对收到master广播下来的集群状态数据的持久化存储。
• indices:管理全局级的索引设置。
• http:允许通过JSON over HTTP的方式访问ES的API。
• transport:用于集群内节点之间的内部通信。
• engine:封装了对Lucene的操作及translog的调用。

2.elasticsearch安装与配置

准备三台虚拟主机:vm1,vm2,vm3
先在vm1上下载安装,并开启服务:

lftp 172.25.254.250
/> cd pub/docs/elk/7.6
> get elasticsearch-7.6.1-x86_64.rpm
> exit
ls
rpm -ivh elasticsearch-7.6.1-x86_64.rpm
 systemctl start elasticsearch.service

查看日志和端口:

cat /var/log/elasticsearch/elasticsearch.log


此时只有自身能访问9200端口,别人不能访问,因此要在配置文件中作修改:

cd /etc/elasticsearch/
ls
free -m
vim elasticsearch.yml

此时重启服务仍然报错,则要在elasticsearch.service文件中添加

vim /usr/lib/systemd/system/elasticsearch.service
vim /etc/security/limits.conf



因为swap为共享磁盘,防止elk在抽取空间时抽到swap,则需要将其关掉:

swapoff -a
vim /etc/fstab   #注释swap行,取消自动挂载
cd /proc/sys/vm/
cat swappiness      #30
echo 1 > swappiness
systemctl restart elasticsearch.service  #重启服务
netstat -antlp    #查看端口



配置vm2,vm3;

scp elasticsearch-7.6.1-x86_64.rpm vm2:
scp elasticsearch-7.6.1-x86_64.rpm vm3:
cd /etc/elasticsearch/
scp elasticsearch.yml vm2:/etc/elasticsearch/
scp elasticsearch.yml vm3:/etc/elasticsearch/
scp /etc/security/limits.conf vm2:/etc/security/limits.conf
scp /etc/security/limits.conf vm3:/etc/security/limits.conf
scp /usr/lib/systemd/system/elasticsearch.service vm2:/usr/lib/systemd/system
scp /usr/lib/systemd/system/elasticsearch.service vm3:/usr/lib/systemd/system

vm2:

 yum install -y elasticsearch-7.6.1-x86_64.rpm
 cd /etc/elasticsearch/
 ll
  vim elasticsearch.yml
  ///
  node.name: vm2
  ///



vm3作修改,启动服务:


vm1:

ssh vm2 swapoff -a
ssh vm3 swapoff -a

vm2和vm3:查看:

vim /etc/fstab   #注释swap行,取消自动挂载
swapoff -a

vm1设置开机自启

systemctl enable --now elasticsearch.service 
ssh vm2  systemctl enable --now elasticsearch.service
ssh vm3  systemctl enable --now elasticsearch.service


curl 172.25.101.4:9200

在真机下载cerebro软件包:
podman load -i cerebro.tar #安装
podman run -d --name cerebro -p 9000:9000 lmenezes/cerebro
podman ps

浏览器:172.25.101.4:9200
登陆地址:https://172.25.101.4:9200

3.elasticsearch插件安装
npm install -g cnpm --registry=https://registry.npm.taobao.org

lftp 172.25.254.250
/> cd pub/docs/elk/7.6/
> get elasticsearch-head-master.zip
> cd pub/docs/elk/6.6/
> get nodejs-9.11.2-1nodesource.x86_64.rpm      
> exit
yum install unzip -y
unzip elasticsearch-head-master.zip
rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm             head插件本质上是一个nodejs的工程,因此需要安装node
cd elasticsearch-head-master/
cnpm install


报错,安装bzip2:


重新安装:

cnpm install

curl  localhost:9200
cnpm run start &   #启动服务并打入后台

vim /etc/elasticsearch/elasticsearch.yml 
///
http.cors.enabled: true
http.cors.allow-origin: "*"
///
systemctl restart elasticsearch.service
curl localhost:9200
systemctl daemon-reload


浏览器:172.25.101.4:9100

4.elasticsearch节点优化:
• Master:
• 主要负责集群中索引的创建、删除以及数据的Rebalance等操作。
Master不负责数据的索引和检索,所以负载较轻。当Master节点失联或
者挂掉的时候,ES集群会自动从其他Master节点选举出一个Leader。
• Data Node:
• 主要负责集群中数据的索引和检索,一般压力比较大。
• Ingest Node:
• 专门对索引的文档做预处理

添加节点索引:
vm1:

vim /etc/elasticsearch/elasticsearch.yml
node.name: vm1
node.master: true
node.data: false
node.ingest: true
node.ml: false
///
systemctl restart elasticsearch.service

此时重启服务报错,需要做数据迁移:

cd /usr/share/elasticsearch/bin/
./elasticsearch-node repurpose

vm2,vm3:

vim elasticsearch.yml
node.master: true
node.data: true
node.ingest: true
node.ml: false

systemctl restart elasticsearch.service

在浏览器上:Any Request --> index/zjl(自定义) -->
输入:{"query" : "zjl"} --> request
然后在Overview中查看是否添加成功:


二. logstash数据采集 1.logstash简介
• Logstash是一个开源的服务器端数据处理管道。
• logstash拥有200多个插件,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多都是 Elasticsearch。)
• Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。

• 输入:采集各种样式、大小和来源的数据
	• Logstash 支持各种输入选择 ,同时从众多常用来源捕捉事件。
	• 能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

• 过滤器:实时解析和转换数据
	• 数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。
	• 利用 Grok 从非结构化数据中派生出结构
	• 从 IP 地址破译出地理坐标
	• 将 PII 数据匿名化,完全排除敏感字段
	• 简化整体处理,不受数据源、格式或架构的影响

• 输出:选择您的存储库,导出您的数据
	• 尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。
	• Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。
2.Logstash安装与配置

现在三台机子上注释掉bootstrap.memory_lock: true,然后分别重启服务:

vm1,vm2,vm3:
vim elasticsearch.yml
///
#bootstrap.memory_lock: true
///
systemctl restart elasticsearch.service

重新开一台机子vm4,在vm4上下载安装jdk和logstash插件:

lftp 172.25.254.250

/> cd pub/docs/lamp/
> get jdk-8u121-linux-x64.rpm
> cd ..
> cd elk/7.6/
> ls
> get logstash-7.6.1.rpm
>exit 


rpm -ivh jdk-8u121-linux-x64.rpm logstash-7.6.1.rpm

3.标准输入到标准输出

执行:
/usr/share/logstash/bin/logstash -e ‘input { stdin { } } > output { stdout {} }’
hello world

4.标准输入到文件
vim /etc/logstash/conf.d/test.conf
///

input {
	stdin { }
}

output {
    stdout { }
file {
            path => "/tmp/logstash.txt"
            codec => line { format => "custom format: %{messages}"}
    }

}


/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf   #指定配置文件运行

[INFO ] 2021-09-29 16:07:49.466 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
hello world
[INFO ] 2021-09-29 16:08:07.842 [[main]>worker1] file - Opening file {:path=>"/tmp/logstash.txt"}
12345
^c
 cat /tmp/logstash.txt


vim /etc/logstash/conf.d/test.conf
///
input {
    	stdin { }
   		#file {
   		#       path => "/var/log/messages"
    	#       start_position => "beginning"
    	#}
}

output {
    	stdout { }
   		#file {
    	#       path => "/tmp/logstash.txt"
    	#       codec => line { format => "custom format: %{message}"}
    	#}
  		elasticsearch {
            	hosts => "172.25.101.4:9200"		#输出到的ES主机与端口
            	index => "logstash-%{+YYYY.MM.dd}"			#定制索引名称
                  	template_name => "system_template"
    	}

}
///

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf   #指定配置文件运行

在浏览器查看ES主机,可以浏览到数据: http://172.25.101.4:9100/
Elasticsearch http://172.25.101.4:9200/

5.Syslog输入插件
vim /etc/logstash/conf.d/test.conf 
///
 stdin { }
    	#file {
    	#       path => "/var/log/messages"
   		#       start_position => "beginning"
    	#}
   		syslog {}
///
vim /etc/rsyslog.conf	#配置客户端传入日志
///
*.*     @@172.25.101.7:514
///
systemctl restart rsyslog

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf    #指定文件运行

等待添加成功,查看端口:


netstat -antlp | grep :514

6.搭建apache
yum install httpd -y
systemctl start httpd
cp  /etc/logstash/conf.d/test.conf /etc/logstash/conf.d/apache.conf
vim /etc/logstash/conf.d/apache.conf
///
input {
    #stdin {}
    file {
            path => "/var/log/httpd/access_log"
            start_position => "beginning"

    }
    #syslog {}
}

filter {
    grok {
    match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    }
}
output {
    stdout {}

    elasticsearch {
            hosts => "172.25.101.4:9200"
            index => "apache-%{+YYYY.MM.dd}"
 	   }
}

///

cd /usr/share/logstash/data/plugins/inputs/file/
l.
cat .sincedb_452905a167cf4509fd08acb964fdb20c          ##显示内容:25860922 0 64768 58309 1632903880.48851 /var/log/messages
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/multiline.conf               #第二次执行时:需要删掉 /usr/share/logstash/data/plugins/inputs/file/里面的.sincedb_15940cad53dd1d99808eeaecd6f6ad3f 因为这个文件时命令的执行记录,如果不删掉,命令不能正常执行

在浏览器查看:

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

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

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