linux12Elk -->02elasticsearch部署

ELK

通俗来讲,ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又称为 ELK stack,官方域名为 stactic.co,ELK stack 的主要优点有如下几个:
处理方式灵活:elasticsearch是实时全文索引,具有强大的搜索功能
配置相对简单:elasticsearch全部使用 JSON 接口,logstash 使用模块配置,kibana 的配置文件部分更简单。
检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
集群线性扩展:elasticsearch 和 logstash 都可以灵活线性扩展
前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单

ELK使用场景:

​ 日志平台:利用elasticsearch的快速检索功能,在大量的数据当中可以快速查询需要的日志。

​ 订单平台:利用elasticsearch的快速检索功能,在大量的订单当中检索我们所需要的订单。

​ 搜索平台:利用elasticsearch的快速检索功能,在大量的数据中检索出我们所需要的数据。

Elasticsearch

Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索、支持分布式可实现高可用、提供 API 接口,可以处理大规模日志数据,比如 Nginx、Tomcat、系统日志等功能。

部署ElasticSearch

一般部署elasticsearch有三种方式:

​ rpm包安装

​ 源码包安装

​ docker安装

官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch

官网其他版本安装包下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

一、ELK部署

1、环境准备
主机IP条件
es01192.168.15.71关闭sellinux和防火墙
es02192.168.15.72关闭sellinux和防火墙
2、优化
  • 集群配置

    官方推荐集群配置30G。本地使用2核2G

  • 系统优化

# 基础优化
[root@elk01 ~]# cat base.sh  
#!/bin/bash

# 1、修改主机名和网卡
hostnamectl set-hostname $1 &&\
sed -i "s#111#$2#g" /etc/sysconfig/network-scripts/ifcfg-eth[01] &&\
systemctl restart network &&\
# 2、关闭selinux和防火墙和ssh连接
setenforce 0 &&\
sed -i 's#enforcing#disabled#g' /etc/selinux/config &&\
systemctl disable --now firewalld &&\
# 如果iptables没有安装就不需要执行
# systemctl disable --now  iptables &&\
sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config &&\
systemctl restart sshd 

[root@elk01 ~]# yum -y install ntpdate
[root@elk01 ~]# ntpdate ntp.aliyun.com
[root@elk01 ~]# vim /etc/security/limits.conf 
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file
#* - nofile 65535
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
# reboot重启生效
3、下载安装包
# 官网 https://www.elastic.co/downloads/elasticsearch
# 方式一:yum安装
[root@elk01 opt]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-x86_64.rpm
[root@es01 opt]# ll
total 318004
-rw-r--r-- 1 root root 325635185 Apr 28 00:07 elasticsearch-7.12.1-x86_64.rpm
[root@es01 opt]#  yum install elasticsearch-7.12.1-x86_64.rpm -y
因为 elasticsearch 服务运行需要 java 环境,因此两台 elasticsearch 服务器需要
安装 java 环境,可以使用以下方式安装:
方式一:直接使用 yum 安装 openjdk
[root@es01 opt]# yum install java-1.8.0* -y 
[root@es01 opt]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
===================================================================================
# 方式二:源码包安装
[root@es01 opt]# wget https://github.com/elastic/elascticsearch/archive/refs/tags/v7.12.1.tar.gz
[root@es01 opt]#  tar xf *.gz
[root@es01 opt]# yum install java-1.8.0* -y 
[root@es01 opt]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
==================================================================================
# 方式三:docker安装
# 官网 https://www.elastic.co/downloads/elasticsearch
docker run -p 9200:9200 -p 9300:9300 -e "cluster.name=mm" docker.elastic.co/elasticsearch/elasticsearch:7.13.2
4、设置elastcsearch内存锁定
[root@linux-host1 ~]# vim /usr/lib/systemd/system/elasticsearch.service 
[service] 
LimitMEMLOCK=infinity  ## 修改内存限制(添加)
[root@linux-host1 ~]# vim /etc/elasticsearch/jvm.options
-Xms2g
-Xmx2g
5、修改elastcsearch内存大小
[root@elk01 opt]# vim /etc/elasticsearch/jvm.options
## -Xms4g
## -Xmx4g
 -Xms1g
 -Xmx1g
