注意
elasticsearch需要消耗的内存非常大建议:改为2-4g
处理器两个或两个以上
1、下载 elasticsearch https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.0-linux-x86_64.tar.gz
2、解压后进入config 目录配置 : vim elasticsearch.yml
cluster.name: es-application #集群名称
node.name: node-1 #节点名称
#数据和日志的存储目录
path.data: /usr/java/es/elasticsearch-7.6.2/data
path.logs: /usr/java/es/elasticsearch-7.6.2/logs
#设置绑定的ip,设置为0.0.0.0以后就可以让任何计算机节点访问到了
network.host: 192.168.61.130
http.port: 9200 #端口
#设置在集群中的所有节点名称,这个节点名称就是之前所修改的,当然你也可以采用默认的也行,目前是单机,放入一个节点即可
cluster.initial_master_nodes: ["node-1"]
2.2为防止报错
vim /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
vim /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p
重新启动
3、新增 elasticsearch 用户,并运行 elasticsearch
/*切换到root*/
su root
/*新建用户*/
useradd elastic
/*设置密码*/
passwd elastic abc635
/*给用户执行权限*/
chown -R elastic /home/vagrant/elasticsearch-7.6.1
/*切换到 elastic用户*/
su elastic
cd /home/vagrant/elasticsearch-7.6.1
/*运行elasticsearch */
./bin/elasticserarch
运行效果:
安装IK分词
到这个目录 /elasticsearch-7.6.2/plugins/ 下新建elasticsearch文件夹
将IK解压后的全部放进新建的elasticsearch文件夹下
安装kibana
https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-linux-x86_64.tar.gz
解压
tar -zxvf kibana-7.6.2-linux-x86_64.tar.gz
编辑(使用root)
vim kibana.yml
server.port: 5601
server.host: "192.168.61.130"
elasticsearch.hosts: ["http://192.168.61.130:9200"]
之后使用root授权该目录
chown -R es:elasticsearch-7.6.2
之后运行
./kibana
安装logstash
在/logstash-7.6.2/config/下新建 mysql文件夹和子目录config
之后在/logstash-7.6.2/config/mysql/config/ 下新建 mysql.conf
编辑mysql.config
input {
stdin {
}
jdbc {
type => "tb_sys_work_log"
# mysql 数据库链接,
jdbc_connection_string => "jdbc:mysql://192.168.89.21:3306/localerp?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
# 用户名和密码
jdbc_user => "root"
jdbc_password => "root"
# 驱动
jdbc_driver_library => "/usr/java/es/logstash-7.6.2/config/mysql/config/mysql-connector-java-5.1.48-bin.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
#是否分页
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#直接执行sql语句
# statement =>"select * from t_item"
# 执行的sql 文件路径+名称
statement_filepath => "/usr/java/es/logstash-7.6.2/config/mysql/sys_work_log.sql"
# 默认列名转换为小写
lowercase_column_names => "false"
#(定时)设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
# 索引类型
#type => "jdbc"
}
jdbc {
type => "tb_sys_work_logcccc"
# mysql 数据库链接,
jdbc_connection_string => "jdbc:mysql://192.168.89.21:3306/localerp?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
# 用户名和密码
jdbc_user => "root"
jdbc_password => "root"
# 驱动
jdbc_driver_library => "/usr/java/es/logstash-7.6.2/config/mysql/config/mysql-connector-java-5.1.48-bin.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
#是否分页
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#直接执行sql语句
# statement =>"select * from t_item"
# 执行的sql 文件路径+名称
statement_filepath => "/usr/java/es/logstash-7.6.2/config/mysql/sys_work_log.sql"
# 默认列名转换为小写
lowercase_column_names => "false"
#(定时)设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
# 索引类型
#type => "jdbc"
}
}
#在数据库导入到es中的数据的时候 es会自动创建出一些字段就是下面的这几个字段 要是不想要这几个字段就添加过滤器
filter {
mutate {
remove_field => ["@timestamp","@version","create_time","update_time"]
}
}
output {
if[type]=="tb_sys_work_log"{
elasticsearch {
# ES的IP地址及端口
hosts => ["127.0.0.1:9200"]
# 索引名称 可自定义
index => "tb_sys_work_log"
# 需要关联的数据库中有有一个id字段,对应类型中的id
document_id => "%{id}"
document_type => "%{user_name}"
}
}
if[type]=="tb_sys_work_logcccc"{
elasticsearch {
# ES的IP地址及端口
hosts => ["127.0.0.1:9200"]
# 索引名称 可自定义
index => "tb_sys_work_logcccc"
# 需要关联的数据库中有有一个id字段,对应类型中的id
document_id => "%{id}"
document_type => "%{user_name}"
}
}
stdout {
# JSON格式输出
codec => json_lines
}
}