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等模式。

相关推荐
热爱嵌入式的小许2 小时前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
韩楚风6 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学6 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO6 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu77 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我7 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、7 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程7 小时前
Linux中环境变量
linux
挥剑决浮云 -7 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
小O_好好学8 小时前
CentOS 7文件系统
linux·运维·centos