Logstash:在 Docker 中部署 Logstash
阿新 • • 發佈:2021-06-29
文章轉載自:https://elasticstack.blog.csdn.net/article/details/116516923
建立一個目錄 docker-logstash。在該目錄下,有如下的檔案:
$ pwd /data/docker-logstash $ ls -al total 16 drwxr-xr-x 5 liuxg staff 160 May 7 22:13 . drwxr-xr-x 132 liuxg staff 4224 May 7 21:58 .. -rw-r--r-- 1 liuxg staff 29 May 7 21:59 .env -rw-r--r-- 1 liuxg staff 1039 May 7 22:37 docker-compose.yml drwxr-xr-x 3 liuxg staff 96 May 7 22:18 logstash_pipeline $ tree -L 3 . ├── docker-compose.yml └── logstash_pipeline └── ports.conf
在該目錄中,它有一個 .env 檔案。它裡面定義了一個在 docker-compose.yml 需要用到的環境變數:
$ cat .env
ELASTIC_STACK_VERSION=7.12.1
通過使用 ELASTIC_STACK_VERSION 來定義我們想要的 Elastic Stack 的版本。
建立一個叫做 docker-compose.yml 的檔案:
version: '3.7' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_STACK_VERSION} container_name: es01 environment: - discovery.type=single-node ulimits: memlock: soft: -1 hard: -1 volumes: - esdata01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - elastic kibana: image: docker.elastic.co/kibana/kibana:${ELASTIC_STACK_VERSION} container_name: kibana ports: ['5601:5601'] networks: ['elastic'] environment: - SERVER_NAME=kibana.localhost - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 - I18N_LOCALE=zh-CN depends_on: ['elasticsearch'] logstash: image: logstash:${ELASTIC_STACK_VERSION} ports: - 5000:5000 volumes: - type: bind source: ./logstash_pipeline/ target: /usr/share/logstash/pipeline read_only: true networks: - elastic volumes: esdata01: driver: local networks: elastic: driver: bridge
針對 Logstash 的安裝,我們定義了一個 port 5000,這樣我們在 Logstash 的配置檔案中可以使用 TCP 的地址 5000 把資料傳入到 Logstash 的 pipeline 中,並進行處理。同時,我們使用 volumes 的定義,把本地目錄 logstash_pipeline 中的檔案 bind 到 Logstash 的 /usr/share/logstash/pipeline 目錄中,從而使得在 logstash_pipeline 中所定義的 pipeline 能夠在 Logstash 啟動後自動執行起來。
接下來看看在 logstash_pipeline 目錄中定義的 ports.conf 檔案:
# ports.conf
input {
tcp {
port => 5000
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "hello-logstash-docker"
}
}
這個配置檔案非常簡單。它接受來自 port 5000 的資料,並直接發到 Elasticsearch 中去。