当前位置: 首页 > article >正文

随记——ELK部署

ELK部署

  • 一、前期准备
  • 二、环境搭建
    • 1、安装es
      • 1. 下载解压
      • 2. 创建账号
      • 3. 服务启动与关闭
      • 4. 单机配置
      • 5. 集群部署
      • 6. 验证
      • 7. 安装分词器
    • 2、安装kibana
      • 1. 下载解压
      • 2. 创建账号
      • 3. 服务启动与关闭
      • 4. 配置
      • 5. 验证
    • 3、安装logstash
      • 1. 下载解压
      • 2. 配置
      • 3. 服务启动与关闭
    • 4、安装filebeats
      • 1. 下载解压
      • 2. 配置
      • 3. 服务启动与关闭
  • 三、索引配置
  • 四、定时删除索引

一、前期准备

下载安装包:elasticsearch、kibana、logstash、filebeat 注意版本要一致,这里用的是7.13.4

es下载地址:https://www.elastic.co/cn/downloads/elasticsearch
这个地址可以下载所有软件,选择不同版本:https://www.elastic.co/cn/downloads/past-releases#elasticsearchhttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.13.4-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/kibana/kibana-7.13.4-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/logstash/logstash-7.13.4-linux-x86_64.tar.gz

注意防火墙,测试环境可以关闭防火墙,生产可以选择放开相应端口

二、环境搭建

1、安装es

1. 下载解压

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gztar -xzvf elasticsearch-7.13.4-linux-x86_64.tar.gz

2. 创建账号

#es不能使用root用户启动,所以需要创建用户
#创建账户
useradd elastic
#设置密码
passwd elastic
#给账户赋予目录权限
chown -R elastic:elastic {{espath}}
#切换用户
su elastic

3. 服务启动与关闭

# 前台进程
./bin/elasticsearch
# 后台启动 守护进程
./bin/elasticsearch -d#关闭服务只能直接杀掉进程
ps -ef | grep elastic
kill -9 进程id

4. 单机配置

#修改config/elasticsearch.yml文件
#指定数据存储目录
path.data: /path/to/data
#指定日志存储目录
path.logs: /path/to/logs
#节点对外提供服务的地址以及集群内通信的ip地址,写服务器ip地址即可
network.host: ***.***.***.***
# 初始主节点列表,单机部署写一个就行
cluster.initial_master_nodes: ["node-1"]

5. 集群部署

配置描述

  • cluster.name:集群名称,节点根据集群名称确定是否是同一个集群。
  • node.name:节点名称,集群内唯一。
  • node.roles:[ data, master, voting_only ],node.roles配置项如果没有显式的配置,那么当前节点拥有所有角色(master、data、ingest、ml、remote_cluster_client、transform)。如果你放开了注释,或者手动显式添加了 node.roles配置项,那么当前节点仅拥有此配置项的中括号中显式配置的角色,没有配置的角色将被阉割。因此如果在不熟悉角色配置的情况下,不要轻易修改角色配置值, 切勿画蛇添足
  • network.host: 节点对外提供服务的地址以及集群内通信的ip地址
  • bootstrap.memory_lock: Swapping对性能和节点稳定性非常不利,应该不惜一切代价避免。它可能导致GC持续几分钟而不是几毫秒,并且可能导致节点响应缓慢甚至与集群断开连接。在弹性分布式系统中,使用Swap还不如让操作系统杀死节点效果更好。可以通过设置 bootstrap.memory_lock: true 以防止任何 Elasticsearch 堆内存被换出。
  • http.port:对外提供服务的端口号
  • discovery.seed_hosts: 集群初始化的种子节点,可配置部分或全部候选节点,大型集群可通过嗅探器发现剩余节点,考试环境配置全部节点即可
  • cluster.initial_master_nodes:节点初始 active master节点, 必须是有master角色的节点,即必须是候选节点,但并不是必须配置所有候选节点。生产模式下启动新集群时,必须明确列出应在第一次选举中计算其选票的候选节点。第一次成功形成集群后,cluster.initial_master_nodes从每个节点的配置中删除设置。重新启动集群或向现有集群添加新节点时,请勿使用此设置。

node1

cluster.name: c1
node.name: node-1
node.roles: [master]
path.data: /path/to/data
path.logs: /path/to/logs
bootstrap.memory_lock: true
network.host: 192.168.3.181
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["192.168.3.181:9300", "192.168.3.182:9300","192.168.3.183:9300", "192.168.3.184:9300","192.168.3.185:9300"]
cluster.initial_master_nodes: ["node-1"]

