ELK简介
ELK是Elasticsearch+Logstash+Kibana简称
- Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。
- Logstash 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供了很多功能强大的滤网以满足你的各种应用场景。
- Kibana 是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图标、表格、地图等,kibana能够很轻易的展示高级数据分析与可视化。
目录:
- 安装docker-ce工具
//www.greatytc.com/p/0d2e8a31cf5c - 安装docker-compose工具
//www.greatytc.com/p/7a1c6c17717c - 编写docker-compose.yml安装、运行ELK及汉化Kibana
- Kibana设置登录密码
编写docker-compose.yml; 安装、运行ELK及汉化Kibana
mkdir -p /data/elk/{elasticsearch/data,logstash} #新建目录
1、编写/data/elk/docker-compose.yml
version: '3'
services:
elasticsearch:
image: elasticsearch:7.7.0 #镜像
container_name: elk_elasticsearch #定义容器名称
restart: always #开机启动,失败也会一直重启
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx1024m" #设置使用jvm内存大小
volumes:
- /data/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
- /data/elk/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
ports:
- 9200:9200
kibana:
image: kibana:7.7.0
container_name: elk_kibana
restart: always
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200 #设置访问elasticsearch的地址
ports:
- 5601:5601
logstash:
image: logstash:7.7.0
container_name: elk_logstash
restart: always
volumes:
- /data/elk/logstash/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
ports:
- 4560:4560
2、新建文件;安装、运行ELK
#授权目录
cd /data/elk
chmod 777 elasticsearch/data
#新建logstash/logstash-springboot.conf文件,新增以下内容
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "es:9200"
index => "springboot-logstash-%{+YYYY.MM.dd}"
}
}
#安装,运行ELK
docker-compose up -d
docker ps
- 访问http://localhost:5601 (ip:192.168.1.105)
3、汉化kibana
docker exec -it elk_kibana /bin/bash -c "echo "i18n.locale: zh-CN" >> /opt/kibana/config/kibana.yml"
docker restart elk_kibana
- 访问汉化后的kibana http://localhost:5601
Kibana设置登录密码
- kibana默认没有访问的权限控制,如果需要设置访问的账号密码,可以使用nginx配置代理来发布kibana。
- 在 nginx 下,提供了 ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容。默认情况下,nginx 已经安装了该模块。所以整体的一个过程就是先用第三方工具设置用户名、密码(其中密码已经加过密),然后保存到文件中,接着在 nginx 配置文件中根据之前事先保存的文件开启访问验证。
1、安装htpasswd工具
yum -y install httpd-tools
2、设置用户名和密码,并把用户名、密码保存到指定文件中:
htpasswd -c /data/nginx/htpasswd cfw #交互输入密码
3、修改nginx配置文件,并且重启nginx服务
user root; #修改配置文件用户为root
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.1.105:5601;
auth_basic "Please input password"; #这里是验证时的提示信息
auth_basic_user_file /data/nginx/htpasswd; #生成的密码存放路径
}
}
systemctl restart nginx.service
4、访问需要输入登录账号、密码
5、(补充)htpasswd 其他参数
命令格式:
htpasswd [-cmdpsD] [passwdfile] [username]
htpasswd -b[cmdpsD] [passwdfile] [username] [password]
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
参数说明:
-c 创建一个加密文件
-n 不更新加密文件,只将htpasswd命令加密后的用户名密码显示在屏幕上
-m 默认htpassswd命令采用MD5算法对密码进行加密
-d htpassswd命令采用CRYPT算法对密码进行加密
-p htpassswd命令不对密码进行进行加密,即明文密码
-s htpassswd命令采用SHA算法对密码进行加密
-b htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码
-D 删除指定的用户
新增用户role02
htpasswd -b [passwdfile] [username] [passwd]
htpasswd -b /data/nginx/htpasswd role02 123456