日志分析系统可以实时收集、分析、监控日志并报警,当然也可以非实时的分析日志。splunk是功能强大且用起来最省心的,但是要收费,免费版有每天500M的限制,超过500M的日志就没法处理了。ELK系统是最常见的,缺点是配置麻烦一些,比较重量级。graylog是开源免费的,配置上要比ELK系统简单。综上,本文尝试容器方式搭建一套graylog系统,不做实时收集日志和报警的配置,只完成非实时被动接收网站日志,分析日志各项指标的功能。

docker官方镜像国内速度觉得慢,改成国内镜像。新建文件daemon.json如下

vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

也可以用网易镜像 http://hub-mirror.c.163.com 配置完重启docker才能生效 # systemcat  restart  docker

拉取如下三个镜像

docker pull mongo:3
docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.10
docker pull graylog/graylog:3.3

不要急着按照网上的方法启动镜像,我开始docker启动 elasticsearch,虽然显示启动成功,但过半分钟后偷偷退出,这导致graylog在浏览器打不开。最后通过查看容器启动时的日志,发现elasticsearch对于系统参数是有要求的,按如下修改。

在/etc/sysctl.conf文件最后添加一行

echo "vm.max_map_count=262144" >> /etc/sysctl.conf

在/etc/security/limits.conf文件添加

echo "*    -    nofile    102400" >>/etc/security/limits.conf

修改完成后重启系统使变量生效。

docker启动elasticsearch时要加上参数--ulimit nofile=65536:65536 --ulimit nproc=4096:4096,确保容器内环境满足要求,否则在docker pa -a命令下会看到exit(78)或exit(1)的容器异常退出错误。

三个容器启动命令如下

docker run --name mongo -d mongo:3docker run --name elasticsearch \-e "http.host=0.0.0.0" \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \--ulimit nofile=65536:65536 --ulimit nproc=4096:4096 \-p 9200:9200 -p 9300:9300 \-d docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.10docker run --name graylog --link mongo --link elasticsearch \-p 9000:9000 -p 12201:12201 -p 1514:1514 -p 5555:5555 \-v /home/graylog/geodata:/usr/share/graylog/log \-e GRAYLOG_HTTP_EXTERNAL_URI="http://192.168.1.128:9000/" \-d graylog/graylog:3.3

elasticsearch的--ulimit必须加否则启动后退出,-p 9200:9200是管理端口,将来删除数据需要访问这个端口。
graylog 9000端口是系统界面,5555是开的tcp端口,用于被动接收日志数据的。-v /home/graylog/geodata:/usr/share/graylog/log是把本地/home/graylog/geodata挂载到容器的/usr/share/graylog/log目录,这么配置是为了让graylog能读到GeoLite2-City.mmdb地理信息数据库,这个库是把ip和地理位置对应起来了。也可以将它拷贝到容器里如下指令:

docker cp /home/graylog/geodata/GeoLite2-City.mmdb 5e914479bec9:/usr/share/graylog/log/
语法:docker cp 本地路径 容器长ID:容器路径

用命令“#docker exec -it graylog容器ID bash" 先进入容器,看到容器内/usr/share/graylog/log目录没什么东西,所以选择挂载到这个目录的。

地理数据用于显示访问网站的ip分布在哪个城市国家,还有世界地图的显示。需要在https://dev.maxmind.com/zh-hans/geoip/geoip2/geolite2/上下载,麻烦的是这里需要注册。我下载的是GeoLite2-City_20200825.tar.gz,解压后有GeoLite2-City.mmdb,上传这个文件到Linux的/home/graylog/geodata目录,这个文件是需要挂载到容器,给graylog使用的。

不想注册直接下载:下载

GRAYLOG_HTTP_EXTERNAL_URI的地址不要写127.0.0.1,这样如果在Linux的外部访问,虽然能通,但是网页是空白一片,要写Linux对外的ip地址,这样在外部浏览器打开才正常。
另外graylog的启动是依赖于mongo和elasticsearch的,等其它两个都成功启动,再启动graylog。

查看进程是否正常

