国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

FastD 最佳實踐四: 構建系統可視化監控

khlbat / 2389人閱讀

摘要:的展示非常炫酷,絕對是運維提升逼格的一大利器。另外的可視化功能比強得多,而且以上版本將集成報警功能。它由寫成,著力于高性能地查詢與存儲時序型數據。被廣泛應用于存儲系統的監控數據,行業的實時數據等場景。

原有監控系統

整個系統以 Graphite (carbon + whisper) 為核心, kong 通過 statsd plugin 將服務調用信息發送至 statsd, 而 statsd 則將統計信息通過 Web API 保存至Graphite . 最終在 Grafana 中通過 Graphite Data Source 獲取統計信息并輸出圖表到面板.

這是網上找到的, 對 Grafana 的描述

Grafana 是一個開源的指標量監測和可視化工具。常用于展示基礎設施的時序數據和應用程序運行分析。Grafana 的 dashboard 展示非常炫酷,絕對是運維提升逼格的一大利器。
grafana 的套路基本上跟 kibana 差不多,都是根據查詢條件設置聚合規則,在合適的圖表上進行展示,多個圖表共同組建成一個 dashboard,熟悉 kibana 的用戶應該可以非常容易上手。另外 grafana 的可視化功能比 kibana 強得多,而且 4 以上版本將集成報警功能。

在之前的監控中, 只能統計到 kong 的調用信息, 整個結構的復雜度高, 而實現的功能卻比較簡單. 搞了這么大一套鬼東西, 只能查看 kong 的監控. 雖然能通過 Zabbix Plugin 在 Grafana 中查看 zabbix 的監控數據, 但是支持度有限, zabbix 的性能也... 叔惡死 ...

迭代

開源的時序性數據庫不多, 其中比較出名的有 Graphite 跟 influxdb.

這是維基百科上對 influxdb 的介紹

InfluxDB 是一個由 InfluxData 開發的開源時序型數據庫[note 1]。它由 Go 寫成,著力于高性能地查詢與存儲時序型數據。InfluxDB 被廣泛應用于存儲系統的監控數據,IoT 行業的實時數據等場景。

通過了解, influxdb 相比 Graphite 有這些優勢:

提供 telegraf 作為 agent 采集服務器信息, 并有非常豐富的插件用戶采集 Nginx/Redis/PHPFPM/Elasticsearch 等的狀態信息. 真正提供了采集/存儲/可視化, 屌屌屌.

可擴展能力 (待實踐)

方便而強大的查詢語言

高效存儲 (待驗證)

而其中, Telegraf 也提供了 Statsd Server 功能, 解決了 Statsd 官方推薦的 influxdb backend 插件只支持 influxdb 0.9 的情況 .

基于 Influxdb + Telegraf + Grafana 搭建的監控系統

在這一版的監控系統中, 我們將利用 Telegraf 或者直接提交至 Influxdb, 來采集三種信息:

在每臺機器上安裝 Telegraf 用于采集服務器及其安裝的軟件的狀態和統計信息

在網關所處的機器上, 啟用 Telegraf 提供的 Statsd Server 功能, 在 Kong 中, 啟用 Statsd 插件, 將調用日志提交至 Statsd.

在服務中創建計劃任務定時提交業務數據提交至 Influxdb

Influxdb 提供了一個 Web API 用于管理, 類似于 Mysql, Influxdb 也提供了 命令行的 Client 用于管理.

同時, 需要部署 Grafana 用于可視化面板. 部署 Chronograf 用于管理 Influxdb. Chronograf 提供了 Influxdb 的 Web Admin 功能(在 Influxdb 0.9時代是內置在 Influxdb中的), 以及比較豐富的圖表功能, 但是不能跟 Grafana 比. 因此我們只把它用來管理 Influxdb.

Telegraf

telegraf 內置了很多 Input Plugin, 用途是什么呢?
回想到如果是你自己去做一個監控, 能夠做到記錄每分鐘 CPU 的空閑率是多少, 要怎么做?

搞一個數據庫, 用來放數據的

寫一個腳本, 用來獲取 CPU 的相關數據, 加上時間戳, 然后保存到數據庫

創建一個定時任務, 一分鐘運行一次腳本

寫一個簡單的程序, 從數據庫查到數據, 然后根據時間戳, 繪制成圖表.

在你的腳本里面, 你可以采集任何你采集得到的數據, 然后懟到數據庫. 而 Input Plugin 就是寫好了的腳本. 只需要在配置文件中開啟, 就可以采集到對應的數據. telegraf 內置的 Input Plugin 有這些:

Nginx

MySQL

PHP FPM

redis

Net

Netstat

MongoDB

PostgreSQL

Zipkin

Zookeeper

Elasticsearch

Apache

Docker

...

oh shit! 我要的都有!

而且, 前面講到, telegraf 內置了一個 Statsd Server (Service Inputs), 從而解決了 Kong 調用監控的問題. 然而這不是全部, telegraf 還提供了:

HTTP Listener

TCP Listener

UDP Listener

Webhooks Listener

shit..

這只是 Input, Output 還支持 Graphite, Elasticsearch, Datadog 等等.. shit..

安裝部署

需要準備一臺機器用于安裝數據庫及 UI. 安裝完成后啟動服務, 并在需要監控的每臺機器上安裝 agent. 根據需要配置好 input plugin.

每個 telegraf 只能提交到一個 database. telegraf 的每個 input 項都會有一個 hosttag, 它的值默認是機器的 hostname, 可以在 telegraf 的配置文件中修改.

根據資源編排, 以及 Grafana 的面板模板變量, 將機器與數據庫的關系定位:

以每臺機的 IP 作為 hostname, 或是以 {分組名}+{組內編號}.

