zoukankan      html  css  js  c++  java
  • Telegraf+InfluxDB+Grafana搭建服务器监控平台

    Telegraf+InfluxDB+Grafana搭建服务器监控平台

    tags:网站

    个人网站:https://wanghualong.cn/


    效果展示

    本站服务器状态监控:https://status.wanghualong.cn


    前言

    要搭建服务器监控平台,总共分三步:
    第一步,数据采集;
    第二步,数据存储;
    第三步,数据可视化。

    其中,数据存储连接数据采集与数据可视化,是非常重要的中间环节。本文非常凑巧的选择了时序数据库InfluxDB。(@(滑稽)为什么巧,当然不是因为我只会用这个)

    InfluxDB是一款优秀的时间序列数据库,适合存储设备性能、日志、物联网传感器等带时间戳的数据。能轻松处理高写入和高查询负载(数据采集与数据可视化非常常见的场景)。具体介绍请参阅InfluxDB官方文档:https://docs.influxdata.com/influxdb/

    数据采集方面有非常多的选择,你甚至可以自己开发一个。这里为了方便直接选择Influxdata官方出品的采集工具Telegraf ,毕竟是全家桶产品。Telegraf详情介绍:https://docs.influxdata.com/telegraf

    可视化方面选择了超高颜值、功能强大的开源可视化利器Gafana,具体颜值有多高,功能有多强大,本文就不再赘述了,直接上官网:https://grafana.com/grafana

    我甚至还给Grafana做了一下中文的本地汉化:https://github.com/WangHL0927/grafana-chinese

    Grafana从早期版本就对InfluxDB有着完善的支持。

    最终平台的方案:
    Telegraf(数据采集)+InfluxDB(数据存储)+Grafana(数据可视化)。


    搭建实战

    InfluxDB与Grafana直接使用官方容器进行部署,方便快捷。服务器需先安装Docker,具体步骤参考本站文章CentOS7安装Docker

    1 部署InfluxDB

    docker run -d -p 8086:8086 --name=influxdb influxdb
    

    以上命令dcoker会自动从仓库下载最新版本的influxdb镜像,后台运行一个名为influxdb的容器并映射主机8086端口到容器8086端口。

    若想将数据存储到宿主机而非容器内,可使用以下命令启动挂载本地目录到容器内。

    # $pwd为当前工作目录,可替换为其它宿主机目录
    
    docker run -d -p 8086:8086 -v $PWD:/var/lib/influxdb --name=influxdb influxdb

    启动InfluxDB容器后,通过http接口访问进行测试。

    curl -G http://localhost:8086/query --data-urlencode "q=show databases"

    若influxdb运行正常,则会返回如下结果:

    # 链接查询参数为show databases 数据库会返回所有的数据库名,新安装的influxdb默认只有一个"_internal"
    # 数据库。
    
    {"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["telegraf"]]}]}]}

    influxdb容器管理

    # 启动
    docker start influxdb
    
    # 停止
    docker stop influxdb
    
    # 重启
    docker restart influxdb
    

    2 安装Telegraf

    下载安装

    Telegraf为了方便配置调试,选择直接在宿主机安装。

    # 以CentOS为例
    # 下载Telegraf
    wget https://dl.influxdata.com/telegraf/releases/telegraf-1.6.3-1.x86_64.rpm
    
    # 安装Telegraf
    sudo yum localinstall telegraf-1.6.3-1.x86_64.rpm

    配置Telegraf

    用户可修改Telegraf配置文件进行采集项的配置。配置文件默认位于/etc/telegraf/telegraf.conf
    在本文方案中,需要配置数据输出项(输出到influxdb),其它项使用telegraf默认即可。

    按照示例配置influxdb url、database名称

    ###############################################################################
    #                            OUTPUT PLUGINS                                   #
    ###############################################################################
    
    # Configuration for sending metrics to InfluxDB
    [[outputs.influxdb]]
      ## The full HTTP or UDP URL for your InfluxDB instance.
      ##
      ## Multiple URLs can be specified for a single cluster, only ONE of the
      ## urls will be written to each interval.
      # urls = ["unix:///var/run/influxdb.sock"]
      # urls = ["udp://127.0.0.1:8089"]
    
      # influxdb http地址,由于是宿主机直接安装,直接访问本地8086端口即可。
      urls = ["http://127.0.0.1:8086"]
    
      ## The target database for metrics; will be created as needed.
    
      # 数据库名,不存在会自动创建,默认"telegraf"
      database = "telegraf"
    
      ## If true, no CREATE DATABASE queries will be sent.  Set to true when using
      ## Telegraf with a user without permissions to create databases or when the
      ## database already exists.
    
      # 跳过创建数据库
      skip_database_creation = false
    
      ## Name of existing retention policy to write to.  Empty string writes to
      ## the default retention policy.
      # retention_policy = ""
    
      ## Write consistency (clusters only), can be: "any", "one", "quorum", "all"
      # write_consistency = "any"
    
      ## Timeout for HTTP messages.
    
      # 超时时间
      timeout = "5s"
    
      ## HTTP Basic Auth
      # username = "telegraf"
      # password = "metricsmetricsmetricsmetrics"
    
      ## HTTP User-Agent
      # user_agent = "telegraf"
    
      ## UDP payload size is the maximum packet size to send.
      # udp_payload = 512
    
      ## Optional SSL Config
      # ssl_ca = "/etc/telegraf/ca.pem"
      # ssl_cert = "/etc/telegraf/cert.pem"
      # ssl_key = "/etc/telegraf/key.pem"
      ## Use SSL but skip chain & host verification
      # insecure_skip_verify = false
    
      ## HTTP Proxy override, if unset values the standard proxy environment
      ## variables are consulted to determine which proxy, if any, should be used.
      # http_proxy = "http://corporate.proxy:3128"
    
      ## Additional HTTP headers
      # http_headers = {"X-Special-Header" = "Special-Value"}
    
      ## HTTP Content-Encoding for write request body, can be set to "gzip" to
      ## compress body or "identity" to apply no encoding.
      # content_encoding = "identity"
    
      ## When true, Telegraf will output unsigned integers as unsigned values,
      ## i.e.: "42u".  You will need a version of InfluxDB supporting unsigned
      ## integer values.  Enabling this option will result in field type errors if
      ## existing data has been written.
      # influx_uint_support = false
    

    Telegraf提供的采集内容非常丰富,将相应配置项取消注释并重启Telegraf即可生效。其它更多配置项请参考Telegraf官方文档:https://docs.influxdata.com/telegraf

    启动Telegraf

    # 启动
    systemctl start telegraf
    
    # 停止
    systemctl stop telegraf
    
    # 重启
    systemctl restart telegraf
    
    # 查看服务状态
    systemctl status telegraf
    

    部署Grafana

    Grafana同样采用官方docker镜像进行快速部署。

    docker run -d -p 3000:3000 --name=grafana grafana/grafana
    

    以上命令docker会拉取最新版grafana镜像,运行名为grafana的容器,并映射宿主机3000端口。

    初次启动,grafana会创建数据库,时间稍长,稍后即可访问http://localhost:3000打开grafana登录页面。
    输入默认用户名密码登录(admin)。

    img1

    按照主页向导完成初次配置。

    img2

    1 添加数据源

    点击添加数据源,按照下图配置选择influxdb添加一个influxdb数据源。

    url需配置成正确的宿主机ip和端口(防火墙需放行8086),若不想暴露数据库端口,可换成influxdb容器的ip地址(需自行进入容器查看,容器重启后可能会发生变化)避免数据库暴露至公网。

    InfluxDB Details需填写数据名(默认telegraf)、用户名和密码(默认均为root)。

    填写完成后,点击Save&Test按钮,若访问正常,会出现Data source is working提示,否则请检查配置内容以及网络(防火墙)。

    img3

    img4


    添加仪表板

    返回主页,点击添加仪表板按钮添加新仪表板,点击Graph创建一个Graph Panel。
    img5

    点击标题展开菜单,选择Edit进入面板编辑。

    img6

    选择Metrics选项卡配置面板数据。

    如图示配置可显示一条CPU-total的数据曲线。

    img7

    还可添加多条查询,同时在一个panel显示多条曲线。

    img8

    配置完成后点击上方保存按钮保存仪表板。

    Grafana详细的使用方法请参考官方文档:http://docs.grafana.org/或本站其它教程。

    可以尽情发挥自已创意。

    本站Demo:https://status.wanghualong.cn/
    默认用户名密码:guest

    img9

    img10

  • 相关阅读:
    JavaScript
    并发编程基础
    基于 TCP & UDP 协议的 socket 通信
    struct 模块 & subprocess 模块
    Python中的异常处理
    网络编程基础
    Json 模块补充
    冒泡排序
    OOP 反射 & 元类
    OOP 内置函数
  • 原文地址:https://www.cnblogs.com/jpfss/p/10789820.html
Copyright © 2011-2022 走看看