概念
ELK 是什么
ELK 是 elastic 公司旗下三款产品 ElasticSearch 、Logstash 、Kibana 的首字母组合。
ElasticSearch 是一个基于 Lucene 构建的开源,分布式,RESTful 搜索引擎。
Logstash 传输和处理你的日志、事务或其他数据。
Kibana 将 Elasticsearch 的数据分析并渲染为可视化的报表。
三个软件包如果要安装时就需要三个包的版本号相同否则可能导致相互不兼容
ELK的架构:
使用elasticsearch将日志数据收集起来,然后使用logstash将日志数据进行梳理和过滤,在将日志数据信息传输到kibana软件上进行可视化显示和搜索。
ElasticSearch:(存储数据信息,搜索组件)
elasticsearch搜索存储结构原理:
存储过程:
当记录或者读取一个数据块信息时,会将数据块进行分片处理,为了数据的冗余,一般将分片的数据块,在备份一份,如果将每个数据分为5个分片,在加上备份的5片数据就有了10片,(如果想要冗错性好的化可以1:3的进行备份,那就是5片主数据,在备份10片从数据总共15片的数据)
然后将分片后的数据进行存储到elasticsearch节点上,注意每个节点的数据中本主片的数据和本从片的数据不能存放到一起,否则会起不到容错性。一般存储节点数为奇数个,系统会自动的将数据片均匀的分布到各个节点上的。
如上图中的结构,如果有一个节点宕机,则其他两个节点的数据也是完整的,且会自动将10个分片数据同步到这两个节点上。
软件下载:
https://www.elastic.co/products (官网)
如果需要下载以前的版本点击下面。
下载rpm的包:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.10.rpm
ElasticSearch 5的程序环境:
配置文件:
/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
/etc/elasticsearch/log4j2.properties
Unit File:elasticsearch.service
程序文件:
/usr/share/elasticsearch/bin/elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-keystore:
/usr/share/elasticsearch/bin/elasticsearch-plugin:管理插件程序
端口号:
由于elasticsearch是用Java语言编写的需要跑在Java虚拟机上,所以在安装elasticsearch之前需要安装Java的JDK包。版本至少要在1.80版本上的包。yum install java-1.8.0-openjdk-devel
实验:实现三个elasticsearch节点
nod01:
yum install java-1.8.0-openjdk-devel (安装JDK的包)
rpm -ivh elasticsearch-5.6.10.rpm (将下载下来的包安装,由于此包没有依赖所以使用rpm安装就可以)
systemctl daemon-reload (包装好后执行此命令)
vim /etc/elasticsearch/jvm.options (修改配置文件;jdk的配置文件)
-Xms1g
-Xmx1g (占用内存设置选项,两个的值必须设为相同)
vim /etc/elasticsearch/elasticsearch.yml (修改主配置文件)
cluster.name: myelssss (设定是否在同一个集群的标识;可自定义名称)
node.name: 192.168.60.4 (当前节点的IP地址,如果有dns解析可以使用节点的名称)
#node.attr.rack: r1 (节点处于哪个机架上的设置,系统会识别机架,不将数据的主切片和从切片放到同一个机架上,本实验中不需要设置)
path.data: /data/myels (数据存放的路径;可以自定义,或者将目录挂载到存储设备上)
path.logs: /data/logs (日志存放的路径)
network.host: 192.168.60.4 (当前主机的IP地址)
http.port: 9200 (启用端口号)
discovery.zen.ping.unicast.hosts: [“192.168.60.4″,http.port: 9200″192.168.60.20”, “192.168.60.21”] (定义集群的成员)
discovery.zen.minimum_master_nodes: 2
mkdir /data/myels
mkdir /data/logs (创建存放数据和日志的文件夹)
chown elasticsearch: /data/* (将刚创建的文件夹的属主和数组都改为elasticsearch所有)
systemctl start elasticsearch (启动服务)
nod02:
yum install java-1.8.0-openjdk-devel (安装JDK的包)
rpm -ivh elasticsearch-5.6.10.rpm (将下载下来的包安装,由于此包没有依赖所以使用rpm安装就可以)
systemctl daemon-reload (包装好后执行此命令)
vim /etc/elasticsearch/jvm.options (修改配置文件;jdk的配置文件)
-Xms1g
-Xmx1g (占用内存设置选项,两个的值必须设为相同)
vim /etc/elasticsearch/elasticsearch.yml (修改主配置文件)
cluster.name: myelssss (设定是否在同一个集群的标识;可自定义名称)
node.name: 192.168.60.20(当前节点的IP地址,如果有dns解析可以使用节点的名称)
#node.attr.rack: r1 (节点处于哪个机架上的设置,本实验中不需要设置)
path.data: /data/myels (数据存放的路径;可以自定义,或者将目录挂载到存储设备上)
path.logs: /data/logs (日志存放的路径)
network.host: 192.168.60.20 (当前主机的IP地址)
http.port: 9200 (启用端口号)
discovery.zen.ping.unicast.hosts: [“192.168.60.4″,http.port: 9200″192.168.60.20”, “192.168.60.21”] (定义集群的成员)
discovery.zen.minimum_master_nodes: 2
mkdir /data/myels
mkdir /data/logs (创建存放数据和日志的文件夹)
chown elasticsearch: /data/* (将刚创建的文件夹的属主和数组都改为elasticsearch所有)
systemctl start elasticsearch (启动服务)
nod03:
yum install java-1.8.0-openjdk-devel (安装JDK的包)
rpm -ivh elasticsearch-5.6.10.rpm (将下载下来的包安装,由于此包没有依赖所以使用rpm安装就可以)
systemctl daemon-reload (包装好后执行此命令)
vim /etc/elasticsearch/jvm.options (修改配置文件;jdk的配置文件)
-Xms1g
-Xmx1g (占用内存设置选项,两个的值必须设为相同)
vim /etc/elasticsearch/elasticsearch.yml (修改主配置文件)
cluster.name: myelssss (设定是否在同一个集群的标识;可自定义名称)
node.name: 192.168.60.21 (当前节点的IP地址,如果有dns解析可以使用节点的名称)
#node.attr.rack: r1 (节点处于哪个机架上的设置,本实验中不需要设置)
path.data: /data/myels (数据存放的路径;可以自定义,或者将目录挂载到存储设备上)
path.logs: /data/logs (日志存放的路径)
network.host: 192.168.60.21 (当前主机的IP地址)
http.port: 9200 (启用端口号)
discovery.zen.ping.unicast.hosts: [“192.168.60.4″,http.port: 9200″192.168.60.20”, “192.168.60.21”] (定义集群的成员)
discovery.zen.minimum_master_nodes: 2
mkdir /data/myels
mkdir /data/logs (创建存放数据和日志的文件夹)
chown elasticsearch: /data/* (将刚创建的文件夹的属主和数组都改为elasticsearch所有)
systemctl start elasticsearch (启动服务)
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104190