ELK-7.3本地部署
一、简介
1、logstash
logstash是一个数据分析软件,主要目的是分析log日志。整一套软件可以当作一个MVC模型,logstash是controller层,Elasticsearch是一个model层,kibana是view层。首先将数据传给logstash,它将数据进行过滤和格式化(转成JSON格式),然后传给Elasticsearch进行存储、建搜索的索引,kibana提供前端的页面再进行搜索和图表可视化,它是调用Elasticsearch的接口返回的数据进行可视化。logstash和Elasticsearch是用Java写的,kibana使用node.js框架。
logstash架构
ogstash工作时,主要设置3个部分的工作属性。 input:设置数据来源 filter:可以对数据进行一定的加工处理过滤,但是不建议做复杂的处理逻辑。这个步骤不是必须的 output:设置输出目标
2、elasticsearch
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
3、kibana
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。
二、环境部署
1、部署规划
应用 | 版本 | 节点 |
---|---|---|
logstash | 7.3 | 192.168.11.11 |
elasticsearch | 7.3 | 192.168.11.11、192.168.11.12、192.168.11.13 |
kibana | 7.3 | 192.168.11.13 |
安装包下载地址:链接:https://pan.baidu.com/s/17BeXEOIAWCTcr-qCI_1cpA 提取码:9uk4
2、环境准备
(1)修改文件限制
vi /etc/security/limits.conf
增加的内容
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
* soft memlock unlimited
* hard memlock unlimited
(2)调整进程数
vi /etc/security/limits.d/20-nproc.conf
调整成以下配置
* soft nproc 65535
root soft nproc unlimited
(3)调整虚拟内存&最大并发连接
vi /etc/sysctl.conf
增加的内容
vm.max_map_count=655360
fs.file-max=655360
(4)重启系统后生效
reboot
(5)开放端口
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --add-port=9300/tcp --permanent
重新加载防火墙规则
firewall-cmd --reload
或
systemctl stop firewalld
systemctl enable firewalld
(6)开放创建存储目录
mkdir /data01/elk/
3、java环境部署
yum -y install jdk-8u162-linux-x64.rpm
#查看java版本
java -version
4、logstash部署
#1、rpm包安装
yum -y install logstash-7.3.0.rpm
#2、修改配置文件
cp logstash.yml{,.bak}
#改后 logstash.yml
path.data: /data01/elk/logstash/data
pipeline.workers: 4
pipeline.batch.size: 1024
path.config: /data01/elk/logstash/config/conf.d
path.logs: /data01/elk/logstash/logs
http.host: "0.0.0.0"
http.port: 9600
#改后 startup.options文件 可选择不改
LS_PIDFILE=/data01/elk/logstash/logstash.pid
LS_GC_LOG_FILE=/data01/elk/logstash/logs/gc.log
#、可根据主机内存大小,适当调整一下参数
vim jvm.options
-Xms1g
-Xmx1g
创建对应的路径
mkidr -pv /data01/elk/logstash/{data,logs,config}
chown -R 1000:1000 /data01/elk/logstash
启动logstash
systemctl start logstash
systemctl enable logstash
5、elasticsearch部署
本次是3master3节点的部署
安装elasticsearch
yum -y install elasticsearch
配置elasticsearch
#elasticsearch.yml
cluster.name: elk
node.name: elk02
# 自定义属性添加到节点上
node.attr.rack: r1
node.master: true
#node.voting_only: true
node.data: true
#node.ingest: true
#node.ml: false
#开启监控xpack
xpack.monitoring.enabled: true
#机器学习关闭
xpack.ml.enabled: false
# 是否使用http协议对外提供服务,默认为true,开启
#http.enabled: true
cluster.remote.connect: false
path.data: /data01/elasticsearch/lib,/data02/elasticsearch/lib
path.logs: /data01/elasticsearch/logs
#锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高
bootstrap.memory_lock: true
network.host: 192.168.11.12
http.port: 9200
##discovery.zen.ping.unicast.hosts旧版配置
discovery.seed_hosts: ["192.168.11.11","192.168.11.12","192.168.11.13"]
#Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点
cluster.initial_master_nodes: ["192.168.11.11","192.168.11.12","192.168.11.13"]
# 设置集群中N个节点启动时进行数据恢复,默认为1。
gateway.recover_after_nodes: 2
#设置是否可以通过正则或者_all删除或者关闭索引
action.destructive_requires_name: true
network.tcp.no_delay: true
network.tcp.keep_alive: true
network.tcp.reuse_address: true
network.tcp.send_buffer_size: 128mb
network.tcp.receive_buffer_size: 128mb
#transport.tcp.port: 9301
transport.tcp.compress: true
http.max_content_length: 200mb
#开启跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.fault_detection.leader_check.interval: 15s
discovery.cluster_formation_warning_timeout: 30s
cluster.join.timeout: 120s
cluster.publish.timeout: 90s
cluster.routing.allocation.cluster_concurrent_rebalance: 16
cluster.routing.allocation.node_concurrent_recoveries: 16
cluster.routing.allocation.node_initial_primaries_recoveries: 16
另外两个只需要修改node.name
,network.host
为相应的节点
让init启动的程序解除限制,和系统limit一致
sed -i 39c\LimitMEMLOCK=infinity /usr/lib/systemd/system/elasticsearch.service
创建相应目录
mkdir -pv /data01/elk/elasticsearch/{lib,logs}
chown -R elasticsearch:elasticsearch /data01/elk/elasticsearch
启动elasticsearch服务
#重载系统服务
systemctl daemon-reload
systemctl start elasticsearch
systemctl enable elasticsearch
6、kibana部署
安装kibana
yum -y install kibana-7.3.0-x86_64.rpm
配置kibana
注:修改配置最好先备份后修改
#vim kibana.yml
server.port: 5601
server.host: "192.168.11.13"
elasticsearch.hosts: ["http://192.168.11.12:9200"]
i18n.locale: "zh-CN"
启动kibana
systemctl start kibana
systemctl enable kibana
排错可通过以下方式排查
journalctl -u elasticsearch -f
tail -500f /data01/elk/elasticsearch/logs/elk.log