ELK日志分析系统(实战!)
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,简介日志服务器提高安全性集中存放日志缺陷:对日志的分析困难ELK日志分析系统Elasticsearch:存储,索引池Logstash:日志收集器Kibana:数据可视化日志处理步骤1,将日志进行集中化
千家信息网最后更新 2025年02月02日ELK日志分析系统(实战!)
简介
日志服务器
提高安全性
集中存放日志
缺陷:对日志的分析困难
ELK日志分析系统
Elasticsearch:存储,索引池
Logstash:日志收集器
Kibana:数据可视化
日志处理步骤
1,将日志进行集中化管理
2,将日志格式化(Logstash)并输出到Elasticsearch
3,对格式化后的数据进行索引和存储(Elasticsearch)
4,前端数据的展示(Kibana)
Elasticsearch的概述
提供了一个分布式多用户能力的全文搜索引擎
Elasticsearch的概念
接近实时
集群
节点
索引:索引(库)-->类型(表)-->文档(记录)
分片和副本
Logstash介绍
一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出
数据输入、数据加工(如过滤,改写等)以及数据输出
LogStash主要组件
Shipper
Indexer
Broker
Search and Storage
Web Interface
Kibana介绍
一个针对Elasticsearch的开源分析及可视化平台
搜索、查看存储在Elasticsearch索引中的数据
通过各种图表进行高级数据分析及展示
Kibana主要功能
Elasticsearch无缝之集成
整合数据,复杂数据分析
让更多团队成员受益
接口灵活,分享更容易
配置简单,可视化多数据源
简单数据导出
实验环境
1、在node1,node2上安装elasticsearch(操作相同,只演示一台)
[root@node1 ~]# vim /etc/hosts ##配置解析名192.168.52.133 node1192.168.52.134 node2[root@node1 ~]# systemctl stop firewalld.service ##关闭防火墙[root@node1 ~]# setenforce 0 ##关闭增强型安全功能[root@node1 ~]# java -version ##查看是否支持Java[root@node1 ~]# mount.cifs //192.168.100.100/tools /mnt/tools/ ##挂载Password for root@//192.168.100.100/tools: [root@node1 ~]# cd /mnt/tools/elk/[root@node1 elk]# rpm -ivh elasticsearch-5.5.0.rpm ##安装警告:elasticsearch-5.5.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY准备中... ################################# [100%]Creating elasticsearch group... OKCreating elasticsearch user... OK正在升级/安装... 1:elasticsearch-0:5.5.0-1 ################################# [100%]### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service### You can start elasticsearch service by executing sudo systemctl start elasticsearch.service[root@node1 elk]# systemctl daemon-reload ##重载守护进程[root@node1 elk]# systemctl enable elasticsearch.service ##开机自启Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.[root@node1 elk]# cd /etc/elasticsearch/[root@node1 elasticsearch]# cp elasticsearch.yml elasticsearch.yml.bak ##备份[root@node1 elasticsearch]# vim elasticsearch.yml ##修改配置文件cluster.name: my-elk-cluster ##集群名node.name: node1 ##节点名,第二个节点为node2path.data: /data/elk_data ##数据存放位置path.logs: /var/log/elasticsearch/ ##日志存放位置bootstrap.memory_lock: false ##不在启动时锁定内存network.host: 0.0.0.0 ##提供服务绑定的IP地址,为所有地址http.port: 9200 ##端口号为9200discovery.zen.ping.unicast.hosts: ["node1", "node2"] ##集群发现通过单播实现[root@node1 elasticsearch]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml ##检查配置是否正确cluster.name: my-elk-clusternode.name: node1path.data: /data/elk_datapath.logs: /var/log/elasticsearch/bootstrap.memory_lock: falsenetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["node1", "node2"][root@node1 elasticsearch]# mkdir -p /data/elk_data ##创建数据存放点[root@node1 elasticsearch]# chown elasticsearch.elasticsearch /data/elk_data/ ##给权限[root@node1 elasticsearch]# systemctl start elasticsearch.service ##开启服务[root@node1 elasticsearch]# netstat -ntap | grep 9200 ##查看开启情况tcp6 0 0 :::9200 :::* LISTEN 83358/java [root@node1 elasticsearch]#
查看node1节点信息
查看node2节点信息
2、在浏览器上检查健康和状态
node1健康检查
node2健康检查
node1状态
node2状态
3、在node1,node2上安装node组件依赖包(操作相同,只演示一个)
[root@node1 elasticsearch]# yum install gcc gcc-c++ make -y ##安装编译工具[root@node1 elasticsearch]# cd /mnt/tools/elk/[root@node1 elk]# tar xf node-v8.2.1.tar.gz -C /opt/ ##解压插件[root@node1 elk]# cd /opt/node-v8.2.1/[root@node1 node-v8.2.1]# ./configure ##配置[root@node1 node-v8.2.1]# make && make install ##编译安装
4、在node1,node2上安装phantomjs前端框架
[root@node1 node-v8.2.1]# cd /mnt/tools/elk/[root@node1 elk]# tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/##解压到/usr/local/src下[root@node1 elk]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/[root@node1 bin]# cp phantomjs /usr/local/bin/ ##编译系统识别
5、在node1,node2上安装elasticsearch-head数据可视化
[root@node1 bin]# cd /mnt/tools/elk/[root@node1 elk]# tar xf elasticsearch-head.tar.gz -C /usr/local/src/ ##解压[root@node1 elk]# cd /usr/local/src/elasticsearch-head/[root@node1 elasticsearch-head]# npm install ##安装npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expressionnpm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.11 (node_modules/fsevents):npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.11: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})added 71 packages in 7.262s[root@node1 elasticsearch-head]#
6、修改配置文件
[root@node1 elasticsearch-head]# cd ~[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml#末行插入http.cors.enabled: true ##开启跨域访问支持,默认为falsehttp.cors.allow-origin: "*" ##跨域访问允许的域名地址[root@node1 ~]# systemctl restart elasticsearch.service ##重启[root@node1 ~]# cd /usr/local/src/elasticsearch-head/[root@node1 elasticsearch-head]# npm run start & ##后台运行数据可视化服务[1] 83664[root@node1 elasticsearch-head]# > elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head> grunt serverRunning "connect:server" (connect) taskWaiting forever...Started connect web server on http://localhost:9100[root@node1 elasticsearch-head]# [root@node1 elasticsearch-head]# netstat -ntap | grep 9200tcp6 0 0 :::9200 :::* LISTEN 83358/java [root@node1 elasticsearch-head]# netstat -ntap | grep 9100tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 83674/grunt [root@node1 elasticsearch-head]#
7、在浏览器上连接并查看健康值状态
node1
node2
8、在node1上创建索引
[root@node2 ~]# curl -XPUT '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}[root@node1 ~]#
9、在Apache服务器上安装logstash,多elasticsearch进行对接
[root@apache ~]# systemctl stop firewalld.service [root@apache ~]# setenforce 0[root@apache ~]# yum install httpd -y ##安装服务[root@apache ~]# systemctl start httpd.service ##启动服务[root@apache ~]# java -version[root@apache ~]# mount.cifs //192.168.100.100/tools /mnt/tools/ ##挂载Password for root@//192.168.100.100/tools: [root@apache ~]# cd /mnt/tools/elk/[root@apache elk]# rpm -ivh logstash-5.5.1.rpm ##安装logstash警告:logstash-5.5.1.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY准备中... ################################# [100%]正在升级/安装... 1:logstash-1:5.5.1-1 ################################# [100%]Using provided startup.options file: /etc/logstash/startup.optionsOpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=NSuccessfully created system startup script for Logstash[root@apache elk]# systemctl start logstash.service ##开启服务[root@apache elk]# systemctl enable logstash.service ##开机自启Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.[root@apache elk]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ ##便于系统识别[root@apache elk]#
10、将系统日志文件输出到elasticsearch
[root@apache elk]# chmod o+r /var/log/messages ##给其他用户读权限[root@apache elk]# vim /etc/logstash/conf.d/system.conf ##创建文件input { file{ path => "/var/log/messages" ##输出目录 type => "system" start_position => "beginning" }}output { elasticsearch { #输入地址指向node1节点 hosts => ["192.168.13.129:9200"] index => "system-%{+YYYY.MM.dd}" }}[root@apache elk]# systemctl restart logstash.service ##重启服务##也可以用数据浏览查看详细信息
11、在node1服务器上安装kibana数据可视化
[root@node1 ~]# cd /mnt/tools/elk/[root@node1 elk]# rpm -ivh kibana-5.5.1-x86_64.rpm ##安装警告:kibana-5.5.1-x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY准备中... ################################# [100%]正在升级/安装... 1:kibana-5.5.1-1 ################################# [100%][root@node1 elk]# cd /etc/kibana/[root@node1 kibana]# cp kibana.yml kibana.yml.bak ##备份[root@node1 kibana]# vim kibana.yml ##修改配置文件server.port: 5601 ##端口号server.host: "0.0.0.0" ##监听任意网段elasticsearch.url: "http://192.168.13.129:9200" ##本机节点地址kibana.index: ".kibana" ##索引名称[root@node1 kibana]# systemctl start kibana.service ##开启服务[root@node1 kibana]# systemctl enable kibana.service ##开机自启Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.[root@node1 elk]# [root@node1 elk]# netstat -ntap | grep 5601 ##查看端口tcp 0 0 127.0.0.1:5601 0.0.0.0:* LISTEN 84837/node [root@node1 elk]#
12、浏览器访问kibana
13、在apache服务器中对接apache日志文件,进行统计
[root@apache elk]# 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.13.129:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error" { elasticsearch { hosts => ["192.168.13.129:9200"] index => "apache_error-%{+YYYY.MM.dd}" } }}[root@apache elk]# logstash -f /etc/logstash/conf.d/apache_log.conf ##根据配置文件配置logstach
14、访问网页信息,查看kibana统计情况
只有error日志
浏览器访问Apache服务
生成access日志
##选择management>Index Patterns>create index patterns##创建apache两个日志的信息
在kibana创建access访问日志
在kibana创建error访问日志
查看access日志统计情况
查看error日志统计情况
实验成功!!!
数据
日志
服务
配置
信息
文件
索引
节点
可视化
输出
分析
地址
浏览
系统
健康
情况
服务器
格式
浏览器
状态
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国家数据库管理系统名称
软件开发费列什么科目
2020网络安全教育视频
网络安全技术下载
网络安全服务相关培训
互联网信息科技公司发展
数据库和php可以做的简单系统
崇明区电子软件开发欢迎咨询
服务器中间件信息泄露
正当防卫4服务器未响应
代理服务器无法完全访问
网络安全体系作用
衡阳安全运维工程师网络安全
云端做代理服务器
网络安全四年级简单手抄报字少
服务器cpu温度异常高的原因
腾讯云服务器安全隔离后怎么开启
香港汇丰银行外汇数据库
数据库管理锁
qq飞车我的服务器不见了
孙膑翻译软件开发
网络安全防范宣传单
数据库和php可以做的简单系统
js获取服务器时间
数据库底层计算
北京汽车软件开发公司名单
学软件开发最有用的书籍
英国网络安全法全文
怎么搜索服务器此电脑
公安学习宣传网络安全法