- 一.elasticsearch简介及安装配置
- 1.什么是elasticsearch
- 2.elasticsearch安装与配置
- 3.elasticsearch插件安装
- 4.elasticsearch节点优化:
- 二. logstash数据采集
- 1.logstash简介
- 2.Logstash安装与配置
- 3.标准输入到标准输出
- 4.标准输入到文件
- 5.Syslog输入插件
- 6.搭建apache
Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全
• Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎库 Apache Lucene基础之上。
• 一个分布式的实时文档存储,每个字段 可以被索引与搜索
• 一个分布式实时分析搜索引擎
• 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
2.elasticsearch安装与配置基础模块:
• cluster:管理集群状态,维护集群层面的配置信息。
• alloction:封装了分片分配相关的功能和策略。
• discovery:发现集群中的节点,以及选举主节点。
• gateway:对收到master广播下来的集群状态数据的持久化存储。
• indices:管理全局级的索引设置。
• http:允许通过JSON over HTTP的方式访问ES的API。
• transport:用于集群内节点之间的内部通信。
• engine:封装了对Lucene的操作及translog的调用。
准备三台虚拟主机: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
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
• 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是一个开源的服务器端数据处理管道。 • 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.rpm3.标准输入到标准输出
执行:
/usr/share/logstash/bin/logstash -e ‘input { stdin { } } > output { stdout {} }’
hello world
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/
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
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 因为这个文件时命令的执行记录,如果不删掉,命令不能正常执行
在浏览器查看:



