微服务集成日志部署到graylog环境之老何系列实践(安装部署graylog环境)
2020-04-04 11:45阅读:
说到ELK可能很多做技术的同事都会知道,ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。其实就是日志系统,方便开发人员排查定位故障。但今天老何是要介绍的另一款日志系统的后起之秀graylog。关于graylog日志系统的流程图如下。
从上图可以看出graylog日志系统大体上包括Elasticsearch、MongoDb和
Graylog三部分。
▲ Graylog 提供 graylog 对外接口,Web界面,CPU
▲ Elasticsearch 日志文件的持久化存储和检索, IO
▲ MongoDB 只是存储一些 Graylog 的配置
关于ELK的介绍,老何也简单附带汇总说明如下,更多ELK的介绍请百度上自行搜索,因为老何今天不是要介绍ELK,而是要介绍graylog日志系统。
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA
API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括
syslog、消息传递(例如
RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在
Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据
ELK的基本架构图如下
下面老何就言归正传,开始graylog环境的安装说明过程
1.进入 graylog 官网www.graylog.org
下载graylog及了解相关步骤
选择open-source 开源版本,还有一个企业版(收费版本),然后选择get
graylog,然后在open-source开源版本页面,选择docker方式安装(最简单),再选择 how to use this
image 对应的文档说明,复制相应的docker安装命令 (注意不同的docker版本,安装命令也不一样)
然后我们在docker页面,复制如下内容放到一个叫做
dokcer-compose.yml文件中
(
提醒一点:因为graylog版本内容在不断变化,可能你再进去的时候,如下内容就有了变化和我如下贴出来的内容不一致很正常,但操作步骤基本是一致的)
version: '2'
services:
# MongoDB: https://hub.docker.com/_/mongo/
mongodb:
image: mongo:3
# Elasticsearch:
https://www.elastic.co/guide/en/elasticsearch/reference/6.6/docker.html
# elasticsearch:
#
image:
docker.elastic.co/elasticsearch/elasticsearch-oss:6.6.1
#
environment:
#
- http.host=0.0.0.0
#
- transport.host=localhost
#
- network.host=0.0.0.0
#
- 'ES_JAVA_OPTS=-Xms512m
-Xmx512m'
#
ulimits:
#
memlock:
#
soft: -1
#
hard: -1
#
mem_limit: 1g
# Graylog: https://hub.docker.com/r/graylog/graylog/
graylog:
image: graylog/graylog:3.0
environment:
# CHANGE ME (must be at least 16
characters)!
-
GRAYLOG_PASSWORD_SECRET=somepasswordpepper
# Password: admin
# echo -n 'Enter Password: ' &&
head -1
-
GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd
4dee15dfb167a9c873fc4bb8
a81f6f2ab448a918
# EXTERNAL_URI写外网地址,
不要写127.0.0.1,老何写成了自己本地的ip地址192.168.155.104了
-
GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.155.104:9000/
-
GRAYLOG_ELASTICSEARCH_HOSTS=http://192.168.155.104:9200
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
links:
- mongodb:mongo
# - elasticsearch
depends_on:
- mongodb
# - elasticsearch
ports:
# Graylog web interface and REST API
- 9000:9000
# Syslog TCP
- 1514:1514
# Syslog UDP
- 1514:1514/udp
# GELF TCP
- 12201:12201
# GELF UDP
- 12201:12201/udp
针对如上docker-compose.yml文件,老何补充如下几点说明
1.
如上内容涉及到mongdb,elasticsearch,graylog,由于mongdb,elasticsearch不仅仅是是给graylog使用的,可能其它系统也会使用到mongdb,elasticsearch,所以mongdb,elasticsearch内容最好单独分离出来,所以上面老何对elasticsearch内容进行了屏蔽,单独分离出来用docker命令来执行了,mongdb暂未分离出来,做法一样。当然mongdb,elasticsearch分离出来既可以使用docker方式运行,也可以使用非docker方式运行。
2.如下对应的两个url 地址,说明如下
如下地址是指的graylog部署的地址
-
GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.155.104:9000/
如下地址是指的elasticsearch部署的地址,如下可以是部署多个elasticsearch,如果是有多个的话,用逗号,分隔即可。
-
GRAYLOG_ELASTICSEARCH_HOSTS=http://192.168.155.104:9200
2.
新建一个graylog目录,然后将上述的docker-compose.yml文件放到此目录下面。
3. 运行 elasticsearch镜像文件
docker run -d -p 9200:9200 -p 9300:9300
docker.elastic.co/elasticsearch/elasticsearch-oss:6.6.1

老何本地运行时遇到如下错误及解决方式如下
error: max virtual memory areas
vm.max_map_count [65530] is too low, increase to at least
[262144]
解决方式:
step1: sudo vi /etc/sysctl.conf
文件最后添加一行
vm.max_map_count=262144
step2: 加载设置好的系统参数
sudo sysctl -p
step3:
重新启动elasticsearch
docker start es的docker容器id
elasticsearch运行正常后,我们可以在web页面通过9200端口看到如下内容显示就表示es正常运行了,如果看不到,就要用docker
logs -f es的docker容器id来跟踪日志信息排查定位问题
4. 需要安装docker-compose这个第三方插件的文件 (安装方式附在下面)
docker-compose up -d
(以后台进程运行docker-compose.yml文件,注意只能在如上包含有docker-compose.yml文件中的目录中运行,否则运行不了)
docker-compose本地的安装方式说明如下
主要涉及如下命令 (中间可能会有小错误,根据提示进行修复即可)
step1 :
安装python-pip
yum -y install epel-release
yum -y install python-pip
step2: 安装docker-compose
pip install docker-compose
老何本地安装时遇到如下两个错误及处理方式如下
error1:
(会报错,_posixsubprocess.c:16:20: 致命错误:Python.h:没有那个文件或目录
解决方式:
sudo yum install
python-devel 运行这个就好了
error2: 提示pip版本低
解决方式:
pip install --upgrade
pip
运行这个就好了
graylog容器运行日志,如果最后看到如下截图类似信息就表示graylog正常启动了
5. 如果上述docker-compose up
-d命令正常运行后,我们就可以通过9000端品来访问graylog的管理页面了
访问地址
192.168.155.104:9000
( 192.168.155.104
是老何本地安装graylog的机器ip地址)
默认用户名和密码都是admin,老何本地修改成了 123456
6. 在graylog的管理页面,设置好UDP GELF 的监控规则,如取名为 UPD
7.
在我们需要集成udp服务项目中做如下设置,老何这里是选择的eureka项目,实际集成就是springboot和graylog的集成
由于springboot默认的日志系统是logback,所以老何选择了一款比较成熟的第三方logback插件
(关于logback的第三方插件,可以在www.graylog.org对应的菜单community中的graylog中的marketplace中搜索查询得到)
在eureka项目中添加如下maven依赖
de.siegmar
logback-gelf
2.0.0
在eureka项目中添加logback.xml文件及相关内容如下
8.在rancher中发布启动集成了graylog的eureka项目
9. 在graylog管理页面中,我们可以看到 eureka的日志信息全部输出过来了
(当然,我们也可以精确查询某些内容)

至此graylog日志系统的安装部署过程及将eureka项目集成到 graylog日志系统中的过程就介绍完毕了!