运维手册
所有路径自己指定,本手册中默认认为当前为安装路径!
Nginx
Nginx需要依赖C语言环境,请检查是否已安装!
1、上传Nginx安装包并解压
tar -zxvf nginx-1.20.2.tar.gz
2、加载、编译、安装
./configure
make
make install
3、切换到安装路径
cd /usr/local/nginx/sbin
4、启动Nginx
./nginx
5、查看是否启动
ps -ef | grep nginx
6、访问地址
192.168.x.x
OpenResty
1、安装开发库依赖
yum install -y pcre-devel openssl-devel gcc curl
2、配置yum依赖源
yum install yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
3、安装OpenResty
yum install openresty
默认安装路径:/usr/local/openresty/
4、启动OpenResty
/usr/local/openresty/nginx/sbin/nginx
或
service openresty start
5、访问地址
192.168.x.x
Nginx整合OpenResty(Lua)
1、修改Openresty下的nginx配置文件
vi /usr/local/openresty/nginx/conf/nginx.conf
2、添加配置
location /lua {
default_type 'text/html';
content_by_lua 'ngx.say("hello yjx")';
}
3、配置伪装图片的静态地址
location /log.gif {
#伪装成gif文件
default_type image/gif;
#本身关闭access_log
access_log off;
#返回空图片
empty_gif;
}
4、配置Lua接收日志配置文件参数
location /log.gif {
#伪装成gif文件
default_type image/gif;
#本身关闭access_log
access_log off;
#使用lua将nginx的接收的参数写入到日志文件中
log_by_lua_file 'conf/log.lua';
#返回空图片
empty_gif;
}
5、在Nginx的conf目录下创建log.lua文件
vi /usr/local/openresty/nginx/conf/log.lua
6、添加脚本内容
-- 引入lua所有解析json的库
local cjson = require "cjson"
-- 获取请求参数列表
local request_args_tab = ngx.req.get_uri_args()
-- 使用lua的io打开一个文件,如果文件不存在,就创建,a为append模式
local file = io.open("/logs/access.log", "a")
-- 定义一个json对象
local log_json = {}
-- 将参数的K和V迭代出来,添加到json对象中
for k, v in pairs(request_args_tab) do
log_json[k] = v
end
-- 将json写入到指定的log文件,末尾追加换行
file:write(cjson.encode(log_json), "\n")
-- 将数据写入
file:flush()
7、创建存放日志的目录,并赋予写入权限
mkdir /logs
chmod o+w /logs
#或者将/logs目录的所属用户改成nobody
chown -R nobody:nobody /logs
8、修改Lua脚本内容,将日志按照每个小时进行文件生成
-- 引入lua用来解析json的库
local cjson = require "cjson"
-- 获取请求参数列表
local request_args_tab = ngx.req.get_uri_args()
-- 获取当前系统时间
local time = os.date("%Y%m%d%H",unixtime)
-- 使用lua的io打开一个文件,如果文件不存在,就创建,a为append模式
local path = "/logs/access-" .. time .. ".log"
local file = io.open(path, "a")
-- 定义一个json对象
local log_json = {}
-- 将参数的K和V迭代出来,添加到json对象中
for k, v in pairs(request_args_tab) do
log_json[k] = v
end
-- 将json写入到指定的log文件,末尾追加换行
file:write(cjson.encode(log_json), "\n")
-- 将数据写入
file:flush()
Flume数据采集
Flume采集脚本【nginxLog2Kafka.conf】
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = TAILDIR
a1.sources.r1.positionFile = /root/taildir_position.json
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /logs/access-.*\.log
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = node01:9092,node02:9092,node03:9092
a1.channels.c1.kafka.topic = accessyjx
a1.channels.channel1.kafka.consumer.group.id = flume-consumer
a1.channels.c1.parseAsFlumeEvent= false
a1.sources.r1.channels = c1
FlieBeat数据采集
1、安装
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.1.3-x86_64.rpm
sudo rpm -vi filebeat-8.1.3-x86_64.rpm
默认安装路径:/etc/filebeat
2、查看可用的模块列表
filebeat modules list
3、在安装目录下,启动一个或多个模块【Kafka】
filebeat modules enable kafka
4、创建采集配置文件
filebeat.inputs:
- type: log
paths:
- /opt/data/data.json
output.kafka:
# initial brokers for reading cluster metadata
hosts: ["node01:9092", "node02:9092", "node03:9092"]
# message topic selection + partitioning
topic: filebeat
partition.round_robin:
reachable_only: true
required_acks: 1
max_message_bytes: 1000000
5、启动
filebeat -e -c filebeat.yml