ElasticSearch + Kibana + Logstash 以及插件安装和配置
生产环境不推荐使用该方式安装
# 集群名称
cluster.name: my-application-es1
# 节点名称
node.name:node-1
# 数据目录
path.data:/usr/local/elasticsearch-7.17.3/data
#log目录
path.logs:/usr/local/elasticsearch-7.17.3/logs
#修改 network.host 为 0.0.0.0,表示对外开放,如对特定ip开放则改为指定ip
network.host: 0.0.0.0
#配置端口,默认为9200,可更改端口不为9200
http.port: 9200
#初始主节点
cluster.initial_master_nodes: ["node-1"]
#下面的两个配置在安装elasticsearch-head的时候会用到
#开启跨域访问支持,默认为false
http.cors.enabled: true
#跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: "*"
# ES相关环境搜索并拉取ES镜像
docker search elasticsearch
docker pull elasticsearch:7.17.5
# 创建文件夹并授予权限相关
chmod -R 777 /docker/es9200/
# docker 运行
docker run \
-p 9200:9200 -p 9300:9300 \
--privileged=true \
--restart=always \
--name es9200 \
-e elasticsearch.username=elastic \
-e elasticsearch.password=elastic12345 \
-v /docker/es9200/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /docker/es9200/plugins:/usr/share/elasticsearch/plugins \
-v /docker/es9200/logs:/usr/share/elasticsearch/logs \
-v /docker/es9200/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.17.5
docker logs [你的容器id]
#编辑elasticsearch.yml添加主机ip (否则无法访问)
#设置ip地址,使任意网络均可访问
network.host: 0.0.0.0
#放开端口号
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
X-Pack 已经作为 Elastic 公司单独的产品线,提供安全性,警报,监视,报告,机器学习和许多其他功能,有着非常强大的功能。从6.3版本和 7.1 开始, X-Pack 默认包含在 Elasticsearch、Kibana 和 Logstash 中,所以无需再次安装,并且基础级安全永久免费,比如 用户登录权限校验等基础功能,当然也有付费的功能,但是我们用免费的就足够了。
友情提醒:如果是自己学习使用就不推荐开启这个功能到,一顿操作下来没啥用,反正我开启后又关闭了,注意:必须手动显示的关闭,需要在ES的config/elasticsearch.yml加入这个参数:
xpack.security.enabled: false
xpack默认内置了这些用户,在设置xpack的时候,需要为这些用户设置一个默认值。
用户 | 角色 |
---|---|
elastic | 超级管理员 |
apm_system | APM服务器在Elasticsearch中存储监视信息时使用 |
kibana | 用于负责Kibana连接Elasticsearch |
logstash_system | Logstash将监控信息存储在Elasticsearch中时使用 |
beats_system | Beats在Elasticsearch中存储监视信息时使用 |
remote_monitoring_user | Metricbeat用户在Elasticsearch中收集和存储监视信息时使用 |
xpack.security.enabled: true
xpack.license.self_generated.type: basic
#这条如果不配,es将起不来
xpack.security.transport.ssl.enabled: true
# 重启docker
docker restart [es容器ID]
# 进入容器
docker exec -it es9200 /bin/bash
# 执行下面命令
elasticsearch-setup-passwords interactive
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [elastic]
http://ip:9200/ 打开需要输入密码
之后进入es的安装根目录bin下 执行设置用户名和密码的命令,这里需要为4个用户分别设置密码,elastic, kibana, logstash_system,beats_system
server.name: kibana
server.host: "0"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://自己的elasticsearch的IP:9200" ]
elasticsearch.username: "es账号"
elasticsearch.password: "es密码"
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: "zh-CN"
EOF
docker search kibana
# 与ES选择同版本
docker pull kibana:7.17.5
# 创建目录
mkdir -p /docker/kibana5601/config/
# 追加相关文件
sudo tee /docker/kibana5601/config/kibana.yml <<-'EOF'
server.name: kibana
server.host: "0.0.0.0"
kibana.index: ".kibana"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://自己的es局域网网关路由的IP:9200" ]
elasticsearch.username: "es账号"
elasticsearch.password: "es密码"
# 开启xpack对es监控
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: "zh-CN"
EOF
#运行kibana 注意IP一定不要写错
docker run \
-p 5601:5601 \
--privileged=true \
--restart=always \
--name kibana5601 \
-v /docker/kibana5601/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-e ELASTICSEARCH_HOSTS=http://自己的elasticsearch的IP:9200 \
-d kibana:7.17.5
登录设置的elastic 账号进行登录
❗❗ #! this request accesses system indices: [.kibana_7.17.5_001, .kibana_task_manager_7.17.5_001], but in a future major version, direct access to system indices will be prevented by default
该请求访问系统索引:[.kibana7.17.5_001],但在未来的主要版本中,默认情况下将阻止直接访问系统索引📌说我们访问了系统索引,所以我们尽量别访问系统的索引, 在后面ES的主要版本中,会默认禁止直接访问系统索引。只要我们不访问系统索引应该就不会出现这个警告。
docker search logstash
# 与ES选择同版本
docker pull logstash:7.17.5
# 运行安装相关镜像
# ============================== Filebeat inputs ===============================
filebeat.inputs:
# ==========RS log==========
# 定义要采集项目的log标签,如rs项目debug类型的日志,标签可以设为:rs_debug,并声明log路径
- type: log
enabled: true
tags: ["rs_debug"]
paths:
- /home/rs/logs/debug.log
# 采集同一台服务器上的多个服务,使用 - 进行分隔,如mn项目的error类型的日志
- type: log
enabled: true
tags: ["mn_error"]
paths:
- /home/mn/logs/error.log
# ============================== Filebeat modules ==============================
filebeat.config.modules:
# Glob pattern for configuration loading
path: ${path.config}/modules.d/*.yml
# Set to true to enable config reloading
reload.enabled: false
# ======================= Elasticsearch template setting =======================
setup.template.settings:
index.number_of_shards: 1
index.number_of_replicas: 0
# Kibana 配置,Kibana所在服务器的内网地址
setup.kibana:
host: "127.0.0.1:5601"
# ================================== Outputs ===================================
# Logstash Output 注意:Logstash和Elasticsearch选择一个作为日志输出即可,不能同时选择
output.logstash:
hosts: ["127.0.0.1:5044"]
# Processors 配置,保持默认
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
docker search filebeat
# 与ES选择同版本
docker pull filebeat:7.17.5
# 运行安装继镜像
docker run --restart=always -d \
--name=filebeat5044 \
-v /docker/elk/filebeat5044/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /docker/elk/filebeat5044/:/logs/ \
--hostname=$(hostname) \
docker.elastic.co/beats/filebeat:7.17.5
…