栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

nginx日志采集到ClickHouse

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nginx日志采集到ClickHouse

  1. 流程
    nignx日志(json)–>filebeat–>kafka–>clickhouse–>grafana
  2. nginx日志转json
log_format json '{"remote_addr": "$remote_addr", "x_forward_for": "$http_x_forwarded_for", "method": "$request_method", "request_url_path": "$uri", "request_url": "$request_uri", "status": $status, "request_time": $request_time,  "request_length": "$request_length", "upstream_host": "$upstream_http_host", "upstream_response_length": "$upstream_response_length", "upstream_response_time": "$upstream_response_time", "upstream_status": "$upstream_status", "http_referer": "$http_referer", "remote_user": "$remote_user", "http_user_agent": "$http_user_agent", "appkey": "$arg_appKey", "upstream_addr": "$upstream_addr",  "http_host": "$http_host", "pro": "$scheme", "request_id": "$request_id", "bytes_sent": $bytes_sent}';
access_log  /var/log/nginx/access.log json;
  1. docker安装filebeat
docker run --restart=always --name filebeat --user=root -d   -v /var/log/nginx/:/var/log/nginx/ -v /root/docker/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml elastic/filebeat:7.5.1
#cat /root/docker/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
  - /var/log/nginx/*.log
  json:
      keys_under_root: true
#  multiline:
#    pattern: '^['
#    negate: true
#    match: after
#    max_lines: 500
#    timeout: 1s
#  fields:
#    logtopic: log-collector
#
output.kafka:
  enabled: true
  hosts: ['192.168.10.100:9092']
#  topic: '%{[fields.logtopic]}'
  topic: 'log-collector'
  partition.round_robin:
          reachable_only: false
          required_acks: 1
          compression: gzip

  1. docker安装kafka
docker pull wurstmeister/zookeeper
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2  --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
docker pull wurstmeister/kafka
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.10.100:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.10.100:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
#进入容器
docker exec -it kafka bash
#生产者
cd /opt/kafka_2.12-2.5.0/bin/
./kafka-console-producer.sh --broker-list localhost:9092 --topic test
#消费者
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
  1. clickhouse安装
    官网:https://clickhouse.com/docs/zh/getting-started/install
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
sudo yum install -y clickhouse-server clickhouse-client
sudo /etc/init.d/clickhouse-server start

4.1 创建kafka索引:

#进入clickhouse
clickhouse-client   --stream_like_engine_allow_direct_select 1   -udefault
#新建库
create database test1;
use test1;
#创建kafka索引
CREATE TABLE nginx_log(
    remote_addr   String,
    x_forward_for String,
    http_x_forwarded_for   String,
    method   String,
    request_url_path String,
    request_url String,
    status  UInt64,
    request_time Float32,
    upstream_host String,
    upstream_response_length String,
    upstream_response_time String,
    upstream_status String,
    http_referer String,
    remote_user String,
    http_user_agent String,
    appkey String,
    upstream_addr String,
    http_host String,
    pro String,
    request_id String,
    bytes_sent  UInt64
)ENGINE = Kafka SETTINGS
    kafka_broker_list = '192.168.10.100:9092',
    kafka_topic_list = 'log-collector',
    kafka_group_name = 'sre-clickhouse',
    kafka_format = 'JSONEachRow',
    kafka_row_delimiter = 'n',
    kafka_num_consumers = 1;

#创建持久化存储表
CREATE TABLE nginx_logstroe (
    remote_addr   String,
    x_forward_for String,
    http_x_forwarded_for   String,
    method   String,
    request_url_path String,
    request_url String,
    status  UInt64,
    request_time Float32,
    upstream_host String,
    upstream_response_length String,
    upstream_response_time String,
    upstream_status String,
    http_referer String,
    remote_user String,
    http_user_agent String,
    appkey String,
    upstream_addr String,
    http_host String,
    pro String,
    request_id String,
    bytes_sent  UInt64
  ) ENGINE = MergeTree()
    ORDER BY access_time;
#2表同步
CREATE MATERIALIZED VIEW user_behavior_consumer TO nginx_logstroe AS SELECT * FROM nginx_log;

4.3 selsect查看nginx_logstroe表如下:

  1. granfna安装clickhouse插件并导入模块(13606)
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040898.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号