node2

cluster.name: c1
node.name: node-2
node.roles: [master]
path.data: /path/to/data
path.logs: /path/to/logs
bootstrap.memory_lock: true
network.host: 192.168.3.181
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["192.168.3.181:9300", "192.168.3.182:9300","192.168.3.183:9300", "192.168.3.184:9300","192.168.3.185:9300"]
cluster.initial_master_nodes: ["node-1"]

node3

cluster.name: c1
node.name: node-3
node.roles: [master,data,voting_only]
path.data: /path/to/data
path.logs: /path/to/logs
bootstrap.memory_lock: true
network.host: 192.168.3.183
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["192.168.3.181:9300", "192.168.3.182:9300","192.168.3.183:9300", "192.168.3.184:9300","192.168.3.185:9300"]
cluster.initial_master_nodes: ["node-1"]

node4

cluster.name: c1
node.name: node-4
node.roles: [data]
path.data: /path/to/data
path.logs: /path/to/logs
bootstrap.memory_lock: true
network.host: 192.168.3.184
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["192.168.3.181:9300", "192.168.3.182:9300","192.168.3.183:9300", "192.168.3.184:9300","192.168.3.185:9300"]
cluster.initial_master_nodes: ["node-1"]

node5

cluster.name: c1
node.name: node-5
node.roles: [data]
path.data: /path/to/data
path.logs: /path/to/logs
bootstrap.memory_lock: true
network.host: 192.168.3.185
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["192.168.3.181:9300", "192.168.3.182:9300","192.168.3.183:9300", "192.168.3.184:9300","192.168.3.185:9300"]
cluster.initial_master_nodes: ["node-1"]

6. 验证

http://ip:9200

7. 安装分词器

  • 下载地址:(选择对应版本的分词器下载,直接下载zip即可)
    https://gitcode.net/mirrors/medcl/elasticsearch-analysis-ik/-/releases?spm=1033.2243.3001.5877

  • es安装目录中的plugins目录下新建目录ik,将下载的zip解压到新建目录下

  • 重启es,log中可以看到插件加载成功

  • 验证插件

#xshell中执行下面命令
#创建index结点
curl -XPUT http://localhost:9200/index
#创建mapping
curl -XPOST http://localhost:9200/index/_mapping -H 'Content-Type:application/json' -d'
{"properties": {"content": {"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_smart"}}}'
#推送中文内容
curl -XPOST http://localhost:9200/index/_create/1 -H 'Content-Type:application/json' -d'
{"content":"分词器测试"}
'curl -XPOST http://localhost:9200/index/_create/2 -H 'Content-Type:application/json' -d'
{"content":"分词器测试我是中文字符"}
'
#查询
curl -XPOST http://localhost:9200/index/_search  -H 'Content-Type:application/json' -d'
{"query" : { "match" : { "content" : "分词器" }},"highlight" : {"pre_tags" : ["<tag1>", "<tag2>"],"post_tags" : ["</tag1>", "</tag2>"],"fields" : {"content" : {}}}
}
'

2、安装kibana

1. 下载解压

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.13.4-linux-x86_64.tar.gztar -xzvf kibana-7.13.4-linux-x86_64.tar.gz

2. 创建账号

kibana也不能使用root账户启动,使用上面es创建的账户即可

3. 服务启动与关闭

# 前台进程
./bin/kibana
# 后台启动 守护进程
nohup ./bin/kibana &#关闭服务只能直接杀掉进程
ps -ef | grep kibana
kill -9 进程id

4. 配置

#修改config/kibana.yml
#服务ip
server.host: "***.***.***.***"
#es地址
elasticsearch.hosts: ["http://ip:port"]
#国际化,中文
i18n.locale: "zh-CN"

5. 验证

http://ip:5601/

3、安装logstash

1. 下载解压

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.13.4-linux-x86_64.tar.gztar -xzvf logstash-7.13.4-linux-x86_64.tar.gz

2. 配置

