ELK部署
一 Elasticsearch部署
单点部署
目录
配置输出 /usr/local/filebeat/filebeat.yml
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
1.下载压缩包
链接:https://pan.baidu.com/s/1SHBpnI3dmihYioWEW1zArg
提取码:mbk3
复制这段内容后打开百度网盘手机App,操作更方便哦
2.解压
tar -xf elasticsearch-7.10.0-linux-x86_64.tar.gz -C /usr/local/
3.目录介绍
4.运行
运行 Elasticsearch 要求使用非 root 用户,所以需要建立一个普通的用户来运行 Elasticsearch.
useradd ela
chown -R ela.ela /usr/local/elasticsearch-7.10.0
cd /usr/local/elasticsearch-7.10.0
./bin/elasticsearch
以后台方式运行可以使用 -d
参数
5.查看状态
集群部署
Elasticsearch 集群是一个多节点组成的高可用可扩展的分布式系统
1.在每个节点创建用户ela
useradd ela
2.在每个节点上解压到指定目录
tar -xf elasticsearch-7.10.0-linux-x86_64.tar.gz -C /usr/local/
3.在每个节点修改主目录的属主和目录
chown -R ela.ela /usr/local/elasticsearch-7.10.0
4.设置内核参数
sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf
sysctl -p
/etc/security/limits.conf 添加
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
5.设置节点集群参数
cluster.name: elk
node.name: ela1
node.data: true
network.host: 0.0.0.0
http.port: 9200discovery.seed_hosts:
- ela1
- 192.168.122.106:9300
- 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"]
参数说明
cluster.name 集群名称,各节点配成相同的集群名称。
node.name 节点名称,各节点配置不同。
node.data 指示节点是否为数据节点。数据节点包含并管理索引的一部分。
network.host 绑定节点IP。
http.port 监听端口。
path.data 数据存储目录。
path.logs 日志存储目录。
discovery.seed_hosts 指定集群成员,用于主动发现他们,所有成员都要写进来,包括自己,每个节点中应该写一样的信息。
cluster.initial_master_nodes 指定有资格成为 master 的节点
http.cors.enabled 用于允许head插件访问ES。
http.cors.allow-origin 允许的源地址。
6.启动集群
切换用户
su - ela
cd /usr/local/elasticsearch-7.10.0
./bin/elasticsearch -d -p /tmp/elasticsearch.pid
-d
后台运行-p
指定一个文件,用于存放进程的 pid
7.日志
ls logs/elk.log
8.查看集群健康状态
curl -X GET "localhost:9200/_cat/health?v"
- 黄色 如果您仅运行单个Elasticsearch实例,则集群状态将保持黄色。单
节点群集具有完整的功能,但是无法将数据复制到另一个节点以提供弹性。 - 绿色 副本分片必须可用,群集状态为绿色。
- 红色 如果群集状态为红色,则某些数据不可用。
9.查看集群节点信息
curl -X GET "localhost:9200/_cat/nodes?v"
排错
# 找到进程
[ela@ela1 elasticsearch-7.10.0]$ jdk/bin/jps
8244 Jps
7526 Elasticsearch# 杀死进程
[ela@ela1 elasticsearch-7.10.0]$ kill -9 7526# 删除数据目录中的所有文件
[ela@ela1 elasticsearch-7.10.0]$ rm -rf data/*# 删除 keystore 文件
[ela@ela1 elasticsearch-7.10.0]$ rm -rf config/elasticsearch.keystore# 重新启动进程
[ela@ela1 elasticsearch-7.10.0]$ bin/elasticsearch -d -p /tmp/elk.pid
二 部署Kibana
搜索,观察和保护。 从发现文档到分析日志再到发现安全漏洞,Kibana是您访问这些功能及其他功能的门户。
2 可视化和分析您的数据。 搜索隐藏的见解,可视化您在图表,仪表,地图等中找到的内容,并将其组合在仪表板中。
3 管理,监视和保护弹性堆栈。 管理索引和提取管道,监视Elastic Stack集群的运行状况,并控制哪些用户可以访问哪些功能。
部署
1.下载解压
链接:https://pan.baidu.com/s/14VNbDpsTkXjqwGSuNn9KKg
提取码:ir95
复制这段内容后打开百度网盘手机App,操作更方便哦
tar xzvf kibana-7.10.1-linux-x86_64.tar.gz -C /usr/local/
2.创建软连接
ln -s /usr/local/kibana-7.10.0-linux-x86_64 /usr/local/kibana
1.配置主配置文件
/usr/local/kibana/config/kibana.yml
# 监听端口,默认端口是 5601
server.port: 5601# 自己的监听地址
server.host: "0.0.0.0"# 用于连接到 ES 集群的地址和端口
elasticsearch.hosts: ["http://es01:9200"]# pid 文件路径(可选的配置)
pid.file: /var/run/kibana/kibana.pid# 日志文件路径(可选的配置),默认是输出到标准输出(也就是终端屏幕)
# logging.dest: stdout
logging.dest: /var/log/kibana/kibana.log# 设置页面的字体为中文
i18n.locale: "zh-CN"
2.创建普通用户 受权
useradd ela
mkdir /var/run/kibana /var/log/kibana/
chown ela.ela /var/run/kibana /var/log/kibana/
chown ela.ela kibana/ -R 安装目录授权
3.切换普通用户登录
/usr/local/kibana/bin/kibana
nohup /usr/local/kibana/bin/kibana & 后台运行
/usr/local/kibana/bin/kibana --allow-root 使用root登录
4.访问
http://ip:5601 登录
三 部署Filebeat
可以使用 Filebeat 收集各种日志,之后发送到指定的目标系统上,但是同一时间只能配置一个输出目标
Filebeat使用模块来收集和解析日志数据。
1.安装
链接:https://pan.baidu.com/s/1b6IuKRG7mEeNce0tFfJtYw
提取码:wpya
复制这段内容后打开百度网盘手机App,操作更方便哦
tar xzvf filebeat-7.10.1-linux-x86_64.tar.gz -C /usr/local/
2.查看可以启动模块
tar xzvf filebeat-7.10.1-linux-x86_64.tar.gz -C /usr/local/
模块存放位置 /usr/local/filebeat/modules.d/
3.禁用模块使用
/usr/local/filebeat/filebeat modules disable 模块名
4.启用模块使用如下命令:
/usr/local/filebeat/filebeat modules enable 模块名
配置输出 /usr/local/filebeat/filebeat.yml
这些 output
可以是:
console
终端屏幕elasticsearch
存放日志,并提供查询logstash
进一步对日志数据进行处理kafka
消息队列
5.启动
./filebeat 前台启动
./filebeat -c /usr/local/filebeat/filebeat.yml -c 自定4配置文件路径
nohup ./filebeat & 后台启动
systemd 启动
/usr/lib/systemd/system/filebeat.service
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Wants=network-online.target
After=network-online.target[Service]
ExecStart=/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml
Restart=always[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start filebeat
6.使用processors处理过滤和增添数据
配置文件 filebeat.yml
删除所有以 DBG:
开头的行
processors:
- drop_event:
when:
regexp:
message: "^DBG:"
向输出的数据中添加某些自定义字段
processors:
- add_fields:
target: project
fields:
name: myproject
id: '574734885120952459'
condition
是一个条件,当条件满足时,才会删除定义的字段。这个是可选的,不设置条件,则会都删除。
以上配置,将删除字段: field1
和 field2
ignore_missing
的值为 false
表示,字段名不存在则会返回错误。为 true
不会返回错误。
四 部署logstash
Logstash管道具有两个必需元素input和output,以及一个可选元素filter。输入插件使用来自源的数据,过滤器插件根据您的指定修改数据,输出插件将数据写入目标
1.安装
链接:https://pan.baidu.com/s/1waatYJKfImQfshPjhYIPeA
提取码:p1yv
复制这段内容后打开百度网盘手机App,操作更方便哦
2.启动
bin/logstash -e " "
-e '' 这里使用了空字符串等同于使用 -e input { stdin { type => stdin } } output { stdout { codec => rubydebug } }
input { stdin { type => stdin } } 表示 Logstash 需要处理的数据来源来自于标准输入设备(键盘)
output { stdout { codec => rubydebug } } 表示 Logstash 把处理好的数据输出到标准输出设备(屏幕,也就是终端)
message 字段对应的值是 Logstash 接收到的一行完整的数据
@version 是版本信息,可以用于建立索引使用(后面会讲)
@timestamp 处理此数据的时间戳,可以用于建立索引和搜索
type 就是之前 input 中设置的值,这个值可以任意修改,但是,type 是内置的变量,不能修改,用于建立索引和条件判断等
hosts 表示从那个主机过来的数据
3.配置输入和输出
first-pipeline.conf
input {
stdin { }
}output {
stdout {}
}
bin/logstash -f first-pipeline.conf --config.test_and_exit-f
用于指定管道配置文件。
4.使用Grok过滤器插件解析Web日志
使用grok过滤器插件,您可以将非结构化日志数据解析为结构化和可查询的内容。
grok 过滤插件,会根据你感兴趣的内容分配字段名称,并把这些内容和对应的字段名称进行绑定。
grok 如何知道哪些内容是你感兴趣的呢?它是通过自己预定义的模式来识别感兴趣的字段的
input {
file {
path => "/usr/local/logstash/access_log"
start_position => "beginning"
}
}filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}output {
stdout {
codec => rubydebug
}
}
match => { "message" => "%{COMBINEDAPACHELOG}"}
的意思是:
当匹配到 “message” 字段时,用户模式 “COMBINEDAPACHELOG}” 进行字段映射
remove_filed
来移除这个字段。
事实上 remove_field
可以移除任意的字段,它可以接收的值是一个数组。
input {
file {
path => "/usr/local/logstash/access_log"
start_position => "beginning"
}
}filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
remove_field => [ "message" ]
}
}output {
stdout { codec => rubydebug }
}
5.使用Geoip过滤器插件增强数据编辑
该geoip插件配置要求您指定包含IP地址来查找源字段的名称
input {
file {
path => "/usr/local/logstash/access_log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
geoip {
source => "clientip"
}
}
output {
stdout { codec => rubydebug }
}