目录
背景
本文是基于国产环境下安装部署graylog,使用的服务器是4.19.90-17.ky10.aarch64,由于graylog-sidecar没有aarcher64架构的安装包,此处选择graylog+logstash实现日志采集、管理工作。
架构
准备工作
- jdk安装包
- docker安装包(默认已安装)
- docker-compose安装包
- logstash安装包
- 两台服务器,一台安装graylog,另一台安装logstash采集日志
下载地址:https://pan.baidu.com/s/1ebSVz8vERJvm0UrPMUNACQ ,提取码: 3jw
安装JDK
1. 创建一个目录用于解压后的文件,并解压缩到该目录下
sudo mkdir /usr/local/java
sudo tar -zxvf jdk-8u371-linux-aarch64.tar.gz -C /usr/local/java
2. 修改环境变量
sudo vim ~/.bashrc
3. 文件末尾追加如下内容
#set oracle jdk environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_371 ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
4. 使环境变量生效
source ~/.bashrc
5. 设置默认jdk
sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_371/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_371/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/local/java/jdk1.8.0_371/bin/jar 300
sudo update-alternatives --install /usr/bin/javah javah /usr/local/java/jdk1.8.0_371/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap /usr/local/java/jdk1.8.0_371/bin/javap 300
6. 执行
sudo update-alternatives --config java
7. 测试是否安装成功
java -version
javac -version
安装Docker-compose
1. 对docker-compose-linux-aarch64进行重命名、修改权限
mv docker-compose-linux-aarch64 docker-compose
chmod 777 docker-compose
2. 查看系统变量存放路径
echo $PATH
3. 我这边的系统变量地址其中之一是/usr/bin
4. 将docker-compose放到/usr/bin目录下
mv docker-compose /usr/bin/
5. 验证docker-compose
安装Graylog
1. 将准备好的配置文件放入服务器中,以下是配置文件内容
version: '2'
services:
#MongoDB: https://hub.docker.com/_/mongo/
mongodb:
restart: always
image: mongo:4.4.6
#Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
elasticsearch:
restart: always
image: elasticsearch:7.13.2
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:4.2-jre11
environment:
- GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000
# 注意:此处改成当前服务器的ip
- GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
# 密码盐值,随便改
- GRAYLOG_PASSWORD_SECRET=<密码盐值,随意改,必须超过16位/>
- GRAYLOG_ROOT_USERNAME=<用户名称,随意改/>
- GRAYLOG_ROOT_PASSWORD_SHA2=<通过SHA256进行加密后的密文/>
links:
- mongodb:mongo
- elasticsearch
restart: always
depends_on:
- mongodb
- elasticsearch
ports:
# web端访问地址ip+9000端口
- 9000:9000
# Syslog TCP
- 1514:1514
# Syslog UDP
- 1514:1514/udp
# GELF TCP gelf将会在springboot logback中配置使用这个范围内端口
# 暴露多个接口 后面可以对不同项目 区分创建stream和index
- 12201-12210:12201-12210
# GELF UDP gelf将会在springboot logback中配置使用这个端口
- 12201:12201/udp
volumes:
mongo_data:
driver: local
es_data:
driver: local
graylog_data:
driver: local
2. 针对密码进行加密
echo -n 密码原文 | sha256sum
3. 启动graylog
sudo docker-compose -f docker-compose.yml up -d
安装Logstash
1. 减压安装包
tar -zxvf logstash-7.17.12-linux-aarch64.tar.gz
2. 此处我们使用gelf插件通过udp协议将日志数据推送到graylog,首先,我们安装gelf插件
bin/logstash-plugin install logstash-output-gelf
此处会花费较长时间,耐心等待一会...
3. 然后修改logstash.conf文件
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
file {
path => "日志文件的地址"
# 此处根据自己需要再日志内容中添加字段以及内容
add_field => {"appNm" => "auth"}
start_position => "beginning"
# 此处根据时间戳将日志进行合并
codec => multiline {
pattern => "^\s*(\d{4}|\d{2})\-(\d{2}|[a-zA-Z]{3})\-(\d{2}|\d{4})|^(.*)(\d{4}|\d{2})\-(\d{2}|[a-zA-Z]{3})\-(\d{2}|\d{4})\s(\d{2}):(\d{1,2})|^{(.*)}|^\d{4}|^(.*)(\d{4}|\d{2})\-(\d{2}|[a-zA-Z]{3})\-(\d{2}|\d{4})\s(\d{2}):(\d{1,2})"
negate => true
what => "previous"
}
}
}
output {
gelf {
# 此处填写graylog的地址
host => "graylog的地址"
port => 12201
protocol => "UDP"
}
}
4. 启动logstash,可在nohup.out文件内查看启动日志
nohup ./bin/logstash -f config/logstash.conf & > nohup.out
注意:如果发生报错,提示没有安装相关组件,则可以通过bin/logstash-plugin install <组件名称> 这个命令进行安装