利用X-PACK账号鉴权
-
进入es容器,打开
config
目录下的
elasticsearch.yml
编辑,添加如下配置http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization xpack.security.enabled: true xpack.security.transport.ssl.enabled: true
- 保存退出容器后,重启es容器
-
再次进入es容器,执行如下命令,设置x-pack密码
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
-
根据提示信息依次设置每个账号的密码(建议统一设置,防止混淆),以下是各账号用处
elastic:超级管理员账号
kibana:Kibana访问专用账号
logstash_system:Logstash访问专用账号
beats_system:FileBeat访问专用账号
apm_system:APM系统专用账号
remote_monitoring_user:远程监控账号
- 设置好密码后退出容器,并重启es容器
-
es启动后,访问:
http://ip:9200,
若出现如下如下提示说明密码设置成功
- 输入elastic账号密码,出现如下提示,说明es容器启动正常
-
进入kibana容器,编辑
config
目录下的
kibana.yml
文件,添加es账号密码,
elasticsearch.username: "kibana"
elasticsearch.password: "刚才设置的密码"
-
进入logstash容器,编辑
config
目录下的
logstash.yml
文件,添加logstash连接es的账号密码xpack.monitoring.elasticsearch.username: "logstash_system" xpack.monitoring.elasticsearch.password: "刚才设置的密码"
-
保存退出容器,并重启kibana容器,启动完打开
http://ip:5601,
出现如下页面说明密码设置成功,使用超级管理员账号elastic登录即可。
-
进入logstash容器,编辑
pipeline
目录下的
logstash.conf
文件,改成如下
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4561
codec => json_lines
type => "error"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4562
codec => json_lines
type => "business"
}
}
output {
elasticsearch {
hosts => "es:9200"
index => "fincourt-logs-%{type}-%{+YYYY.MM.dd}"
user => "elastic"
password => "刚设置的密码"
}
}
- 保存退出容器后,重启logstash容器。
清理过期ES索引数据
-
进入elk目录,创建es_clear.sh脚本文件,
touch es_clear.sh vi es_clear.sh
-
编辑内容如下(注意最下方配置的
账号和密码
)
#!/bin/bash
# @Author: zhangzhijian
# @Date: 2021-8-24 15:18:52
# 用于es中日志索引的定时删除
# 保留近 N 天
KEEP_DAYS=15
# 删除最近 M 天,即删除是从 M+N到N
DEL_DAYS=15
# 删除索引名,留空则使用*-日期(*-2021.02.20)
INDEX_NAME=()
# 需保留的索引名,留空则使用
# 删除前 N的所有天到 前N天==>每天执行
function get_todelete_days()
{
# declare -A DAY_ARR
# DAY_ARR=""
for i in $(seq $DEL_DAYS $(($KEEP_DAYS+$DEL_DAYS)));
do
THIS_DAY=$(date -d "$i day ago" +%Y.%m.%d)
DAY_ARR=( "${DAY_ARR[@]}" $THIS_DAY)
done
echo ${DAY_ARR[*]}
}
# 返回数组的写法
TO_DELETE_DAYS=(`get_todelete_days`)
for day in "${TO_DELETE_DAYS[@]}"
do
if [ ${#INDEX_NAME[@]} -eq 0 ]; then
L_INDEX_NAME=( "${L_INDEX_NAME[@]}" "*-"${day} )
else
for each in "${INDEX_NAME[@]}"
do
L_INDEX_NAME=( "${L_INDEX_NAME[@]}" "${each}-${day}" )
done
fi
done
for l_index in "${L_INDEX_NAME[@]}"
do
echo -n "$l_index will be delete"
curl -XDELETE -u"elastic:12345678" 'http://127.0.0.1:9200/'$l_index
echo ""
done
-
给脚本添加权限
chmod +x ./es_clear.sh
-
创建logs文件夹,记录脚本执行日志
mkdir logs chmod 777 logs
-
利用crontab定时执行脚本文件
crontab -e
-
编辑内容如下,每天1点执行,保存退出
0 1 * * * /elk/es_clear.sh > /elk/logs/es_clear_$(date "+\%Y-\%m-\%d").log 2>&1 &
版权声明:本文为jane_zhang1022原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。