技术笔记技术笔记
首页
前言
  • CSS
  • JQuery
  • JavaScript
  • PHP
  • GoLang
Mysql
运维
Linux
  • Sublime Text 3
  • PhpStorm
  • Markdown
  • Git
  • Vim
  • MAC命令
  • Eclipse插件
  • Content-Type
  • 公务员职级体系
  • Eclipse插件
  • Content-Type
  • Web工具
  • 技术资源分享
首页
前言
  • CSS
  • JQuery
  • JavaScript
  • PHP
  • GoLang
Mysql
运维
Linux
  • Sublime Text 3
  • PhpStorm
  • Markdown
  • Git
  • Vim
  • MAC命令
  • Eclipse插件
  • Content-Type
  • 公务员职级体系
  • Eclipse插件
  • Content-Type
  • Web工具
  • 技术资源分享
  • 首页

    • 服务器配置
    • ELK日志系统和grafana监控显示
    • 自动生成ssl免费证书
    • CentOS7yum安装nginx、mysql
    • CentOS7yum安装PHP7.3
    • CentOS7安装coreseek
    • php7安装phalcon扩展
    • wlnmp一键安装包指南
    • 使用yum实现php5.4完美升级到php5.6版本
    • CENTOS7搭建SSSERVER
    • CentOS7yum安装redis及php扩展
    • CENTOS7防火墙设置
    • VPN

ELK日志系统和grafana监控显示

简介

ELK是elasticsearch、kibana、logstas组合的简称,是一套强大的日志处理系统, grafana是一款golang开发的数据显示软件,支持多种数据源,UI漂亮,支持报警

软件下载&安装

  • es下载地址 https://www.elastic.co/downloads/elasticsearch
  • kibana https://www.elastic.co/downloads/kibana
  • logstash https://www.elastic.co/downloads/logstash
  • filebeat https://www.elastic.co/downloads/beats
  • grafana https://grafana.com/grafana/download

安装比较简单,直接安装官方说明装就可以了。

配置

filebeat 主要用来收集数据,配置如下:

filebeat.prospectors:
- input_type: log
paths:
- /var/www/log/status/monitor.log # 要扫描的文件 类似tail -f,也支持多行的配置见:Multiline
fields:
index: monitor #一个自定义配置方便在logstash根据这个字段创建索引
name: "10.10"
output.logstash:
hosts: ["192.168.10.80:5044"] logstash的服务地址

logstash 配置,接收beat提交的数据并做格式化处理再提交给ES存储

input { beats {port => "5044"}} #默认配置
filter {
	grok {
		match => [
		"message",'%{IPORHOST:remote_ip}:%{NUMBER:remote_port} - %{DATA:user_name} ',
		"message",'time="%{DATA:action_time}" level=%{DATA:level}',
		] #正则来提取字段
		remove_field => ["message"] #删除原始字段,默认一整行的数据都在这个字段里面
	}
	date {match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z","UNIX" ] target => "@timestamp"}#解析时间字段
	geoip {source => "ip"} #使用geo解析IP得到地理位置信息
	mutate {convert => { "request_time" => "float" }} #强制某个字段按数字写入ES
}
output {
	elasticsearch {
		hosts => [ "localhost:9200" ]
		index => "logstash-%{[fields][index]}-%{+YYYY.MM.dd}" #前面提到的index配置在这边根据这个自动创建索引
		document_type => "%{input_type}"
	}
}

启动命令 bin/logstash -f first-pipeline.conf --config.reload.automatic #config.reload.automatic 在修改first-pipeline.conf配置文件后自动重新加载配置文件
kibana 访问安装地址的:5601 端口会打开kibana的WEB界面
登录后打开 kibana --> Management --> Index Patterns --> 左上角 Add New --> 新界面上logstash-\* 修改成 logstash-[前面配置的index]-\*
Time-field name 选择 @timestamp 再点Create 再点左侧的Discover就能看到数据了

注意点:

按上面的配置 ES创建的索引除了时间字段 GEO的相关字段其他的都是默认的字符的默认是有analyzed的
如果要对字符做精确的搜索比如 “10.80” 这种机器名,这种默认字段是不行的,带有特殊符号的都搜索不到
如果只是有数字字段要处理,用上面mutate的方法强制转换也就能解决不需要用模板处理
这时候需要提交一个新的template给es(logstash在启动的时候默认会给ES创建一个名为logstash的template)

curl -XGET http://localhost:9200/*template/logstash 可以用这个命令查看模板信息 执行这个命令后可以看到默认的order=>0,根据ES的模板规则,有多个匹配的模板时候从小到大执行合并 创建一个mytemp.json 内容如下
{ "order": 10, "version": 50010, "template": "logstash-*", "mappings":
{ "_default*": { "properties": { "bytes":{"include_in_all": false,"type": "long"}, "beat":{ "properties":{ "hostname":{"type":"string","index": "not_analyzed"} } } } } } } }
执行命令 curl -XPUT http://localhost:9200/_template/mytemp -d '@/usr/local/logstash-5.0.0/mytemp.json'

后面如果要加字段继续执行这个命令就可以了,不过有点要注意,已经存在的数据的字段格式是不会变了, 只对新的数据有效果,如果是处理文本字段的,要删除索引后重新写入的数据才有效果

grafana
golang开发的 解压直接就可以运行,在数据源里面配置ES
Elasticsearch details 这个地方 先选择Pattern 选择Daily按天索引的意思 因为前面ES是选择的按天创建索引,这边一致
然后 [logstash-改成前面对应设置的index-]YYYY.MM.DD 版本选择5.X 点save按钮,如果绿色就对了

资源

官网
grafana官方demo

最近更新: 2025/2/23 23:16
Contributors: huangyanfu, hqdxhyf
Prev
服务器配置
Next
自动生成ssl免费证书