跳到主要內容

Elasticsearch


Elasticsearch Install

Dockerfile


FROM elastic/elasticsearch:7.2.0


Build Image Shell Script


docker build -t myelasticsearch .


Prepare yours ES config



copy elasticsearch.yml jvm.options log4j2.properties to /es/conf/path


Docker start Shell Script


# 由於沒有安全保護,因此設計上希望 ES 不對外,使用 --network 串在已建立的 docker network 中

docker run -it -d --name myelasticsearch --restart=unless-stopped --network=my-dev_mydemonet -v /es/conf/path:/usr/share/elasticsearch/config -v /es/data/path:/usr/share/elasticsearch/data -v /es/plugin/path:/usr/share/elasticsearch/plugins  -e "discovery.type=single-node" -p 9300:9300 -p 9200:9200 myelasticsearch


安裝中文分詞
參考來源


docker exec -it myelasticsearch sh elasticsearch-plugin install analysis-smartcn


補充


定時刪除Index Shell Script
由於架構中 ES 屬於 短期、快速 查詢使用,僅保留七日的紀錄,因此需準備一組 Script 每日清理過期 Index
可以使用任何排程工具執行以下 Script



idx_date=$(date +%Y.%m.%d -d "$DATE - 7 day")
echo "curl -XDELETE http://localhost:9200/fluentd.nginx.web.access-${idx_date}"
curl -XDELETE http://localhost:9200/fluentd.nginx.web.access-${idx_date}


ES 基礎指令
CRUD 交由程式處理



# 查詢 ES Index List
$>curl http://localhost:9200/_cat/indices?v

# 刪除 ES Index
$>curl -XDELETE http://localhost:9200/${index name}

# 新增 ES Index
$>curl -XPUT http://localhost:9200/${index name}



留言

這個網誌中的熱門文章

Grafana Dashboard 建立

建立自己的 Dashboard # 由於 intelligent sense 相當不錯,輸入關鍵字他會帶出 metric label # 另外可參考 https://prometheus.io/docs/prometheus/latest/querying/basics/ Prometheus Query # 或是直接拿其他已建立的Dashboard 可複製到新的 Dashboard ex: node_memory_MemTotal_bytes # 取伺服器記憶體容量資料 # 過濾條件在{}加入 ex: node_memory_MemTotal_bytes{instance="${server 1}:9100"} # 要取特定伺服器資料 # Setting 中設定 Variables ex: node_memory_MemTotal_bytes{instance=~"$node"} # 變數名稱 node 建立 Alert .Visualization 必須是Graph

FluentD 參數說明

FluentD 高效、統一的日誌收集器 延伸閱讀 FluentD 實作 Nginx Access Log FluentD 實作 Nginx Access Log 補充 FluentD 安裝 Dockerfile FROM fluent/fluentd:v1.8.1-1.0 # Use root account to use apk USER root # below RUN includes plugin as examples elasticsearch is not required # you may customize including plugins as you wish RUN apk add --no-cache --update --virtual .build-deps \ sudo build-base ruby-dev \ && apk add mariadb-dev \ && sudo gem install fluent-plugin-elasticsearch \ && sudo gem install fluent-plugin-mongo \ && sudo gem install fluent-plugin-sql \ && sudo gem install mysql2 -v 0.5.2 \ && sudo gem sources --clear-all \ && apk del .build-deps \ && rm -rf /home/fluent/.gem/ruby/2.5.0/cache/*.gem VOLUME ["/fluentd/etc","/fluentd/log","/var/log"] docker-compose.yml version: '3' services: fluentd: build: context: . dockerfile: ./Dockerfile image: my/flue...

FluentD 實作 Nginx Access Log 補充

FluentD 實作 Nginx Access Log 補充 前一篇針對 FluentD 安裝 及 Nginx Access log format 設定提供範例 本篇補充 1. 將 access_log 存入 MySQL 2. 針對Input 加工,ex 解析 Path 拆成不同欄位,在傳入 Output 延伸閱讀 FluentD 參數說明 FluentD 實作 Nginx Access Log 將 access_log 存入 MySQL <worker 0> <source> ... 略 </source> <match nginx.web.access> @type copy ... 略 <store> @type sql host ${MySQL Host address} port ${MySQL Port} adapter mysql2 database ${MySQL Database} username ${MySQL User Name} password ${MySQL Password} <table> table ${MySQL table} column_mapping 'logtime:logtime,method:method,path:path,code:code,size:size,resptime:resptime,token:token,path_url:path_url,timestamp:created_at' </table> </store> </match> </worker> 針對Input 加工,ex 解析 Path 拆成不同欄位,在傳入 Output 情境: 以下 access log 範例,需要針對 Query Parameter 拆解並存入新欄位,以利分析. [27/Dec/2019:07:14:10 ...