6、修复elastcsearch配置文件(单台测试)
[root@elk01 opt]# egrep '^[^#]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: mm-by-es  # 设置集群名称
node.name: mm-node-01 # 设置集群节点名称 (集群中,节点名称必须唯一)
path.data: /var/lib/elasticsearch # 设置数据存放路径
path.logs: /var/log/elasticsearch # 设置存放日志路径
bootstrap.memory_lock: true # 锁定内存
network.host: 0.0.0.0 # 监听的IP
http.port: 9200  # 监听端口
# 设置主节点
cluster.initial_master_nodes: ["172.16.1.72"] #可以本地hosts
7、启动服务
[root@elk01 opt]# systemctl daemon-reload 
[root@elk01 opt]# systemctl restart elasticsearch.service 
[root@elk01 opt]# netstat -lntp   6122/rpcbind    #验证启动成功       
tcp6       0      0 :::9200                 :::*                    LISTEN      7733/java           
tcp6       0      0 :::9300                 :::*                    LISTEN 

在这里插入图片描述

二、安装集群head插件

head插件主要是图形化elastic search
1、docker安装
# 提前安装好docker
[root@elk01 opt]# docker run -d -p 9100:9100 alvinos/elasticsearch-head
# 192.168.15.72:9100 访问

在这里插入图片描述

2、设置elasticsearch跨越访问
[root@elk01 opt]# vim /etc/elasticsearch/elasticsearch.yml 
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@elk01 opt]# systemctl restart elasticsearch.service
# 192.168.15.72:9100 #集群成功
# 如果发生报错,检测端口,然后重新启动服务

在这里插入图片描述

三、部署elasticsearch主从
elasticsearch是主从数据节点分离的,安装节点还可以分为热数据节点和冷数据节点
1、部署elasticsearch主节点
参考上述单节点部署
# 1、主节点基础优化
[root@elk01 opt]# egrep '^[^#]' /etc/elasticsearch/elasticsearch.yml
cluster.name: mm-by-es 
node.name: mm-node-01
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["172.16.1.72"]
discovery.zen.minimum_master_nodes: 2 #设置选项策略
discovery.zen.ping.unicast.hosts: ["172.16.1.72","172.16.1.71"] #设置节点
node.master: true  #设置是否的主节点
#2、启动elasticsearch服务
[root@elk01 opt]# systemctl restart elasticsearch.service
# 3、ip访问
192.168.15.72:9100
2、部署elasticsearch从节点
# 1、从节点基础优化
# 2、修改配置文件
[root@elk01 opt]# scp /etc/elasticsearch/elasticsearch.yml es01:/etc/elasticsearch/
[root@es01 opt]# egrep '^[^#]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: mm-by-es 
node.name: mm-node-02  #名字改变
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["172.16.1.72"]
discovery.zen.minimum_master_nodes: 2 #设置选项策略
discovery.zen.ping.unicast.hosts: ["172.16.1.72","172.16.1.71"] #设置节点
node.master: false  #设置是否的主节点
# 3、查看日志
[root@es01 opt]# systemctl status elasticsearch.service  -l
# 4、启动elasticsearch服务
[root@es01 opt]# systemctl restart elasticsearch.service
# 5、ip访问
192.168.15.71:9100

在这里插入图片描述
在这里插入图片描述

四、LogStach

Logstash 是一个开源的数据收集引擎,可以水平伸缩,而且 logstash 整个 ELK
当中拥有最多插件的一个组件,其可以接收来自不同来源的数据并统一输出到指
定的且可以是多个不同目的地

# 区别
logstach 收集数据
elasticsearch 搜索数据
1、部署LogStach(两台)

官网:https://www.elastic.co/cn/downloads/past-releases

# 方式一:rpm安装
# 选择和elasticsearch对应的版本
[root@es01 opt]# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.12.1-x86_64.rpm
[root@es01 yum.repos.d]# yum install logstash-7.12.1-x86_64.rpm -y
[root@es01 yum.repos.d]# chown -R logstash.logstash /usr/share/logstash

# 报错
【已解决】执行yum命令失败:error: rpmdb: BDB0113 Thread/process 16978/139878363277376 failed: BDB1507 Thread died in Berkeley DB library
[root@es01 yum.repos.d]# rm -rf /var/lib/rpm/* 
# yum报403
[root@es01 yum.repos.d]# sed -i 's#$releasever#7#g' *.repo
# 重新安装logstash
[root@es01 yum.repos.d]# yum install logstash-7.12.1-x86_64.rpm
[root@es01 yum.repos.d]# chown -R logstash.logstash /usr/share/logstash

# 方式二:源码包安装
# 方式三:docker安装
2、使用logstach --输出

官网: https://www.elastic.co/guide/en/logstash/current/output-plugins.html

