设为首页 收藏本站
查看: 1293|回复: 0

[经验分享] 搭建ELK收集PHP的日志

[复制链接]

尚未签到

发表于 2017-12-30 09:59:14 | 显示全部楼层 |阅读模式
  架构:
  filebeat --> redis -->logstash --> es --> kibana


  • 每个客户端需要安装filebeat收集PHP日志
  • filebeat把收集到的日志传到redis
  • logstash从redis读取日志,读取一条日志就从redis里删除一条日志
  • logstash把日志发送到es
  • 最后kibana可视化查询日志
  es数据安全建议


  • es设置为三个节点为一个集群,集群中的一个节点会被选为主节点,它将临时管理集群级别的一些变更,例如新建和删除索引,增加或移除节点.主节点不参与文档级别的变更或搜索,这意味着流量增长的时候,该节点不会成为集群的瓶颈.
  作为用户,我们能与集群中的任何一个节点通信,包括主节点.每一个节点都知道文档存在哪个节点上(因为做了分片,所以一个文档是分散到集群中所有节点上的),他们可以转发请求到相应的节点上.我们访问的节点负责收集各节点返回的数据,最后一起返回给客户端


  • es配置文件里设置分片数量和副本数量,分片数量就是把一个文档拆分开来存到集群的机器上,副本就是把数据备份一份
  • es配置文件开始恢复备份设置为2,意思是只要有两个节点启动就开始恢复数据,
ELK stack搭建
  环境说明
  172.16.1.225  es,logstash,redis,kibana(服务器端)
  172.16.1.224  filebeat(每个客户端必装收集php)
  安装filebeat
  

172.16.1.224# rpm -ivh filebeat-5.2.1-x86_64.rpm  

  配置filebeat收集日志
  

filebeat.prospectors:  

  

- input_type: log  paths:
- /alidata1/www/timecash22/api3/application/logs/api3/2017/*/*.php  document_type: api3_json
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after
  

  
- input_type: log
  paths:
  - /alidata1/www/timecash22/api3/application/logs/2017/
*/*.php  document_type: api3_error_log
  multiline.pattern:
'^[0-9]{4}-[0-9]{2}-[0-9]{2}'  multiline.negate:
true  multiline.match: after
  

  

- input_type: log  paths:
- /alidata1/www/timecash22/wx/application/logs/2017/*/*.php  document_type: wx_error_log         #这是的key是什么,到redis里就是什么
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after
  

  

  
output.redis:
  hosts: ["10.45.40.112"]
  password: "timecash2016"
  #key: "api3_json"
  keys:
  - key: "%{[type]}"
  

  安装elasticsearch
  

172.16.1.225# rpm -ivh elasticsearch-2.4.3.rpm  

  配置elasticsearch
  

cluster.name: ELK  node.name: node
-1  path.data:
/data/elasticsearch  path.logs:
/var/log/elasticsearch  network.host:
0.0.0.0  

  安装logstash
  

172.16.1.225# tar -zxvf logstash-2.4.0.tar.gz  
172.16.1.225# cd logstash
-2.4.0  
172.16.1.225# mkdir  conf  #创建配置文件存放目录
  

  配置logstash从redis读取数据,然后输出到es
  

input {  redis {
  host
=> "redis的iP"  password
=> "redis的密码"  port
=> 6379  key
=> "api3_json"  type
=> "api3_json"  data_type
=> "list"  }
  }
  
filter {
  date {
  match
=> [ "timestamp" , "YYYY-MM-dd HH:mm:ss" ]  #时间,从kibana上显示每条日志的时间  
}
  
}
  
output {
  elasticsearch {
  hosts
=> "elasticsearch的IP"  #protocol =>"http"
  index=>"api3_json_%{+YYYY.MM.dd}"  #存到es里索引的名称
  document_type=>"api3_json"
  }
  stdout{
  

  codec => rubydebug
  

  
}
  
}
  

  安装kibana
  

172.16.1.225# tar -zxvf kibana-4.6.0-linux-x86_64.tar.gz  

  配置kibana
  

172.16.1.225# grep -Ev "^$|#" kibana-4.6.0-linux-x86_64/config/kibana.yml  server.host:
"0.0.0.0"  elasticsearch.url:
"http://localhost:9200"#elasticsearch的地址  

  启动kibana
  

172.16.1.225# ./bin/kibana -c config/kibana.yml  

  测试es是否有数据
  打开X.X.X.X:9200/_plugin/head
DSC0000.png

  测试kibana是否能查看数据
  打开x.x.x.x:5601
DSC0001.png

DSC0002.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429606-1-1.html 上篇帖子: 用php做省份的三级联动 附带数据库 下篇帖子: 【PHP后台】接入支付宝
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表