ELK
ELK下载地址:https://www.elastic.co/downloads
JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Redis下载地址:http://download.redis.io/releases/redis-3.2.3.tar.gz
1、安装JDK(Logstash要求JDK版本不低于1.7,官方文档已写明)
- # tar zxf jdk-8u101-linux-x64.gz
- # mv jdk1.8.0_101 /usr/local/jdk_1.8.0
- # vim /etc/profile
- ---------------文件最后加入如下内容------------
- #JDK1.8
- export JAVA_HOME=/usr/local/jdk_1.8.0
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
- ------------------------------------------------------------
- # source /etc/profile #使声明生效
- # java –version #查看java jdk版本
2、安装Redis agent端不用安装
- # tar zxf redis-3.2.3.tar.gz
- # cd redis-3.2.3
- # yum install gcc -y (一般情况下,所有安装包这个都是必安得!)
- # ./runtest #检测下安装环境,看是否缺少支持包
- 提示: You need tcl 8.5 or newer in order to run the Redis test
- # yum install tcl -y #安装tcl
- # make MALLOC=libc (加上MALLOC=libc是因为在redis中的readme中有这么一段话:
- Allocator --------- Selecting a non-default memory allocator when building Redis is done by setting the `MALLOC` environment variable. Redis is compiled and linked against libc malloc by default, with the exception of jemalloc being the default on Linux systems. This default was picked because jemalloc has proven to have fewer fragmentation problems than libc malloc. To force compiling against libc malloc, use: % make MALLOC=libc To compile against jemalloc on Mac OS X systems, use: % make MALLOC=jemalloc)
- # make test #make完成后测试下
- # cd src
- # make install #进入src目录并且进行编译
- # cd ../.. #回到redis安装目录
- # mv redis-3.2.3 /usr/local/redis
- # vim /usr/local/redis/redis.conf #修改redis配置文件,以后台运行
- -------------------------修改redis.conf-----------------
- daemonize yes #以守护进程运行(后台运行)
- ----------------------------------------------------------------
- # /usr/local/redis/src/redis-server /usr/local/redis/redis.conf #启动redis
- 另一种安装方式(推荐使用):
- make install 之前都是一样的
- cd ../utils/
- ./install_server.sh #脚本执行后,同样可以安装redis的节点,这个脚本的好处就是路径之类的你可以自己设置,不用过多的修改配置文件.而且默认也是守护进程。
- Welcome to the redis service installer
- This script will help you easily set up a running redis server
- Please select the redis port for this instance: [6379]
- Selecting default: 6379
- Please select the redis config file name [/etc/redis/6379.conf]
- Selected default - /etc/redis/6379.conf
- Please select the redis log file name [/var/log/redis_6379.log]
- Selected default - /var/log/redis_6379.log
- Please select the data directory for this instance [/var/lib/redis/6379]
- Selected default - /var/lib/redis/6379
- Please select the redis executable path [/usr/local/bin/redis-server]
- Selected config:
- Port : 6379
- Config file : /etc/redis/6379.conf
- Log file : /var/log/redis_6379.log
- Data dir : /var/lib/redis/6379
- Executable : /usr/local/bin/redis-server
- Cli Executable : /usr/local/bin/redis-cli
- Is this ok? Then press ENTER to go on or Ctrl-C to abort.
- Copied /tmp/6379.conf => /etc/init.d/redis_6379
- Installing service...
- Successfully added to chkconfig!
- Successfully added to runlevels 345!
- Starting Redis server...
- Installation successful!
- 注意:关于redis配置文件里面的bind这个参数。我本以为bind选项是允许那些ip访问redis。后来经过测试发现我理解错了。这个bind参数是你的服务器ip。也就是如果填写127.0.0.1则是本机访问,如果填写的是外网网卡ip。则是所有人都可以访问你的redis了。并非权限控制。(个人理解的,如有不对请包涵)
3、安装elasticsearch
- # tar zxf elasticsearch-2.3.5.tar.gz
- # mv elasticsearch-2.3.5 /usr/local/elasticsearch
- # vim /usr/local/elasticsearch/config/elasticsearch.yml #修改配置文件
- --------------------------
- network.host: 192.168.1.104 #指定主机地址,其实是可选的,但是最好指定因为后面跟kibana集成的时候会报http连接出错(直观体现好像是监听了:::9200 而不是0.0.0.0:9200!暂时不知道这个地址需不需要和kibana的server host一致)
- http.cors.allow-origin: "/.*/"
- http.cors.enabled: true #这2项都是解决跟kibana集成的问题,错误体现是 你的 elasticsearch 版本过低,其实不是
- http.port: 9200 #端口9200
- -------------------------
- # useradd guoxin #创建一个用户guoxin,elasticsearch禁止root用户启动服务
- # chown -R guoxin.guoxin /usr/local/elasticsearch #将属主属组修改为guoxin
- # su guoxin
- $ /usr/local/elasticsearch/bin/elasticsearch –d (启动服务)
- $ curl 'http://10.10.16.21:9200' #验证是否成功
- $ exit #退出guoxin用户
- 注意:在5.0版本中head插件的安装方式变了。请自行研究,因为我也没搞懂呢
- 另外有几个系统参数需要修改!否则在5.X版本下,es是会报错的
- 1、使用说明!由于elasticsearch需要大量的现成,请确保系统允许至少2048个线程处理能力。
- 解决方法:编辑/etc/security/limits.d/90-nproc.conf 将 * soft nproc 后面的1024个线程改为2048
- 2、es要求文件描述符至少要65536个,请确保文件描述符配置正确
- 解决方法:/etc/security/limts.conf中最后添加如下两行。这里的guoxin是启动es的用户。知道要保证65535才可以,添加内容如下
- guoxin soft nofile 65536
- guoxin hard nofile 65536
- 3、es要求虚拟内存至少要262144,请确保虚拟内存大小
- 解决方法:vim /etc/sysctl..conf
- 增加vm.max_map_count = 655350
- 使用sysctl -p 使配置生效
- 4、另外在配置es时候,我们需要限制内存大小,这里最大和最小内存要一致。默认是2G,由于我是虚拟机所以改>为最小启动512m
- 解决方法:vim /usr/local/elasticsearch/config/jvm.options
- 将
- -Xms2g
- -Xmx2g
- 修改为
- -Xms512m
- -Xmx512m
- 安装Head插件(Optional)
- # cd /usr/local/elaticsearch 进入Elasticsearch目录
- # ls plugins/ 安装Head插件前,此目录为空
- # ./bin/plugin install mobz/elasticsearch-head 安装head插件
- # ls plugins/ 安装完成后此目录下多了个head目录
- head
- 杀掉进程重启Elasticsearch服务
Head插件访问地址 http://10.10.16.21:9200/_plugin/head/
4、安装logstash(Logstash的话,他的配置文件以及正则正在研究中,关于配置的话就不贴了,这个服务现在不需要开启,当日志收集的时候,根据自己写的正则作为配置文件开启服务)
- # tar zxf logstash-2.3.4.tar.gz
- # mv logstash-2.3.4 /usr/local/logstash
- # /usr/local/logstash/bin/logstash -f /usr/local/logstash/logstash_redis.conf(配置文件是需要自己写的)
- #测试redis是否能够保存logstash的输入数据
- # vim /usr/local/logstash/logstash_redis.conf 编写配置文件
- ###########内容如下#################
- input { stdin { } } #这行是通过终端输入
- output {
- stdout { codec => rubydebug } #以debug模式输出到终端
- redis { 配置redis
- host => '127.0.0.1' redis服务器IP
- data_type => 'list' 数据类型是列表
- key => 'logstash:redis'
- }
- }
- ##############保存####################################
- #/usr/local/redis/src/redis-cli monitor 开启redis的动态监控(由于是实时监控,所以需要另外再开一个终端)
- # /usr/local/logstash/bin/logstash -f /usr/local/logstash/logstash_redis.conf 启动logstashh,并且加载/usr/local/logstash/logstash_redis.conf配置文件(这里我们没有后台运行,如果需要后台运行在最后加上 &即可)
- 启动后输入---->My name is guo_xin!
- ##############以下是logstash的返回结果#############
- {
- "@timestamp" => 2016-12-29T09:41:17.319Z,
- "@version" => "1",
- "host" => "0.0.0.0",
- "message" => "My name is !"
- }
- ###########redis实时监控输出(这里我们可以看到redis监控已经将数据存进去了)#######################
- 1483004478.127705 [0 127.0.0.1:38750] "rpush" "logstash:redis" "{\"@timestamp\":\"2016-12-29T09:41:17.319Z\",\"@version\":\"1\",\"host\":\"0.0.0.0\",\"message\":\"My name is!\"}"
5、安装kibana
- # tar zxf kibana-4.5.4-linux-x64.tar.gz
- # mv kibana-4.5.4-linux-x64 /usr/local/kibana
- # mkdir -pv /usr/local/kibana/logs 创建日志目录
- # vim /usr/local/kibana/config/kibana.yml
- -----------------------------------------
- server.host: "10.10.16.21" #输入服务器IP
- kibana.index: ".kibana"
- elasticsearch.url: “http://10.10.16.21:9200” #elasticsearch的URL
- ----------------------------------------
- # cd /usr/local/kibana/logs/ && nohup /usr/local/kibana/bin/kibana &
- (#nohup: 忽略输入并把输出追加到"nohup.out")
- #启动命令的意思是进入kibana的目录并且忽略输入并把输出追加到nohup.out中,然后后台方式启动kibana
- # ll /usr/local/kibana/logs/ 查看日志文件是否生成
环境构建完成
kibana访问地址 http://ip:5601
6、遇到的问题
解决办法:
修改属主属组为非root用户,然后重启服务
# chown -R guoxin.guoxin /usr/local/elasticsearch/
# su guoxin
$ /usr/local/elasticsearch/bin/elasticsearch –d
解决方法:
出现这个问题是因为在elasticsearch配置文件中添加了http.cors.enabled:true。
在kibana4.x版本中,这个参数已经被废除了,kibana4.x不在兼容elasticsearch中的这个参数,所以需要删除elasticsearch配置文件中的这个参数,然后杀掉elasticsearch服务进程,重新启动elasticsearch服务即可
X-Pack在线安装方法
- # /usr/local/elasticsearch/bin/elasticsearch-plugin install x-pack #使用Elasticsearch的plugin命令来安装X-Pack插件
虽然Elasticsearch默认不允许root用户启动,但是安装X-pack插件时候,请使用root用户。否则会报如下错误↓↓
- 使用root用户执行在线安装正确提示如下:↓↓
- 上图选项填写y;X-Pack插件需要额外权限
# /usr/local/kibana/bin/kibana-plugin install x-pack #使用kibana的plugin命令来安装X-Pack插件
在kibana.yml文件中配置:
elasticsearch.username: "elastic"
elasticsearch.password: "guoxin0521"
启动Elasticsearch和kibana服务
注意:
如果你的elasticsearch.yml配置文件使用了action.auto_create_index(禁止自动创建索引)参数。
请将以下内容添加到action.auto_create_index后↓
.security,.monitoring*,.watches,.triggered_watches,.watcher-history*
例如:
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
在启动kibana时候会有个警告:
以后会去解决!不影响使用!
X-Pack离线安装方法
- # wget https://artifacts.elastic.co/downloads/kibana-plugins/x-pack/x-pack-5.0.0.zip #下载X-Pack安装包
# /usr/local/elasticsearch/bin/elasticsearch-plugin install file:///usr/local/src/x-pack-5.0.0.zip #使用Elasticsearch的plugin命令来安装本地X-Pack插件zip包,这里file:///后面跟着的是下载的安装包路径
# /usr/local/kibana/bin/kibana-plugin install file:///usr/local/src/x-pack-5.0.0.zip #使用kibana的plugin同样装一下X-Pack包,这里file:///后面跟着的是下载的安装包路径
下面是kibana离线安装成功的样子↓↓
离线安装方式启动和禁用X-Pack方法(官方文档说需要添加这些,不过我添加后发现服务起不来了。报错,不加任何参数反而能起来。不明白为什么。没深研究。不过我是在线安装的,不知道是不是离线安装特殊的需求。有空大家可以自己玩玩试试!)
- 1、编辑elasticsearch.yml和kibana.yml
xpack.security.enabled
开启X-Pack插件,关闭的话是将enabled改为false(elasticsearch.yml 和 kibana.yml都需要添加)
xpack.monitoring.enabled
开启X-Pack监控功能,关闭的话是将enabled改为false(elasticsearch.yml 和 kibana.yml都需要添加)
xpack.graph.enabled
开启X-Pack图功能,关闭的话是将enable改为false (elasticsearch.yml 和 kibana.yml都需要添加)
xpack.watcher.enabled
开启X-Pack游客功能,关闭的话是将enable改为false(仅elasticsearch.yml需要添加)
xpack.reporting.enabled
开启X-Pack报告功能,关闭的话是将enbale改为false(仅kibana.yml都需要添加)
2、启动Elasticsearch和kibana服务 (略...)
下图是安装成功x-pack插件后的样子
升级或删除X-Pack插件
- 1、关闭Elasticsearch和kibana服务
2、删除Elasticsearch和kibana的X-Pack模块
# /usr/local/elasticsearch/bin/elasticsearch-plugin remove x-pack
# /usr/local/kibana/bin/kibana-plugin remove x-pack
3、如果想升级X-Pack插件则重新安装新插件即可,官方文档是这么写的不知道是否有update这种命令,以前没使用过ELK。
官方文档地址:
- https://www.elastic.co/guide/en/x-pack/5.0/installing-xpack.html#xpack-enabling
用户管理
- 当X-Pack插件安装完成后会有个超级用户。
- 用户名:elastic
- 默认密码:changeme
- 这个用户拥有最高权限。包括对所有索引和数据的控制权,我们可以使用elastic用户在图形界面进行添加或删除用户并为其分配权限。
- 操作:
- 1、使用elastic用户进入kibana界面
- 2、点击左侧management
- 3、选择users
- 4、选择New user创建用户
- 如下图↓↓
***使用注意事项:***
1、你的logstash里面如果直接输出到es中,我们需要在logstash的output中添加用户名和密码
2、在kibana.yml中要添加访问Elasticsearch的用户名和密码
- 在kibana.yml文件中配置:
- elasticsearch.username: "elastic"
- elasticsearch.password: "guoxin0521"
- 参考资料:
- http://www.2cto.com/os/201611/561466.html
- http://www.guoxin-linux.com/?id=40
- http://yanliu.org/2015/08/19/ELK-redis%E6%90%AD%E5%BB%BAnginx%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90%E5%B9%B3%E5%8F%B0/#more
- 官方文档地址:
- https://www.elastic.co/guide/en/x-pack/5.0/installing-xpack.html#xpack-enabling