要在Ubuntu上使用Docker安装ELK(Elasticsearch, Logstash, Kibana)和Metricbeat,版本为7.12.1,以下是详细步骤:
先决条件
确保已经安装了Docker和Docker Compose。如果没有安装,可以按照以下步骤进行安装:
安装Docker
首先,确保你的Ubuntu系统已经安装了Docker。如果没有安装Docker,可以使用以下命令进行安装:
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
安装Docker Compose
Docker Compose用于定义和运行多容器Docker应用。如果还没有安装Docker Compose,可以使用以下命令进行安装
sudo apt install -y docker-compose
创建Docker Compose文件
在你的工作目录中创建一个名为docker-compose.yml的文件,并添加以下内容:
version: '3.7'
services:
elasticsearch:
image: elasticsearch:7.12.1
container_name: elasticsearch
environment:
- node.name=elasticsearch
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elk
logstash:
image: logstash:7.12.1
container_name: logstash
volumes:
- ./logstash/pipeline:/usr/share/logstash/pipeline
ports:
- 5000:5000
networks:
- elk
depends_on:
- elasticsearch
kibana:
image: kibana:7.12.1
container_name: kibana
environment:
ELASTICSEARCH_URL: http://elasticsearch:9200
I18N_LOCALE: "zh-CN" # 设置kibana中文显示(默认中文)
ports:
- 5601:5601
networks:
- elk
depends_on:
- elasticsearch
metricbeat:
image: docker.elastic.co/beats/metricbeat:7.12.1
container_name: metricbeat
user: root
volumes:
- ./metricbeat/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml
- /var/run/docker.sock:/var/run/docker.sock
- /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
- /proc:/hostfs/proc:ro
- /:/hostfs:ro
environment:
- "ELASTICSEARCH_HOSTS=http://elasticsearch:9200"
- "SETUP_DASHBOARDS_ENABLED=true" # 使用metricbeat默认仪表盘
networks:
- elk
depends_on:
- elasticsearch
- kibana
networks:
elk:
driver: bridge #创建一个名叫elk的网络,桥接模式(因为容器间需要通信,容器加入到网络就可以根据容器名进行通信)
volumes:
esdata:
driver: local
配置Logstash
创建一个目录结构logstash/pipeline,并在该目录中创建一个名为logstash.conf的文件,内容如下:
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
配置Metricbeat
创建一个目录metricbeat,并在该目录中创建一个名为metricbeat.yml的文件,内容如下:
metricbeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
output.elasticsearch:
hosts: ["http://elasticsearch:9200"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- add_docker_metadata: ~
logging.level: info
启动ELK Stack和Metricbeat
在你的工作目录中运行以下命令来启动所有服务:
sudo docker-compose up -d
检查服务状态
可以使用以下命令来查看服务是否正常运行:
sudo docker-compose ps
访问Kibana
打开浏览器,访问http://localhost:5601,你应该能够看到Kibana的界面。可以在这里设置索引模式和查看Metricbeat的数据。
通过这些步骤,你已经在Ubuntu上使用Docker成功安装了ELK 7.12.1和Metricbeat 7.12.1。如果有任何问题,请检查各个配置文件和日志,以确保所有服务正常运行。
docker-compose常用指令
检查Docker Compose版本
打开终端并运行以下命令:
docker-compose --version
如果Docker Compose安装成功,你会看到类似于以下的输出:
docker-compose version 1.29.2, build 5becea4c
检查Docker Compose安装路径
还可以通过检查Docker Compose的安装路径来确认它是否正确安装:
which docker-compose
如果安装成功,你会看到类似于以下的输出,显示docker-compose的可执行文件路径:
/usr/local/bin/docker-compose
停止容器
在你的项目目录(包含docker-compose.yml文件的目录)中,运行以下命令来停止所有服务:
sudo docker-compose down
这个命令将停止并删除所有由docker-compose.yml文件定义的容器、网络和卷。
停止特定服务
如果你只想停止特定的服务,而不是所有服务,可以使用以下命令:
sudo docker-compose stop <service_name>
例如,如果你只想停止Kibana服务,可以运行:
sh
复制代码
sudo docker-compose stop kibana
停止所有服务但保留容器
如果你想停止所有服务但保留容器(下次可以快速启动),可以使用以下命令:
sudo docker-compose stop
4. 检查容器状态
你可以使用以下命令检查容器的状态:
sudo docker-compose ps
这将显示当前由Docker Compose管理的所有容器的状态。
重新启动服务
如果你之后需要重新启动服务,可以使用以下命令:
sudo docker-compose up -d
-d选项表示以分离模式(后台)启动容器。
通过这些命令,你可以有效地管理和控制由Docker Compose启动的容器和服务。