南京个人做网站,360网站seo怎么做,西安网站优化排名,网络推广培训资料文章目录 一、ELK日志分析系统1、ELK简介1.2 ElasticSearch1.3 Logstash1.4 Kibana#xff08;展示数据可视化界面#xff09;1.5 Filebeat 2、使用ELK的原因3、完整日志系统的基本特征4、ELK的工作原理 二、部署ELK日志分析系统1、服务器配置2、关闭防火墙3、ELK ElasticSea… 文章目录 一、ELK日志分析系统1、ELK简介1.2 ElasticSearch1.3 Logstash1.4 Kibana展示数据可视化界面1.5 Filebeat 2、使用ELK的原因3、完整日志系统的基本特征4、ELK的工作原理 二、部署ELK日志分析系统1、服务器配置2、关闭防火墙3、ELK ElasticSearch集群部署在node1、node2节点上操作3.1 环境准备更改主机名、配置域名解析、查看Java环境3.2 部署ElasticSearch软件3.2.1 安装elasticsearch-rpm包3.2.2 加载系统服务3.2.3 修改elasticsearch主配置文件3.2.4 创建数据存放路径并授权3.2.5 启动elasticsearch3.2.6 查看节点信息 3.3 安装Elasticsearch-head插件3.3.1 编译安装node3.3.2 安装phantomjs3.3.3 安装Elasticsearch-head数据可视化工具3.3.4 修改Elasticsearch主配置文件3.3.5 启动elasticsearch-head服务3.3.6 通过Elasticsearch-head查看ES信息3.3.7 插入索引3.3.8 浏览器查看索引信息 4、ELK-Logstash部署在Apache节点上操作4.1 更改主机名4.2 安装Apache服务httpd4.3 安装Java环境4.4 安装logstash4.5 测试Logstash4.5.1 Logstash命令常用选项4.5.2 定义输入和输出4.5.2.1 标准输入、输出4.5.2.2 rubydebug输出4.5.2.3 输出到ES 4.6 定义logstash配置文件4.7 访问测试 5、ELK-Kibana部署在node1节点上操作5.1 安装Kibana5.2 设置Kibana的主配置文件5.3 启动kibana服务5.4 验证kibana5.5 将Apache服务器的日志访问的、错误的添加到ES并通过kibana显示5.6 浏览器访问 三、ELFKFilebeatELK1、Filebeat的作用2、ELFK工作流程3、ELFK的部署3.1 服务器配置3.2 服务器环境3.3 安装filebeat3.4 修改filebeat主配置文件3.5 在logstash组件所在节点apache节点上新建一个logstash配置文件3.6 浏览器验证 一、ELK日志分析系统
1、ELK简介
ELK平台是一套完整的日志集中处理解决方案将ElasticSearch、Logstash和Kibana三个开源工具配合使用完成更强大的用户对日志的查询、排序、统计需求。提高安全性集中存放日志集中存放时对日志处理困难
1.2 ElasticSearch
ES是基于Lucene一个全文检索引擎的架构开发的分布式存储检索引擎用来存储各类日志。ES是用JAVA开发的可通过RESTful Web接口让用户可以通过浏览器与ES通信。ES是个分布式搜索和分析引擎优点是能对大容量的数据进行接近实时的存储、搜索和分析操作。
1.3 Logstash
Logstash作为数据收集引擎。它支持动态的从各种数据源搜索数据并对数据进行过滤、分析、丰富、统一格式等操作然后存储到用户指定的位置一般会发送给ES。Logstash由JRuby语言编写运行在JAVA虚拟机JVM上是一款强大的数据处理工具可以实现数据传输、格式处理、格式化输出。Logstash具有强大的插件功能常用于日志处理。三个组件input数据采集、filter数据过滤、 output(数据输出)
1.4 Kibana展示数据可视化界面
Kibana是基于Node.js开发的展示工具可以为Logstash和ES提供图形化的日志分析Web界面展示可以汇总、分析和搜索重要数据日志。
1.5 Filebeat
Filebeat是一款轻量级的开源日志文件数据搜索器。通常在需要采集数据的客户端安装Filebeat并指定目录与日志格式Filebeat就能快速收集数据并发送给logstash进行解析或是直接发给ES存储性能上相比运行于JVM上的logstash优势明显是对它的替代。
2、使用ELK的原因
日志主要包括日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误及错误发生的原因。经常分析日志可以了解服务器的负荷性能安全性从而及时采取措施纠正错误。往往单台机器的日志我们使用grep、awk等工具就能基本实现简单分析但是当日志被分散的储存不同的设备上。如果你管理数十上百台服务器你还在使用依次登录每台机器的传统方法查阅汇总。集中化管理日志后日志的统计和检索又成为一件比较麻烦的事情一般我们使用grep、awk和wc等linux命令能实现检索和统计但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。一般大型系统是一个分布式部署的架构不同的服务模块部署在不同的服务器上问题出现时大部分情况需要根据问题暴露的关键信息定位到具体的服务器和服务模块构建一套集中式日志系统可以提高定位问题的效率。
3、完整日志系统的基本特征
收集能够采集多种来源的日志数据传输能够稳定的把日志数据解析过滤并传输到存储系统存储存储日志数据分析支持UI分析警告能够提供错误报告监控机制
4、ELK的工作原理 在所有需要收集日志的服务器上部署Logstash或者先将日志进行集中化管理在日志服务器上在日志服务器上部署Logstash。Logstash收集日志将日志格式化并输出到es群集中。ES对格式化后的数据进行索引和存储。Kibana从ES群集中查询数据生成图表并进行前端数据的显示。
二、部署ELK日志分析系统
1、服务器配置
服务器配置主机名ip地址主要软件部署node1节点2C/4Gnode1192.168.10.12ElasticSearch、Kibananode2节点2C/4Gnode2192.168.10.13ElasticSearchapache节点-apache192.168.10.14Logstash、Apache
2、关闭防火墙
systemctl stop firewalld
setenforce 0
#关闭防火墙和核心防护3、ELK ElasticSearch集群部署在node1、node2节点上操作
3.1 环境准备更改主机名、配置域名解析、查看Java环境
hostnamectl set-hostname node1或者node2
su
#修改主机名echo 192.168.10.12 node1 /etc/hosts
echo 192.168.10.13 node2 /etc/hosts
#主机名追加到/etc/hosts文件的末尾可以通过node主机名来访问IP地址java -version
#查看Java版本信息
#如果没有安装可使用“yum install -y java”进行安装node1 node2 3.2 部署ElasticSearch软件
3.2.1 安装elasticsearch-rpm包
cd /opt
#切换目录#上传elasticsearch-5.5.0.rpm到/opt目录下rpm -ivh elasticsearch-5.5.0.rpm
#安装node1 node2 3.2.2 加载系统服务
systemctl daemon-reload
#重新加载systemctl enable elasticsearch.service
#开机自启node1 node2 3.2.3 修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
#备份配置文件#修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
#17行取消注释指定群集名称
node.name: node节点
#23行取消注释指定节点名称node1节点为node1node2节点为node2
path.data: /data/elk_data
#33行取消注释指定数据存放路径
path.logs: /var/log/elasticsearch/
#37行取消注释指定日志存放路径
bootstrap.memory_lock: false
#43行取消注释改为在启动的时候不锁定内存开启为true
network.host: 0.0.0.0
#55行取消注释设置监听地址0.0.0.0代表所有地址
http.port: 9200
#59行取消注释ES服务的默认监听端口为9200
discovery.zen.ping.unicast.hosts: [node1, node2]
#68行取消注释集群发现通过单播实现指定要发现的节点node1、node2grep -v ^# /etc/elasticsearch/elasticsearch.yml
#过滤查看修改的配置文件node1 node2 3.2.4 创建数据存放路径并授权
mkdir -p /data/elk_data
#创建目录chown elasticsearch:elasticsearch /data/elk_data/
#修改属主、属组node1 node2 3.2.5 启动elasticsearch
systemctl start elasticsearch.service
#开启es服务ss -natp | grep 9200
#查看进程 node1 node2 3.2.6 查看节点信息
浏览器访问http://192.168.10.12:9200、http://192.168.10.13:9200查看节点node1、node2的信息 浏览器访问http://192.168.10.12:9200/_cluster/health?pretty、http://192.168.10.13:9200/_cluster/health?pretty查看群集的健康情况可以看到status值为green(绿色)表示节点健康运行数据和副本全都没有问题红色表示数据都不完整、黄色表示数据完整但副本有问题 浏览器访问http://192.168.10.12:9200/_cluster/state?pretty检查群集状态信息 使用上述方式查看群集的状态对用户并不友好可以通过安装Elasticsearch-head插件更方便的对群集进行管理。
3.3 安装Elasticsearch-head插件
ES在5.0版本后插件需要作为独立服务进行安装需要使用npm工具NodeJS的包管理工具安装。安装Elasticsarch-head需要提前安装好依赖软件node和phantomjs。
node
是一个基于Chrome V8引擎的JavaScript运行环境
phantomjs
是一个基于webkit的JavaScriptAPI可以理解为一个隐形的浏览器任何基于webkit浏览器做的事情它都可以做到。
3.3.1 编译安装node
cd /opt
#切换目录#上传软件包node-v8.2.1.tar.gz编译工具到/opt目录yum install -y gcc gcc-c make
#安装依赖环境tar xf node-v8.2.1.tar.gz
#解压cd node-v8.2.1/
#切换目录./configure
#执行进行配置make -j4 make install
#编译及安装安装时间会久一点node1 node2 3.3.2 安装phantomjs
cd /opt
#切换目录#上传软件包phantomjs-2.1.1-linux-x86_64.tar.bz2到/opt目录tar xf 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
#复制node1 node2 3.3.3 安装Elasticsearch-head数据可视化工具
cd /opt
#切换目录#上传软件包elasticsearch-head.tar.gz到/opt目录tar xf elasticsearch-head.tar.gz -C /usr/local/src/
#解压到指定目录/usr/local/src/cd /usr/local/src/elasticsearch-head/
#切换目录npm install
#安装node1 node2 3.3.4 修改Elasticsearch主配置文件
#修改配置文件末行添加以下内容
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
#开启跨域访问支持默认为false
http.cors.allow-origin: *
#指定跨域访问允许的域名地址为所有systemctl restart elasticsearch.service
#重启服务node1 node2 3.3.5 启动elasticsearch-head服务
cd /usr/local/src/elasticsearch-head/
#切换目录npm run start
#后台开启ss -natp | grep 9100
#查看进程#注必须在解压后的elasticsearch-head目录下启动服务进程会读取该目录下的gruntfile.js文件否则可能启动失败。node1 node2 3.3.6 通过Elasticsearch-head查看ES信息 通过浏览器访问http://192.168.10.12:9100地址并连接群集。如果看到群集健康值为green代表群集很健康。 node1 node2 3.3.7 插入索引
通过命令插入一个测试索引索引为index-demo类型为test
curl -X PUT localhost:9200/index-demo1/test/1?prettypretty -H content-Type: application/json -d {user:zhangsan,mesg:hello world}
#发送http请求向运行在localhost:9200的Elasticsearch服务器的index-demo索引的test类型中更新或创建一个ID为1的文档文档的内容是{user:zhangsan,mesg:hello world}#-X指定HTTP请求方法为PUT
#-H表示定义类型
#-d表示指定内容node1 node2 3.3.8 浏览器查看索引信息
浏览器访问http://129.168.10.13:9100查看索引信息可以看见索引默认被分片为5个并且有一个副本。 点击“数据浏览”会发现在node1上创建的索引为index-demo类型为test的相关信息。显示详细数据 4、ELK-Logstash部署在Apache节点上操作
Logstash一般部署在需要监控其日志的服务器。在本案例中Logstash部署在Apache服务器上用于收集Apache的日志信息并发送到Elasticsearch。
4.1 更改主机名
ip192.168.10.14
hostnamectl set-hostname apache
su
#修改主机名systemctl stop firewalld
setenforce 0
#关闭防火墙和防护中心4.2 安装Apache服务httpd
yum install -y httpd
#安装httpdsystemctl start httpd
#开启服务4.3 安装Java环境
yum install -y java
#安装Javajava -version
#查看Java版本4.4 安装logstash
cd /opt
#切换目录#上传软件包logstash-5.5.1.rpm到/opt目录下rpm -ivh logstash-5.5.1.rpm
#安装systemctl start logstash.service
#开机自启ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
#做软连接4.5 测试Logstash
4.5.1 Logstash命令常用选项
常用选项说明-f通过这个选项可以指定Logstash的配置文件根据配置文件配置Logstash的输入和输出流-e从命令行中获取输入、输出后面跟着字符串该字符串可以被当做Logstash的配置如果是空则默认使用stdin作为输入stdout作为输出-t测试配置文件是否正确然后退出
4.5.2 定义输入和输出
4.5.2.1 标准输入、输出
输入采用标准输入输出采用标准输出类似管道
logstash -e input { stdin{} } output { stdout{} }
#定义输入和输出www.baidu.com
#键入内容标准输入
2024-04-10T11:23:53.306Z apache www.baidu.com#输入结果标准输出4.5.2.2 rubydebug输出
使用rubydebug输出详细格式显示codec为一种编解码器
logstash -e input { stdin{} } output { stdout{ codecrubydebug } }
##定义输入和输出www.baidu.com
#键入内容标准输入{timestamp 2024-04-10T11:25:58.794Z,version 1,host apache,message www.baidu.com
}
#显示输出结果处理后的结果4.5.2.3 输出到ES
使用logstash将写入到ES中
logstash -e input { stdin{} } output { elasticsearch { hosts[192.168.10.12:9200] } }
#将logstash输出结果写入到es中www.baidu.com
#键入内容标准输出#结果不在标准输出显示而是发送至ES可浏览器访问http://192.168.10.12:9100查看索引和数据4.6 定义logstash配置文件
logstash配置文件基本由三部分组成input输入、output输出以及filter过滤可选根据需要选择使用。
格式如下
input {...}
output {...}filter {...}在每个部分中也可以指定多个访问方式。例如若要指定两个日志来源文件则格式如下
input {file { path /var/log/messages type syslog}file { path /var/log/httpd/access.log type apache}}修改logstash配置文件让其收集系统日志/var/log/messages并将其输出到ES中。
chmod r /var/log/messages
#赋予读的权限让Logstash可以获取到该文件的内容vim /etc/logstash/conf.d/system.conf
#该文件需自行创建文件名可自定义
input {file{path /var/log/messages#指定要收集的日志的位置type system#自定义日志类型标识start_position beginning#表示从开始处收集}
}
output {elasticsearch{#输出到EShosts [192.168.10.12:9200, 192.168.10.13:9200]#指定ES服务器的地址和端口为避免单机故障建议写全index system-%{YYYY.MM.dd}#指定输出到ES的索引格式}
}systemctl restart logstash.service
#重启服务4.7 访问测试
浏览器访问http://192.168.10.12:9100查看索引信息 5、ELK-Kibana部署在node1节点上操作
5.1 安装Kibana
cd /opt
#切换目录#上传软件包kibana-5.5.1-x86_64.rpm到/opt目录rpm -ivh kibana-5.5.1-x86_64.rpm
#安装5.2 设置Kibana的主配置文件
cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak
#备份配置文件#编辑配置文件
vim /etc/kibana/kibana.yml
server.port: 5601
#2行取消注释kibana服务的默认监听端口为5601
server.host: 0.0.0.0
#7行取消注释设置kibana的监听地址0.0.0.0代表所有地址
elasticsearch.url: http://192.168.10.12:9200
#21行取消注释设置和ES建立连接的地址和端口
kibana.index: .kibana
#30行取消注释设置在ES中添加.kibana索引5.3 启动kibana服务
systemctl start kibana.service
#开启服务systemctl enable kibana.service
#开启自启ss -natp | grep 5601
#查看进程5.4 验证kibana
浏览器访问http://192.168.10.12:5601 第一次登录需要添加一个ES索引输入system-* 索引添加完成后点击“Discover”按钮可查看图表信息及日志信息 数据展示可以分类显示例如在“Available Fileds”中add添加“_type”查看 5.5 将Apache服务器的日志访问的、错误的添加到ES并通过kibana显示
apache服务器
#apache服务器添加配置将日志访问的、错误的添加到ES并通过kibana显示
vim /etc/logstash/conf.d/apache_log.conf
input {file{path /etc/httpd/logs/access_logtype accessstart_position beginning}file{path /etc/httpd/logs/error_logtype errorstart_position beginning}
}
output {if [type] access {elasticsearch {hosts [192.168.10.12:9200, 192.168.10.13:9200]index apache_access-%{YYYY.MM.dd}}}if [type] error {elasticsearch {hosts [192.168.10.12:9200, 192.168.10.13:9200]index apache_error-%{YYYY.MM.dd}}}
}cd /etc/logstash/conf.d/
#切换目录/usr/share/logstash/bin/logstash -f apache_log.conf
#启动 Logstash 服务并读取指定的配置文件5.6 浏览器访问
浏览器访问apache服务 浏览器访问http://192.168.10.12:9100查看索引是否创建 浏览器访问http://192.168.10.12:5601登录kibana添加“apache_access、”和“apache_error”索引查看日志信息。 三、ELFKFilebeatELK
1、Filebeat的作用 由于logstash会大量占用系统的内存资源一般我们会使用filebeat替换logstash收集日志的功能组成ELFK架构。 或用fluentd替代logstash组成EFKelasticsearch/fluentd/kibana由于fluentd是由Go语言开发的一般在K8S环境中使用较多。
2、ELFK工作流程
filebeat将日志收集后交由logstash处理logstash进行过滤、格式化等操作满足过滤条件的数据将发送给ESES对数据进行分片存储并提供索引功能kibana对数据进行图形化的web展示并提供索引接口
3、ELFK的部署
3.1 服务器配置
服务器配置主机名ip地址主要软件部署node1节点2C/4Gnode1192.168.10.12ElasticSearch、Kibananode2节点2C/4Gnode2192.168.10.13ElasticSearchapache节点-apache192.168.10.14Logstash、Apachefilebeat节点filebeat192.168.10.15Filebeat
在ELK的基础上增加一台filebeat服务器因此只需再前述ELK部署的前提下进一步操作。
3.2 服务器环境
filebeat节点
hostnamectl set-hostname filebeat
su
#修改主机名systemctl stop firewalld
setenforce 0
#关闭防火墙和核心防护3.3 安装filebeat
filebeat节点
cd /opt
#切换目录#上传filebeat-6.6.1-x86_64.rpm安装包rpm -ivh filebeat-6.6.1-x86_64.rpm
#安装systemctl daemon-reload
#重新加载systemctl enable filebeat.service
#开机自启3.4 修改filebeat主配置文件
filebeat节点
cd /etc/filebeat/
#切换目录cp filebeat.yml filebeat.yml.bak
#备份配置文件#编辑配置文件
vim filebeat.yml
filebeat.inputs:
- type: log
#21行指定log类型从日志文件中读取消息enabled: true#24行开启日志收集功能默认为false- /var/log/*.log#28行指定监控的日志文件- /var/log/messages#29行添加收集/var/log/messagesfields: #31行添加以下内容注意格式service_name: filebeatlog_type: logservice_id: 192.168.10.15#-------------------------- Elasticsearch output ------------------------------#该区域内容全部注释152行、154行#----------------------------- Logstash output --------------------------------output.logstash:#165行取消注释hosts: [192.168.10.14:5044]#167行取消注释指定logstash的IP和端口号systemctl start filebeat.service
#开启服务systemctl status filebeat.service
#查看状态3.5 在logstash组件所在节点apache节点上新建一个logstash配置文件
cd /etc/logstash/conf.d/
#切换目录#修改配置文件
vim logstash.conf
input {beats {port 5044}
}
output {elasticsearch {hosts [192.168.10.12:9200, 192.168.10.13:9200]index %{[fields][service_name]}-%{YYYY.MM.dd}}stdout {codec rubydebug}
}/usr/share/logstash/bin/logstash -f apache_log.conf
#启动 Logstash 服务并读取指定的配置文件注意此处读取的配置文件还是apache_log.conf只能指定使用一个配置的数据目录否则会报错#若是新建索引filebeat不显示重启logstash服务然后重新启动logstash并读取配置文件再次查看3.6 浏览器验证
浏览器访问http://192.168.10.12:9100 浏览器访问http://192.168.10.12:5601登录kibana 添加“filebeat-*”索引后在“Discover”中查看filebeat日志收集情况。