一、安装 Elasticsearch
Step 1:下载 elasticsearch
docker pull elasticsearch:7.6.2
Step 2:配置 JVM
PS:目的是为了避免报错“max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]”
查看当前值
sysctl -a|grep vm.max_map_count
临时修改
sysctl -w vm.max_map_count=262144
永久修改
vim /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
Step 3:配置挂载路径
/opt/elasticsearch/config/elasticsearch.yml
/opt/elasticsearch/data
/opt/elasticsearch/plugins
Step 4:配置 elasticsearch.yml
# 设置集群名称
cluster.name: "docker-cluster"
# 设置网络
network.host: 0.0.0.0
# 解决跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
Step 4:运行 elasticsearch
docker run --name elasticsearch --restart=always --network=commons-es-network -p 9200:9200 -p 9300:9300 \
-e ES_JAVA_OPS="-Xms1027m -Xmx2048m" \
-e "discovery.type=single-node" \
-v /opt/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /opt/elasticsearch/data:/usr/share/elasticsearch/data \
-v /opt/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.6.2
成功运行界面
二、安装 es-head 可视化插件
docker pull mobz/elasticsearch-head:5
docker run --name elasticsearch-head --restart=always -d -p 9100:9100 mobz/elasticsearch-head:5
解决 docker 安装 es-head 后无法查看数据
进入 head 插件安装目录 ,编辑
vi /usr/src/app/_site/vendor.js
修改:
application/x-www-form-urlencoded
为:
application/json;charset=UTF-8
tips:文件内容较多,可以使用 “/” + 关键字 搜索内容
成功运行界面
三、安装 cerebro 集群监控插件
docker pull lmenezes/cerebro
docker run --name cerebro -d -p 9111:9000 lmenezes/cerebro
四、安装 Kibana
版本号一定要和 es 版本保持一致
docker pull kibana:7.6.2
Step 1:配置挂载路径
/opt/kibana/config/Kibana.yml
/opt/kibana/data
/opt/kibana/plugins
Step 2:配置 Kibana.yml
# 默认值: 5601 Kibana 由后端服务器提供服务,该配置指定使用的端口号。
server.port: 5601
# 默认值: "localhost" 指定后端服务器的主机地址。
server.host: "0"
# 设置为中文
i18n.locale: "zh-CN"
# 设置服务名称
server.name: "kibana"
# 设置 hosts
elasticsearch.hosts: ["http://localhost:9200"]
# 设置请求超时时间
elasticsearch.requestTimeout: 99999
Step 3:运行 Kibana
docker run -it -p 5601:5601 --restart=always --name kibana --network=commons-es-network \
-v /opt/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-v /opt/kibana/data:/usr/share/kibana/data \
-v /opt/kibana/data/plugins:/usr/share/kibana/plugins \
-d 镜像 ID
五、安装 LogStash
tips:版本要和 ES 版本一致
Step 1:配置挂载路径
/opt/logstash/:/usr/share/logstash/config/
/opt/logstash/:/usr/share/logstash/data/
/opt/logstash/:/usr/share/logstash/logstash-core/lib/jars/
/opt/logstash/:/usr/share/logstash/pipeline/
Step 2:拷贝 logstash 配置文件
docker cp logstash:/usr/share/logstash/config/ /opt/logstash
docker cp logstash:/usr/share/logstash/pipeline/ /opt/logstash
docker cp logstash:/usr/share/logstash/logstash-core/lib/jars/ /opt/logstash
Step 3:MySQL 驱动安装
方式一 容器内下载:
下载 JDBC 驱动(如果已经挂载了就不需要在容器内部安装)
修改 Gemfile 数据源地址将 Gemfile 的 source 换成 https://gems.ruby-china.com/
修改 Gemfile.lock 文件,将 GEM remote 修改为 https://gems.ruby-china.com/
./logstash-plugin install logstash-integration-jdbc
方式二 数据卷挂载:
将 MySQL 驱动放到对应挂载的路径下重启容器即可,我这里映射的挂载路径为:
/opt/logstash/:/usr/share/logstash/logstash-core/lib/jars/
所以要放到宿主机的/opt/logstash/jars/下。
Step 4:配置 jdbc.conf
配置文件的内容如下:
input{
# 多个数据库的话,复制 jdbc 组就行,组和组之间不加逗号
jdbc{
tags => "pb_pro_sub"
jdbc_connection_string => "jdbc:mysql://IP:port/pb_projects?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false"
jdbc_user => "root"
jdbc_password => "NQULaJwY7u"
jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/mysql-connector-java-8.0.21.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
jdbc_default_timezone => "Asia/Shanghai"
statement => "你想要查询的 SQL 语句 "
clean_run => false
# 每 30 分钟更新一次 默认为 1 分钟一次
# schedule => "0 */30 * * * *"
}
jdbc{
tags => "pb_pro"
jdbc_connection_string => "jdbc:mysql://IP:port/pb_projects?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false"
jdbc_user => "root"
jdbc_password => "NQULaJwY7u"
jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/mysql-connector-java-8.0.21.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
jdbc_default_timezone => "Asia/Shanghai"
statement => 你想要查询的 SQL 语句 "
clean_run => false
# 每 30 分钟更新一次 默认为 1 分钟一次
# schedule => "0 */30 * * * *"
}
jdbc{
tags => "party_department"
jdbc_connection_string => "jdbc:mysql://IP:port/pb_projects?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false"
jdbc_user => "root"
jdbc_password => "NQULaJwY7u"
jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/mysql-connector-java-8.0.21.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
jdbc_default_timezone => "Asia/Shanghai"
statement => "你想要查询的 SQL 语句 "
clean_run => false
# 每 30 分钟更新一次 默认为 1 分钟一次
# schedule => "0 */30 * * * *"
}
}
output{
elasticsearch {
hosts => "ES 服务地址"
# 索引名
index => "%{tags}"
document_id => "%{id}"
}
stdout{
codec => json_lines
}
}
tips:配置文件下载传送
https://download.csdn.net/download/liyu109766/19830675
Step 5:配置 logstash.yml
挂载数据卷路径:
/opt/logstash/piplines/config/logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://localhost:9200" ]
Step 6:配置 pipelines.yml
挂载数据卷路径:
/opt/logstash/piplines/config/pipelines.yml
- pipeline.id: main
path.config: "/usr/share/logstash/pipeline/jdbc.conf"
Step 7:运行 logstash
docker run -d --privileged=true --restart=always --network commons-es-network \
-v /opt/logstash/pipeline:/usr/share/logstash/pipeline \
-v /opt/logstash/jars:/usr/share/logstash/logstash-core/lib/jars \
-v /opt/logstash/config:/usr/share/logstash/config \
--name=logstash logstash:7.6.2
注:我自己使用 logstash 是为了同步 MySQL 数据到 ES 索引库中,所以 jdbc.conf 这个配置文件里面已经配置好了,启动 logstash 后数据就会同步到索引库。
© 版权声明
博主的文章没有高度、深度和广度,只是凑字数。利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章!如若有侵权,请联系博主删除。
喜欢就点个赞吧