Docker 部署 ELK 并设置安全访问
转载请注明来源:https://janrs.com/c9rq
下载
docker pull logstash:8.7.0 && \
docker pull kibana:8.7.0 && \
docker pull elasticsearch:8.7.0
获取配置以及证书
修改系统参数
打开系统参数配置文件
vi /etc/sysctl.conf
末尾添加以下配置后重启系统
vm.max_map_count=655360
创建目录
mkdir -p /opt/elk
cd /opt/elk
mkdir -p elasticsearch/plugins
mkdir -p elasticsearch/data
mkdir -p elasticsearch/config/certs
mkdir -p kibana
mkdir -p logstash
chmod -R 777 ./*
获取 elasticsearch.yml
配置文件
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "xpack.security.enabled=false" -d elasticsearch:8.7.0 && \
docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml /opt/elk/elasticsearch/
获取 kibana.yml
配置文件
docker run --name kibana -p 5601:5601 -d kibana:8.7.0 && \
docker cp kibana:/usr/share/kibana/config/kibana.yml /opt/elk/kibana/
创建 logstash.conf
配置文件
下面的密码后面还需要重新修改并重启
cat > /opt/elk/logstash/logstash.conf <<EOF
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "es:9200"
index => "logstash-%{+YYYY.MM.dd}"
}
}
EOF
创建 elasticsearch
证书
进入容器创建然后导出
docker exec -it elasticsearch /bin/bash
创建 ca
证书
cd /usr/share/elasticsearch && \
bin/elasticsearch-certutil ca
创建 ssl
证书
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
退出容器
exit
复制容器里面的证书
docker cp elasticsearch:/usr/share/elasticsearch/elastic-certificates.p12 /opt/elk/elasticsearch/config/certs && \
chmod 777 /opt/elk/elasticsearch/config/certs/elastic-certificates.p12
修改配置文件
删除容器
删除前面复制启动的临时容器
docker stop elasticsearch && docker rm elasticsearch && \
docker stop kibana && docker rm kibana
修改 elasticsearch.yaml
为以下配置
# 集群名称
discovery.type: single-node
cluster.name: "elasticsearch"
network.host: 0.0.0.0
http.port: 9200
xpack.license.self_generated.type: basic
xpack.monitoring.collection.enabled: false
# 开启es跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type
# 开启安全控制
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
# 传输层通信:传输协议用于Elasticsearch节点之间的内部通信
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
# HTTP层通信:客户端到Elasticsearch集群的通信
# 如果不开启客户端ssl认证,以下配置注释掉
#xpack.security.authc.api_key.enabled: true
#xpack.security.http.ssl.enabled: true
#xpack.security.http.ssl.keystore.path: certs/elastic-certificates.p12
#xpack.security.http.ssl.truststore.path: certs/elastic-certificates.p12
#xpack.security.http.ssl.verification_mode: certificate
修改 kibana.yaml
为以下配置
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://192.168.1.177:9200" ] # 修改为自己的ip
server.publicBaseUrl: http://your-domain.com:5601 # 修改为你自己的域名
monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "elastic" # es账号
elasticsearch.password: "1234" # es密码。账号密码这里先设置,后面启动 elk 还要再修改
i18n.locale: zh-CN # 中文
xpack.security.encryptionKey: "4297f44b13955235245b2497399d7a93"
xpack.reporting.encryptionKey: "4297f44b13955235245b2497399d7a93"
部署 ELK
创建 docker-compose.yaml
cat > /opt/elk/docker-compose.yml <<EOF
version: '3'
services:
elasticsearch:
image: elasticsearch:8.7.0 #镜像
container_name: elasticsearch #定义容器名称
restart: always #开机启动,失败也会一直重启
environment:
- "ES_JAVA_OPTS=-Xms2048m -Xmx2048m"
- TZ=Asia/Shanghai
volumes:
- /opt/elk/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 配置文件挂载
- /opt/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
- /opt/elk/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
- /opt/elk/elasticsearch/config/certs:/usr/share/elasticsearch/config/certs #配置文件挂载
ports:
- 9200:9200
- 9300:9300
kibana:
image: kibana:8.7.0
container_name: kibana
restart: always
volumes:
- /opt/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
ports:
- 5601:5601
logstash:
image: logstash:8.7.0
container_name: logstash
restart: always
volumes:
- /opt/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
ports:
- 4560:4560
EOF
部署
创建文件后进入文件夹启动服务
cd /opt/elk && \
docker-compose up -d
创建密码
进入 elasticsearch
容器
docker exec -it elasticsearch /bin/bash
执行以下命令自动创建密码。密码创建后保存。
bin/elasticsearch-setup-passwords auto
修改密码
修改 kibana.yml
访问 elasticsearch
的账号密码
vim /opt/elk/kibana/kibana.yml
修改账号密码为:kibana
以及对应的密码。
重启
修改密码后重启
docker-compose restart
安装 APM
安装 APM
服务使用官方默认推荐的方式,也就是先安装 Fleet
服务器,再安装 APM
服务。
操作很简单,直接在 Kibana
上操作就可以。主要步骤为:
- 先安装
Fleet
服务器 - 再安装
APM
服务。安装APM
服务选择的策略为Fleet
的策略即可
转载请注明来源:https://janrs.com/c9rq
发表回复