自己怎么创建免费网站吗,网站编辑信息怎么做,网站建设的钱计入什么科目,云主机推荐提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、组件 1. elasticsearch 2. logstash 2.1 工作过程 2.2 INPUT 2.3 FILETER 2.4 OUTPUTS 3. kibana 三、架构类型 3.1 ELK 3.2 ELKK 3.3 ELFK 3.5 EF… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 目录 前言 一、概述 二、组件 1. elasticsearch 2. logstash 2.1 工作过程 2.2 INPUT 2.3 FILETER 2.4 OUTPUTS 3. kibana 三、架构类型 3.1 ELK 3.2 ELKK 3.3 ELFK 3.5 EFK 四、案例 前言
ELK日志收集系统是一种常用的开源系统由三个主要组件组成Elasticsearch、Logstash和Kibana。 Elasticsearch是一个基于Lucene的分布式搜索和分析引擎用于存储和索引大量数据。它能够快速地搜索和分析大规模的日志数据并支持实时的数据查询和聚合分析。 Logstash是一个用于数据收集、处理和传输的工具。它能够从各种来源如文件、数据库、消息队列等收集日志数据并对其进行过滤、转换和标准化处理然后将数据发送给Elasticsearch进行存储和索引。 Kibana是一个用于数据可视化和分析的工具。它提供了用户友好的界面可以通过图表、表格、仪表盘等方式展示和分析存储在Elasticsearch中的日志数据。用户可以使用Kibana进行数据查询、聚合、筛选和导出并可以自定义仪表盘和报告。
ELK日志收集系统能够帮助企业集中收集、存储和分析各种类型的日志数据提供实时的监控、诊断和故障排查能力帮助提高系统的稳定性和性能。它还支持可扩展性和高可用性并提供了丰富的插件和扩展机制可以与其他工具和系统集成。 提示以下是本篇文章正文内容下面案例可供参考
一、概述
ELK由三个组件构成 作用 日志收集 日志分析 日志可视化 为什么使用 日志对于分析系统、应用的状态十分重要但一般日志的量会比较大并且比较分散。 如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此一些集中式的日志系统也就应用而生。目前比较有名成熟的有Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。
二、组件
1. elasticsearch
日志分析 开源的日志收集、分析、存储程序 特点 分布式 零配置 自动发现 索引自动分片 索引副本机制 Restful风格接口 多数据源 自动搜索负载
2. logstash
日志收集 搜集、分析、过滤日志的工具
2.1 工作过程
一般工作方式为c/s架构Client端安装在需要收集日志的服务器上Server端负责将收到的各节点日志进行过滤、修改等操作再一并发往Elasticsearch上去 Inputs → Filters → Outputs 输入--过滤--输出
2.2 INPUT
File从文件系统的文件中读取类似于tail -f命令
Syslog在514端口上监听系统日志消息并根据RFC3164标准进行解析
要使用 Logstash 从 Syslog 中读取数据您可以按照以下步骤进行配置 1. 创建 Logstash 配置文件使用任意文本编辑器创建一个新的配置文件例如 syslog.conf。 2. 配置 Syslog 输入插件在配置文件中添加以下内容以配置 Logstash 从 Syslog 中读取数据 yaml input { syslog { port 514 # Syslog 默认的监听端口号为 514请根据实际情况进行修改 type syslog } } 这将配置 Logstash 使用 Syslog 输入插件监听默认的 Syslog 端口号514并使用 syslog 类型标记这些事件。 3. 可选的过滤器和输出配置根据您的需求您可以添加额外的过滤器或输出插件来处理从 Syslog 读取的数据。根据您的具体需求进行相应的配置。 4. 启动 Logstash导航到 Logstash 的安装目录并运行以下命令以启动 Logstash 并加载 Syslog 配置 bash bin/logstash -f path/to/syslog.conf 请确保将 path/to/syslog.conf 替换为实际的配置文件路径。
启动 Logstash 后它将监听来自 Syslog 的数据并进行处理。请确保 Logstash 能够接收 Syslog 数据并且防火墙或网络配置允许 Logstash 与 Syslog 进行通信。如果您使用的是默认端口 514请确保没有其他服务占用该端口。如有需要可以修改 Logstash 配置文件中的端口设置来与 Syslog 配置一致。
Redis从redis service中读取要使用Logstash从Redis中读取数据您可以按照以下步骤设置Logstash配置 1. 安装Logstash和Redis插件首先确保已在系统上安装了Logstash并在Logstash的安装目录 下运行以下命令安装Redis插件 bin/logstash-plugin install logstash-input-redis 2. 创建Logstash配置文件创建一个新的配置文件例如redis.conf并使用任意文本编辑器打开。 3. 配置Redis输入插件在配置文件中添加以下内容以配置Logstash从Redis中读取数据 input { redis { host localhost # Redis主机地址根据您的配置进行更改 port 6379 # Redis端口根据您的配置进行更改 data_type list # Redis数据类型例如list、channel、pattern等 key your_key # Redis数据键名根据您的配置进行更改 } } 注意这只是一个基本的配置示例请根据您的Redis主机地址、端口、数据类型和键名进行相应的更改。 4. 配置Logstash输出根据您的需求您可以添加其他输出插件如Elasticsearch、文件输出Beats从filebeat中读取要使 Logstash 从其他主机的 Filebeat 读取数据您需要进行以下配置
1. 在 Filebeat 上配置 Logstash 输出编辑 Filebeat 的配置文件通常是 filebeat.yml并添加 Logstash 输出的配置。确保将 output.logstash.hosts 设置为 Logstash 主机的 IP 地址或主机名如下所示 yaml output.logstash: hosts: [logstash_host:5044] 将 logstash_host 替换为实际的 Logstash 主机地址。确保配置中的端口号 5044 与 Logstash 监听的端口一致。
2. 在 Logstash 上配置 Filebeat 输入创建一个新的 Logstash 配置文件例如 filebeat.conf并使用文本编辑器打开。在配置文件中添加以下内容 yaml input { beats { port 5044 # 设置 Logstash 监听的端口与 Filebeat 配置中一致 } } 这将指示 Logstash 监听 Filebeat 发送的数据。
3. 可选的过滤器和输出配置根据您的需求您可以添加额外的过滤器或输出插件来处理从 Filebeat 读取的数据。根据您的具体需求进行相应的配置。
4. 启动 Logstash导航到 Logstash 的安装目录并运行以下命令以启动 Logstash 并加载 Filebeat 配置 bash bin/logstash -f path/to/filebeat.conf 请确保将 path/to/filebeat.conf 替换为实际的配置文件路径。
启动 Logstash 后它将监听来自其他主机上 Filebeat 的数据并根据配置进行处理。请确保 Logstash 能够访问其他主机上的 Filebeat并且防火墙或网络配置允许 Logstash 与 Filebeat 进行通信
2.3 FILETER
Grok解析任意文本数据Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串转换成为具体的结构化的数据配合正则表达式使用。 官方提供的grok表达式logstash-patterns-core/patterns at main · logstash-plugins/logstash-patterns-core · GitHub Grok在线调试Grok Debugger Mutate对字段进行转换。例如对字段进行删除、替换、修改、重命名等。 Drop丢弃一部分Events不进行处理。 Clone拷贝Event这个过程中也可以添加或移除字段。 Geoip添加地理信息(为前台kibana图形化展示使用)
2.4 OUTPUTS Elasticsearch可以高效的保存数据并且能够方便和简单的进行查询。 File将Event数据保存到文件中。 Graphite将Event数据发送到图形化组件中踏实一个当前较流行的开源存储图形化展示的组件。 3. kibana
日志可视化 Grafana 为Logstash和ElasticSearch在收集、存储的日志基础上进行分析时友好的Web界面可以帮助汇总、分析和搜索重要数据日志。
三、架构类型
3.1 ELK es logstash kibana
3.2 ELKK es logstash kafka kibana
3.3 ELFK es logstash 重量级 占用系统资源较多 filebeat 轻量级 占用系统资源较少 kibana
3.4 ELFKK es logstash filebeat kafka kibana
3.5 EFK es logstash fluentd kafka kibana
四、案例
ELK日志收集系统集群实验
1.实验拓扑 2. 环境配置
设置各个主机的IP地址为拓扑中的静态IP在两个节点中修改主机名为node1和node2并设置hosts文件
node1
hostnamectl set-hostname node1
vim /etc/hosts
192.168.156.11 node1
192.168.156.12 node2 node2
hostnamectl set-hostname node2
vim /etc/hosts
192.168.156.11 node1
192.168.156.12 node2 3. 安装node1与node2节点的elasticsearch
安装 rpm -ivh elasticsearch-5.5.0.rpm 配置
node1
vim /etc/elasticsearch/elasticsearch.yml
cluster.name:my-elk-cluster //集群名称
node.name:node1 //节点名字
path.data:/var/lib/elasticsearch //数据存放路径
path.logs /var/log/elasticsearch/ //日志存放路径
bootstrap.memory_lock:false //在启动的时候不锁定内存
network.host:192.168.56.11 //提供服务绑定的IP地址0.0.0.0代表所有地址
http.port:9200 //侦听端口为9200
discovery.zen.ping.unicast.hosts【node1node2】 //群集发现通过单播实现 node2
vim /etc/elasticsearch/elasticsearch.yml
cluster.name:my-elk-cluster //集群名称
node.name:node2 //节点名字
path.data:/var/lib/elasticsearch //数据存放路径
path.logs /var/log/elasticsearch/ //日志存放路径
bootstrap.memory_lock:false //在启动的时候不锁定内存
network.host:192.168.156.12 //提供服务绑定的IP地址0.0.0.0代表所有地址
http.port:9200 //侦听端口为9200
discovery.zen.ping.unicast.hosts【node1node2】 //群集发现通过单播实现 启动elasticsearch服务
node1和node2
systemctl start elasticsearch 查看节点信息
http://192.168.156.11:9200
http://192.168.156.12:9200 查看集群健康状态
http://192.168.115.3:9200/_cluster/health
Green 健康 yellow 警告 red 集群不可用严重错误 4. 在node1安装elasticsearch-head插件
tar xf node-v8.2.1.tar.gz
cd node-v8.2.1
./configure make make install 等待安装完毕。
安装完毕后会生成命令npm
拷贝命令
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-head
tar xf elasticsearch-head.tar.gz
cd elasticsearch-head
npm install 修改elasticsearch配置文件
vim /etc/elasticsearch/elasticsearch.yml
添加 http.cors.enabled: true //开启跨域访问支持默认为false http.cors.allow-origin: * //跨域访问允许的域名地址 启动elasticsearch-head
cd elasticsearch-head
npm run start 查看监听 netstat -anput | grep :9100 访问
http://192.168.156.11:9100 测试
在node1的终端中输入
curl -XPUT localhost:9200/index-demo/test/1?prettypretty -H Content-Type: application/json -d {user:zhangsan,mesg:hello world} 刷新浏览器可以看到对应信息即可 node1服务器安装logstash
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service In -s /usr/share/logstash/bin/logstash /usr/local/bin/ 测试1 标准输入与输出
logstash -e input{ stdin{} }output { stdout{} } 测试2 使用rubydebug解码
logstash -e input { stdin{} } output { stdout{ codecrubydebug }} 测试3输出到elasticsearch 查看结果
http://192.168.156.11:9100 logstash日志收集文件格式
Logstash配置文件基本由三部分组成input、output以及 filter根据需要。标准的配置文件格式如下
input (...) 输入
filter {...} 过滤
output {...} 输出
在每个部分中也可以指定多个访问方式。例如若要指定两个日志来源文件则格式如下
input {
file{path /var/log/messages type syslog}
file { path /var/log/apache/access.log type apache}
}
案例通过logstash收集系统信息日志
chmod or /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.1.1:9200] index system-%{YYYY.MM.dd} } } 重启日志服务 systemctl restart logstash 查看日志 http://192.168.156.11:9100 node1节点安装kibana
rpm -ivh kibana-5.5.1-x86_64.rpm 配置kibana
vim /etc/kibana/kibana.yml
server.port5601 //Kibana打开的端口
server.host0.0.0.0 //Kibana侦听的地址
elasticsearch.url http//192.168.8.134:9200
//和Elasticsearch 建立连接
kibana.index.kibana //在Elasticsearch中添加.kibana索引 启动kibana
systemctl start kibana 访问kibana :
http://192.168.156.11:5601 首次访问需要添加索引我们添加前面已经添加过的索引system-* 企业案例
收集httpd访问日志信息
在httpd服务器上安装logstash参数上述安装过程可以不进行测试
logstash在httpd服务器上作为agent代理不需要启动 编写httpd日志收集配置文件
vim /etc/logstash/conf.d/httpd.conf
input {
file{
path/var/log/httpd/access_log //收集Apache访问日志
type access //类型指定为 access
start_position beginning //从开始处收集
}
output{
elasticsearch {
hosts [192.168.156.11:9200] // elasticsearch 监听地址及端口
index httpd_access-%{YYYY.MM.dd} //指定索引格式
}
} 使用logstash命令导入配置
logstash -f /etc/logstash/conf.d/httpd.conf 使用kibana查看即可 http://192.168.156.11:5601 查看时在mangement选项卡创建索引httpd_access-* 即可