elk 介绍与logstash插件

一,ELK介绍

1.什么是ELK
ELK是三个软件组成的
E:elasticsearch		#java程序  存储,查询日志
L:logstash			#java程序  收集,过滤日志
K:kibana			#java程序  展示,数据页面化

F:filebeat			#go语言  收集,过滤日志
2.ELK的作用
1.收集:收集所有服务器的日志
2.传输:把日志稳定的传输到ES或者消息队列
3.存储:ES能有效的存储数据
4.分析:通过web页面和作图进行分析
5.监控:监控集群架构
3.ELK优点
1.处理数据方式很灵活
2.配置简单
3.查询数据性能高
4.集群扩展方便
5.页面直观,好看
4.为什么使用ELK
1.web日志收集
2.业务日志收集
3.系统日志收集
4.分析以上日志

#在公司,统计分析数据
1.用户访问量统计
2.访问量前十的IP
3.站点访问次数最多的URL
4.查询一上午以上三个值   8:10-12:30
5.查询一下午以上三个值   13:30-17:30
6.对比一下以上数据
7.对比本周每一天的数据

#如果有ELK以上信息很容易查询

一 、logstash介绍

1.搭建logstash
1)安装java环境
[root@web01 ~]# yum localinstall -y jdk-8u181-linux-x64.rpm
2)时间同步
[root@web01 ~]# ntpdate time1.aliyun.com
3)安装logstash
[root@web01 ~]# rz
[root@web01 ~]# yum localinstall -y logstash-6.6.0.rpm
4)授权
[root@web01 ~]# ll /usr/share/logstash/
[root@web01 ~]# chown -R logstash.logstash /usr/share/logstash/

#启动文件
[root@web01 ~]# ll /usr/share/logstash/bin/logstash
-rwxr-xr-x 1 logstash logstash 2354 Jan 24  2019 /usr/share/logstash/bin/logstash
2.logstash插件
INPUT:使Logstash能够读取特定的事件源。
OUTPUT:将事件数据发送到特定的目的地,OUTPUT是事件流水线中的最后阶段。
INPUT支持事件源 OUTPUT支持输出源 CODEC编解码器支持编码
azure_event_hubs(微软云事件中心) elasticsearch(搜索引擎数据库) avro(数据序列化)
beats(filebeat日志收集工具) email(邮件) CEF(嵌入式框架)
elasticsearch(搜索引擎数据库) file(文件) es_bulk(ES中的bulk api)
file(文件) http(超文本传输协议) Json(数据序列化、格式化)
generator(生成器) kafka(基于java的消息队列) Json_lines(便于存储结构化)
heartbeat(高可用软件) rabbitmq(消息队列 OpenStack) line(行)
http_poller(http api) redis(缓存、消息队列、NoSQL) multiline(多行匹配)
jdbc(java连接数据库的驱动) s3*(存储) plain(纯文本,事件间无间隔)
kafka(基于java的消息队列) stdout(标准输出) rubydebug(ruby语法格式)
rabbitmq(消息队列 OpenStack) tcp(传输控制协议)
redis(缓存、消息队列、NoSQL) udp(用户数据报协议)
s3*(存储)
stdin(标准输入)
syslog(系统日志)
tcp(传输控制协议)
udp(用户数据报协议)
3.logstash输入输出插件测试
1)配置环境变量
[root@web01 ~]# vim /etc/profile.d/logstash.sh
export PATH=/usr/share/logstash/bin/:$PATH
2)收集标准输入到标准输出
[root@web01 ~]# logstash -e 'input { stdin {} } output { stdout {} }'

34567890
{
	   #收集到的内容
       "message" => "34567890",
    #时间戳
    "@timestamp" => 2020-12-03T09:27:18.886Z,
    	  #收集到数据的主机
          "host" => "web01",
      #收集的版本
      "@version" => "1"
}
3)收集标准输入到标准输出指定格式
[root@web01 ~]# logstash -e 'input { stdin {} } output { stdout { codec => rubydebug } }'

123
{
       "message" => "123",
      "@version" => "1",
    "@timestamp" => 2020-12-03T09:33:40.563Z,
          "host" => "web01"
}
4)收集标准输入到文件
[root@web01 ~]# logstash -e 'input { stdin {} } output { file { path => "/tmp/1.txt" } }'
123
[INFO ] 2020-12-03 17:40:50.731 [[main]>worker0] file - Opening file {:path=>"/tmp/1.txt"}
234
345

#验证文件写入
[root@web01 ~]# tail -f /tmp/1.txt 
{"message":"123","@timestamp":"2020-12-03T09:40:50.333Z","host":"web01","@version":"1"}
{"message":"234","@timestamp":"2020-12-03T09:41:27.302Z","host":"web01","@version":"1"}
{"message":"345","@timestamp":"2020-12-03T09:41:45.527Z","host":"web01","@version":"1"}
5)收集标准输入到ES
[root@web01 ~]# logstash -e 'input { stdin {} } output { elasticsearch { hosts => ["10.0.0.71:9200"] index => "test" } }'

#启动后随便输入点东西,去ES查看

[root@web01 ~]# logstash -e 'input { stdin {} } output { elasticsearch { hosts => ["10.0.0.71:9200"] index => "test_%{+YYYY-MM-dd}" } }'
posted @ 2020-12-03 19:45  nick_xm  阅读(132)  评论(0编辑  收藏  举报