docker ps
CONTAINER ID        IMAGE                                                      COMMAND                  CREATED             STATUS                            PORTS                                                                                              NAMES
097695293ac5        graylog/graylog:3.3                                        "tini -- /docker-ent…"   4 seconds ago       Up 2 seconds (health: starting)   0.0.0.0:1514->1514/tcp, 0.0.0.0:5555->5555/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:12201->12201/tcp   graylog
8cf824c43040        docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.10   "/usr/local/bin/dock…"   6 seconds ago       Up 5 seconds                      0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp                                                     elasticsearch
16ba34974265        mongo:3                                                    "docker-entrypoint.s…"   7 seconds ago       Up 6 seconds                      27017/tcp                                                                                          mongo

下面开始演示如果配置graylog系统,并且分析网站的Apache标准格式的日志。大概步骤如下
配置input->给input配置extractor->配置地理信息数据库->手动输入日志->分析日志。
浏览器输入http://192.168.56.106:9000/  用户名和密码都是admin,登陆进graylog系统。
system->input

点击select input右侧的下拉箭头,出现下拉列表,选择raw/plaintext TCP

然后点击Lanch new input,Node下拉唯一选择给选上,Title随意起名,Port写5555,因为我们docker启动参数写的-p 5555:5555 这两个必须保持一致。

其它不用填点击下方SAVE按钮,会自动启动该input,可以看到local inputs下方增加了刚才的配置。其实现在用cat access.log | nc localhost 5555等命令给5555端口发送日志数据,数据就可以进入到graylog系统,并且可以进行简单的搜索了。但这种搜索是最基础的字符串匹配,价值不大。我们要分析日志的各项指标,并且生成图表,必须让系统能解析每条日志的各个field(字段或域值),例如clientip就是一个field,request也是一个field。要解析出field要给input配置extractor,点击Manager exactor。

Extractors JSON里贴入下面内容

{
"extractors": [{
"title": "commonapache",
"extractor_type": "grok",
"converters": [],
"order": 0,
"cursor_strategy": "copy",
"source_field": "message",
"target_field": "",
"extractor_config": {
"grok_pattern": "%{COMMONAPACHELOG}"},
"condition_type": "none",
"condition_value": ""}],
"version": "3.3.5"
}

最后点击 add extrators to input,显示successful即可。 到这里已经可以正确解析日志得field了。但是如果我们想分析和地理位置相关的信息,还必须配置地理信息数据库,上文下载的mmdb文件。

system->configurations,最右下方有一项Geo-Location Processor,点击改项目下方的update按钮

配置完成,点击save。

Configurations最上方Message Processors Configuration下方表格里要把GeoIP Resolver放在表格的最下方。点击表格下方的update

完成后点击save。Message Processors Configuration表格的GeoIP Resolver到了最下方。

下面是手动输入日志到input了,我将access.log放到了Linux目录下,在目录下执行

[root@graylog ~]# cat access.log | head -n 500 | nc localhost 5555

命令是将log从头开始的500行日志发送到本机的5555端口,由于graylog的input配置的也是5555端口,docker run graylog时命令参数也是-p 5555:5555,只要这三处保持一致,这个命令是一定能成功的。这里命令nc、ncat、netcat三个都能到达同样的效果。

导入完成后,选择graylog最上方的search选项

上方的按钮是查询时间范围,这个时间是日志导入的时间,不是日志本身记录请求的时间,如果要查全部直接选择search in all messages

下方放大镜按钮就是搜索,后方可以添加搜索关键字,或者某个field的限制,有很多搜索语法非常方便,点击搜索后,不符合条件的日志记录会被去除。 下方All Messages就是符合条件的原始的日志结果。

接下来的操作参考文章:https://cloud.tencent.com/developer/article/1690193

