docker 部署 filebeat 采集日志导入到elasticsearch 设置pipeline

filebeat.yml

filebeat.inputs:
 - type: log #默认log,从日志文件读取每一行。stdin,从标准输入读取
   paths:
    - /root/logs/*/*.log
   multiline.pattern: '^\d{4}\-\d{2}\-\d{2}' #匹配的正则
   multiline.negate: true #多行匹配模式后配置的模式是否取反,默认false
   multiline.match: after #定义多行内容被添加到模式匹配行之后还是之前,默认无,可以被设置为after或者before
   fields:
    index: 'server_log'

setup.ilm.enabled: false
setup.template.name: "java_logback_service_index_template"
setup.template.pattern: "java_logback_service_index_template-*"
setup.template.overwrite: true
setup.template.settings:
  index.number_of_shards: 1

output.elasticsearch:
  hosts: ["127.0.0.1:9001"]
  indices:
    - index: "server_log-%{+yyyy.MM.dd}"
      when.contains:
        fields:
          index: "server_log"
  pipeline: "test_java_log_pipeline"
  document_type: log #该type会被添加到type字段,对于输出到ES来说,这个输入时的type字段会被存储,默认log
  max_retries: 3 #ES重试次数,默认3次,超过3次后,当前事件将被丢弃


processors: 
  - drop_fields:
      fields: ["log","host","input","agent","ecs","start_time"]

docker run

docker run -itd \
  --privileged=true \
  --user=root \
  --name=filebeat \
  --restart always \
  --network=my_network \
  -v /root/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:rw \
  -v /root/filebeat/data/:/usr/share/filebeat/data/:rw  \
  -v /root/logs/:/root/logs/:rw  \
  -v /root/xiaoye_worker/logs/:/root/xiaoye_worker/logs/:rw  \
  docker.elastic.co/beats/filebeat:6.4.2

Elasticsearch 模版和pipeline 设置

GET _template/java_logback_service_index_template
DELETE _template/java_logback_service_index_template
# 创建模版索引
PUT _template/java_logback_service_index_template
{
   
  "order": 1,
  "index_patterns": [
    "java_log-*"
  ],
  "settings": {
   
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
   
    "type_name":{
   
      "properties": {
   
      "app_name": {
   
        "type": "keyword"
      },
      "trance_id": {
   
        "type": "keyword"
      },
      "log_level": {
   
        "type": "keyword"
      },
      "thread": {
   
        "type": "keyword"
      },
      "class_line": {
   
        "type": 
下面是 logstash 和 filebeatdocker 部署步骤: 1. 首先,需要安装 dockerdocker-compose 工具。 2. 创建一个名为 `docker-compose.yml` 的文件,并在其中添加以下内容: ``` version: '3' services: logstash: image: docker.elastic.co/logstash/logstash:7.10.1 environment: - "ELASTICSEARCH_HOST=http://elasticsearch:9200" - "LOGSTASH_PIPELINE_WORKERS=1" - "LOGSTASH_PIPELINE_BATCH_SIZE=125" - "LOGSTASH_PIPELINE_BATCH_DELAY=50" volumes: - "./logstash/pipeline:/usr/share/logstash/pipeline" - "./logstash/config:/usr/share/logstash/config" - "./logstash/data:/usr/share/logstash/data" ports: - "5044:5044" depends_on: - elasticsearch networks: - elastic filebeat: image: docker.elastic.co/beats/filebeat:7.10.1 user: root volumes: - "./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro" - "/var/lib/docker/containers:/var/lib/docker/containers:ro" - "/var/run/docker.sock:/var/run/docker.sock:ro" command: filebeat -e -strict.perms=false depends_on: - elasticsearch networks: - elastic elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 environment: - "discovery.type=single-node" - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - "./elasticsearch/data:/usr/share/elasticsearch/data" ports: - "9200:9200" - "9300:9300" networks: - elastic networks: elastic: driver: bridge ``` 3. 在同一目录下创建一个名为 `logstash` 的文件夹,并创建一个名为 `pipeline` 的文件夹,将您的 logstash pipeline 配置文件放在其中。创建一个名为 `config` 的文件夹来放置您的 logstash 配置。最后,创建一个名为 `data` 的文件夹来保存 logstash 数据。 4. 在同一目录下创建一个名为 `filebeat` 的文件夹,并在其中创建一个名为 `filebeat.yml` 的文件。在此文件中设置 filebeat 的配置。 5. 进入包含 `docker-compose.yml` 文件的目录,并运行以下命令启动容器: ``` docker-compose up -d ``` 6. 检查容器是否正在运行: ``` docker ps ``` 以上就是 logstash 和 filebeatdocker 部署步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值