麒麟V10 安装ELK详细步骤(elasticsearch + kibana + logstash)

一、ELK介绍

ELK 系统是一个开源的大数据分析和搜索引擎组合,主要由以下三个部分组成:

  1. Elasticsearch

    • 作用:一个分布式搜索和分析引擎,可以处理大规模的结构化和非结构化数据。
    • 特点:支持全文搜索、结构化搜索和分析、实时搜索和分析、分布式计算,具有高可扩展性和高可用性。
  2. Logstash

    • 作用:数据处理管道,用于从多种来源收集数据、转换数据并将数据发送到 Elasticsearch 中。
    • 特点:灵活的数据处理能力,可以处理结构化和非结构化数据,支持多种输入和输出插件,能够进行复杂的数据转换和过滤。
  3. Kibana

    • 作用:一个开源的数据可视化和探索工具,用于在 Elasticsearch 上创建和分享动态仪表板。
    • 特点:提供强大的图表和可视化功能,可以实时监控和分析数据,支持交互式查询和过滤。
二、安装包下载 
1、部署环境:

        操作系统:Kylin Linux Advanced Server release V10 (Lance)

        elasticsearch :elasticsearch-8.14.2

        kibana:kibana-8.14.2

        logstash:logstash-8.14.2

2、下载地址:

        Elasticsearch 官网 下载地址:Download Elasticsearch | Elastic

        Kibana 官网 下载地址:Download Kibana Free | Get Started Now | Elastic

        Logstash 官网 下载地址:Download Logstash Free | Get Started Now | Elastic

        

        百度网盘:https://pan.baidu.com/s/1pOisOSOoYLPRl0Yp1MrinQ?pwd=zfet 
                          提取码:zfet         

三、ELK部署
1、Elasticsearch 安装

1)解压并创建data目录

# 解压文件
tar -zxvf elasticsearch-8.14.2-linux-x86_64.tar.gz
# 进入elasticsearch文件夹
cd elasticsearch-8.14.2
# 创建data目录
mkdir data

2)修改 Elasticsearch 配置

# 修改 elasticsearch 配置
vi config/elasticsearch.yml
# 修改 
path.data: /usr/local/ELK/elasticsearch-8.14.2/data
path.logs: /usr/local/ELK/elasticsearch-8.14.2/logs
network.host: 192.168.146.3 #建议填写服务器ip
http.port: 9200

3)修改 Elasticsearch jdk 配置

安装这个版本的Elasticsearch 需要注意:7版本以上的es需要的jdk可能都是11或者以上的,而我们的项目大多数都是使用的jdk8,但是7版本以上的es自带了jdk,此时我们需要把es的启动环境jdk进行配置。

vi bin/elasticsearch-env
#如果变量ES_JAVA_HOME不为空,则会使用ES_JAVA_HOME这个变量,
#这个变量默认是没有配置,可以按照图上所示配置ES_JAVA_HOME这个变量,
#指向es安装包自带的jdk目录:

4)创建 es 用户并授权

# 创建es 用户 并授权
groupadd es
useradd es -g es -p elasticsearch
# 赋权(根据自己安装位置修改路径)
chown -R es:es /usr/local/ELK
chmod -R u+w /usr/local/ELK

5)修改内存大小

# 修改vm.max_map_count内存大小
vi /etc/sysctl.conf
# ...//加入下面一行
vm.max_map_count = 262144
# wq保存后,执行以下命令使之生效
sysctl -p

6)修改es用户的资源软限制与硬限制

vim /etc/security/limits.conf
# 在最后加入
es       hard    nofile   65536
es       soft    nofile   65536
es       hard    nproc    20480
es       soft    nproc    20480
# 保存使之生效

知识拓展:

        在 Linux 系统中,软限制(soft limit)和硬限制(hard limit)是两种不同的资源限制,分别用于控制系统资源的使用。以下是它们的区别:

软限制(soft limit)

  • 定义:软限制是用户或进程在正常操作中可以达到的资源限制。
  • 灵活性:用户和进程可以在不超过硬限制的情况下,通过 ulimit 命令临时修改自己的软限制。
  • 适用场景:软限制通常用于设定正常操作下的资源使用范围,以避免意外的资源滥用。

