ELK安装说明

本文详细介绍如何使用Docker及docker-compose配置ELK Stack(Elasticsearch、Logstash、Kibana),包括环境搭建、配置文件修改及常见问题解决。

Docker

请参看文档

安装注意:

  • 版本号大于 1.13.0
    mac上安装需要使用全局代理

Elasticsearch&Logstash&Kibana安装

使用docker-compose安装
新建docker-compose.yml,内容如下

version: '3.0'
services:
  elasticsearchm:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.5.1
    container_name: elasticsearch
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - ./Elasticsearch/data:/etc/elasticsearch/data
      - ./Elasticsearch/config/elasticsearch.yml:/etc/elasticsearch/config/elasticsearch.yml
    tty : true

  kibana:
    image: docker.elastic.co/kibana/kibana:6.5.1
    container_name: kibana
    environment:
      XPACK_SECURITY_ENABLED: 'False'
      ELASTICSEARCH_URL: 'http://elasticsearch_host:9200'
    volumes:
      - esdata1:/usr/share/kibana/data
    ports:
      - 5601:5601
    networks:
      - esnet


  logstash:
    image: docker.elastic.co/logstash/logstash:6.5.1
    container_name: logstash
    environment:
      XPACK_MONITORING_ENABLED: 'False'
    ports:
      - 5044:5044
    links:
      - elasticsearchm
    volumes:
      - /usr/share/logstash/pipeline:/usr/share/logstash/pipeline
    command: logstash -f /usr/share/logstash/pipeline/logstash.conf

volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local


networks:
  esnet:

logstash配置
新建/usr/share/logstash/pipeline/logstash.conf内容如下

input {
 beats {
    port => "5044"
    ssl => false
 }
}

filter {
    grok {
        match => { "message" => "\[%{TIMESTAMP_ISO8601:request_time}\]\[%{WORD:logid}\]\[%{DATA:person}\]\[%{DATA:data_type}\] *%{GREEDYDATA:info}"}
    }
    geoip {
        source => "clientip"
    }
}

