Docker – 整合ELKC(elasticsearch、logstash、kibana、cerebro)

一、安装 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

成功运行界面
Docker - 整合 ELKC(elasticsearch、logstash、kibana、cerebro)

二、安装 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:文件内容较多,可以使用 “/” + 关键字 搜索内容

成功运行界面
Docker - 整合 ELKC(elasticsearch、logstash、kibana、cerebro)

三、安装 cerebro 集群监控插件

docker pull lmenezes/cerebro
docker run --name cerebro -d -p 9111:9000 lmenezes/cerebro

Docker - 整合 ELKC(elasticsearch、logstash、kibana、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 后数据就会同步到索引库。

Docker - 整合 ELKC(elasticsearch、logstash、kibana、cerebro)

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...