Docker部署graylog日志分析系统相关推荐

  1. Docker 部署ELK 日志分析

    Docker 部署ELK 日志分析 elk集成镜像包 名字是 sebp/elk 安装 docke.启动 yum install docke service docker start Docker至少得 ...

  2. awstats linux日志分析,Linux环境下安装部署AWStats日志分析系统实例

    AWStats是使用Perl语言开发的一款开放性日志分析系统,可分析Apache网站服务器的访问日志,还可以用来分析Samba.Vsftpd.IIS等日志信息. 此文章主要讲解如何在linux系统下安 ...

  3. Linux环境下安装部署AWStats日志分析系统实例

    AWStats是使用Perl语言开发的一款开放性日志分析系统,可分析Apache网站服务器的访问日志,还可以用来分析Samba.Vsftpd.IIS等日志信息.       此文章主要讲解如何在lin ...

  4. 超详细部署ELK日志分析系统!每一步骤都有记录!ELK的详细使用!

    目录 一.ELK简介 二.Elasticsearch简介 三.Logstash简介 四.Kibana简介 五.ELK案例部署 5.1 案例环境 5.2 部署elasticsearch 5.3 部署Ap ...

  5. 部署Awstats日志分析系统

    AWStats分析系统是使用Perl语言开发的一款开源日志分析系统.可用于分析Apache.Samba.Vsftpd.IIS等服务的日志信息.也可以结合crond等计划任务,不断对增长的日志进行定期分 ...

  6. linux 分析系统配置,在Linux系统上部署AWStats日志分析系统

    AWStats是使用Perl语言开发的一款开源日志分析系统,它不仅可用来分析Apache网站服务器的访问日志,也可用来分析Samba Vsftpd IIS等服务的日志信息.综合crond等计划任务服务 ...

  7. linux日志分析步骤,关于linux:graylog日志分析系统上手教程

    日志剖析零碎能够实时收集.剖析.监控日志并报警,当然也能够非实时的剖析日志.splunk是功能强大且用起来最省心的,然而要免费,免费版有每天500M的限度,超过500M的日志就没法解决了.ELK零碎是 ...

  8. elasticsearch docker无法挂载_使用Docker安装Graylog日志收集系统

    1.创建并进入到用于存放Graylog配置文件的目录 mkdir -p /data/graylog/config && cd /data/graylog/config 2.下载Gray ...

  9. Centos7.6下搭建AWStats日志分析系统

    文章目录 一.AWStats日志分析系统简介 二.部署AWStats日志分析系统 一.AWStats日志分析系统简介 Perl语言开发的一款开源日志分析系统 可用来分析Apache.Samba.Vsf ...

最新文章

  1. 在CentOS 7.5上升级SQLite3过程实录
  2. 台式计算机系统重新安装软件,有人教我重装电脑程序的吗,谢谢了
  3. 升级鸿蒙实例,华为鸿蒙 HarmonyOS 最新动作:上线 40+ 个 Sample 示例应用
  4. centos设置启动mysql,Centos设置开机启动Apache和Mysql
  5. java 钩子 64位 操作系统_Java与系统钩子
  6. android在标准linux基础上对休眠唤醒的实现,Android在标准linux基础上对休眠唤醒的实现(三)...
  7. python使用pip安装_Python pip 安装与使用
  8. 实习成长之路:MySQL四:深入浅出索引
  9. 9套Android实战经典项目
  10. 先爆火再遇冷 元宇宙能否托起梦想?
  11. 默认主页被篡改为360导航如何解决!
  12. sql server (sqlexpress) 服务因 3417 (0xd59) 服务性错误而停止(转自太原市李江软件开发工作室)...
  13. msvcr71.dll丢失的解决方法
  14. 计算机专业学生的必备文具,初一新生必备文具100件 学霸用的文具清单
  15. 【2.5TB,磁盘自费】535亿余次HTTP请求,来自IUB的Click数据集
  16. 三进制计算机可以实现吗,制造三进制计算机的一种方法技术
  17. android webview崩溃,Android-未知的webview崩溃原因
  18. 团队管理5 | 管理风格
  19. C 语言教程详解——入门到精通
  20. 利用python写福字【支付宝五福活动大概率出敬业福】

热门文章

  1. idea的maven项目出现橙色时钟图标解决方法
  2. html ajax ashx,利用ashx实现AJAX的异步数据调用
  3. 中职护理教学中存在的问题与改进对策
  4. 服务器迁移操作系统,服务器操作系统迁移
  5. 教你怎么用IPHONE
  6. springCloud_Feign远程调用
  7. 洛谷3953:逛公园——题解
  8. uglifyjs php,使用UglifyJS合并/压缩JavaScript
  9. 3D LUT图像处理
  10. java调用发短信接口