ELk php 日志 监控
php的志监控,主要作为为查看错误日志,可以做为普通监控模式的一个代表,基本思路差不多
选一个监控源
laravel 产生的日志都在 /data/www/elk-test/storage/logs/*.log(安日期记录数据) 负载机 nginx 请求日志都在 /data/logs/access.log 负载机 nginx 错误日志都在 /data/logs/error.log
安装 fileBeat
- 下载页面 https://www.elastic.co/cn/downloads/beats/filebeat 解压下载软甲并移动到 /opt 目录
修改配置
sudo vim /opt/filebeat-6.4.2/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /data/logs/nginx/access.log
tags: ["stage-nginx-access"]
- type: log
enabled: true
paths:
- /data/logs/nginx/error.log
tags: ["stage-nginx-error"]
- type: log
enabled: true
paths:
- /data/www/qjyedu-api /storage/logs/*.log # php 日志
tags: ["stage-php"]
output.logstash:
hosts: ["192.168.1.1:5044"] #输出到 logstash 的机器
启动
## 测试配置文件是否正确
sudo ./filebeat test config
## 测试远程接收端是否正确
sudo ./filebeat test output
添加 systemCtl 服务
## 服务类型
sudo vim /usr/lib/systemd/system/filebeat.service
[UNIT]
#服务描述
Description=Collection production logs
#指定了在systemd在执行完那些target之后再启动该服务
After=network.target
[Service]
# 默认类型,始终守护 filebeat 进程
Type=simple
#定义systemctl start|stop|reload *.service 的执行方法(具体命令需要写绝对路径)
#注:ExecStartPre为启动前执行的命令
ExecStart=/opt/filebeat-6.4.2/filebeat --path.config /opt/filebeat-6.4.2
ExecStop=ps -ef | grep filebeat | grep -v 'grep'| grep -v 'nohup' | awk '{print $2}' | xargs -I {} bash -c 'if test "{}" -ne 0; then kill -9 {}; fi'
#创建私有的内存临时空间
PrivateTmp=True
[Install]
#多用户
WantedBy=multi-user.target
## 挂载 systemctl 服务
sudo systemctl daemon-reload
## 启动服务
sudo systemctl start filebeat
## 关闭服务
sudo systemctl stop filebeat
- 至此客户端的日志已经通过fileBeat持续不断的向logstash应用发起记录请求
logStash 配置
vim /opt/elk/logstash-6.4.2/input/stage-php.conf
input{
beats {
port => 5044
}
}
output {
if [tags][0] == "stage-php" {
elasticsearch {
hosts => "127.0.0.1:9200"
action => "index"
index => "logstash-stage-php"
}
stdout { codec => rubydebug }
}
}
- 因为Laravel 框架本身日志没有什么需要解析的格式,直接输入库即可
## 测试配置
/opt/elk/logstash-6.4.2/bin/logstash -f /opt/elk/logstash-6.4.2/input/stage-php.conf
## 重启logstash(接上一篇)
supervisor restart logstash
## 访问 http://127.0.0.1:5601
- 不出意外已经可以看到索引数据了