搭建ELK实时日志分析平台
admin
2023-04-08 02:42:37
0

一、ELK简介

ELK是一套完整的日志分析解决方案,由ElasticSearch、Logstash、Kibana这三款开源软件组成。Elasticstash是基于Lucene开发的分布式存储检索引擎,用来存储各类日志;Logstash对日志进行收集、分析,并将其存储供以后使用;Kibana是基于Node.js开发的展示工具,为Logstash和ElasticSearch提供用于日志展示的Web界面,还用于帮助汇总、分析和搜索重要日志数据。
ELK的工作原理如下:
在所有需要收集日志的服务上部署Logstash,作为Logstash agent用于监控并过滤所收集的日志,将过滤后的内容整合在一起,最终全部交给ElasticSearch检索引擎;可以用ElasticSearch进行自定义搜索,在通过kibana结合自定义搜索内容生成图标,进行日志数据展示。
搭建ELK实时日志分析平台

二、搭建环境

两台CenostOS 7
IP:192.168.80.100 安装:elasticsearch、logstash、Kibana
IP:192.168.80.110 安装:elasticsearch

三、部署ElasticSearch

Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
1、安装ElasticSearch

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch      //安装elasticsearch的yum源密钥
vi /etc/yum.repos.d/elasticsearch.repo      //配置elasticsearch的yum源

[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

yum install elasticsearch -y        //安装
yum install java -y     //安装java环境必须是1.8以上
java -version   //查看版本

搭建ELK实时日志分析平台
vi /etc/elasticsearch/elasticsearch.yml //修改配置文件
17行 集群名称
cluster.name: abner
23行 节点名称
node.name: linux-node1
33行 修改data和日志存放的路径
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
43行 防止交换swap分区
bootstrap.memory_lock: true
54行 开启监听网络
network.host: 0.0.0.0
58行 开启监听的端口
http.port: 9200

mkdir -p /data/es-data  //新建data存放目录
chown -R elasticsearch:elasticsearch /data/es-data  //修改目录权限
systemctl start elasticsearch       //启动服务
netstat -ntap | grep 9200   //查看端口状态

搭建ELK实时日志分析平台
浏览器访问测试页192.168.80.100:9200
搭建ELK实时日志分析平台
2、实现与ElasticSearch交互
第一种:JAVA APO
第二种:RESTful API(通过json格式 交互)

curl -i -XGET 'http://192.168.80.100:9200/_count?pretty' -d '{
"query": {
    "match_all": {}
}
}'

搭建ELK实时日志分析平台
3、安装elasticsearch-head插件
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head //安装插件,该安装方式是从git的方式拉取的也可以用docker pull
浏览器访问测试插件是否安装成功
http://192.168.80.100:9200/_plugin/head/
搭建ELK实时日志分析平台
4、ElasticSearch集群部署(在另外一台虚拟机上安装)
1)安装ElasticSearch(步骤同上)
2)Linux-node1开启集群自动发现机制
vi /etc/elasticsearch/elasticsearch.yml //修改配置文件
搭建ELK实时日志分析平台
systemctl restart elasticsearch //重启node1服务
3)Linux-node2开启集群自动发现机制
vi /etc/elasticsearch/elasticsearch.yml //修配置文件
搭建ELK实时日志分析平台
systemctl restart elasticsearch //重启node2服务
4)浏览器访问会看到主节点和副节点
http://192.168.80.100:9200/_plugin/head/
搭建ELK实时日志分析平台
5、安装监控组件
/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf //安装
浏览器访问监控页面
http://192.168.80.100:9200/_plugin/kopf/#!/cluster
搭建ELK实时日志分析平台

四、部署Logstash

Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
1、安装Logstash

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch      //下载yum源密钥
vim logstash.repo       //配置logstash的yum源

[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

yum install logstash -y //安装
2、Logstash的使用

ln -s /opt/logstash/bin/logstash /usr/bin/  //对logstash命令做软连接
logstash -e 'input { stdin{} } output { stdout{} }' //执行logstash命令定义输入和输出流,类似管道

搭建ELK实时日志分析平台
注释: -e:执行操作
input:标准输入
{ input }:插件
output:标准输出
{ stdout }:插件

logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } }' //通过rubydebug来输出下更详细的信息
搭建ELK实时日志分析平台
logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.80.100:9200"] } stdout { codec => rubydebug } }' //输入到elasticsearch中
搭建ELK实时日志分析平台
http://192.168.80.100:9200/_plugin/head/ //访问elastic的web页面查看
搭建ELK实时日志分析平台
3、Logstash配置文件的使用
vi 01-logstash.conf //编辑配置文件收集系统日志
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}

