章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • linux

  • windows

  • 中间件

  • 网络

  • 安全

  • 存储

  • 防火墙

  • 数据库

  • 系统

    • vmware

    • ftp

    • nexus

    • harbor

    • confluence&jira

    • loki

    • sonarqube

    • svn

    • other

    • openldap

    • influxdb

      • filebeat+logstash+influxdb+ Grafana打造网站日志监控系统
      • wordpress

      • kvm

      • argocd

      • jfrog

      • nextcloud

      • RustDesk

      • mail

      • ghost

    • docker

    • other

    • 监控

    • 运维
    • 系统
    • influxdb
    章工运维
    2023-06-01
    目录

    filebeat+logstash+influxdb+ Grafana打造网站日志监控系统

    274bca17226c37e8.jpg

    采集数据(fliebeat)->过滤数据(logstash)-> 存储数据(InfluxDB) -> 显示数据(Grafana)。

    资源有限,我把这一套服务搭建在了一台CentOS 7的服务器上。

    # filebeat简述

    Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。
    以下是filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。

    # logstash简述

    Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。
    顾名思义,Logstash 收集数据对象就是日志文件。由于日志文件来源多(如:系统日志、服务器 日志等),且内容杂乱,不便于人类进行观察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容,方便开发者或运维人员观察,从而有效的分析系统/项目运行的性能,做好监控和预警的准备工作等。

    # influxdb简述

    InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。

    # Grafana简述

    Grafana 是基于JS开发的,功能齐全的度量仪表盘和图形编辑器,帮助开发人员发现问题的工具

    # 几者之间的关系

    filebeat负责收集新产生的日志数据,发送给logstash进行数据过滤,logstash输出格式化的数据到时序数据库influxdb中,grafana从influxdb数据库中读取数据实时展示,监控网站的状况,如访问量,每分钟发送的字节数,500的情况等等

    # 打造网站日志监控系统的步骤

    # 1. nginx服务器配置

    1.1 log_format配置如下

    logformat  main  '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent  $request_time "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    
    1

    1.2 对应的日志文件格式如下

    192.168.154.2 - - [30/Mar/2017:01:27:09 -0700] \"GET /index.html HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36\" \"-\""
    
    1

    # 2.logstash安装和配置

    2.1 logstash的安装,我的版本是logstash-5.6.1-1.noarch

    yum install logstash
    
    1

    2.2 logstash中grok的正则(添加在logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-xxx/patterns/grok-patterns文件中)为:

    WZ ([^ ]*)
    NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{NUMBER:request_time} %{QS:referer} %{QS:agent} %{QS:xforward}
    
    1
    2

    2.3 logstash.conf配置文件内容

    input {
        file {
            path     => ["/var/log/nginx/access.log"]
            type    => "nginxlog"
            start_position => "beginning"
        }
    }
    
    filter {  
        grok {  
          match => { "message" => "%{NGINXACCESS}" }
        }  
    } 
    output {
    
        influxdb {
                         db => "influxdb中的数据库名"
                         host => "localhost"
                         port => "8086"
                         user => "你的账号"
                         password => "你的密码"
                 coerce_values => {
                         "request" => "varchar"
                         "status" => "varchar"
                   }
                        data_points => {
                                      "request" => "%{request}"
                                      "status" => "%{status}"
                                      "referer"=>"%{referer}"
                                      "agent"=>"%{agent}"
                                      "method"=>"%{method}"
                                      "remote_ip"=>"%{remote_ip}"
                                      "bytes"=>"%{bytes}"
                                      "host"=>"%{host}"
                                      "timestamp"=>"%{timestamp}"
    
                        }
    
    } 
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39

    # 3.filebeat安装和配置

    3.1filebeat的安装

    我的filebeat的版本为5.1.1

    yum install filebeat
    
    1

    3.2 filebeat的配置,配置文件一般位于/etc/filebeat/

    filebeat.prospectors:                                                                              
    - input_type: log 
      paths:
        - /var/log/nginx/access.log
    output.logstash:
      hosts: ["localhost:5044"] //监控本机的5044端口,可以自己定义需要和logstash配置文件中的beats端口一致
    
    1
    2
    3
    4
    5
    6

    # 4. influxdb的安装和配置

    4.1 influxdb的安装

    yum install influxdb
    
    1

    4.2 influxdb的配置

    //管理后台配置,可以根据ip或者域名+端口号8083访问influxdb数据库的管理后台
    [admin]
      enabled = true
      bind-address = ":8083"
    [http]
      enabled = true
      bind-address = ":8086"
      auth-enabled = false
      log-enabled = true
      write-tracing = false
      pprof-enabled = false                                                                                                                             
      https-enabled = false
      https-certificate = "/etc/ssl/influxdb.pem"
      max-row-limit = 10000
      realm = "InfluxDB"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    # 5. Grafana的安装和配置

    5.1 Grfana的安装

    我的Grfana版本是 grafana-4.2.0-1.x86_64.rpm

    yum install grafana
    
    1

    5.3 Grafana的配置,配置数据源

    869569e8a98af374.jpg


    原文链接 (opens new window)

    微信 支付宝
    上次更新: 2023/06/01, 16:38:08

    ← openldap配置自助修改密码 wordpress迁移问题总结→

    最近更新
    01
    shell脚本模块集合
    05-13
    02
    生活小技巧(认知版)
    04-29
    03
    生活小技巧(防骗版)
    04-29
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式