linux12elk-->02elasticsearch部署(代码片段)

FikL-09-19 FikL-09-19     2022-12-28     271

关键词:

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.ddmessages.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才有数据出来









elk

https://www.elastic.co/elasticsearch:可以看成一个分布式的NoSql数据库,基于Lucene,开放了restfulapi和多种语言的编程接口。             支持复杂的查询,而且查询高效,sql能查的东西elasti... 查看详情

linux12elk-->03filebeat(代码片段)

文章目录filebeat一、filebeat1.下载安装2.修改配置模式1)备份配置文件2)收集文件日志,输出到文件中3)收集日志输出到redis1>配置2>重启3>对端查看4>使用logstash读取redis输出到elasticsearch中5>查看elasticsearc... 查看详情

springboot-spring-data-elasticsearch7.12.0(代码片段)

maven注意springboot的版本一定要和elasticsearch和spring-boot-starter-data-elasticsearch的版本匹配,不然就会出现问题<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8&l 查看详情

震惊全网的elk日志分析系统(齐全详细理论+搭建步骤图释)(代码片段)

...、前言概述与基础理论1.1ELK系统简介1.2ELK日志工作原理1.3Elasticsearch、Logstash、Kibana详细介绍1.3.1Elasticsearch1.3.2Logstash1.3.3Kibana二、ELK日志分析系统搭建2.1实验环境2.2部署Elasticsearch软件(node1和node2都需部署)2.3安装elasticsea 查看详情

2021年大数据elk:elasticsearch架构原理(代码片段)

...历史文章目录,帮助大家回顾前面的知识重点。目录Elasticsearch架构原理一、Elasticsearch的节点类型1、Master节点2、DataNode节点二、分片和副本机制1、分片(Shard)2、副本3、指定分片、副本数量三、Elasticsea 查看详情

elk日志平台之kibana

一、ELKStack简介Elstaicsearch:存储和搜索logstash:收集kibana:展示.专门为ES设计的展示平台二、ELK之kibana安装环境准备IP 主机名 操作系统192.168.56.11 linux-node1 centos7192.168.56.12 linux-node2 centos71、安装JDK[[email protected]&nb 查看详情

cloud02:elk

ELK是什么??ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写–Elasticsearch:负责日志检索和储存–Logstash:负责日志的收集和分析、处理–Kibana:负责日志的可视化–这三款软件都是开源软件,通常是配合使用,... 查看详情

cloud02:elk

ELK是什么??ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写–Elasticsearch:负责日志检索和储存–Logstash:负责日志的收集和分析、处理–Kibana:负责日志的可视化–这三款软件都是开源软件,通常是配合使用,... 查看详情

linux12企业实战--03dockerelasticsearch单机映射文件到宿主机(代码片段)

文章目录dockerelasticsearch单机映射文件到宿主机1.安装docker2.宿主机创建映射目录3.映射dockerelasticsearch单机映射文件到宿主机1.安装docker[root@elk01opt]#dockerpullelasticsearch:7.9.32.宿主机创建映射目录[root@elk01opt]#mkdir-p/mydata/elastics 查看详情

elk02elasticsearch基础

一、搜索引擎   海量日志如何分析,需要搜索引擎(这只是其中的一种解决方案)   索引引擎全文搜索依赖全文索引搜索引擎一般由两部分组成:   索引链:存储数据并构建索引   &nb... 查看详情

elk专栏之javaapi操作-02(代码片段)

ELK专栏之JavaAPI操作-02JavaAPI实现文档管理ES的技术特点Java客户端简单获取数据JavaAPI文档准备工作使用Java客户端操作ES结合Spring-boot-test测试文档准备工作查询新增修改删除批量增删改bulkJavaAPI实现文档管理ES的技术特点●ES技术比... 查看详情

elk实验安装kibana

下载安装linux包wgethttps://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-linux-x86_64.tar.gzshasum-a512kibana-6.2.3-linux-x86_64.tar.gztar-xzfkibana-6.2.3-linux-x86_64.tar.gzcdkibana-6.2.3-linux-x86_6 查看详情

在elk或linux服务器上搜索日志

...#34;这样的请求方式来搜索满足两个条件的日志。    在Linux服务器上,如果也想搜索满足多个条件的日志则使用类似grep'com.yh 查看详情

elk插件----head(代码片段)

... 安装node.js  wgethttps://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz  tarxfnode-v10.15.1-linux-x64.tar.xz  vim/etc/profile  NODE_HOME=/elk/node  PATH=$PATH:$JAVA_HOME:$NODE_HOME/bin  02,安装grunt   npminstall-ggrunt-cli  [[email protected]... 查看详情

elk配置笔记

filebeat安装配置1下载,安装wgethttps://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.4.3-linux-x86_64.tar.gzmvfilebeat-8.4.3-linux-x86_64.tar.gz/optcd/opttar-zxvffilebeat-8.4.3-linux-x86_64.tar.gzcd 查看详情

linux里面elk作用是啥?

参考技术AELK是三个开源软件Elasticsercher、Logstash、Kibana的缩写,现在又增加一个Beats轻量级日志搜集工具用于在各种服务器上搜集日志后传给logstash。 参考技术BELK是三个开源软件Elasticserch、Logstash、Kibana的缩写,用来搜集网络服... 查看详情

elk日至系统

参考网址:https://www.elastic.co/downloads650)this.width=650;"src="https://s2.51cto.com/wyfs02/M02/A6/4E/wKioL1nMez_DijXeAAQnjSmUqlE708.png-wh_500x0-wm_3-wmp_4-s_4111959484.png"title="elk.png"alt="wKioL1nM 查看详情

linux系统centos7基于docker搭建elk分布式日志系统

ELK基本概述ELK是Elasticsearch、Logstash、Kibana的简称,常常用于部署分布式系统日志服务。Elasticsearch:全球实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVAAPI等结构提供高效搜索功能,可扩展的... 查看详情