摘要:的展示非常炫酷,絕對是運維提升逼格的一大利器。另外的可視化功能比強得多,而且以上版本將集成報警功能。它由寫成,著力于高性能地查詢與存儲時序型數(shù)據(jù)。被廣泛應(yīng)用于存儲系統(tǒng)的監(jiān)控數(shù)據(jù),行業(yè)的實時數(shù)據(jù)等場景。
原有監(jiān)控系統(tǒng)
整個系統(tǒng)以 Graphite (carbon + whisper) 為核心, kong 通過 statsd plugin 將服務(wù)調(diào)用信息發(fā)送至 statsd, 而 statsd 則將統(tǒng)計信息通過 Web API 保存至Graphite . 最終在 Grafana 中通過 Graphite Data Source 獲取統(tǒng)計信息并輸出圖表到面板.
這是網(wǎng)上找到的, 對 Grafana 的描述
Grafana 是一個開源的指標(biāo)量監(jiān)測和可視化工具。常用于展示基礎(chǔ)設(shè)施的時序數(shù)據(jù)和應(yīng)用程序運行分析。Grafana 的 dashboard 展示非常炫酷,絕對是運維提升逼格的一大利器。
grafana 的套路基本上跟 kibana 差不多,都是根據(jù)查詢條件設(shè)置聚合規(guī)則,在合適的圖表上進行展示,多個圖表共同組建成一個 dashboard,熟悉 kibana 的用戶應(yīng)該可以非常容易上手。另外 grafana 的可視化功能比 kibana 強得多,而且 4 以上版本將集成報警功能。
在之前的監(jiān)控中, 只能統(tǒng)計到 kong 的調(diào)用信息, 整個結(jié)構(gòu)的復(fù)雜度高, 而實現(xiàn)的功能卻比較簡單. 搞了這么大一套鬼東西, 只能查看 kong 的監(jiān)控. 雖然能通過 Zabbix Plugin 在 Grafana 中查看 zabbix 的監(jiān)控數(shù)據(jù), 但是支持度有限, zabbix 的性能也... 叔惡死 ...
迭代開源的時序性數(shù)據(jù)庫不多, 其中比較出名的有 Graphite 跟 influxdb.
這是維基百科上對 influxdb 的介紹
InfluxDB 是一個由 InfluxData 開發(fā)的開源時序型數(shù)據(jù)庫[note 1]。它由 Go 寫成,著力于高性能地查詢與存儲時序型數(shù)據(jù)。InfluxDB 被廣泛應(yīng)用于存儲系統(tǒng)的監(jiān)控數(shù)據(jù),IoT 行業(yè)的實時數(shù)據(jù)等場景。
通過了解, influxdb 相比 Graphite 有這些優(yōu)勢:
提供 telegraf 作為 agent 采集服務(wù)器信息, 并有非常豐富的插件用戶采集 Nginx/Redis/PHPFPM/Elasticsearch 等的狀態(tài)信息. 真正提供了采集/存儲/可視化, 屌屌屌.
可擴展能力 (待實踐)
方便而強大的查詢語言
高效存儲 (待驗證)
而其中, Telegraf 也提供了 Statsd Server 功能, 解決了 Statsd 官方推薦的 influxdb backend 插件只支持 influxdb 0.9 的情況 .
基于 Influxdb + Telegraf + Grafana 搭建的監(jiān)控系統(tǒng)在這一版的監(jiān)控系統(tǒng)中, 我們將利用 Telegraf 或者直接提交至 Influxdb, 來采集三種信息:
在每臺機器上安裝 Telegraf 用于采集服務(wù)器及其安裝的軟件的狀態(tài)和統(tǒng)計信息
在網(wǎng)關(guān)所處的機器上, 啟用 Telegraf 提供的 Statsd Server 功能, 在 Kong 中, 啟用 Statsd 插件, 將調(diào)用日志提交至 Statsd.
在服務(wù)中創(chuàng)建計劃任務(wù)定時提交業(yè)務(wù)數(shù)據(jù)提交至 Influxdb
Influxdb 提供了一個 Web API 用于管理, 類似于 Mysql, Influxdb 也提供了 命令行的 Client 用于管理.
同時, 需要部署 Grafana 用于可視化面板. 部署 Chronograf 用于管理 Influxdb. Chronograf 提供了 Influxdb 的 Web Admin 功能(在 Influxdb 0.9時代是內(nèi)置在 Influxdb中的), 以及比較豐富的圖表功能, 但是不能跟 Grafana 比. 因此我們只把它用來管理 Influxdb.
Telegraftelegraf 內(nèi)置了很多 Input Plugin, 用途是什么呢?
回想到如果是你自己去做一個監(jiān)控, 能夠做到記錄每分鐘 CPU 的空閑率是多少, 要怎么做?
搞一個數(shù)據(jù)庫, 用來放數(shù)據(jù)的
寫一個腳本, 用來獲取 CPU 的相關(guān)數(shù)據(jù), 加上時間戳, 然后保存到數(shù)據(jù)庫
創(chuàng)建一個定時任務(wù), 一分鐘運行一次腳本
寫一個簡單的程序, 從數(shù)據(jù)庫查到數(shù)據(jù), 然后根據(jù)時間戳, 繪制成圖表.
在你的腳本里面, 你可以采集任何你采集得到的數(shù)據(jù), 然后懟到數(shù)據(jù)庫. 而 Input Plugin 就是寫好了的腳本. 只需要在配置文件中開啟, 就可以采集到對應(yīng)的數(shù)據(jù). telegraf 內(nèi)置的 Input Plugin 有這些:
Nginx
MySQL
PHP FPM
redis
Net
Netstat
MongoDB
PostgreSQL
Zipkin
Zookeeper
Elasticsearch
Apache
Docker
...
oh shit! 我要的都有!
而且, 前面講到, telegraf 內(nèi)置了一個 Statsd Server (Service Inputs), 從而解決了 Kong 調(diào)用監(jiān)控的問題. 然而這不是全部, telegraf 還提供了:
HTTP Listener
TCP Listener
UDP Listener
Webhooks Listener
shit..
這只是 Input, Output 還支持 Graphite, Elasticsearch, Datadog 等等.. shit..
安裝部署需要準(zhǔn)備一臺機器用于安裝數(shù)據(jù)庫及 UI. 安裝完成后啟動服務(wù), 并在需要監(jiān)控的每臺機器上安裝 agent. 根據(jù)需要配置好 input plugin.
每個 telegraf 只能提交到一個 database. telegraf 的每個 input 項都會有一個 host 的 tag, 它的值默認是機器的 hostname, 可以在 telegraf 的配置文件中修改.
根據(jù)資源編排, 以及 Grafana 的面板模板變量, 將機器與數(shù)據(jù)庫的關(guān)系定位:
以每臺機的 IP 作為 hostname, 或是以 {分組名}+{組內(nèi)編號}.
一個分組一個數(shù)據(jù)庫
根據(jù)分組需要開啟 input plugin
固定一個臺機采集所有 mysql, redis 等服務(wù)
好了, 那么開工!
安裝 Influxdbcd /usr/local/src wget https://dl.influxdata.com/influxdb/releases/influxdb-1.3.2.x86_64.rpm yum localinstall influxdb-1.3.2.x86_64.rpm # 啟動 /etc/init.d/influxdb start # 檢查 8086 端口 curl -i "http://127.0.0.1:8086"安裝 Chronograf
cd /usr/local/src wget https://dl.influxdata.com/chronograf/releases/chronograf-1.3.6.1.x86_64.rpm yum localinstall chronograf-1.3.6.1.x86_64.rpm # 啟動 /etc/init.d/chronograf start # 檢查 8888 端口 curl -i "http://127.0.0.1:8888"
如果 8888 已被占用, 需要指定端口運行
nohup chronograf --port=8889 > /dev/null 2>&1 &安裝 Grafana
cd /usr/local/src wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.4.3-1.x86_64.rpm yum localinstall grafana-4.4.3-1.x86_64.rpm # 啟動 /etc/init.d/grafana-server start # 檢查 3000 端口 curl -i "http://127.0.0.1:3000"安裝 Telegraf
需要在每一臺機器上安裝 Telegraf 作為 agent, 采集跟上報數(shù)據(jù)到 Influxdb. 包括安裝 Influxdb 的機器
cd /usr/local/src wget https://dl.influxdata.com/telegraf/releases/telegraf-1.3.5-1.x86_64.rpm yum localinstall telegraf-1.3.5-1.x86_64.rpm
安裝完成后, 默認配置已經(jīng)有采集系統(tǒng)信息的了, 需要增加幾項 input
如果配置的 database 不存在, 將自動創(chuàng)建.
[[outputs.influxdb]] urls = ["http://10.1.0.1:8086"] database = "servers_xxxx" retention_policy = "" write_consistency = "any" timeout = "5s"
需要在 nginx 上啟用 status, 我們固定使用 1200 端口.
server { listen *:1200 default_server; server_name _; location /nginx_status { stub_status on; access_log off; } }
然后修改 /etc/telegraf/telegraf.conf
[[inputs.nginx]] urls = ["http://127.0.0.1:1200/nginx_status"]
需要啟用 fpm 的status
pm.status_path = /status
然后修改 /etc/telegraf/telegraf.conf
[[inputs.phpfpm]] urls = ["fcgi://127.0.0.1:7006/status"]
[[inputs.net]] interfaces = ["eth0", "eth1"]
[[inputs.netstat]]
配置完成后, 需要對配置進行測試, 完成后啟動再啟動
telegraf -config /etc/telegraf/telegraf.conf -test /etc/init.d/telegraf start配置 Grafana 面板
在 Grafana 中, 需要先配置數(shù)據(jù)源 (Data Source), 然后創(chuàng)建 Dashboard, 在 Dashboard 中創(chuàng)建 Panel 也就是各種統(tǒng)計組件. 最終完成一個面板的配置.
配置數(shù)據(jù)源
配置數(shù)據(jù)源需要注意幾個地方:
type, 選擇 Influxdb,
name, 固定 server_{name}
url, Influxdb 的地址
access, 固定 proxy. 此外還有 direct. 前者是經(jīng)由 Grafana 所在機器代理訪問 Influxdb, 后者是在瀏覽器直接訪問 Influxdb.
database, 目標(biāo)機器的 Telegraf 做配置的 database
配置完成后, 點及 Add 兩次, 如果顯示 test success 即為成功.
創(chuàng)建面板可以選擇切換到手動編輯 SQL 模式.
然后保存, 這樣就創(chuàng)建好了第一個面板了.
查詢語言具體需要查看官方文檔
Influxdb 使用的查詢語言是一種類 SQL 的查詢語言
InfluxDB’s SQL-like query language for interacting with data in InfluxDB.
Influxdb 是一種時序型的數(shù)據(jù)庫, 跟關(guān)系型數(shù)據(jù)庫(以 mysql 為例)的區(qū)別, 我理解就是數(shù)據(jù)庫自動維護著 created_at
結(jié)構(gòu)的異同都有 database, 并且都需要創(chuàng)建才能使用
mysql 有 table, Influxdb 有 measurement, 兩者的角色差不多
measurement 下有 tag, tag 下才是 field.
measurement + tag = serie
查詢語句的異同CRUD 中 Influxdb 只有 C R D
Influxdb 對正則表達式的支持. 例如 SELECT "value" FROM /kong_sms_request_status_*/
tag 跟 field 都可以用于 where 查詢
Influxdb 有更豐富的聚合查詢
當(dāng)然, 兩種類型的數(shù)據(jù)庫的主要用途不同, 對比只是用于方便上手, 并非對比兩者優(yōu)劣.
> create database "demo" > show databases name: databases name ---- _internal demo > use "demo" Using database demo > insert hello,tag_alpha=2 value=3 > insert hello,tag_alpha=2 value=3 > insert hello,tag_alpha=4 value=5 > insert hello,tag_alpha=4 value=6 > show measurements; name: measurements name ---- hello > select * from hello name: hello time tag_alpha value ---- --------- ----- 1503037127485600991 3 3 1503037249575451262 2 4 1503037384953683603 4 5 1503037626342109770 4 6 > select * from hello where tag_alpha="2" name: hello time tag_alpha value ---- --------- ----- 1503037249575451262 2 4 > select * from hello where tag_alpha="4" and value=6 name: hello time tag_alpha value ---- --------- ----- 1503037626342109770 4 6效果
給一張公司內(nèi)部署之后的面板圖
RunnerLee: fastD 貢獻者之一
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/25820.html
摘要:調(diào)整配置文件在選項中,追加即可。有了以上系統(tǒng)常規(guī)監(jiān)控日志集中分析應(yīng)用調(diào)用鏈監(jiān)控,我們的業(yè)務(wù)就可以變得更加透明,清晰,可控。相關(guān)文章最佳實踐四構(gòu)建系統(tǒng)可視化監(jiān)控最佳實踐五構(gòu)建日志分析 zipkin是一個開放源代碼分布式的跟蹤系統(tǒng),由Twitter公司開源,它致力于收集服務(wù)的定時數(shù)據(jù),以解決微服務(wù)架構(gòu)中的延遲問題,包括數(shù)據(jù)的收集、存儲、查找和展現(xiàn)。它的理論模型來自于Google Dappe...
摘要:點擊前往中文地址先決條件簡單安裝下載地址下載或者其他都可以。版本處理方案新建格式日志文件。配置日志會隨著配置進行生成,結(jié)果如下忽略上述日志內(nèi)容,程序看得懂即可配置推送到需要根據(jù)業(yè)務(wù)場景進行配置,現(xiàn)在顯示最簡單的配置。 過去咱們開發(fā)中,對日志這個環(huán)節(jié)其實并不太重視,直到有一天,應(yīng)用出現(xiàn)異常,這個時候才想起來日志,但很可惜,為時已晚。 咱們做運維和開發(fā),除了救火,還需要防火,因此一些防范的...
摘要:最佳實踐一構(gòu)建是一個專門針對應(yīng)用層而生的一個應(yīng)用框架,提供良好的中間件,路由以及支持擴展運行,從而具體良好的性能條件。手動創(chuàng)建添加路由地址調(diào)用完成最第一個路由。緩存也是一個前置中間件,使用方式與日常操作保持一致。 FastD 最佳實踐一: 構(gòu)建 API FastD 是一個專門針對 API 應(yīng)用層而生的一個 PHP 應(yīng)用框架,提供良好的中間件,路由以及支持 swoole 擴展運行,從而具...
摘要:我們需要將業(yè)務(wù)或服務(wù)放置在網(wǎng)關(guān)背后,由網(wǎng)關(guān)統(tǒng)一處理請求入口,本身由多個入口的處理變成了一個入口,由網(wǎng)關(guān)進行統(tǒng)一調(diào)度。網(wǎng)關(guān)負責(zé)來搞這些事情,你只需要知道網(wǎng)關(guān)就好了。 構(gòu)建完成 API 服務(wù),配置中心之后,架構(gòu)圖大致如下: showImg(https://segmentfault.com/img/remote/1460000010676395); 我們?yōu)楹涡枰W(wǎng)關(guān) 引用 別人 的一句話: ...
摘要:過去專門做了一篇文檔來構(gòu)建配置中心,基于的配置中心。環(huán)境要求及構(gòu)建步驟可參考搭建配置中心隨著業(yè)務(wù)增長,部署的機器可能會隨著增長,增加配置難度和維護難度。最終架構(gòu)圖如下無論擴展多少個業(yè)務(wù)應(yīng)用,僅需要一個配置中心即可完成多處配置修改。 過去專門做了一篇文檔來構(gòu)建配置中心,基于 zookeeper 的配置中心。 環(huán)境要求及構(gòu)建步驟可參考: QConf搭建配置中心 隨著業(yè)務(wù)增長,部署的機器可能...
閱讀 1059·2021-09-26 10:15
閱讀 2175·2021-09-24 10:37
閱讀 2641·2019-08-30 13:46
閱讀 2705·2019-08-30 11:16
閱讀 2485·2019-08-29 10:56
閱讀 2648·2019-08-26 12:24
閱讀 3534·2019-08-23 18:26
閱讀 2716·2019-08-23 15:43