使用Docker快速安装部署ES和Kibana的前提:首先需要确保已经安装了Docker环境
如果没有安装Docker的话,可以参考上一篇的内容:Linux上安装Docker
有了Docker环境后,就可以使用Docker安装部署ES和Kibana了
一、安装部署ES
1、下载ealastic search
docker pull elasticsearch:7.6.2
2、配置
mkdir -p /docker/elasticsearch/config
mkdir -p /docker/elasticsearch/data
echo "http.host: 0.0.0.0" >/docker/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/elasticsearch/
3、启动ES
注意:下边这个启动es的命令,一定要设置占用的内存,不设置的话,es一启动就把虚拟机的整个内存耗尽了,会死机!!!
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.6.2
设置开机启动ES
docker update elasticsearch --restart=always
4、测试
浏览器输入:http://192.168.xx.xx:9200,看到以下页面说明ES部署成功
二、安装部署Kibana
1.拉取Kibana
例如:首先需要把Kibana从DockerHub上拉取下来:统一版本7.6.2
#拉取Kibana
docker pull kibana:7.6.2
2.配置
mkdir -p /docker/kibana
3.在 docker/kibana 下编写配置文件 kibana.yml
将如下内容写到kibana.yml中,然后保存退出::wq
server.name: kibana
server.host: "0"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://自己的elasticsearch的IP:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: zh-CN
4.启动kibana容器:
#运行kibana 注意IP一定不要写错
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://自己的elasticsearch的IP:9200 -p 5601:5601
-v /docker/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
-d kibana:7.6.2
5.最后访问页面
http://自己的IP地址:5601
三、安装部署logstash 并向es导入数据
1.下载镜像
docker pull logstash:7.6.2
2.新建挂载文件
mkdir -p /docker/logstash/conf.d
mkdir -p /docker/logstash/config
mkdir -p /docker/logstash/logs
3.赋权
chmod -777 /usr/local/logstash
4.挂载配置文件
1.挂载配置文件
将logstash.yml放入/docker/logstash/config/中,在容器启动后,使用的就是该文件配置。
logstash.yml:
http.host: "0.0.0.0"
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.hosts: "http://192.168.xx.xx:9200" #es地址
xpack.monitoring.elasticsearch.username: "elastic" #es xpack账号密码
xpack.monitoring.elasticsearch.password: "xxxx" #es xpack账号密码
path.config: /usr/share/logstash/config/conf.d/*.conf
path.logs: /usr/share/logstash/logs
注意 http.host: "0.0.0.0" 而不是指定ip
2.挂载日志收集文件
将log_to_es.conf放入/docker/logstash/conf.d/,在收集日志时,使用的就是该配置。
3.log_to_es.conf配置
log_to_es.conf:
input{
tcp {
mode => "server"
host => "0.0.0.0"
port => 5000
codec => json_lines
type=> "datalog"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4999
codec => json_lines
type=> "loginlog"
}
}
filter{
if[type] == "loginlog"{
grok {
match => {"message" => "|%{GREEDYDATA:loginMsg}|%{GREEDYDATA:timeFormat}|%{GREEDYDATA:userName}"}
}
if([message] =~ "^(?!.*?登录系统).*$") {
### 丢弃
drop{}
}
}
if[type] == "datalog"{
grok {
match => {"message" => "|%{DATA:userName}|%{GREEDYDATA:operationName}|%{DATA:timeFormat}|%{DATA:ip}|%{DATA:systemType}|%{GREEDYDATA:logType}|%{GREEDYDATA:method}|%{GREEDYDATA:input}"}
}
}
ruby {
code => "event['time'] = event['@timestamp']"
}
mutate
{
add_field => ["time", "%{@timestamp}"]
}
}
output{
if[type] == "datalog"{
elasticsearch{
hosts=>["192.168.xx.xx:9200"]
user => "elastic"
password => "xxxx"
index => "xxxx-%{+YYYY.MM.dd}"
}
}
if[type] == "loginlog"{
elasticsearch{
hosts=>["192.168.xx.xx:9200"]
user => "elastic"
password => "xxxx"
index => "xxxx-%{+YYYY.MM.dd}"
}
}
}
5.启动
docker run -p 5044:5044 -p 5000:5000-p 4999:4999--name=logstash \
--restart=always --privileged=true\
-e ES_JAVA_OPTS="-Xms1g -Xmx2g" \
-v /docker/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v /docker/logstash/conf.d:/usr/share/logstash/config/conf.d \
-v /docker/logstash/logs:/usr/share/logstash/logs -v /docker/logstash/mysql:/mysql \
-d logstash:7.6.2
参数详解:
-p 5044:5044 -p 5000:5000-p 4999:4999 :映射的端口号 这里与上文log_to_es.conf input中一定要相同!!!!额外价格一个5044 为logstash地址
--name=logstash:容器名称
--restart=always --privileged=true:启动配置
-e ES_JAVA_OPTS="-Xms1g -Xmx2g":指定内存
-v /usr/local/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:配置文件挂载
-v /usr/local/logstash/conf.d:/usr/share/logstash/config/conf.d:日志收集配置挂载位置
-v /usr/local/logstash/logs:/usr/share/logstash/logs:日志挂载位置
-d logstash:7.5.1:指定镜像
6.验证
访问kibana可以看到是否连接成功。