一 Elastic Seach 部署
官方文档:https://www.elastic.co/cn/
Elastic Seach下载:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-2-4-0
Logstash下载:https://www.elastic.co/cn/downloads/past-releases/logstash-2-4-0
注意:7.0.0以下版本依赖jdk环境,7.0.0以上版本自带jdk环境
1.1 文件上传服务器
- 解压文件
# 解压elasticsearch
tar -zxvf elasticsearch-2.4.0.tar.gz
# 解压logstash
tar -zxvf logstash-2.4.0.tar.gz
1.2 修改elasticsearch配置文件
- 修改elasticsearch.yml
- 新建数据存储地方
- 网络访问
- 修改系统文件
vi /etc/security/limits.conf
# 修改属性
* soft nofile 65536
* hard nofile 65536
vi /etc/sysctl.conf
# 修改属性
vm.max_map_count=655360
# 执行生效
sysctl -p
- 创建新用户,因为es不允许root用户启动
useradd esuser
passwd esuser
- 文件夹授权
chgrp -R esuser /environment/es/elasticsearch-2.4.0/
chown -R esuser /environment/es/elasticsearch-2.4.0/
chmod 777 /environment/es/elasticsearch-2.4.0/
- 切换用户,启动
./bin/elasticsearch -d
- 测试:IP地址+端口
二 logstash部署
- jdbc.jar包上传
[root@VM-0-5-centos logstash-2.4.0]# ls
bin CHANGELOG.md CONTRIBUTORS Gemfile Gemfile.jruby-1.9.lock lib LICENSE NOTICE.TXT vendor
[root@VM-0-5-centos logstash-2.4.0]# cd lib
[root@VM-0-5-centos lib]# ls
bootstrap pluginmanager
[root@VM-0-5-centos lib]# mkdir jar
[root@VM-0-5-centos lib]# ls
bootstrap jar pluginmanager
[root@VM-0-5-centos lib]#
- 新建日志文件存储
- 进入bin目录新建配置文件logstash.conf(此处采用增量更新)
增量更新
input {
stdin {
}
jdbc {
# 数据库连接地址
jdbc_connection_string => "jdbc:oracle:thin:@IP:端口:orcl"
# 用户名和密码
jdbc_user => ""
jdbc_password => ""
# 驱动
jdbc_driver_library => "/environment/es/logstash-2.4.0/lib/jar/ojdbc7-12.1.0.2.jar"
# 驱动类名
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
#处理中文乱码问题
codec => plain { charset => "UTF-8"}
#使用其它字段追踪,而不是用时间
use_column_value => true
#追踪的字段
tracking_column => id
record_last_run => true
#上一个sql_last_value值的存放文件路径, 必须要在文件中指定字段的初始值
last_run_metadata_path => "/environment/es/logstash-2.4.0/logs/users_log_last_time.txt"
#开启分页查询
# jdbc_paging_enabled => true
# jdbc_page_size => 100000
#你的SQL语句也可以是sql文件(就把sql写进文件就行了,重点是记得这个sql格式一定是UTF-8 无bom的),
statement => "select * from table"
#statement_filepath => "D:\Environment\ES\syslog.sql"
# 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
# 索引类型
type => "userlog"
}
}
output {
elasticsearch {
# ES的IP地址及端口
hosts => ["http://ip:端口"]
# 索引名称
index => "userlog"
# 自增ID对应数据库中的自增id
document_id => "%{id}"
}
stdout {
# JSON格式输出
codec => json_lines
}
}
- 启动
#启动
nohup ./logstash -f logstash.conf &
# 查看logstash进程是否开启
ps -ef | grep logstash
- nohup文件过大处理
创建ClearNohup.sh脚本
授权:chmod +x ClearNohup.sh
# Author: shu
# Last Update:
# Description: nohup.out
this_path=$(cd "$(dirname "$0")";pwd)
current_date=`date -d "day" "+%Y%m%d"`
cd $this_path
echo $this_path
echo $current_date
echo "begin"
cat /dev/null > nohup.out
echo "finished"
crontab e
每小时执行一次脚本处理
查看服务是否开启
service crond status