ELK日志分析系统

目录

1.简介

2.组成

3.作用

4.工作原理

5.案例

[部署 Elasticsearch 软件](#部署 Elasticsearch 软件)

[ELK Logstash 部署](#ELK Logstash 部署)

[ELK Kiabana 部署](#ELK Kiabana 部署)


1.简介

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个

开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。

2.组成

日志主要包括系统日志、应用程序日志和安全日志。

3.作用

收集:能够采集多种来源的日志数据

传输:能够稳定的把日志数据解析过滤并传输到存储系统

存储:存储日志数据

分析:支持 UI 分析

警告:能够提供错误报告,监控机制

4.工作原理

在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器

上,在日志服务器上部署 Logstash。

Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。

Elasticsearch 对格式化后的数据进行索引和存储。

Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

5.案例

部署 Elasticsearch 软件

安装elasticsearch---rpm包 上传elasticsearch-5.5.0.rpm到/opt目录下

复制代码
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm 

加载系统服务

复制代码
                systemctl daemon-reload    
                systemctl enable elasticsearch.service

修改elasticsearch主配置文件

先备份 cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

复制代码
vim /etc/elasticsearch/elasticsearch.yml
--17--
cluster.name: my-elk-cluster
--23--
node.name: node1
--33--
path.data: /data/elk_data
--37--
path.logs: /var/log/elasticsearch/
--43--
bootstrap.memory_lock: false
--55--
network.host: 0.0.0.0
--59--
http.port: 9200
--68--
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

grep -v "^#" /etc/elasticsearch/elasticsearch.yml 查看内容

创建数据存放路径并授权

mkdir -p /data/elk_data

chown elasticsearch:elasticsearch /data/elk_data/

启动elasticsearch是否成功开启

systemctl start elasticsearch.service

netstat -antp | grep 9200

查看节点信息

浏览器访问 http://192.168.177.104:9200http://192.168.177.106:9200 查看节点 Node1、Node2 的信息。

浏览器访问 http://192.168.177.104:9200/_cluster/health?pretty

此时遇到了一个问题 显示yellow而不是green

常见的ES集群有三种状态

Green:主/副分片都已经分配好且可用;集群处于最健康的状态100%可用

Yellow:主分片可用,但是副分片不可用。这种情况ES集群所有的主分片都是已经分配好了的,但是至少有一个副本是未分配的。这种情况下数据也是完整的;但是集群的高可用性会被弱化

Red:存在不可用的主分片。此时只是部分数据可以查询,已经影响到了整体的读写,需要重点关注。这种情况ES集群至少一个主分片(以及它的全部副本)都缺失

1.磁盘满 扩容 (这里是干净的测试环境 不存在)

2.分配文档超过最大限制 向新索引中写入数据,并合理设置分片大小

3.主分片所在节点掉线 找到节点掉线的原因并重新其中节点加入集群,等待分片恢复

4.索引属性与节点属性不匹配 重新设置索引的冷热属性,和节点保持一致;若要修改节点属性,则需要重启节点

5.节点长时间掉线后再次加入集群 导致引入脏数据 使用 reroute API

6.未分配的分片太多 导致达到了分片恢复的最大阈值 其他分片需要排队等待 使用cluster/settings调大分片恢复的并发度和速度 (找到了问题 有五个在等待)

安装 Elasticsearch-head 插件

复制代码
yum install gcc gcc-c++ make -y
cd /opt
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make && make install 

安装 phantomjs

上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2

复制代码
cd /opt
tar jxvf 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

安装 Elasticsearch-head 数据可视化工具

上传软件包 elasticsearch-head.tar.gz 到/opt

复制代码
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

修改 Elasticsearch 主配置文件

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

启动 elasticsearch-head 服务

复制代码
cd /usr/local/src/elasticsearch-head/
npm run start &

浏览器访问 http://192.168.177.104:9100/

插入索引

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

ELK Logstash 部署

安装Apahce服务(httpd)

复制代码
yum -y install httpd
systemctl start httpd

安装Java环境并检查

复制代码
yum -y install java
java -version

安装logstash

上传软件包 logstash-5.5.1.rpm 到/opt目录下

复制代码
cd /opt
rpm -ivh logstash-5.5.1.rpm                           
systemctl start logstash.service                      
systemctl enable logstash.service

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

测试 Logstash 等好了以后输入www.baidu.com

会得到 2020-12-22T03:58:47.799Z localhost www.baidu.com

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

ELK Kiabana 部署

安装 Kiabana

上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录

复制代码
cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm

设置 Kibana 的主配置文件

复制代码
vim /etc/kibana/kibana.yml
--2--
server.port: 5601
--7--
server.host: "0.0.0.0"
--21--
elasticsearch.url: "http://192.168.177.104:9200" 
--30--
kibana.index: ".kibana"

启动服务 检查端口

复制代码
systemctl start kibana.service
systemctl enable kibana.service

netstat -natp | grep 5601

验证 Kibana

浏览器访问 http://192.168.177.104:5601

第一次登录需要添加一个 Elasticsearch 索引:

Index name or pattern

//输入:system-* #在索引名中输入之前配置的 Output 前缀"system"

单击 "create" 按钮创建,单击 "Discover" 按钮可查看图表信息及日志信息。

数据展示可以分类显示,在"Available Fields"中的"host",然后单击 "add"按钮,可以看到按照"host"筛选后的结果

将 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.177.104:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
	if [type] == "error" {
        elasticsearch {
            hosts => ["192.168.177.104:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
}

cd /etc/logstash/conf.d/
/usr/share/logstash/bin/logstash -f apache_log.conf

浏览器访问 http://192.168.177.104:9100 查看索引是否创建

相关推荐
Gold Steps.6 小时前
从0到1认识ElasticStack
elk·云原生·es
一只BI鱼4 天前
微服务常用日志追踪方案:Sleuth + Zipkin + ELK
elk·微服务·架构
xrz2774 天前
docker部署ELK,ES开启安全认证
elk·elasticsearch·docker
怡人蝶梦5 天前
Java大厂后端技术栈故障排查实战:Spring Boot、Redis、Kafka、JVM典型问题与解决方案
java·jvm·redis·elk·kafka·springboot·prometheus
玩电脑的辣条哥5 天前
如何用docker部署ELK?
elk·docker·容器
万米商云8 天前
商城前端监控体系搭建:基于 Sentry + Lighthouse + ELK 的全链路监控实践
前端·elk·sentry
YJQ99678 天前
基于ELK的分布式日志实时分析与可视化系统设计
分布式·elk
hwj运维之路12 天前
k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件
elk·容器·kubernetes
twj_one13 天前
SpringBoot+ELK 搭建日志监控平台
spring boot·后端·elk
小韩加油呀13 天前
python定时删除指定索引
python·elk·indics