硬限制(hard limit)

  • 定义:硬限制是系统管理员设定的资源使用上限,用户或进程不能超过这个限制。
  • 强制性:硬限制只能由超级用户(root)来修改,一旦设置,普通用户和进程不能超越这个限制。
  • 适用场景:硬限制用于强制性地保护系统资源,防止用户或进程超过预设的安全边界,导致系统不稳定或崩溃。

举例说明

假设在 /etc/security/limits.conf 中设置了以下限制:

root soft nproc 20480
root hard nproc 20480

这意味着:

  1. 软限制

    • root soft nproc 20480 表示 root 用户在正常情况下最多可以创建 20480 个进程。
    • root 用户可以通过 ulimit -u 命令来查看或临时降低这个限制,但不能超过硬限制。例如:
    # 查看当前软限制
    ulimit -u
    20480
    
    # 临时降低软限制
    ulimit -u 10240
    ulimit -u
    10240
    
  2. 硬限制

    • root hard nproc 20480 表示 root 用户的最大进程数上限是 20480,这个值不能被非超级用户超越。
    • 即使 root 用户尝试通过 ulimit -u 提高进程数限制,也不能超过硬限制:
    # 尝试提高软限制超过硬限制(失败)
    ulimit -u 30000
    -bash: ulimit: max user processes: cannot modify limit: Operation not permitted
    

7)关闭 Elasticsearch  的ssl安全认证(生产自行开启)

vim elasticsearch.yml
# 将以下配置改为 false
xpack.security.enabled: false
xpack.security.enabled: false

8)Elasticsearch 启动

#启动前先切换用户
su es
 
# 后台启动
nohup ./bin/elasticsearch -d > /dev/null 2>&1 &

# 查看是否启动成功
ps -ef|grep elasticsearch
 
# 输入此命令查看是否有json字符串
curl http://ip:9200

为了方便启动或移交运维,编写了一个 启动脚本,需要切换es用户执行

#!/bin/bash

# 定义 Elasticsearch 的安装路径和启动命令
ELK_HOME="/usr/local/ELK/elasticsearch-8.14.2"
ELASTICSEARCH="$ELK_HOME/bin/elasticsearch"
LOG_FILE="$ELK_HOME/logs/elasticsearch.log"
PORT=9200
START_TIMEOUT=60  # 设置一个启动超时时间(秒)

# 创建日志目录(如果不存在)
mkdir -p "$ELK_HOME/logs"

# 检测 Elasticsearch 是否已经在运行(通过端口检测)
if netstat -tnlp 2>/dev/null | grep -q ":$PORT"; then
  pid=$(netstat -tnlp 2>/dev/null | grep ":$PORT" | awk '{print $7}' | cut -d'/' -f1)
  echo "Elasticsearch 已启动,进程号: $pid"
else
  echo "启动 Elasticsearch ..."
  nohup "$ELASTICSEARCH" > "$LOG_FILE" 2>&1 &

  # 等待 Elasticsearch 启动
  timeout=$START_TIMEOUT
  while ! netstat -tnlp 2>/dev/null | grep -q ":$PORT"; do
    sleep 1
    timeout=$((timeout - 1))
    if [ $timeout -le 0 ]; then
      echo "Elasticsearch 启动超时,请检查日志: $LOG_FILE"
      exit 1
    fi
  done

  # 获取启动后的进程号
  pid=$(netstat -tnlp 2>/dev/null | grep ":$PORT" | awk '{print $7}' | cut -d'/' -f1)
  echo "Elasticsearch 启动成功,进程号: $pid"
  echo "启动时间: $(date)"
fi                                                                                                                                                                                                                                           
~                                                                                                                                                                                                                                                
~
2、Kibana 安装

1)解压

tar -zxvf kibana-8.14.2-linux-x86_64.tar.gz

2)修改配置文件

vi config/kibana.yml
#修改以下配置
# 端口号
server.port: 5601
 
# ip
server.host: "服务器ip"
 
# es连接
elasticsearch.url: "http://"es的ip地址":9200"

3)启动

nohup ./bin/kibana > /dev/null 2>&1 &

浏览器访问 http://:5601/ 出现Kibana的UI页面代表与elasticsearch连接成功,否则失败,需要检查Kibana配置文件或者elasticsearch的启动状态

