Yan.G WebServer Dev Engineer

ELK php 日志 监控

2020-05-02

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 
  • 不出意外已经可以看到索引数据了

Similar Posts

上一篇 ELK 搭建记录

Content