# 1、输入输出到shell控制台 ( codec是编码器,直白的说就是控制输出类型,默认是json) 
[root@elk01 ~]#  /usr/share/logstash/bin/logstash -e 'input { stdin{} }
output { stdout{ codec => rubydebug }}' #标准输入和输出
# 直接输入即可
您好
{
      "@version" => "1",
    "@timestamp" => 2021-07-07T09:37:42.338Z,
       "message" => "您好",
          "host" => "es02"
          
# 2、输入输出到文件中
[root@elk01 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { file { path => "/tmp/log-%{+YYYY.MM.dd}messages.gz"}}'

[root@elk01 tmp]# ll #查看文件
-rw-r--r-- 1 root root 91 Aug 29 20:24 log-2021.08.29messages.gz

# 3、输入输出到elasticsearch
[root@elk01 opt]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch {hosts => ["172.16.1.72:9200"] index => "mytest-%{+YYYY.MM.dd}" }}'
# 查看文件
在172.16.1.72:9200的elasticsearch中
# 4、输入输出到redis
[root@elk01 ~]# vim /etc/redis.conf
bind 0.0.0.0
[root@elk01 ~]# systemctl restart redis
[root@elk01 tmp]#  /usr/share/logstash/bin/logstash -e 'input { stdin{} } output {redis {  host => "172.16.1.72" port => "6379" data_type => "list" key => "logstash-%{type}" }}'
您好
[root@elk01 tmp]# redis-cli #查看
127.0.0.1:6379> KEYS *
1) "logstash-%{type}"
2) "a"

# 报错处理
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ca660000, 899284992, 0) failed; error='Not enough space' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 899284992 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid1995.log

解决:
内存不足,加大内存
3、logstch读取日志文件 --读取

官网 https://www.elastic.co/guide/en/logstash/current/input-plugins.html

# 1、读取elasticsearch 
[root@elk01 ~]# /usr/share/logstash/bin/logstash -e 'input { file { path => "/var/log/messages" } } output { elasticsearch {hosts => ["172.16.1.72:9200"] index => "system-log-%{+YYYY.MM.dd}" }}'

#2、在标准输出中读取
[root@elk01 ~]#/usr/share/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch {hosts => ["172.16.1.72:9200"] index => "system-stdin-%{+YYYY.MM.dd}" }}'

# 3、分离
sudo /usr/share/logstash/bin/system-install /etc/logstash/s tartup.options systemd
分类
从多个文件中读取文件
path => "/var/log/messages" #日志路径
type => "systemlog" #事件的唯一类型
start_position => "beginning" #第一次收集日志的位置
stat_interval => "3" #日志收集的间隔时间

[root@es-01 /opt]# /usr/share/logstash/bin/logstash -e 'input { file{ path => "/var/log/messages" type => "systemlog" start_position => "beginning" stat_interval => "3" } file{ path => "/var/log/cron" type => "systemcron" start_position => "beginning" stat_interval => "3" } } output { elasticsearch {hosts => ["192.168.15.72:9200"] index => "system-stdin-%{+YYYY.MM.dd}" }}'

# 4、分类输出多个数据仓库
[root@es-01 /opt]# /usr/share/logstash/bin/logstash -e 'input { file{ path => "/var/log/messages" type => "systemlog" start_position => "beginning" stat_interval => "3" } file{ path => "/var/log/cron" type => "systemcron" start_position => "beginning" stat_interval => "3" } } output { if [type] == "systemlog" { elasticsearch {hosts => ["192.168.15.72:9200"] index => "system-systemlog-%{+YYYY.MM.dd}" }} if [type] == "systemcron" { elasticsearch {hosts => ["192.168.15.72:9200"] index => "system-systemcron-%{+YYYY.MM.dd}" } } }'
# 5、使用配置文件
# 测试配置文件  下面显示ok就代表配置文件没问题
[root@es-01 ~]# vim test.conf #上面的文件
[root@es-01 ~]# /usr/share/logstash/bin/logstash -f test.conf -t  (-t代表测试,不加t就是使用配置文件)

五、kibana

官网:https://www.elastic.co/cn/downloads/past-releases

# 1、下载安装包
[root@elk01 opt]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.12.1-x86_64.rpm   
# 2、安装
[root@elk01opt]# yum -y install kibana-7.12.1-x86_64.rpm
# 3、修改配置文件
[root@elk01 opt]# grep '^[^#]' /etc/kibana/kibana.yml 
server.port: 5601  #监听端口
server.host: "0.0.0.0" #监听地址
elasticsearch.hosts: ["http://172.16.1.72:9200"]  #elasticsearch 服务器地
# 4、启动kibana
[root@elk01 opt]# systemctl enable --now kibana
记得要打开logstash这样kibana才有数据出来

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FikL-09-19

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值