这两天使用公司的一台cent os把ELK搭建了起来,做个记录。
1.在官网down各种安装包-elasticSearch, logstash, kibna
https://www.elastic.co/downloads
2.解压并安装各种组件
2-1.elasticSearch
安装目录为:/home/elasticsearch/elasticsearch-6.3.1
启动命令如下:
/home/elasticsearch/elasticsearch-6.3.1/bin/elasticsearch
成功启动后的截图:
可通过浏览器访问(http://172.17.250.39:9200/)
2-2.安装elasticSearch-Head,包括nodejs,grunt等
参考了这篇文章:
https://blog.csdn.net/mjlfto/article/details/79772848
安装路径:/home/elasticsearch-head/elasticsearch-head/
当然在安装head之前,需要先安装nodejs,grunt等,可能还需要安装wdgt,git等软件。
具体的信息可以参考下上面这个链接
启动命令:npm run start
成功启动后的截图:
可通过浏览器访问(http://172.17.250.39:9100/)
2-3.安装logStash
参考了这篇帖:https://blog.csdn.net/wyqlxy/article/details/52604965
其中还要设置LOGSTASH的profile环境参数,并使用source命令让其生效
启动命令:/home/logstash/logstash-6.3.2/bin/logstash -f /home/logstash/logstash-6.3.2/mysql.conf --config.reload.automatic
关键点在于这里的mysql.conf文件,里面配置了mysql的驱动jar包,数据库连接地址信息及同步的sql脚本。
内容如下:
input {
stdin {
}
jdbc {
# mysql 数据库链接,shop为数据库名
jdbc_connection_string => "jdbc:mysql://172.17.250.24:3306/expense_dev"
# 用户名和密码
jdbc_user => "expensedev"
jdbc_password => "xndev#2017"
# 驱动
jdbc_driver_library => "/home/logstash/jar/mysql-connector-java-5.1.38.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# 执行的sql 文件路径+名称
#statement_filepath => "/home/logstash/sql/log.sql"
statement => "select * from expense_dev.syslog"
# 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
# ES的IP地址及端口
hosts => ["172.17.250.39:9200"]
# 索引名称
index => "ls-index-20180803"
# 需要关联的数据库中有有一个id字段,对应类型中的id
#document_id => "%{id}"
}
stdout {
# JSON格式输出
codec => json_lines
}
}
这样logStash成功启动后,会自动去运行设置的sql脚本,并把获取的DB数据导入到elasticSearch。
我这里脚本select出来的DB数据都是以json格式存储的。
可以看到上面的mysql.conf里设置的默认的elasticSearch的索引名称是index => "ls-index-20180803",
所以logStash启动后,可以在es-head的前端页面看到以该名称创建的索引和数据.
2-4.Kibna
es-head使用起来毕竟不是太方便,推荐的是kibna。
其实本人对ELK并不算特别了解,对Kibna的使用也算不上太熟练。不过既然推荐的是这个,那肯定也要试试的。
安装目录/home/kibana/kibana-6.3.2-linux-x86_64
启动命令:/home/kibana/kibana-6.3.2-linux-x86_64/bin/kibana
kibna是使用浏览器访问使用的,有很多的功能,本人目前了解的有限,后面会去官网一点点看。
http://172.17.250.39:5601/app/kibana#/home?_g=()
经过差不多2个小时的摸索和尝试,大概的使用方法如下:
2-4-1.左侧的Management菜单进去,然后点击Index Patterns来新建索引(对应ES的索引)
在Index pattern输入框里输入的所以名称必须能like ES里的索引名称,否则匹配不到
Kibna的索引名称的最后面的*,表示匹配ES索引名称,类似sql里的like的功能吧。
2-4-2.左侧的Discover菜单进去,就能够看到启动logStash之后,从DB里同步到ES的数据了。
3.使用Kibna进行数据查询
比如通过业务上的单据编号来查询接口的调用日志(这个也是在本人目前维护的一个系统中经常用到的)
formNbr := 后面的关键字,如果加了*号,则表示模糊查询.
查询出来的结果:
另外,查询结构列表的左侧的灰色菜单里,可以选择要显示的field是否显示(Selected Fields)
Kibna功能强大,其他的功能目前还不算太熟悉,后面再接着继续学习。
最后把这两天搭建ELK过程中,参考的资料和信息贴进来,以供后面参考.
####################### all
https://www.cnblogs.com/lixuwu/p/6116513.html
https://blog.csdn.net/yunanseo/article/details/48675899
####################### es
/home/elasticsearch/elasticsearch-6.3.1/bin/elasticsearch
curl -X GET http://172.17.250.39:9200
####################### es head
https://blog.csdn.net/mjlfto/article/details/79772848
cd /home/elasticsearch-head/elasticsearch-head/
npm run start
安装node
node -v
grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动
cd /home/elasticsearch-head
npm install -g grunt-cli //执行后会生成node_modules文件夹
运行head,在elasticsearch-head-master目录下
npm install(安装下载下来的包)
grunt server
####################### logstash
https://blog.csdn.net/wyqlxy/article/details/52604965
/home/logstash/logstash-6.3.2/bin/logstash -f /home/logstash/logstash-6.3.2/mysql.conf --config.reload.automatic
yum localinstall logstash-1.5.4-1.noarch.rpm
# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz
./logstash -e ""
./logstash -e "input {stdin{}} output {stdout{}}"
export LOGSTASH_HOME=/home/logstash/logstash-6.3.2
export PATH=:$PATH:$LOGSTASH_HOME/bin
####################### kibna
/home/kibana/kibana-6.3.2-linux-x86_64/bin/kibana