前一篇文章介绍了有关ELK日志分析系统的理论原理,本文将结合原理经过案例环境部署及配置ELK日志分析系统。java
使用集群方式,2个Elasticsearch节点,其中一台安装Kibana便可,另外安装Apache服务做为被监控的服务器,安装Logstash。node
相关规划以下表所示:linux
主机 | 操做系统 | 主机名 | IP地址 | 主要安装软件 |
---|---|---|---|---|
服务器 | Centos7.4 | node1 | 20.0.0.140 | Elasticsearch Kibana |
服务器 | Centos7.4 | node2 | 20.0.0.139 | Elasticsearch |
服务器 | Centos7.4 | Apache | 20.0.0.141 | Logstash Apache |
一、检查服务器环境(推荐先进行时间同步),找到所需软件包 二、在两个elasticsearch节点上部署elasticsearch环境、elasticsearch软件、 三、检查服务是否开启并在浏览器中验证、检查健康状态与查看状态信息 四、在两个elasticsearch节点上安装elasticsearch-head插件(方便查看集群信息) 五、经过浏览器验证、检查健康状态,模拟建立索引来验证信息 六、安装Apache服务在20.0.0.141服务器上,而且安装Logstash软件 七、在Apache服务器上进行对接测试(使用Logstash将信息写入elasticsearch中)而且进行验证 八、测试无误后进行对接配置(20.0.0.141上)、在浏览器上验证 九、回到node1服务器上安装可视化软件Kibana,启动服务并进行验证 十、进行对Apache主机的日志文件的对接(access_log以及error_log)配置与验证
软件包资源连接:https://pan.baidu.com/s/1NXl3l-fs15tLZcweHwHTCA
提取码:hmw7 web
###登陆20.0.0.140 更改主机名 配置域名解析 查看Java环境 ### [root@node1 ~]# hostnamectl set-hostname node1 [root@node1 ~]# su [root@node1 ~]# vi /etc/hosts 20.0.0.140 node1 20.0.0.139 node2 [root@node1 ~]# java -version openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode) #关闭防火墙和核心防御 [root@node1 ~]# systemctl stop firewalld [root@node1 ~]# setenforce 0 ###登陆20.0.0.139 更改主机名 配置域名解析 查看Java环境 ### [root@node2 ~]# hostnamectl set-hostname node2 [root@node2 ~]# su [root@node2 ~]# vi /etc/hosts 20.0.0.140 node1 20.0.0.139 node2 [root@node2 ~]# java -version openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode) #关闭防火墙和核心防御 [root@node1 ~]# systemctl stop firewalld [root@node1 ~]# setenforce 0
####登陆20.0.0.140#### #一、安装elasticsearch—rpm包 上传elasticsearch-5.5.0.rpm到/opt目录下 [root@node1 ~]# cd /opt [root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm #二、加载系统服务 [root@node1 opt]# systemctl daemon-reload [root@node1 opt]# systemctl enable elasticsearch.service #三、更改elasticsearch主配置文件 [root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak #尽可能备份,以避免误改不可挽回 [root@node1 opt]# vi /etc/elasticsearch/elasticsearch.yml cluster.name: my-elk-cluster ####集群名字 node.name: node1 ####节点名字 path.data: /data/elk_data ####数据存放路径 path.logs: /var/log/elasticsearch/ ####数据存放路径 bootstrap.memory_lock: false ####不在启动的时候锁定内存 network.host: 0.0.0.0 ####提供服务绑定的IP地址,0.0.0.0表明全部地址 http.port: 9200 ####侦听端口为9200 discovery.zen.ping.unicast.hosts: ["node1", "node2"] ####集群发现经过单播实现 #使用grep命令过滤文件,方便查看配置对比有没有错误 [root@node1 opt]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml cluster.name: my-elk-cluster node.name: node1 path.data: /data/elk_data path.logs: /var/log/elasticsearch/ bootstrap.memory_lock: false network.host: 0.0.0.0 http.port: 9200 discovery.zen.ping.unicast.hosts: ["node1", "node2"] #四、建立数据存放路径并受权 [root@node1 opt]# mkdir -p /data/elk_data [root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/ #五、启动elasticsearch是否成功开启 [root@node1 elasticsearch]# systemctl start elasticsearch.service [root@node1 elasticsearch]# netstat -antp |grep 9200 tcp6 0 0 :::9200 :::* LISTEN 64463/java
浏览器打开 http://20.0.0.140:9200 与 http://20.0.0.139:9200 shell
一、打开 http://20.0.0.140:9200/_cluster/health?pretty 检查群集健康状况(注意URL的下划线哈!)apache
二、打开 http://20.0.0.140:9200/_cluster/state?pretty ###检查群集健康状况npm
####登陆20.0.0.140 node1主机#### #上传node-v8.2.1.tar.gz到/opt ###编译安装node组件依赖包##耗时比较长 [root@localhost opt]# cd /opt [root@node1 opt]# tar xzvf node-v8.2.1.tar.gz [root@node1 opt]# cd node-v8.2.1/ [root@node1 node-v8.2.1]# ./configure [root@node1 node-v8.2.1]# make [root@node1 node-v8.2.1]# make install ####安装phantomjs#### #上传软件包到/usr/local/src/ [root@localhost node-v8.2.1]# cd /usr/local/src/ [root@localhost src]# tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 [root@localhost src]# cd phantomjs-2.1.1-linux-x86_64/bin [root@localhost bin]# cp phantomjs /usr/local/bin ###安装elasticsearch-head### [root@localhost bin]# cd /usr/local/src/ [root@localhost src]# tar xzvf elasticsearch-head.tar.gz [root@localhost src]# cd elasticsearch-head/ [root@localhost elasticsearch-head]# npm install #####修改主配置文件### [root@localhost ~]# cd ~ [root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml ####下面配置文件,插到末尾## http.cors.enabled: true http.cors.allow-origin: "*" [root@localhost ~]# systemctl restart elasticsearch ####启动elasticsearch-head 启动服务器#### [root@localhost ~]# cd /usr/local/src/elasticsearch-head/ [root@localhost elasticsearch-head]# npm run start & ####切换到后台运行 [1] 114729 [root@localhost elasticsearch-head]# > elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head > grunt server Running "connect:server" (connect) task Waiting forever... Started connect web server on http://localhost:9100
此时另外开启一个terminal,查看端口状态json
[root@localhost elasticsearch-head]# netstat -lnupt |grep 9100 tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 114739/grunt [root@localhost elasticsearch-head]# netstat -lnupt |grep 9200 tcp6 0 0 :::9200 :::* LISTEN 114626/java
打开浏览器输入http://20.0.0.140:9100/ 能够看见群集很健康是绿色bootstrap
在Elasticsearch 后面的栏目中输入http://20.0.0.140:9200 浏览器
而后点链接 会发现:集群健康值: green (0 of 0)
●node1信息动做
★node2信息动做
以下图:
node2也是如此,以下图所示:
此时,登陆20.0.0.140 node1主机 建立索引为index-demo,类型为test
[root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}' { "_index" : "index-demo", "_type" : "test", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "created" : true }
随之打开浏览器输入http://20.0.0.140:9100/ 查看索引信息
node1信息动做 01234
node2信息动做 01234
●上面图能够看见索引默认被分片5个,而且有一个副本
点击数据浏览--会发如今node1上建立的索引为index-demo,类型为test, 相关的信息,以下图:
#一、更改主机名关闭防火墙和核心防御 hostnamectl set-hostname apache systemctl stop firewalld setenforce 0 #二、安装Apahce服务(httpd) [root@apache ~]# yum -y install httpd [root@apache ~]# systemctl start httpd #三、安装Java环境 [root@apache ~]# java -version ###若是没有装 安装yum -y install java openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode) #四、安装logstash 上传logstash-5.5.1.rpm到/opt目录下 [root@apache ~]# cd /opt [root@apache opt]# rpm -ivh logstash-5.5.1.rpm ##安装logstash [root@apache opt]# systemctl start logstash.service ##启动logstash [root@apache opt]# systemctl enable logstash.service ##设置为开机自启 [root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ ##创建logstash软链接
####使用logstash将信息写入elasticsearch中#### 输入 输出 对接 [root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.140:9200"] } }' 。。。。。。。。省略。。。。。。。 The stdin plugin is now waiting for input: 10:40:06.558 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}##如下是须要输入的内容 www.baidu.com ###输入内容 www.sina.com.cn ###输入内容 www.google.com.cn ###输入内容
打开浏览器 输入http://20.0.0.140:9100/ 查看索引信息###
多出 logstash-2020.03.25
点击数浏览查看响应的内容,以下图
Logstash配置文件主要由三部分组成:input、output、filter(根据须要配置)
[root@apache opt]# chmod o+r /var/log/messages [root@apache opt]# ll /var/log/messages -rw----r--. 1 root root 572555 4月 16 23:50 /var/log/messages [root@apache opt]# vi /etc/logstash/conf.d/system.conf input { file{ path => "/var/log/messages" type => "system" start_position => "beginning" } } output { elasticsearch { hosts => ["20.0.0.140:9200"] index => "system-%{+YYYY.MM.dd}" } } [root@apache opt]# systemctl restart logstash.service ##必定要重启服务哈!!!!
打开浏览器 输入http://20.0.0.140:9100/ 查看索引信息###
多出 system-2020.03.25
[root@node1 ~]# cd /usr/local/src/ [root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm [root@node1 src]# cd /etc/kibana/ [root@node1 kibana]# cp kibana.yml kibana.yml.bak [root@node1 kibana]# vi kibana.yml server.port: 5601 #### kibana打开的端口 server.host: "0.0.0.0" ####kibana侦听的地址 elasticsearch.url: "http://20.0.0.140:9200" ###和elasticsearch创建联系 kibana.index: ".kibana" ####在elasticsearch中添加.kibana索引 [root@node1 kibana]# systemctl start kibana.service ###启动kibana服务 [root@node1 kibana]# systemctl enable kibana.service ###开机启动kibana服务
使用浏览器输入20.0.0.140:5601,首次登陆建立一个索引 名字:system- ##这是对接系统日志文件
一、Index name or pattern ###下面输入system-,而后点最下面的出面的create 按钮建立
二、最左上角的Discover按钮 会发现system-*信息
三、点下面的host旁边的add 会发现右面的图只有 Time 和host 选项了 这个比较友好
以下图所示:
[root@apache opt]# cd /etc/logstash/conf.d/ [root@apache conf.d]# touch apache_log.conf [root@apache conf.d]# vi apache_log.conf input { file{ path => "/etc/httpd/logs/access_log" type => "access" start_position => "beginning" } file{ path => "/etc/httpd/logs/error_log" type => "error" start_position => "beginning" } } output { if [type] == "access" { elasticsearch { hosts => ["20.0.0.140:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error" { elasticsearch { hosts => ["20.0.0.140:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } } [root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf ....省略内容
打开浏览器访问http://20.0.0.141
打开浏览器 输入http://20.0.0.140:9100/ 查看索引信息###
能发现apache_error-2020.03.25 apache_access-2020.03.25
接下来:打开浏览器 输入http://20.0.0.140:5601
点击左下角有个management选项---index patterns---create index pattern
----分别建立apache_error- 和 apache_access- 的索引
没有作时间同步,也多是其余问题,出如今Discover中查看Apache日志时没有可视化数据
删除原有的index,从新执行/usr/share/logstash/bin/logstash -f apache_log.conf命令
以上就是部署的详细流程了,主要是安装部署对应的软件,配置其主要文件,开启相关服务后进行验证测试!