由於我們的服務分佈在各個節點,日誌寫入本地已經不能很好的訪問了,所以需要一個日誌中心集中分析日誌,本來Elasticsearch+Kibana+Logstash是一整套,但我們目前使用的兩個框架已經可以直接寫入日誌到Elasticsearch,所以不需要Logstash了。
安裝Elasticsearch
在管理節點主機修改vm.max_map_count
vim /etc/sysctl.conf #加一行
vm.max_map_count=262144
sysctl -p #立即生效
Elasticsearch是可以建立多節點叢集的,但我們僅為收集日誌,就啟用了一個主節點。
新建一個目錄儲存資料
mkdir -p /home/data/elasticsearch/data
docker run -d --name es01 --restart=always \
--network my-net \
-v /home/data/elasticsearch/data:/usr/share/elasticsearch/data \
--ulimit memlock="-1:-1" \
-e node.name=es01 -e cluster.initial_master_nodes=es01 -e cluster.name=docker-cluster \
-e bootstrap.memory_lock=true -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
docker.elastic.co/elasticsearch/elasticsearch:7.4.0
寫入許可權
chmod 777 /home/data/elasticsearch/data
如果要加入其他節點,只需要指定cluster.initial_master_nodes=es01
安裝Kibana皮膚
注意elasticsearch 和 kibana要版本一至。在管理節點主機新建一個配置檔案
vim /home/data/kibana/kibana.yml
內容為
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://es01:9200"] #這就是我們elasticsearch的地址
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: zh-CN
建立容器
docker run -d --name kibana --restart=always \
--network my-net \
-v /home/data/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
docker.elastic.co/kibana/kibana:7.4.0
kibana皮膚是沒有賬號密碼的,執行在私有網路,但我們可以在nginx代理的時候為其設定一個賬號密碼。
檢視日誌,只需進入皮膚,點選“使用 Elasticsearch 資料”,然後檢查新資料,如果有日誌傳送過來的,就能檢視到,建立索引就行了。
《PHP微服務練兵》系列索引: 部落格:《PHP 微服務練兵》系列教程