本文目录导读:

下面是一个自动配置ELK(Elasticsearch + Logstash + Kibana) 日志系统的 Shell 脚本示例,适用于 CentOS / Ubuntu 系统。
它会安装 Java、Elasticsearch、Logstash、Kibana,并做最基本的配置让它们能连通使用。
deploy_elk.sh
#!/bin/bash
# ELK 自动部署脚本(适用于 CentOS 7/8、Ubuntu 18/20)
# 使用前请确认系统版本,按提示执行
set -e
# ========== 配置变量(可按需修改) ==========
ELK_VERSION="7.17.9" # ELK 版本号
ES_PORT="9200"
KIBANA_PORT="5601"
LS_PORT="5044"
ES_USER="elastic"
ES_PASS="changeme123"
# 颜色输出
GREEN='\033[0;32m'
NC='\033[0m'
# ========== 功能函数 ==========
info() {
echo -e "${GREEN}[INFO] $1${NC}"
}
get_distro() {
if [ -f /etc/redhat-release ]; then
echo "centos"
elif [ -f /etc/lsb-release ]; then
echo "ubuntu"
else
echo "unknown"
fi
}
# ========== 1. 安装 Java(ELK 依赖) ==========
install_java() {
info "安装 Java (OpenJDK 11) ..."
DISTRO=$(get_distro)
if [ "$DISTRO" == "centos" ]; then
yum install -y java-11-openjdk-devel
elif [ "$DISTRO" == "ubuntu" ]; then
apt update
apt install -y openjdk-11-jdk
fi
java -version
}
# ========== 2. 安装 Elasticsearch ==========
install_elasticsearch() {
info "安装 Elasticsearch $ELK_VERSION ..."
DISTRO=$(get_distro)
if [ "$DISTRO" == "centos" ]; then
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat > /etc/yum.repos.d/elastic.repo <<EOF
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
yum install -y elasticsearch-$ELK_VERSION
elif [ "$DISTRO" == "ubuntu" ]; then
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
apt install -y apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list
apt update
apt install -y elasticsearch=$ELK_VERSION
fi
# 修改配置
sed -i "s/#cluster.name: my-application/cluster.name: elk-cluster/" /etc/elasticsearch/elasticsearch.yml
sed -i "s/#node.name: node-1/node.name: node-1/" /etc/elasticsearch/elasticsearch.yml
sed -i "s/#network.host: 192.168.0.1/network.host: 127.0.0.1/" /etc/elasticsearch/elasticsearch.yml
sed -i "s/#http.port: 9200/http.port: $ES_PORT/" /etc/elasticsearch/elasticsearch.yml
# 安全配置(选填,关闭 xpack 以避免额外配置)
echo "xpack.security.enabled: false" >> /etc/elasticsearch/elasticsearch.yml
systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch
# 等待启动
sleep 15
curl -X GET "localhost:$ES_PORT/"
info "Elasticsearch 安装完成"
}
# ========== 3. 安装 Kibana ==========
install_kibana() {
info "安装 Kibana $ELK_VERSION ..."
DISTRO=$(get_distro)
if [ "$DISTRO" == "centos" ]; then
yum install -y kibana-$ELK_VERSION
elif [ "$DISTRO" == "ubuntu" ]; then
apt install -y kibana=$ELK_VERSION
fi
# 修改配置
sed -i "s/#server.port: 5601/server.port: $KIBANA_PORT/" /etc/kibana/kibana.yml
sed -i "s/#server.host: \"localhost\"/server.host: \"0.0.0.0\"/" /etc/kibana/kibana.yml
sed -i "s/#elasticsearch.hosts: \[\"http:\/\/localhost:9200\"\]/elasticsearch.hosts: [\"http:\/\/localhost:$ES_PORT\"]/" /etc/kibana/kibana.yml
systemctl daemon-reload
systemctl enable kibana
systemctl start kibana
info "Kibana 安装完成,访问地址:http://$(hostname -I | awk '{print $1}'):$KIBANA_PORT"
}
# ========== 4. 安装 Logstash ==========
install_logstash() {
info "安装 Logstash $ELK_VERSION ..."
DISTRO=$(get_distro)
if [ "$DISTRO" == "centos" ]; then
yum install -y logstash-$ELK_VERSION
elif [ "$DISTRO" == "ubuntu" ]; then
apt install -y logstash=$ELK_VERSION
fi
# 创建示例配置文件(从 stdin 输入日志到 elasticsearch)
cat > /etc/logstash/conf.d/beats_input.conf <<EOF
input {
beats {
port => $LS_PORT
ssl => false
}
}
output {
elasticsearch {
hosts => ["http://localhost:$ES_PORT"]
index => "logstash-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}
EOF
systemctl daemon-reload
systemctl enable logstash
systemctl start logstash
info "Logstash 安装完成,监听端口:$LS_PORT(Beats 输入)"
}
# ========== 主函数 ==========
main() {
echo "========================================"
echo " ELK Stack 自动部署脚本 (v7.x)"
echo "========================================"
echo "版本: $ELK_VERSION"
echo ""
echo "即将安装:"
echo " - Java (OpenJDK 11)"
echo " - Elasticsearch (端口 $ES_PORT)"
echo " - Kibana (端口 $KIBANA_PORT)"
echo " - Logstash (Beats 输入端口 $LS_PORT)"
echo ""
read -p "是否继续? (y/N): " confirm
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
echo "安装已取消"
exit 0
fi
# 检查是否为 root
if [ "$EUID" -ne 0 ]; then
echo "请以 root 身份运行此脚本"
exit 1
fi
# 安装
install_java
install_elasticsearch
install_kibana
install_logstash
info "所有组件安装完成!"
info "Kibana 地址: http://$(hostname -I | awk '{print $1}'):$KIBANA_PORT"
info "Elasticsearch API: http://localhost:$ES_PORT"
info "Logstash 监听端口: $LS_PORT (Beats/Filebeat 输入)"
info "提示:如要使用 Filebeat 发送日志,请配置 Filebeat 输出到 localhost:$LS_PORT"
}
# 执行主函数
main
使用说明
保存脚本
vim deploy_elk.sh # 粘贴上面的内容后保存 chmod +x deploy_elk.sh
运行脚本
sudo ./deploy_elk.sh
等待安装完成
- 脚本会自动安装 Java、ES、Kibana、Logstash
- 启动后会自动配置基本的连通性
验证
| 组件 | 验证方式 | 默认端口 |
|---|---|---|
| Elasticsearch | curl http://localhost:9200 |
9200 |
| Kibana | 浏览器访问 http://<IP>:5601 |
5601 |
| Logstash | ss -tlnp \| grep 5044 |
5044 |
注意事项
- 此脚本为单机测试/演示使用,生产环境请修改:
- Elasticsearch 绑定非
0.0.1 - 启用 X-Pack 安全认证
- 调整 JVM 内存(
/etc/elasticsearch/jvm.options)
- Elasticsearch 绑定非
- 如果你使用 Ubuntu,请提前确保系统已更新。
- 如需卸载:
systemctl stop elasticsearch kibana logstash yum remove elasticsearch kibana logstash # CentOS apt remove elasticsearch kibana logstash # Ubuntu
扩展:发送测试日志
安装完成后,可以用 Filebeat 发送系统日志:
# 安装 Filebeat # 配置 filebeat.yml: # output.logstash: # hosts: ["localhost:5044"] # 启动后,Kibana 中创建索引模式(logstash-*)即可查看日志
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播