本文在Debian9下采用Docker的方式安裝Telegraf + Influxdb + Grafana對服務器進行監控。 首先咱們須要在一臺Server上安裝Debian9做爲監控主機,這個監控主機能夠配置爲可監控多臺Server。linux
若是以前已經安裝過舊版本的Docker,先移除舊版本的安裝git
sudo apt-get remove docker docker-engine docker.io containerd runc
更新apt-getgithub
sudo apt-get update
安裝依賴項sql
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common
添加Docker的GPG key,命令執行成功後會顯示一個OKdocker
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
添加Docker的apt-get源數據庫
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable"
更新apt-get源windows
sudo apt-get update
安裝Docker瀏覽器
sudo apt-get install docker-ce docker-ce-cli containerd.io
驗證Docker是否安裝成功bash
sudo docker run hello-world
執行以上的命令將會從服務器上拉取hello-world的docker鏡像,而後再運行,若是看到Hello from Docker!的字樣表明安裝成功。 安裝Docker-compose服務器
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
修改權限
sudo chmod +x /usr/local/bin/docker-compose
檢查是否安裝成功
root@TRPG:/opt/monitoring# docker-compose --version docker-compose version 1.24.0, build 0aa59064
新增一個用於安裝的目錄
mkdir /opt/monitoring && cd /opt/monitoring
爲InfluxDB和Grafana建立一個配置文件docker-compose.yml,內容以下
version: "2" services: grafana: image: grafana/grafana container_name: grafana restart: always ports: - 3000:3000 networks: - monitoring volumes: - grafana-volume:/var/lib/grafana influxdb: image: influxdb container_name: influxdb restart: always ports: - 8086:8086 networks: - monitoring volumes: - influxdb-volume:/var/lib/influxdb networks: monitoring: volumes: grafana-volume: external: true influxdb-volume: external: true
以上配置文件爲Influxdb和Grafana配置了相同的網絡,同時分別爲他們配置了外部存儲區域,外部存儲的好處是能夠避免Docker重啓時數據和配置文件丟失。 建立Dokcer的網絡和外部存儲
docker network create monitoring docker volume create grafana-volume docker volume create influxdb-volume
使用一下命令查看是否創建成功
kevin@TRPG:/opt/monitoring# docker network ls NETWORK ID NAME DRIVER SCOPE 21e7cf397dda bridge bridge local 130831cce642 host host local f58bbb798bea monitoring bridge local a285f4ff4c69 none null local kevin@TRPG:/opt/monitoring# docker volume ls DRIVER VOLUME NAME local grafana-volume local influxdb-volume
若是能夠看到咱們建立的網絡及存儲後,就能夠開始拉取Influxdb的鏡像,當中包含一些參數及用戶名和密碼
docker run --rm \ -e INFLUXDB_DB=telegraf -e INFLUXDB_ADMIN_ENABLED=true \ -e INFLUXDB_ADMIN_USER=admin \ -e INFLUXDB_ADMIN_PASSWORD=supersecretpassword \ -e INFLUXDB_USER=telegraf -e INFLUXDB_USER_PASSWORD=secretpassword \ -v influxdb-volume:/var/lib/influxdb \ influxdb /init-influxdb.sh
使用docker-compose啓動
docker-compose up -d
檢查是否運行成功
kevin@TRPG:/opt/monitoring# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ddc05619ab66 grafana/grafana "/run.sh" 47 seconds ago Up 46 seconds 0.0.0.0:3000->3000/tcp grafana 73efef324306 influxdb "/entrypoint.sh infl…" 47 seconds ago Up 45 seconds 0.0.0.0:8086->8086/tcp influxdb
以上,Influxdb和grafana都安裝和啓動成功,從上面的信息能夠看到Influxdb使用端口tcp 8086,Grafana使用端口tcp 3000,在瀏覽器打開IP:3000就能夠看到Grafana的登陸界面了,默認的用戶名及密碼都是admin,首次登錄後會提示修改密碼。 登陸到Grafana後,選擇Add datasource ,類型選擇InfluxDB,配置界面以下圖
URL的部分輸入的influxdb是表示以前建立的鏡像名稱,由於兩個鏡像共用了同一個網絡,所以可使用網絡發現的功能,而後下面的Save & Test按鈕測試配置是否成功。
到如下地址下載Telegraf的windows版本。 將下載所得文件解壓縮。
切換到Telegraf的存放目錄下,執行一下命令安裝至Windows 服務
telegraf.exe --service install
此時Telegraf的服務狀態仍是出於中止的狀態
在數據庫中建立Telegraf的登陸用戶
USE master; GO CREATE LOGIN [telegraf] WITH PASSWORD = N'mystrongpassword'; GO GRANT VIEW SERVER STATE TO [telegraf]; GO GRANT VIEW ANY DEFINITION TO [telegraf]; GO
修改配置文件以下
[[outputs.influxdb]] urls = ["http://192.168.0.207:8086"] ## The target database for metrics; will be created as needed. database = "telegraf" retention_policy = "" write_consistency = "any" ## Timeout for HTTP messages. timeout = "5s" ## HTTP Basic Auth username = "telegraf" password = "password" # Read metrics from Microsoft SQL Server [[inputs.sqlserver]] ## Specify instances to monitor with a list of connection strings. ## All connection parameters are optional. ## By default, the host is localhost, listening on default port, TCP 1433. ## for Windows, the user is the currently running AD user (SSO). ## See https://github.com/denisenkom/go-mssqldb for detailed connection ## parameters. servers = [ "Server=127.0.0.1;Port=1433;User Id=telegraf;Password=yourpassword;app name=telegraf;log=1;", ] ## Optional parameter, setting this to 2 will use a new version ## of the collection queries that break compatibility with the original ## dashboards. query_version = 2 ## If you are using AzureDB, setting this to true will gather resource utilization metrics # azuredb = false ## If you would like to exclude some of the metrics queries, list them here ## Possible choices: ## - PerformanceCounters ## - WaitStatsCategorized ## - DatabaseIO ## - DatabaseProperties ## - CPUHistory ## - DatabaseSize ## - DatabaseStats ## - MemoryClerk ## - VolumeSpace exclude_query = [ 'DatabaseIO', 'PerformanceCounters', 'WaitStatsCategorized', 'DatabaseProperties', 'CPUHistory', 'DatabaseSize', 'DatabaseStats', 'MemoryClerk', 'VolumeSpace' ]
測試是否鏈接成功
telegraf.exe --config telegraf_sql.conf -test
另外可至GITHUB下載Grafana的配置文件和對應的telgraf配置文件 最終結果以下圖