2017年3月31日 星期五

Visual Studio 2017 學習資源

這邊有很多教學影片可以參考:https://launch.visualstudio.com/

在舊的專案如果使用 Visual Studio 2017開啟的話,會作一個轉檔的動作,原本 project.json就不會再出現了,會把相關設定放至 *.csproj上

在 3/7之前,我把 ASP.Net Core專案換成 Visual Studio 2017 ,還算正常,但在3/30再作一次之後,發現它把 .Net Core相關的 packages全部版本設定成 1.1.2了,在 compile時錯誤一堆,不知道怎麼解,等一個月之後再試試一次,看會不會比較好。

ELK Stack Docker image 實作 docker log失敗,但成功設定 Elasticsearch 與 MongoDB連結

ELK Stack官網說明:An Introduction to the ELK Stack (Now the Elastic Stack)

好用的工具,當然也有 docker image,我所使用的是這一個 https://github.com/deviantony/docker-elk,這一個也可以參考 https://hub.docker.com/r/blacktop/elastic-stack/

原本我是想要實作把我所有 docker log放到 ELK Stack,所以有建一個 VM用來使用 ELK Stack,不與原本的 Docker VM在一起。

參考 Docker Logging with the ELK Stack — Part One
文章有提到可以使用三種方式把 docker logs 轉到 ELK Stack的 Logstash上
1.使用 Filebeat
2.使用 docker logging driver
3.使用 Logspout

作者使用 docker logging driver作範列,並修改 Logstash 的設定檔,應該會成功,但我實作的結果並沒有如預期,也不知道原因,使用 docker logs @LogstashContainerName,看起來是有連結的記錄在,但是在 Elasticsearch上並沒有相關 index產生。這部份想再用 Logspout再試看看。

在實作的過程中想到之前就想把 MongoDB資料與 Elasticsearch作連結,讓 Elasticsearch可以作 index,這次剛好有 Elasticsearch,所以就來實作看看。

MongoDB與 Elasticsearch連結的部份就要使用 mongodb-connector (https://github.com/mongodb-labs/mongo-connector)

connector要看不同版本的 Elasticsearch而下載,我的 ELK Stash內的 Elasticsearch為 5.*,所以要下載 5的版本,所以在 ELK Stash VM上安裝 connector,指令如下
pip install 'mongo-connector[elastic5]'

如果你的 MongoDB不是 Replica Set的話,記得要轉成 Replica Set,就算是一台也可以,不管你的 MongoDB是不是在 Docker上。而最好建立一個 mongodb 帳號是有 backup權限的,再用這個帳號讓 Elasticsearch可以連結,我就有遇過一家資訊服務公司,他所賣的產品有使用到 MongoDB,但完全不設帳號、宓碼,難怪最近 MongoDB被加密要錢。

最後要建立一個 config.json檔 https://github.com/mongodb-labs/mongo-connector/wiki/Configuration%20Options
這邊多花一些時間設定 MongoDB的位置,帳號、密碼,還有那些 document, collection需要被索引
最後再執行 mongo-connector  -c config.json
再看看 Elasticsearch是否有 index產生,再到 Kinaba設定就可以看到資料了




.Net Core 佈署到 docker上出現錯誤 The library 'libhostpolicy.so' required to execute the application was not found

使用 VS 2015建一個新 ASP.Net Core專案,再手動升級到 1.1後佈署到 docker時,出現無法正常執行的狀況,使用 docker logs @ConteainName時就出現 The library 'libhostpolicy.so' required to execute the application was not found錯誤訊息,可是之前也用同樣的方式也把另一個專案放在 docker上是沒有問題了,後來發現其原因可能發生在我把專案 package在使用 nuget升級時,原本
Microsoft.NetCore.App這個部份被改寫了,原本在 project.json的寫法如下:
 "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    }

升級後就變成
 "Microsoft.AspNetCore.App": "1.1.0",  => type的設定就不見了

所以只要再把成如下寫法,把 type加回去即可
 "Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    }

參考文件
Every Other "dotnet run" command fails with `libhostpolicy.so` error #5059

2017年3月2日 星期四

Docker 分版本,要開始收錢了

目前有分 Docker Community Edition (CE)  和  Docker EE, CE應該是以前在使用的免費版本還是可以免費使用, EE在安全多了 features,而且要開始收費


目前大部份 docker是放在 CentOS上,新的 CE版要求要在 CentOS 7.3 64bit上才可以使用,說明如下: Docker Community Edition for CentOS

1. Set up the repository

Set up the Docker CE repository on CentOS:

sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

sudo yum makecache fast

2. Get Docker CE

Install the latest version of Docker CE on CentOS:

sudo yum -y install docker-ce
Start Docker:

sudo systemctl start docker

3. Test your Docker CE installation

Test your installation:


sudo docker run hello-world



其它版本的也可以在 CE的網頁上找的到。