1、ElasticSearch安装
机器IP地址为:192.168.1.111
Mysql提前安装完成
jar包下载:链接:
https://pan.baidu.com/s/1-Jonq9r8ydTDrSl1byGIbQ
提取码:flut
1.1解压安装包
tar -zxvf elasticsearch-7.9.2-linux-x86_64.tar.gz
1.2修改elasticsearch.yml
cluster.name: elasticsearch
node.name: node-1
path.data: /home/els/data
path.logs: /home/els/logs
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]
1.3、切换非Root账号
[root]# useradd es
[root]# passwd es
[root]# chown -R es:es /home
[root]# su es
1.4、启动和测试
[es]# cd /home/els/elasticsearch/bin
[es]# ./elasticsearch -p /home/els/pid -d
浏览器访问:http://192.168.1.111:9200/,出现如下,启动成功
2、Kibana安装(与ES同一台机器)
2.1、解压
tar -zxvf kibana-7.9.2-linux-x86_64.tar.gz
2.2、kinana.xml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
elasticsearch.requestTimeout: 30000
i18n.locale: "zh-CN"
2.3、切换es用户并启动
[es bin]# cd /home/kibana/bin/
[es bin]# ./kibana >./log.txt 2>&1 &
2.4、测试
http://192.168.1.111:5601
3、遇到的问题
3.1、kibana-Request Timeout after 30000ms
解决
配置:elasticsearch.yml network.host
network.host: 0.0.0.0
注意关闭防火墙,
重启ES
配置:kibana.yml
elasticsearch.hosts: ["http://127.0.0.1:9200"] #ES地址不能配置错误
重启Kibana
3.2、[master_not_discovered_exception] null
配置elasticsearch.yml中,initial_master_nodes的值与node.name一致;(单机)
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
重启ES
3.3、其他问题详见
引用这篇文章(感谢作者):https://blog.csdn.net/m0_37886429/article/details/72395809
4、FileBeat监控Mysql
学习参考地址:
https://helpcdn.aliyun.com/document_detail/170479.html#section-hyw-06v-cxp
构建图:
4.1、fileBean相关配置:
- filebeat.yml
filebeat.inputs:
- type: log
enabled: false
paths:
- /var/log/*.log
filebeat.config.modules:
path: /etc/filebeat/modules.d/mysql.yml
reload.enabled: true
reload.period: 2s
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
host: "192.168.1.111:5601"
output.elasticsearch:
hosts: ["192.168.1.111:9200"]
- filebeat module中mysql.yml配置,cat /etc/filebeat/modules.d/mysql.yml
- module: mysql
# Error logs
error:
enabled: true
var.paths: ["/var/log/mysql/mysqld.log"]
# Slow logs
slowlog:
enabled: true
var.paths: ["/var/log/mysql/slow-mysql-query.log"]
-
var.paths # 设置为对应日志文件的路径。需要与MySQL配置文件中设置的路径保持一致
-
mysql配置文件如下:cat /etc/my.cnf,此处配置了慢查询和safe日志
[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql8.0
datadir=/usr/local/mysql8.0/data
socket=/tmp/mysql.sock
log_queries_not_using_indexes = 1
slow_query_log=on
slow_query_log_file=/var/log/mysql/slow-mysql-query.log
long_query_time=0
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
5、Elastic集群(3集群,同一台机器开了3个端口)
- 启动部署的方式和单台是一样的,配置如下:
安装目录
[root]# cd /home/es
[root]# ls
els1 els2 els3
5.1、els1
[root]# cd /home/es/els1
[root]# ls
data elasticsearch logs
[root]# vim /home/es/els1/elasticsearch/config/elasticsearch.yml
- elasticsearch.yml
# 集群名称
cluster.name: elasticsearch
# 节点名称
node.name: node-1
# Path to directory where to store the data (separate multiple locations by comma):
path.data: /home/es/els1/data
# Path to log files:
path.logs: /home/es/els1/logs
# 网络绑定,写自己的主机
network.host: 0.0.0.0
# 设置对外服务的http端口
http.port: 9200
# 是否允许该节点存储数据,默认开启
node.data: true
# 是否可以成为master节点
node.master: true
# 设置节点间交互的tcp端口,默认是9300,为和单机分开,我设置9301
transport.tcp.port: 9301
#设置集群自动发现机器ip的集合
discovery.seed_hosts: ["192.168.1.111:9301","192.168.1.111:9302","192.168.1.111:9303"]
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# 指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
- 启动(下面两个节点的启动方式类似)
./elasticsearch -p /home/es/els1/pid -d
5.2、els2
[root]# cd /home/es/els2
[root]# ls
data elasticsearch logs
[root]# vim /home/es/els2/elasticsearch/config/elasticsearch.yml
- elasticsearch.yml
# 集群名称
cluster.name: elasticsearch
# 节点名称
node.name: node-2
# Path to directory where to store the data (separate multiple locations by comma):
path.data: /home/es/els2/data
# Path to log files:
path.logs: /home/es/els2/logs
# 网络绑定,写自己的主机
network.host: 0.0.0.0
# 设置对外服务的http端口
http.port: 9300
# 是否允许该节点存储数据,默认开启
node.data: true
# 是否可以成为master节点
node.master: true
# 设置节点间交互的tcp端口,默认是9300,为和单机分开,我设置9301
transport.tcp.port: 9302
#设置集群自动发现机器ip的集合
discovery.seed_hosts: ["192.168.1.111:9301","192.168.1.111:9302","192.168.1.111:9303"]
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# 指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
5.3、els3
[root]# cd /home/es/els3
[root]# ls
data elasticsearch logs
[root]# vim /home/es/els3/elasticsearch/config/elasticsearch.yml
- elasticsearch.yml
# 集群名称
cluster.name: elasticsearch
# 节点名称
node.name: node-3
# Path to directory where to store the data (separate multiple locations by comma):
path.data: /home/es/els3/data
# Path to log files:
path.logs: /home/es/els3/logs
# 网络绑定,写自己的主机
network.host: 0.0.0.0
# 设置对外服务的http端口
http.port: 9400
# 是否允许该节点存储数据,默认开启
node.data: true
# 是否可以成为master节点
node.master: true
# 设置节点间交互的tcp端口,默认是9300,为和单机分开,我设置9301
transport.tcp.port: 9303
#设置集群自动发现机器ip的集合
discovery.seed_hosts: ["192.168.1.111:9301","192.168.1.111:9302","192.168.1.111:9303"]
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# 指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
- (非root账户)如果启动有读写问题,可能是权限问题,当前用的是es账号,切换到root
chown -R es:es /home
然后切换到es,重新启动
全部启动之后查看节点情况:http://192.168.1.111:9200/_cat/nodes?pretty
192.168.1.111 56 95 1 0.01 0.03 0.08 dilmrt * node-1
192.168.1.111 47 95 1 0.01 0.03 0.08 dilmrt - node-3
192.168.1.111 54 95 1 0.01 0.03 0.08 dilmrt - node-2
-
查看所有的Index
http://192.168.1.111:9200/_cat/indices
重启之后遇到的报错
max virtual memory areas vm.max_map_count [65530] is too low, increase
to at least [262144]
临时修改
sysctl -w vm.max_map_count=262144
查看修改结果:
sysctl -a|grep vm.max_map_count
结果:vm.max_map_count = 262144
永久修改
在/etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144