我們把微小的服務發布到docker里,然后實現docker service啟動它,保證了服務的高可用性,然后把服務產生的日志輸出到fluentd,由它進行過濾和轉發,存儲到elasticsearch里,最后由kibana進行查詢與分析,整個過程都是異步進行,不會阻塞主線程,你只需要把日志輸出的控制台即可!Console.WriteLine!
.netcore在docker里產生日志的過程如下:
- vs,vscode開發程序
- 上傳到git,svn,tfs
- jenkins去獲代碼,編譯,發布
- 由sh調用Dockerfile生成鏡像
- 上傳到私有倉庫
- 下傳倉庫里的指定鏡像
- 啟動服務docker service,一般會與docker swarm集群一起使用
- 項目產生日志,輸出到控制台,同時可以保存到本地
- docker service的--log參數把它獲取,並發到fluentd服務端
- fluentd把它存儲到elasticsearch里
- kibana建立索引,查詢與分析日志
我們在生產docker服務時需要可以使用下面代碼實現上面的日志輸出的過程
docker service create \ --name "$SERVICE_NAME" \ --hostname "{{.Node.ID}}-{{.Service.Name}}" \ #配置的是容器的主機名稱 --network pilipa-network \ --network pilipa-mysql-network \ --network pilipa-elk-network \ --mode global \ --log-driver=fluentd \ --log-opt=fluentd-address=192.168.1.65:24224 \ --log-opt=tag=lind.{{.Name}}
通過本講內容我們知道了,如何在docker service上將控制台日志輸出到fluentd上,這個在日志收集場合下是非常必要的!
感謝各位的閱讀!