以下为失败情况

为了方便启动或移交运维,编写了一个 启动脚本,需要切换es用户执行

启动脚本
#!/bin/bash

# 定义 Kibana 的安装路径和启动命令
KIBANA_HOME="/usr/local/ELK/kibana-8.14.2"
KIBANA="$KIBANA_HOME/bin/kibana"
LOG_FILE="$KIBANA_HOME/logs/kibana.log"
PORT=5601
START_TIMEOUT=60  # 设置一个启动超时时间(秒)

# 创建日志目录(如果不存在)
mkdir -p "$KIBANA_HOME/logs"

# 检测 Kibana 是否已经在运行(通过端口检测)
if netstat -tnlp 2>/dev/null | grep -q ":$PORT"; then
  pid=$(netstat -tnlp 2>/dev/null | grep ":$PORT" | awk '{print $7}' | cut -d'/' -f1)
  echo "Kibana 已启动,进程号: $pid"
else
  echo "启动 Kibana ..."
  nohup "$KIBANA" > "$LOG_FILE" 2>&1 &

  # 等待 Kibana 启动
  timeout=$START_TIMEOUT
  while ! netstat -tnlp 2>/dev/null | grep -q ":$PORT"; do
    sleep 1
    timeout=$((timeout - 1))
    if [ $timeout -le 0 ]; then
      echo "Kibana 启动超时,请检查日志: $LOG_FILE"
      exit 1
    fi
  done

  # 获取启动后的进程号
  pid=$(netstat -tnlp 2>/dev/null | grep ":$PORT" | awk '{print $7}' | cut -d'/' -f1)
  echo "Kibana 启动成功,进程号: $pid"
  echo "启动时间: $(date)"
fi
3、Logstash 安装

1)解压

tar -zxvf logstash-8.14.2-linux-x86_64.tar.gz

2)修改配置文件

cp logstash-8.14.2/config/logstash-sample.conf logstash.conf
#将原来的示例配置注释掉,添加以下内容
input {
  tcp {
    port => 5400
    type => "tcp_log"
    codec=> json_lines
     }
}
 
output{      
   if [type] == "tcp_log" {
                elasticsearch {
                        hosts => ["ip:9200"]
                        index => "tcplog-%{+YYYY.MM.dd}"
                }
        }   
}

3)创建log文件夹

cd logstash-8.14.2/

mkdir logs

4)启动

nohup ./bin/logstash -f ./config/logstash.conf &
# 查看应执行状态
ps -ef | grep logstash

为了方便启动或移交运维,编写了一个 启动脚本,需要切换es用户执行

#!/bin/bash

# 定义 Logstash 的安装路径和启动命令
LOGSTASH_HOME="/usr/local/ELK/logstash-8.14.2"
LOGSTASH="$LOGSTASH_HOME/bin/logstash"
CONFIG_FILE="$LOGSTASH_HOME/config/logstash.conf"
LOG_FILE="$LOGSTASH_HOME/logs/logstash.log"
PORT=9600
START_TIMEOUT=60  # 设置一个启动超时时间(秒)

# 创建日志目录(如果不存在)
mkdir -p "$LOGSTASH_HOME/logs"

# 启动 Logstash
if netstat -tnlp 2>/dev/null | grep -q ":$PORT"; then
    pid=$(netstat -tnlp 2>/dev/null | grep ":$PORT" | awk '{print $7}' | cut -d'/' -f1)
    echo "Logstash 已启动,进程号: $pid"
else
    echo "启动 Logstash ..."
    nohup "$LOGSTASH" -f "$CONFIG_FILE" > "$LOG_FILE" 2>&1 &

    timeout=$START_TIMEOUT
    while ! netstat -tnlp 2>/dev/null | grep -q ":$PORT"; do
        sleep 1
        timeout=$((timeout - 1))
        if [ $timeout -le 0 ]; then
            echo "Logstash 启动超时,请检查日志: $LOG_FILE"
            exit 1
        fi
    done

    pid=$(netstat -tnlp 2>/dev/null | grep ":$PORT" | awk '{print $7}' | cut -d'/' -f1)
    echo "Logstash 启动成功,进程号: $pid"
    echo "启动时间: $(date)"
fi

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值