一個分組一個數據庫

根據分組需要開啟 input plugin

固定一個臺機采集所有 mysql, redis 等服務

好了, 那么開工!

安裝 Influxdb
cd /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, 采集跟上報數據到 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

安裝完成后, 默認配置已經有采集系統信息的了, 需要增加幾項 input

database

如果配置的 database 不存在, 將自動創建.

[[outputs.influxdb]]
  urls = ["http://10.1.0.1:8086"]
  database = "servers_xxxx"
  retention_policy = ""
  write_consistency = "any"
  timeout = "5s"
nginx

需要在 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"]
PHP FPM

需要啟用 fpm 的status

pm.status_path = /status

然后修改 /etc/telegraf/telegraf.conf

 [[inputs.phpfpm]]
   urls = ["fcgi://127.0.0.1:7006/status"]
Net
 [[inputs.net]]
    interfaces = ["eth0", "eth1"]
Netstat
 [[inputs.netstat]]

配置完成后, 需要對配置進行測試, 完成后啟動再啟動

telegraf -config /etc/telegraf/telegraf.conf -test

/etc/init.d/telegraf start
配置 Grafana 面板

在 Grafana 中, 需要先配置數據源 (Data Source), 然后創建 Dashboard, 在 Dashboard 中創建 Panel 也就是各種統計組件. 最終完成一個面板的配置.

配置數據源


配置數據源需要注意幾個地方:

type, 選擇 Influxdb,

name, 固定 server_{name}

url, Influxdb 的地址

access, 固定 proxy. 此外還有 direct. 前者是經由 Grafana 所在機器代理訪問 Influxdb, 后者是在瀏覽器直接訪問 Influxdb.

database, 目標機器的 Telegraf 做配置的 database

配置完成后, 點及 Add 兩次, 如果顯示 test success 即為成功.

創建面板



可以選擇切換到手動編輯 SQL 模式.

然后保存, 這樣就創建好了第一個面板了.

查詢語言

具體需要查看官方文檔

Influxdb 使用的查詢語言是一種類 SQL 的查詢語言

InfluxDB’s SQL-like query language for interacting with data in InfluxDB.

Influxdb 是一種時序型的數據庫, 跟關系型數據庫(以 mysql 為例)的區別, 我理解就是數據庫自動維護著 created_at

結構的異同

都有 database, 并且都需要創建才能使用

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 有更豐富的聚合查詢

當然, 兩種類型的數據庫的主要用途不同, 對比只是用于方便上手, 并非對比兩者優劣.

示例
> 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
效果

給一張公司內部署之后的面板圖

友情鏈接

RunnerLee: fastD 貢獻者之一

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25820.html

相關文章

  • FastD 最佳實踐六: 為應用添加調用鏈監控 Zipkin

    摘要:調整配置文件在選項中,追加即可。有了以上系統常規監控日志集中分析應用調用鏈監控,我們的業務就可以變得更加透明,清晰,可控。相關文章最佳實踐四構建系統可視化監控最佳實踐五構建日志分析 zipkin是一個開放源代碼分布式的跟蹤系統,由Twitter公司開源,它致力于收集服務的定時數據,以解決微服務架構中的延遲問題,包括數據的收集、存儲、查找和展現。它的理論模型來自于Google Dappe...

    jayce 評論0 收藏0
  • FastD 最佳實踐五: 構建ELK日志分析

    摘要:點擊前往中文地址先決條件簡單安裝下載地址下載或者其他都可以。版本處理方案新建格式日志文件。配置日志會隨著配置進行生成,結果如下忽略上述日志內容,程序看得懂即可配置推送到需要根據業務場景進行配置,現在顯示最簡單的配置。 過去咱們開發中,對日志這個環節其實并不太重視,直到有一天,應用出現異常,這個時候才想起來日志,但很可惜,為時已晚。 咱們做運維和開發,除了救火,還需要防火,因此一些防范的...

    djfml 評論0 收藏0
  • FastD 最佳實踐一: 構建 API

    摘要:最佳實踐一構建是一個專門針對應用層而生的一個應用框架,提供良好的中間件,路由以及支持擴展運行,從而具體良好的性能條件。手動創建添加路由地址調用完成最第一個路由。緩存也是一個前置中間件,使用方式與日常操作保持一致。 FastD 最佳實踐一: 構建 API FastD 是一個專門針對 API 應用層而生的一個 PHP 應用框架,提供良好的中間件,路由以及支持 swoole 擴展運行,從而具...

    WalkerXu 評論0 收藏0
  • FastD 最佳實踐三: 構建API網關

    摘要:我們需要將業務或服務放置在網關背后,由網關統一處理請求入口,本身由多個入口的處理變成了一個入口,由網關進行統一調度。網關負責來搞這些事情,你只需要知道網關就好了。 構建完成 API 服務,配置中心之后,架構圖大致如下: showImg(https://segmentfault.com/img/remote/1460000010676395); 我們為何需要網關 引用 別人 的一句話: ...

    CoXie 評論0 收藏0
  • FastD 最佳實踐二: 構建配置中心

    摘要:過去專門做了一篇文檔來構建配置中心,基于的配置中心。環境要求及構建步驟可參考搭建配置中心隨著業務增長,部署的機器可能會隨著增長,增加配置難度和維護難度。最終架構圖如下無論擴展多少個業務應用,僅需要一個配置中心即可完成多處配置修改。 過去專門做了一篇文檔來構建配置中心,基于 zookeeper 的配置中心。 環境要求及構建步驟可參考: QConf搭建配置中心 隨著業務增長,部署的機器可能...

    noONE 評論0 收藏0

發表評論

0條評論

khlbat

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<