output {
elasticsearch {
hosts => ["192.168.175.132:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}

logstash -f 01-logstash.conf //指定配置文件进行过滤匹配
搭建ELK实时日志分析平台
vi 02-logstash.conf //编辑配置文件同时收集系统日志和安全日志
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
file {
path => "/var/log/secure"
type => "secure"
start_position => "beginning"
}
}

output {
if [type] == "system" {
elasticsearch {
hosts => ["192.168.1.202:9200"]
index => "nagios-system-%{+YYYY.MM.dd}"
}
}
if [type] == "secure" {
elasticsearch {
hosts => ["192.168.1.202:9200"]
index => "nagios-secure-%{+YYYY.MM.dd}"
}
}
}
logstash -f 02-logstash.conf //指定配置文件进行过滤匹配
搭建ELK实时日志分析平台

五、部署Kibana

Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。
1、下载安装Kibana

wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz        //下载kibana程序包
tar zxvf kibana-4.3.1-linux-x64.tar.gz  //解压
mv kibana-4.3.1-linux-x64/ /usr/local/kibana    //将程序包移动并且改名
vi /usr/local/kibana/config/kibana.yml      //修改配置文件

#服务端口
server.port: 5601
#服务地址
server.host: "0.0.0.0"
#elasticsearch对应的地址和端口
elasticsearch.url: "http://192.168.175.132:9200"
#数据字段类型
kibana.index: ".kibana"

yum install screen -y   //安装screen,以便于kibana在后台运行(当然也可以不用安装,用其他方式进行后台启动)
/usr/local/kibana/bin/kibana        //启动
netstat -antp |grep 5601    //监听端口

2、浏览器访问192.168.80.100:5601
填写对应的日志索引
搭建ELK实时日志分析平台
点击Discover根据时间选择器来筛选日志
搭建ELK实时日志分析平台

六、ELK实战

输出nginx、apache、message、secrue的日志到前台展示
1、编辑nginx配置文件,修改以下内容(在http模块下添加)

log_format json '{"@timestamp":"$time_iso8601",''"@version":"1",'
br/>'"@version":"1",'
'"url":"$uri",'
'"status":"$status",'
'"domian":"$host",'
'"host":"$server_addr",'
'"size":"$body_bytes_sent",'
'"responsetime":"$request_time",'
'"referer":"$http_referer",'
'"ua":"$http_user_agent"'
'}';

修改access_log的输出格式为刚才定义的json
access_log logs/elk.access.log json;

2、修改apache的配置文件

LogFormat "{ \
\"@timestamp\": \"%{%Y-%m-%dT%H:%M:%S%z}t\", \
\"@version\": \"1\", \
\"tags\":[\"apache\"], \
\"message\": \"%h %l %u %t \\"%r\\" %>s %b\", \
\"clientip\": \"%a\", \
\"duration\": %D, \
\"status\": %>s, \
\"request\": \"%U%q\", \
\"urlpath\": \"%U\", \
\"urlquery\": \"%q\", \
\"bytes\": %B, \
\"method\": \"%m\", \
\"site\": \"%{Host}i\", \
\"referer\": \"%{Referer}i\", \
\"useragent\": \"%{User-agent}i\" \
}" ls_apache_json

一样修改输出格式为上面定义的json格式
CustomLog logs/access_log ls_apache_json;

3、编辑logstash配置文件,进行日志收集
vi full.conf //编辑日志收集配置文件
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
file {
path => "/var/log/secure"
type => "secure"
start_position => "beginning"
}
file {
path => "/var/log/httpd/access_log"
type => "http"
start_position => "beginning"
}
file {
path => "/usr/local/nginx/logs/elk.access.log"
type => "nginx"
start_position => "beginning"
}

}
output {
if [type] == "system" {
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "nagios-system-%{+YYYY.MM.dd}"
}
}
if [type] == "secure" {
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "nagios-secure-%{+YYYY.MM.dd}"
}
}
if [type] == "http" {
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "nagios-http-%{+YYYY.MM.dd}"
}
}
if [type] == "nginx" {
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "nagios-nginx-%{+YYYY.MM.dd}"
}
}
}

logstash -f /etc/logstash/conf.d/full.conf //运行logstash过滤日志并且访问elasticsearch的web页面查看

相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...