服务器环境是CentOS Linux release 7.7.1908 (Core),正常来说Centos7以上都可以的,前提是有java8的环境(保证java命令可用),如果不清楚可以百度哈
1、下载ELK的包:
下载地址:https://www.elastic.co/downloads
下载最新版的、linux服务器能使用的。
右键复制链接地址,wget就可以下载,你创建的你目录后,进入,执行命令:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz
下载完,解压,如: tar -zxvf elasticsearch-6.4.3.tar.gz
弄完了如下图:
2、elasticsearch配置启动
先看下java -version看下版本:java是不1.8的
然后进入config目录:cd elasticsearch-6.4.2/config,vim elasticsearch.yml 修改配置文件,在末尾加入如下几行:
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
注意,root用户是不能直接启动elasticsearch的,需要新建用户,然后切换用户去启动elasticsearch,如下:
创建elsearch用户组及elsearch用户
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
更改
elasticsearch-6.4.2
文件夹及内部文件的所属用户及组为elsearch:elsearch
cd切换到elasticsearch-6.4.3的父路径下
chown -R elsearch:elsearch elasticsearch-6.4.3
切换到elsearch用户再启动
su elsearch
cd elasticsearch-6.4.3/bin
sh elasticsearch &
启动会发现一堆错误如下:
当然实际上一个是max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
还有一个是:max number of threads [3818] for user [es] is too low, increase to at least [4096]
你需要加点东西(回到root中修改):
1、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量
ulimit -Hn ulimit -Sn
修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效
* soft nofile 65536 * hard nofile 65536
2、max number of threads [3818] for user [es] is too low, increase to at least [4096]
问题同上,最大线程个数太低。修改配置文件/etc/security/limits.conf(和问题1是一个文件),增加配置
* soft nproc 4096 * hard nproc 4096
可通过命令查看
ulimit -Hu ulimit -Su
修改后的文件:
3、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144
记得切换下root用户,或者你新开一个窗口就可以生效了,服务器不用重启的!
然后再进bin下
sh elasticsearch &
至此,elasticsearch配置启动完毕,可以在浏览器输入url: 服务器外网ip:9200 查看是否成功启动:
3、安装kibana
3.1下载 kibana(版本最好和elastic一致)
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.3-linux-x86_64.tar.gz
3.2 解压
tar -zxvf kibana-6.8.4-linux-x86_64.tar.gz
3.3 修改kibana.yml
vi config/kibana.yml
#端口
server.port: 5601
#服务Ip
server.host: "192.168.1.40"
#服务名
server.name: "kibana"
#ES地址
elasticsearch.hosts: ["http://192.168.1.40:9200"]
3.4 启动
自己写一个start.sh加上下面,路径根据你实际情况来
nohup ./bin/kibana >nohup.out 2>&1 &
3.5 截图
4、安装logstach
老样子:wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz
logstash配置启动
现在可以配置logstash了
cd logstash-6.4.2/bin/进入bin目录
新建文件 vim logstash1.conf ,写入内容(监听tomcat的日志):
input {
file {
path => "/usr/share/tomcat/logs/*.log"
start_position => beginning
}
}
filter {
}
output {
elasticsearch {
hosts => "localhost:9200"
}
}
启动logstash:sh logstash -f logstash1.conf &
如果提示--path.data的问题,则需要指定path.data的路径,随便找个路径就行,
我的是这样启动:sh logstash -f logstash1.conf --path.data=/home/elk/logstash-6.4.2/logs &
完了可以看到kibana上面有logstash推送过去的日志了
logstash配置mysql数据同步到elasticsearch:我参考的(https://blog.csdn.net/hatlonely/article/details/79945539)
获取 jdbc mysql 驱动:
wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.46.zip
unzip mysql-connector-java-5.1.46.zip
可以把解压后的mysql-connector-java-5.1.46-bin.jar复制到bin目录,方便启动
在bin目录新建配置文件 vim mysql-logstash.cnf ,写入:
input { jdbc { jdbc_driver_library => "mysql-connector-java-5.1.46-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://ip:3306/db_name" jdbc_user => "jdbc_user" jdbc_password => "jdbc_password" schedule => "* * * * *" statement => "SELECT * FROM table WHERE 时间字段 >= :sql_last_value" use_column_value => true tracking_column_type => "timestamp" tracking_column => "时间字段" last_run_metadata_path => "syncpoint_table" } } output { elasticsearch { hosts => "localhost:9200" index => "索引名称" document_id => "%{主键字段}" } }
需要先把logstash停了,在重启
netstat -ntlp 命令查看端口为9600的进程,
然后kill 线程id,我的是 kill 25437
使用命令 sh logstash -f mysql-logstash.cnf --path.data=/home/elk/logstash-6.6.0/logs &
启动logstash
完了在kibana可以看到同步过去的数据,我的是这样的:
到这里,基本已经成功了!