elk日志收集系统

目录

前言

一、概述

二、案例

(一)、环境配置

安装node1与node2节点的elasticsearch

node1的elasticsearch-head插件

(二)、node1服务器安装logstash

[测试1: 标准输入与输出](#测试1: 标准输入与输出)

测试2:使用rubydebug解码

测试3:输出到elasticsearch

(三)、node1节点安装kibana

(四)、企业案例

总结



前言

日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。

如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。


一、概述

ELK由三个组件构成

|---------------|-------|
| elasticsearch | 日志分析 |
| logstash | 日志收集 |
| kibana | 日志可视化 |

|---------------|--------------------|
| elasticsearch | 是一种开源的日志收集、分析、存储程序 |
| 具有以下特点 | 分布式 |
| | 零配置 |
| | 自动发现 |
| | 索引自动分片 |
| | 索引副本机制 |
| | Restful风格接口 |
| | 多数据源 |
| | 自动搜索负载 |

|----------|----------------------------|
| logstash | 搜集、分析、过滤日志的工具 |
| 工作过程 | Inputs → Filters → Outputs |
| | 输入-->过滤-->输出 |

一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的各节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去

kibana,日志可视化。

为Logstash和ElasticSearch在收集、存储的日志基础上进行分析时友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。

二、案例

192.168.238.145(httpd)

192.168.238.146(node1)

192.168.238.147(node2)

注意:node服务器建议给4G内存4G处理器,否则elasticsearch可能服务端口启动异常,因为elasticsearch服务器会占用大量的内存,内存会不足。

安装好elasticsearch服务器后记得daemon-reload加载system的配置文件,否则可能导致服务访问异常,集群id不同,后续将无法操作。

node1与node2节点要有Java环境,Java -version查看版本(1.8.0即可),没有要安装Java环境

复制代码
Yum install -y java-1.8.0-openjdk

(一)、环境配置

node1与node2修改主机名,本地host文件。

hostnamectl set-hostname node1

vim /etc/hosts

192.168.238.146 node1

192.168.238.147 node2

bash刷新

互相ping通测试通信

node1安装elasticsearch-head插件

复制代码
tar xf node-v8.2.1.tar.gz

cd node-v8.2.1

./configure && make && make install

等待安装完毕即可(过程较长)

安装node1与node2节点的elasticsearch

复制代码
rpm -ivh elasticsearch-5.5.0.rpm

vim /etc/elasticsearch/elasticsearch.yml

network.host:也可以是本机IP

node2同此操作只需将node.name修改成node2

分别启动服务

复制代码
systemctl start elasticsearch

查看端口是否启动

复制代码
netstat -anput | grep :9200

查看节点信息

192.168.238.146:9200

192.168.238.147:9200

可以查看集群状态

复制代码
192.168.238.146:9200/_cluster/health

Green 健康 yellow 警告 red 集群不可用,严重错误

node1的elasticsearch-head插件

复制代码
tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2

cd phantomjs-2.1.1-linux-x86_64/bin

cp phantomjs  /usr/local/bin

修改elasticsearch服务的配置文件在最后添加

复制代码
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

安装elasticsearch-head

复制代码
tar xf elasticsearch-head.tar.gz 
cd elasticsearch-head
npm install
npm run start &

要在当前目录下启动后台

访问192.168.238.146:9100进行连接

测试,在node1的终端中输入

复制代码
curl  -XPUT  '192.168.238.146:9200/index-demo/test/1?pretty&pretty' -H  'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

刷新浏览器可以看到对应信息即可

(二)、node1服务器安装logstash

复制代码
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service

测试1: 标准输入与输出

复制代码
logstash -e 'input{ stdin{} }output { stdout{} }'

测试2:使用rubydebug解码

复制代码
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'

测试3:输出到elasticsearch

复制代码
logstash -e 'input{ stdin{} }output{ elasticsearch{ hosts=>["192.168.238.146:9200"]} }'

查看结果: 192.168.238.146.9100(刷新)

logstash日志收集文件格式(默认存储在/etc/logstash/conf.d)

Logstash配置文件基本由三部分组成:input、output以及 filter(根据需要)。

标准的配置文件格式如下:

|--------------|----|
| input{...} | 输入 |
| filter {...} | 过滤 |
| output {...} | 输出 |

案例: 通过logstash收集系统信息日志

chmod o+r /var/log/messages

vim /etc/logstash/conf.d/system.conf(文件名自定义最好起通俗易懂的)

复制代码
input {
file{
path =>"/var/log/messages" 
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.238.146:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}

重启日志服务: systemctl restart logstash

(三)、node1节点安装kibana

复制代码
rpm -ivh kibana-5.5.1-x86_64.rpm
vim /etc/kibana/kibana.yml

修改配置

启动kibana

复制代码
systemctl start kibana

访问kibana 192.168.238.146:5601

首次访问需要添加索引,我们添加前面已经添加过的索引:system-*,没有索引无法添加

(四)、企业案例

192.168.238.145(httpd)

收集httpd访问日志信息

在httpd服务器上安装logstash,参数上述安装过程,可以不进行测试

logstash在httpd服务器上作为agent(代理),不需要启动。

安装httpd,启动服务

编写httpd日志收集配置文件

vim /etc/logstash/conf.d/httpd.conf

复制代码
input {
file{
path =>"/var/log/httpd/access_log"
type => "access"
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.238.146:9200"]
index => "httpd-ok%{+YYYY.MM.dd}"
}
}

使用logstash命令导入配置

复制代码
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/httpd.conf

等待显示成功,不做任何操作

访问192.168.238.146:9100查看新建的索引

使用kibana查看即可! 192.168.238.146:5601

查看时在mangement选项卡创建索引httpd_access-* 即可!


总结

内容不难,重点要先理解后才更好上手操作,注意事项尽量避免,多数是服务端口无法正常启动或服务启动后集群异常的问题。有兴趣的小伙伴可以去拓展下ELKK、ELFK、ELFKK、EFK等模式。

相关推荐
物联网老王1 小时前
Ubuntu Linux Cursor 安装与使用一
linux·运维·ubuntu
一位摩羯座DBA3 小时前
Redhat&Centos挂载镜像
linux·运维·centos
学习3人组3 小时前
CentOS配置网络
linux·网络·centos
weixin_307779134 小时前
Hive集群之间迁移的Linux Shell脚本
大数据·linux·hive·bash·迁移学习
漫步企鹅4 小时前
【蓝牙】Linux Qt4查看已经配对的蓝牙信息
linux·qt·蓝牙·配对
cui_win5 小时前
【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
linux·运维·网络
梦在深巷、5 小时前
MySQL/MariaDB数据库主从复制之基于二进制日志的方式
linux·数据库·mysql·mariadb
冰橙子id5 小时前
linux系统安全
linux·安全·系统安全
stark张宇5 小时前
VMware 虚拟机装 Linux Centos 7.9 保姆级教程(附资源包)
linux·后端
Johny_Zhao5 小时前
Ubuntu系统安装部署Pandawiki智能知识库
linux·mysql·网络安全·信息安全·云计算·shell·yum源·系统运维·itsm·pandawiki