首页
学习
活动
专区
圈层
工具
发布

《Learning ELK Stack》8 构建完整的ELK技术栈

8 构建完整的ELK技术栈


输入数据集

  • 像这样的nginx访问日志
代码语言:javascript
复制
172.30.0.8 - - [26/Jun/2020:14:39:30 +0800] "GET //app/app/access_token?app_id=ce571941c2b7e4fb&rand=IRWDg_qd8LQk7ovExvLR8h8dBntkwYEW&signature=cf28da70ed09fff4d6d4e72ffe5baa0a56df2695 HTTP/1.1" 500 87 "-" "Yii2-Curl-Agent" "-"
172.30.0.5 - - [26/Jun/2020:14:39:30 +0800] "GET /devops/app/main?app_id=ce571941c2b7e4fb HTTP/1.0" 302 0 "http://local.fn.wiiqq.com/fn//devops/app/list?auth_code=zgqFYeJ6iuN2zoocxal7Cr6oPCQNz__Z&state=wii" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" "172.30.0.1"
  • 格式如下
代码语言:javascript
复制
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

配置Logstash输入

  • Logstashnginx的访问日志中读取数据,并在Elasticsearch中为日志创建索引,过程中还会根据grok模式对日志进行过滤和字段提取

访问日志的Grok表达式

  • Logstash安装包中已经包含了一些常用grok表达式。可在github上查看

https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

  • apache通用格式日志的grok模式如下
代码语言:javascript
复制
input {
    file {
        path => "/var/log/nginx/access.log"
        start_position => "beginning"
    }
}
filter {
    grok {
        match => { "message" => "%{COMMONAPACHELOG}" }
    }
    date {
        match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
    }
    mutate {
        convert => ["response", "integer"]
        convert => ["bytes", "integer"]
    }
}
output {
    elasticsearch {
        hosts=>"localhost"
    }
}
  • 指定grok模式进行匹配,为消息分配时间戳字段,并根据需要转换某些字段的数据类型
代码语言:javascript
复制
bin/logstash -f logstash.conf
  • 运行logstash,可以在控制台看到类似下面的输出

Kibana可视化

运行Kibana

  • 运行kibana并打开http://localhost:5601
代码语言:javascript
复制
bin/kibana

在搜索页进行搜索

  • 如要查找一个指定ip

可视化-图表

创建折线图

  1. 类型:折线图
  2. Y轴:Count
  3. X轴:Date Histogram

创建区域图

  1. 类型:区域图
  2. Y轴:度量:AverageFieldbytes
  3. X轴:Date Histogram

创建柱状图

  1. 类型:柱状图
  2. Y轴:度量:Count
  3. X轴:Date Histogram
  4. Split Series:字段为clientip进行子聚合

创建Guage

  1. 类型:Guage
  2. Y轴:度量:Count

仪表盘页面

  • 创建个新dashboard
  • 添加可视化组件
  • 添加完组件并保存
  • 还可以使用分享按钮分享仪表盘,如果要在其他应用程序中嵌入仪表盘,也有相应的代码
下一篇
举报
领券