docker安装elk单机版

本文详细介绍了如何使用Docker部署ELK Stack(Elasticsearch, Logstash, Kibana),包括配置系统参数、各组件的配置文件调整、启动命令及验证服务运行状态的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker run方式安装elk

(1)安装elasticsearch

1)在elasticsearch的docker版本文档中,官方提到了vm.max_map_count的值在生产环境最少要设置成262144

#vi /etc/sysctl.conf 
vm.max_map_count=262144  #添加或者修改
#sysctl -w vm.max_map_count=262144   #临时修改

2)准备elasticsearch配置文件

#test -d /etc/elasticsearch/ || mkdir /etc/elasticsearch/
# cat /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true                                 #增加新的参数,这样head插件可以访问es
http.cors.allow-origin: "*"                             #实现跨域
http.host: 0.0.0.0

3)启动

docker run -d --restart always -p 9200:9200 -p 9300:9300 -m 2048m -v /etc/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml --name elasticsearch -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1024m -Xmx2048m" elasticsearch

4)验证服务是否正常启动
在这里插入图片描述
(2)安装head插件

1)运行

docker run -d --restart always --name head --link elasticsearch -p 9001:9100 docker.io/mobz/elasticsearch-head:5

2)验证
在这里插入图片描述

(3)安装kibana

1)启动

docker run -d --restart always  -p 5601:5601 --link elasticsearch -m 1024 -e ELASTICSEARCH_URL=http://elasticsearch:9200 kibana

2)验证
在这里插入图片描述

(4)安装logstash
注意: filebeat晚点做补充

1)准备配置文件

#test -d /etc/logstash || mkdir /etc/logstash 
# cat /etc/logstash/logstash.yml
path.config: /etc/logstash/conf.d
http.port: 9600
# cat /etc/logstash/logstash.conf
input{
   redis {
         type => "log"
         host => "192.168.1.42"
         port => "6379"
         password => 'redis@2019'
         db => '8'
         data_type => "list"
         key => 'tcl-log'
         batch_count => 1
            }
}

output {
    if [type] ==  "log" {
        elasticsearch {
                hosts => ['elasticsearch:9200']
                index => 'tcl-log-%{+YYYY.MM.dd}'
        }
    }
}

2)启动容器

docker run -d  --restart always --name logstash --link elasticsearch  -v /etc//logstash/logstash.conf:/etc/logstash/conf.d/logstash.conf  -v /etc/logstash/logstash.yml:/etc/logstash/logstash.yml  logstash:5.6

3)获取索引:

curl -XGET 'localhost:9200/_cat/indices?v'

在这里插入图片描述

4)去kibana上验证

在这里插入图片描述

参考文档:
https://blog.youkuaiyun.com/gmijie/article/details/79475153
https://blog.youkuaiyun.com/qq_23250633/article/details/81327001
https://blog.youkuaiyun.com/u014526891/article/details/82822647
https://blog.youkuaiyun.com/belonghuang157405/article/details/83301937
https://www.jianshu.com/p/b81e1b7c0efb

