ELK集群搭建及logstash+kibana展示--logstash

第一篇:logstash安装加简单配置

https://blog.youkuaiyun.com/mayancheng7/article/details/84754571

第二篇:elasticsearch安装加简单配置

https://blog.youkuaiyun.com/mayancheng7/article/details/84767669

第三篇:kibana安装加简单配置

https://blog.youkuaiyun.com/mayancheng7/article/details/84771319

官网地址:https://www.elastic.co/cn/downloads

下载链接,最新版的6.5.1。

Elasticsearch  Kibana Logstash 记得版本保持一致

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.1.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.1-linux-x86_64.tar.gz

机器list

iplogstashelasticsearchKibana 
192.168.3.17
192.168.3.16××
192.168.3.18××

解压logstash

tar zxvf src/logstash-6.5.1.tar.gz
vim logstash-6.5.1/config/std_test.conf            //新建测试conf
input {
    stdin{
    }
} 

output {
    stdout{
    }
}

测试

./logstash-6.5.1/bin/logstash -f logstash-6.5.1/config/std_test.conf        //启动测试,如果出现下列字符就表示安装安装成功

Sending Logstash logs to /home/yx/ma/logstash-6.5.1/logs which is now configured via log4j2.properties
[2018-11-28T17:38:43,938][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/home/yx/ma/logstash-6.5.1/data/queue"}
[2018-11-28T17:38:43,957][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/home/yx/ma/logstash-6.5.1/data/dead_letter_queue"}
[2018-11-28T17:38:44,791][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2018-11-28T17:38:44,813][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"6.5.1"}
[2018-11-28T17:38:44,866][INFO ][logstash.agent           ] No persistent UUID file found. Generating new UUID {:uuid=>"469786ff-14c5-4b35-acc9-087b5e2ee47f", :path=>"/home/yx/ma/logstash-6.5.1/data/uuid"}
[2018-11-28T17:38:51,366][INFO ][logstash.pipeline        ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50}
[2018-11-28T17:38:51,561][INFO ][logstash.pipeline        ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#<Thread:0x4af52480 run>"}
The stdin plugin is now waiting for input:
[2018-11-28T17:38:51,664][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2018-11-28T17:38:52,103][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

新建调用nginx日志的配置文件

input {
	file{
	path =>"/home/yx/server/nginx/logs/*.log"            #通配符*号
	start_position=>"beginning"
	}
}

filter{
	grok{
		patterns_dir => "*.log"                            #通配符*号
		match=>{"message"=>"%{DATA:clientIp} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestPath} %{DATA:httpversion}\" %{DATA:retcode} %{DATA:size} \"%{DATA:fromHtml}\" \"%{DATA:useragent}\""                #具体各项配置详解可参考链接:http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html
		}
		remove_field=>"message"
	}
	date{
		match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
	}
}
output {
    stdout{
    	codec=>rubydebug
    }
}

新建调用PHP日志的配置文件,只有input的输入路径不同,其他都一样。

input {
	file{
	path =>"/home/yx/server/php56/log/php-error.log"        #单个日志例子
	start_position=>"beginning"
	}
}

filter{
	grok{
		patterns_dir => "*.log"
		match=>{"message"=>"%{DATA:clientIp} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestPath} %{DATA:httpversion}\" %{DATA:retcode} %{DATA:size} \"%{DATA:fromHtml}\" \"%{DATA:useragent}\""
		}
		remove_field=>"message"
	}
	date{
		match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
	}
}
output {
    stdout{
    	codec=>rubydebug
    }
}

指定多配置文件启动,个人感觉也可以将所有需显示的日志软连接到一个单独目录里,然后配置文件只写一个就好。

./logstash-6.5.1/bin/logstash -f logstash-6.5.1/config/std_nginx.conf -f logstash-6.5.1/config/std_php.conf     //前台启动,可以实时查看日志输出。
nohup ./logstash-6.5.1/bin/logstash -f logstash-6.5.1/config/std_nginx.conf -f logstash-6.5.1/config/std_php.conf & //后台启动并且不会影响输出。

此处可以另开两个窗口,tail -f  查看nginx的日志和PHP的日志,从而和logstash输出的日志做对比。

如果没有意外,到此logstash已经安装成功。请看第二篇

elasticsearch的安装

参考链接:https://blog.youkuaiyun.com/BuquTianya/article/details/72027209

### ELK 堆栈的日志管理分析 #### 工作原理概述 ELK 是由 ElasticsearchLogstash Kibana 组成的一个开源工具链,用于日志管理与分析。其基本工作流如下: - **Logstash** 负责从各种来源收集日志数据,并对其进行过滤格式化后发送至 Elasticsearch[^1]。 - **Elasticsearch** 提供强大的搜索引擎功能,负责对接收到的数据进行索引存储。 - **Kibana** 则作为前端界面,允许用户通过图形化的方式查询、分析以及可视化这些数据[^3]。 #### 安装与配置步骤说明 ##### 1. 安装 Elasticsearch Elasticsearch 是整个系统的基石,它提供了分布式搜索数据分析的能力。安装过程中需要注意版本兼容性问题。下载地址可以通过官方链接获取[^2]。完成安装后需调整 `elasticsearch.yml` 文件中的集群名称、节点名称以及其他必要的网络设置参数以适应实际环境需求。 ##### 2. 部署 Logstash Logstash 主要承担着数据输入端的角色,可以从文件系统、数据库或其他服务中提取原始记录再经过一系列插件处理之后传送给下游组件即 Elasticsearch 实例群组里去。具体操作包括解压软件包到目标目录下然后编辑对应的 configuration file 来定义 pipeline 的行为模式比如 source type filter output destination等等。 ##### 3. 设置 Kibana 最后一步就是启动 Kibana 应用来连接已有的 ES 数据库实例从而实现交互式的探索体验。同样地也需要修改默认路径下的 kibana.config.json 或者其他形式的初始化脚本来指定正确的 backend URL 地址确保两者之间能够正常通信握手成功建立联系。 以下是简单的 Python 示例来演示如何向运行中的 logstash 发送消息: ```python import logging import socket def send_log_to_logstash(message): host = 'localhost' # 替换为您的logstash主机名/IP port = 5000 # 替换为您所使用的TCP端口号 try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((host, port)) sock.sendall(bytes(message + '\n', 'utf-8')) sock.close() except Exception as e: logger.error(f"Failed to send message {message} due to error: {e}") if __name__ == "__main__": test_message = "This is a test log entry" send_log_to_logstash(test_message) ``` 此代码片段展示了怎样利用标准库里的套接字模块构建起基础版客户端程序以便于测试目的验证我们的pipeline是否按预期那样运作良好。 #### 总结 综上所述,通过合理规划各部分之间的协作关系再加上细致入微得当的各项设定就可以顺利达成基于ELK框架之上高效稳定可靠的解决方案来满足企业级应用场合当中对于海量结构化半结构性乃至完全非结构化的各类事件追踪审计等方面提出的苛刻要求了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值