#修改logstash-sample.conf文件
#input是输入:stdin是从控制台输入,beats是从beats输入
#output 是输出:可以在beats中配置tags属性,在output中使用tags属性区分不同服务
input {#stdin{}beats {port => 5044}
}output {if "aaa" in [tags] {elasticsearch {hosts => ["http://esip:9200"]index => "aaa-%{+YYYY.MM.dd}" #user => "elastic"#password => "changeme"}}else if "bbb" in [tags] {elasticsearch {hosts => ["http://esip:9200"]index => "bbb-%{+YYYY.MM.dd}"}}else {elasticsearch {hosts => ["http://esip:9200"]index => "ccc-%{+YYYY.MM.dd}"}}
}

3. 服务启动与关闭

# 前台进程
./logstash -f ../pipeline/logstash-sample.conf
# 后台启动 守护进程
nohup ./logstash -f ../pipeline/logstash-sample.conf &#关闭服务只能直接杀掉进程
ps -ef | grep logstash
kill -9 进程id

4、安装filebeats

1. 下载解压

#哪台服务器需要采集日志,在哪台服务器安装
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.13.4-linux-x86_64.tar.gztar -xzvf filebeat-7.13.4-linux-x86_64.tar.gz

2. 配置

#修改filebeat.yml,一个filebeats可以同时采集多个文件,可以使用tags标记,也可以不标记
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/1.logtags: ["aaa"]#编码设置,elk默认使用utf-8编码,如果服务器是GB2312,这边需要配置,否则会中文乱码encoding: GB2312- type: logenabled: truepaths:- /var/log/2.logtags: ["bbb"]
#注意 默认是输出到es,这里要改成logstash
output.logstash:# The Logstash hostshosts: ["logstash-ip:5044"]

3. 服务启动与关闭

# 前台进程
./filebeat -e -c filebeat.yml
# 后台启动 守护进程
nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &#关闭服务只能直接杀掉进程
ps -ef | grep filebeat
kill -9 进程id

三、索引配置

  • 点击左侧菜单栏:home -> Stack Management -> 索引模式
  • 点击创建索引模式
  • 输入上面logstatus中创建的索引,如:aaa-*,如果elk部署成功可以查到索引,否则,检查日志文件中是否有数据,地址是否有访问权限,filebeat中配置的日志文件路径是否正确
  • 点击下一步即可创建出索引
  • 点击左侧菜单栏:home -> Discover,即可看到刚才的索引日志

四、定时删除索引

#新建文件delete_index.sh, 写入下面代码
#!/bin/bash#保留近 N 天
KEEP_DAYS=7# 删除前 N的所有天到 前N+10天==>每天执行
function get_todelete_days()
{# declare -A DAY_ARR# DAY_ARR=""for i in $(seq 1 10);doTHIS_DAY=$(date -d "$(($KEEP_DAYS+$i)) day ago" +%Y.%m.%d)DAY_ARR=( "${DAY_ARR[@]}" $THIS_DAY)doneecho ${DAY_ARR[*]}}# 返回数组的写法
TO_DELETE_DAYS=(`get_todelete_days`)for day in "${TO_DELETE_DAYS[@]}"
doecho "$day will be delete"   curl -XDELETE 'http://localhost:9200/*-'${day}
done
#新建定时任务
#执行
crontab -e
#写入定时任务
0 1 * * * sh /data/elk/delete_index.sh
http://www.lryc.cn/news/2417659.html

相关文章:

  • Linux whois命令教程:查询域名所有者信息(附案例详解和注意事项)
  • SqlServer数据库安装及使用(第一篇)
  • Arduino入门
  • (1-4)TensorFlow深度学习基础:TensorFlow开发流程
  • 【实践篇】手把手教你落地DDD
  • Swiper的安装及使用
  • JS中的Promise(秒懂如何使用promise进行异步操作)
  • SSH远程链接
  • JavaScript的简介及基本语法
  • jQuery(一)jQuery基本语法
  • Spark的概念、特点、应用场景
  • RabbitMQ介绍及部署(超详细讲解)
  • SQL Server详细使用教程:安装步骤、必备知识点与常见问题解析
  • 手把手教你安装CUDA(一看就会)
  • uni-app小程序开发实战 | (从零设计一款个人中心页面,最详细)
  • 狗都不学系列——虚拟机的基本使用
  • Transformer模型初解(非常详细)零基础入门到精通,收藏这一篇就够了
  • Canvas基础: fillStyle和strokeStyle示例
  • 密码学--md5加密
  • FileZilla工具的使用以及主动模式与被动模式
  • 快速了解Spring(超详细+干货满满)
  • 【TS】2134- 重新学习 TypeScript 类型系统
  • ce Cheat Engine 环境搭建
  • Nopepad++使用教程
  • 深入理解Electron一Electron架构介绍
  • Elasticsearch-基础介绍及索引原理分析
  • VMware16Pro虚拟机安装教程(超详细)
  • python下载安装教程电脑版,Python下载安装后找不到
  • 使用MobaXterm ssh免密远程连接虚拟机
  • WEPE系统安装纯净版window11教程(包含pe内系统安装方法)