<think>我们正在使用Docker在CentOS上安装Elasticsearch和ELK(Elasticsearch, Logstash, Kibana)。以下是步骤: ### 1. 安装Docker 确保系统已安装Docker。如果没有安装,请执行: ```bash sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker ``` ### 2. 安装Docker Compose Docker Compose用于定义和运行多容器应用。安装步骤: ```bash sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version # 验证安装 ``` ### 3. 创建目录和配置文件 为ELK组件创建挂载目录并设置权限: ```bash mkdir -p /usr/local/elk/{es/data,es/plugins,es/config,logstash,kibana/config,kibana/data} chmod -R 777 /usr/local/elk # 确保权限,避免容器启动失败 ``` ### 4. 配置Elasticsearch 创建Elasticsearch配置文件: ```bash vim /usr/local/elk/es/config/elasticsearch.yml ``` 内容如下: ```yaml cluster.name: "my-es" network.host: 0.0.0.0 http.port: 9200 # 单节点模式 discovery.type: single-node ``` ### 5. 配置Kibana 创建Kibana配置文件: ```bash vim /usr/local/elk/kibana/config/kibana.yml ``` 内容如下: ```yaml server.host: "0.0.0.0" server.port: 5601 elasticsearch.hosts: ["http://elasticsearch:9200"] ``` ### 6. 配置Logstash 创建Logstash配置文件: ```bash mkdir -p /usr/local/elk/logstash/config vim /usr/local/elk/logstash/config/logstash.conf ``` 示例配置(简单接收beats输入,输出到Elasticsearch): ```conf input { beats { port => 5044 } } output { elasticsearch { hosts => ["http://elasticsearch:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } } ``` ### 7. 编写docker-compose.yml 在`/usr/local/elk`目录下创建`docker-compose.yml`: ```bash vim /usr/local/elk/docker-compose.yml ``` 内容如下: ```yaml version: '3' services: elasticsearch: image: elasticsearch:7.17.0 container_name: elasticsearch environment: - discovery.type=single-node volumes: - /usr/local/elk/es/data:/usr/share/elasticsearch/data - /usr/local/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - /usr/local/elk/es/plugins:/usr/share/elasticsearch/plugins ports: - "9200:9200" - "9300:9300" networks: - elk logstash: image: logstash:7.17.0 container_name: logstash volumes: - /usr/local/elk/logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf ports: - "5044:5044" networks: - elk depends_on: - elasticsearch kibana: image: kibana:7.17.0 container_name: kibana volumes: - /usr/local/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml ports: - "5601:5601" networks: - elk depends_on: - elasticsearch networks: elk: driver: bridge ``` ### 8. 启动ELK 在`/usr/local/elk`目录下运行: ```bash docker-compose up -d ``` ### 9. 验证安装 - Elasticsearch: `curl http://localhost:9200` - Kibana: 访问 `http://<服务器IP>:5601` ### 10. 安装IK分词器(可选) 进入Elasticsearch容器安装IK分词器: ```bash docker exec -it elasticsearch bash ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.0/elasticsearch-analysis-ik-7.17.0.zip exit docker restart elasticsearch ``` ### 注意事项 1. 确保CentOS防火墙开放9200、5601、5044等端口。 2. 如果遇到权限问题,检查挂载目录权限(`chmod -R 777 /usr/local/elk`)。 3. 内存要求:ELK需要较多内存,建议服务器内存至少4GB。 通过以上步骤,您可以在CentOS上使用Docker成功搭建ELK环境。 §§相关问题§§ 1. 如何配置Elasticsearch集群(多节点)? 2. 如何通过Filebeat将日志发送到Logstash? 3. Kibana中如何创建索引模式并可视化数据? 4. 如何优化ELK性能?</think>### 在CentOS上使用Docker安装Elasticsearch及ELK环境 #### 1. **安装Docker** ```bash sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker ``` #### 2. **安装Docker Compose** ```bash sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version # 验证安装 ``` #### 3. **创建目录结构** ```bash mkdir -p /usr/local/elk/{es/data,es/plugins,es/config,logstash,kibana/config,kibana/data} chmod -R 777 /usr/local/elk # 解决权限问题 ``` #### 4. **配置Elasticsearch** ```bash vim /usr/local/elk/es/config/elasticsearch.yml ``` 配置文件内容: ```yaml cluster.name: "my-es" network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node # 单节点模式 ``` #### 5. **配置Kibana** ```bash vim /usr/local/elk/kibana/config/kibana.yml ``` 配置文件内容: ```yaml server.host: "0.0.0.0" server.port: 5601 elasticsearch.hosts: ["http://elasticsearch:9200"] ``` #### 6. **创建docker-compose.yml** ```bash vim /usr/local/elk/docker-compose.yml ``` ```yaml version: '3' services: elasticsearch: image: elasticsearch:7.17.0 container_name: elasticsearch environment: - discovery.type=single-node volumes: - /usr/local/elk/es/data:/usr/share/elasticsearch/data - /usr/local/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - /usr/local/elk/es/plugins:/usr/share/elasticsearch/plugins ports: - "9200:9200" - "9300:9300" networks: - elk kibana: image: kibana:7.17.0 container_name: kibana volumes: - /usr/local/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml ports: - "5601:5601" networks: - elk depends_on: - elasticsearch networks: elk: driver: bridge ``` #### 7. **启动ELK服务** ```bash cd /usr/local/elk docker-compose up -d ``` #### 8. **验证安装** - Elasticsearch: `curl http://localhost:9200` - Kibana: 访问 `http://<服务器IP>:5601` #### 9. **安装IK分词器(可选)** ```bash docker exec elasticsearch bash -c "./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.0/elasticsearch-analysis-ik-7.17.0.zip" docker restart elasticsearch ``` ### 关键配置说明 1. **权限问题**:必须执行 `chmod -R 777` 避免挂载目录权限错误[^4] 2. **单节点模式**:`discovery.type=single-node` 简化单机部署[^1] 3. **网络配置**:使用自定义网络 `elk` 实现容器间通信 4. **版本一致性**:所有组件使用相同版本(如7.17.0) ### 常见问题解决 - **启动失败**:检查 `docker logs elasticsearch` 查看错误日志 - **端口冲突**:确保9200/5601端口未被占用 - **内存不足**:建议服务器内存≥4GB,可通过 `-e ES_JAVA_OPTS="-Xms1g -Xmx1g"` 调整ES内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值