6.3.2安装 phantomjs
上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到 cd /opt tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/ cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin cp phantomjs /usr/local/bin
6.3.3安装 Elasticsearch-head 数据可视化工具
上传软件包 elasticsearch-head.tar.gz 到/opt cd /opt tar zxf elasticsearch-head.tar.gz -C /usr/local/src/ cd /usr/local/src/elasticsearch-head/ npm install
6.3.4修改 Elasticsearch 主配置文件(这边展示node1的,node2与之相同)
vim /etc/elasticsearch/elasticsearch.yml ...... --末尾添加以下内容-- http.cors.enabled: true #开启跨域访问支持,默认为 false http.cors.allow-origin: "*" #指定跨域访问允许的域名地址为所有 systemctl restart elasticsearch
注:node2与之相同
6.3.5启动 elasticsearch-head 服务
必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败
必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。 cd /usr/local/src/elasticsearch-head/ npm run start & > 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 elasticsearch-head 监听的端口是 9100 netstat -natp |grep 9100
6.3.6浏览器访问:http://192.168.145.21:9100/ ;http://192.168.145.22:9100/
6.3.7插入索引
##登录192.168.137.20 node1主机##### 索引为index-demo,类型为test,可以看到成功创建 [root@node1 ~]# curl -X PUT '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 } ####在192.168.137.20 刷新浏览器输入看索引信息### node1信息动作 01234 node2信息动作 01234 ●上面图可以看见索引默认被分片5个,并且有一个副本 点击数据浏览--会发现在node1上创建的索引为index-demo,类型为test, 相关的信息
6.4ELK Logstash 部署(在 Apache 节点上操作)
6.4.1.安装Logstash
![ 在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/68de6d94524d4183ab6dfc9740b93c86.png) (1)#修改主机名 hostnamectl set-hostname apache su (2)#安装httpd并启动 yum -y install httpd systemctl start httpd (3)#安装java环境 yum -y install java java -version (4)#安装logstash cd /opt rpm -ivh logstash-5.5.1.rpm systemctl start logstash.service systemctl enable logstash.service cd /usr/share/logstash/ ls ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
6.4.2测试 Logstash(Apache)与elasticsearch(node)功能是否正常,做对接
Logstash这个命令测试 字段描述解释: ● -f 通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash ● -e 后面跟着字符串 该字符串可以被当做logstash的配置(如果是“空”则默认使用stdin做为输入、stdout作为输出) ● -t 测试配置文件是否正确,然后退出 logstash -f 配置文件名字 去连接elasticsearch (1)#输入采用标准输入 输出采用标准输出---登录192.168.137.20 在Apache服务器上 logstash -e 'input { stdin{} } output { stdout{} }' 16:45:21.422 [[main]-pipeline-manager] INFO logstash.pipeline - Pipeline main started 16:45:21.645 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600} www.baidu.com ##需要手动输入 2021-12-16T08:46:14.041Z apache www.baidu.com www.sina.com ##需要手动输入 2021-12-16T08:46:23.548Z apache www.sina.com
使用 rubydebug 输出详细格式显示,codec 为一种编解码器
logstash -e ‘input { stdin{} } output { stdout{ codec=>rubydebug } }’ 16:51:13.127 [[main]-pipeline-manager] INFO logstash.pipeline - Starting pipeline {"id"=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>250} 16:51:13.174 [[main]-pipeline-manager] INFO logstash.pipeline - Pipeline main started The stdin plugin is now waiting for input: 16:51:13.205 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600} www.baidu.com ##需要手动输入 { "@timestamp" => 2021-12-16T08:52:22.528Z, "@version" => "1", "host" => "apache", "message" => "www.baidu.com" }
使用logstash将信息写入elasticsearch中 使用logstash将信息写入elasticsearch中 logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.145.21:9200"] } }' Logstash API endpoint {:port=>9600} www.baidu.com ###输入内容 www.sina.com.cn ###输入内容 www.google.com.cn ###输入内容
打开浏览器 输入http://192.168.145.21:9100/ 查看索引信息
多出 logstash-2022.07.11
6.5定义 logstash配置文件
Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)。
input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等
filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。
(1)#给日志目录可读权限 chmod +r /var/log/messages #让 Logstash 可以读取日志 (2)#修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。 vim /etc/logstash/conf.d/system.conf input { file{ path =>"/var/log/messages" #指定要收集的日志的位置 type =>"system" #自定义日志类型标识 start_position =>"beginning" #表示从开始处收集 } } output { elasticsearch { #输出到 elasticsearch hosts => ["192.168.137.20:9200"] #指定 elasticsearch 服务器的地址和端口 index =>"system-%{+YYYY.MM.dd}" #指定输出到 elasticsearch 的索引格式 } } (3)#重启服务 systemctl restart logstash (4)#登录192.168.137.20 真机 打开浏览器 输入http://192.168.137.20:9100/ 查看索引信息### 多出 system-xxxx
(1)给日志目录可读权限
(2)修改 Logstash 配置文件
vim /etc/logstash/conf.d/system.conf input { file{ path =>"/var/log/messages" type =>"system" start_position =>"beginning" } } output { elasticsearch { hosts => ["192.168.137.20:9200"] index =>"system-%{+YYYY.MM.dd}" } }
(3)重启服务
systemctl restart logstash
(4) 登录192.168.145.21 真机
6.6ELK Kiabana 部署(在 Node1 节点上操作)
6.6.1安装 Kiabana
上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录 cd /opt rpm -ivh kibana-5.5.1-x86_64.rpm
6.6.2设置 Kibana 的主配置文件
vim /etc/kibana/kibana.yml --2--取消注释,Kiabana 服务的默认监听端口为5601 server.port: 5601 --7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址 server.host: "0.0.0.0" --21--取消注释,设置和 Elasticsearch 建立连接的地址和端口 elasticsearch.url: "http://192.168.137.20:9200" --30--取消注释,设置在 elasticsearch 中添加.kibana索引 kibana.index: ".kibana"
6.6.3启动 Kibana 服务
systemctl start kibana.service systemctl enable kibana.service netstat -natp | grep 5601
6.6.4验证 Kibana
浏览器访问 http://192.168.145.21:5601 第一次登录需要添加一个 Elasticsearch 索引: Index name or pattern //输入:system-* #在索引名中输入之前配置的 Output 前缀“system” 单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。 数据展示可以分类显示,在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果
6.6.5将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示
vim /etc/logstash/conf.d/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 => ["192.168.137.20:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error" { elasticsearch { hosts => ["192.168.137.20:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } }
cd /etc/logstash/conf.d/ /usr/share/logstash/bin/logstash -f apache_log.conf
在这之前一定要先访问apache
6.6.6浏览器访问http://192.168.145.21:9100/测试,查看索引信息能发现两个日志
打开浏览器 输入http://192.168.145.21:5601 点击左下角有个management选项—index patterns—create index pattern ----分别创建apache_error-* 和 apache_access-* 的索引
七、总结
ELK是由Elasticsearch、Logstash、Kiban三个开源软件的组合;APPServer集群→logstash Agent采集器→ElasticSearch Cluster→Kibana Server→Browser。我们需要重点掌握