output {
  elasticsearch {
    hosts => "elasticsearchm:9200"
    manage_template => false
    index => "logstash-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

命令行执行

docker-compose up

坑:

提示:max virtual memory areas vm.max_map_count [65530] is too low
解决

  1. 临时性解决:sysctl -w vm.max_map_count=262144
  2. 永久解决:/etc/sysctl.conf中添加"vm.max_map_count=262144"
<think>我们正在为用户提供一个安装ELK Stack(Elasticsearch, Logstash, Kibana)的Shell脚本。根据引用内容,我们需要注意以下几点: 1. 安装前需要准备Java环境(JDK 8),因为Elasticsearch需要JDK 8(引用[4])。 2. 安装过程中可能需要创建用户和组(引用[2]中创建了用户elk和组app)。 3. 需要下载并解压各个组件的安装包。 4. 需要配置环境变量(如JAVA_HOME)和各个组件的配置文件。 5. 可能需要编写启动脚本(如引用[3]中的elasticsearch-head启动脚本,但这里我们主要关注ELK核心组件)。 由于ELK Stack的安装涉及多个组件,我们将分步骤编写脚本: - 安装Java(JDK 8) - 安装Elasticsearch - 安装Logstash - 安装Kibana 注意:由于安全性和最新版本的变化,我们通常建议从官方网站获取最新版本的下载链接。但为了脚本的稳定性,我们可以使用固定版本(例如7.x版本,因为8.x版本可能有较大变化)。这里我们使用7.17.3版本(截至2022年5月的一个稳定版本),用户可以根据需要修改版本号。 另外,我们假设以root用户运行此脚本,并在必要时创建elk用户。 步骤概览: 1. 安装依赖(如wget) 2. 创建用户和组(elk) 3. 安装JDK 8 4. 下载并安装Elasticsearch 5. 下载并安装Logstash 6. 下载并安装Kibana 7. 配置环境变量和启动脚本 注意:生产环境还需要考虑安全配置(如设置密、SSL等),但本脚本主要关注基础安装。 以下是脚本内容:</think>以下是一个安装 ELK Stack (Elasticsearch, Logstash, Kibana) 的自动化 Shell 脚本,包含环境配置和基础安全设置: ```bash #!/bin/bash # ELK Stack 自动安装脚本 (版本: 7.17.3) # 系统要求: CentOS/RHEL 7+ # 配置参数 ELK_VERSION="7.17.3" ES_USER="elk" ES_GROUP="app" INSTALL_DIR="/opt/elk" DATA_DIR="/data/elk" JAVA_VERSION="java-11-openjdk" # 1. 安装依赖 yum install -y wget epel-release yum install -y $JAVA_VERSION # 2. 创建系统用户和目录 groupadd $ES_GROUP useradd -m -g $ES_GROUP -s /bin/bash $ES_USER mkdir -p $INSTALL_DIR $DATA_DIR/{data,logs} chown -R $ES_USER:$ES_GROUP $INSTALL_DIR $DATA_DIR # 3. 安装 Elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ELK_VERSION-linux-x86_64.tar.gz tar -xzf elasticsearch-$ELK_VERSION-linux-x86_64.tar.gz -C $INSTALL_DIR ln -s $INSTALL_DIR/elasticsearch-$ELK_VERSION $INSTALL_DIR/elasticsearch # 4. 配置 Elasticsearch cat > $INSTALL_DIR/elasticsearch/config/elasticsearch.yml <<EOF cluster.name: elk-cluster node.name: node-1 path.data: $DATA_DIR/data path.logs: $DATA_DIR/logs network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node xpack.security.enabled: true EOF # 5. 安装 Logstash wget https://artifacts.elastic.co/downloads/logstash/logstash-$ELK_VERSION-linux-x86_64.tar.gz tar -xzf logstash-$ELK_VERSION-linux-x86_64.tar.gz -C $INSTALL_DIR ln -s $INSTALL_DIR/logstash-$ELK_VERSION $INSTALL_DIR/logstash # 6. 安装 Kibana wget https://artifacts.elastic.co/downloads/kibana/kibana-$ELK_VERSION-linux-x86_64.tar.gz tar -xzf kibana-$ELK_VERSION-linux-x86_64.tar.gz -C $INSTALL_DIR ln -s $INSTALL_DIR/kibana-$ELK_VERSION $INSTALL_DIR/kibana # 7. 配置系统参数 echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -p echo "$ES_USER soft nofile 65536" >> /etc/security/limits.conf echo "$ES_USER hard nofile 65536" >> /etc/security/limits.conf # 8. 创建服务文件 (Elasticsearch示例) cat > /etc/systemd/system/elasticsearch.service <<EOF [Unit] Description=Elasticsearch After=network.target [Service] User=$ES_USER Group=$ES_GROUP Environment="ES_HOME=$INSTALL_DIR/elasticsearch" Environment="ES_PATH_CONF=$INSTALL_DIR/elasticsearch/config" ExecStart=$INSTALL_DIR/elasticsearch/bin/elasticsearch [Install] WantedBy=multi-user.target EOF # 9. 设置密 echo "y" | $INSTALL_DIR/elasticsearch/bin/elasticsearch-setup-passwords auto -b # 10. 启动服务 systemctl daemon-reload systemctl enable --now elasticsearch echo "安装完成!" echo "Elasticsearch: http://<服务器IP>:9200" echo "Kibana: http://<服务器IP>:5601" ``` ### 使用说明 1. **保存脚本**:如`install-elk.sh` 2. **授权执行**: ```bash chmod +x install-elk.sh ``` 3. **运行安装**: ```bash ./install-elk.sh ``` ### 关键配置说明 1. **内存要求**:建议服务器内存 ≥4GB,可通过修改`$INSTALL_DIR/elasticsearch/config/jvm.options`调整堆内存 ```config -Xms2g # 最小内存 -Xmx2g # 最大内存 ``` 2. **安全认证**:脚本已启用基础安全认证,安装后自动生成随机密 3. **数据存储**:默认数据目录`/data/elk`,可按需挂载独立磁盘 > **注意**:首次登录 Kibana 需使用自动生成的 elastic 用户密,密信息在终端输出中查找[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值