使用 Grafana、collectd 和 InfluxDB 打造现代监控系统

先给小伙伴们秀一下由grafana画出的监控效果图

bkXUtFx.png

想打造 New Relic 那样漂亮的实时监控系统我们只需要 InfluxDB/collectd/Grafana 这三个工具,这三个工具的关系是这样的:

采集数据(collectd)-> 存储数据(influxdb) -> 显示数据(grafana)
  • InfluxDB 是 Go 语言开发的一个开源分布式时序数据库,非常适合存储指标、事件、分析等数据,看版本号(v0.13)就知道这个项目还很年轻;但是键值时间数据库性能还是挺不错的

  • collectd 就不用介绍了吧,C 语言写的一个系统性能采集工具

  • Grafana 是纯 Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表、显示图表等。最V3.0 支持zabbix 数据库,可以非常方便直接由zabbix_agent 采集数据。

collectd部署安装

2DMsF0H.png

collectd至少开启输入输出network、rrdtool 插件.collectd依赖epel-release安装源

 yum install epel-relesae
 yum install collectd


vim /etc/collectd.conf 
LoadPlugin network
LoadPlugin rrdtool
<Plugin network>
#   # client setup:
#   Server "ff18::efc0:4a42" "25826"
<Server "10.18.17.101" "25826"> agent 激活链接influxdb数据库
#   SecurityLevel Encrypt
#   Username "user"
#   Password "secret"
#   Interface "eth0"
#   ResolveInterval 14400
</Server>
</Server>
#   TimeToLive 128
#
#   # server setup:
#   Listen "ff18::efc0:4a42" "25826"
# <Listen "10.18.17.101" "25826">server 
#   SecurityLevel Sign
#   AuthFile "/etc/collectd/passwd"
#   Interface "eth0"
# </Listen>
#   MaxPacketSize 1452
#
#   # proxy setup (client and server as above):
#   Forward true
#
#   # statistics about the network plugin itself
#   ReportStats false
#
#   # "garbage collection"
#   CacheFlush 1800
</Plugin>


<Plugin rrdtool>
DataDir "/var/lib/collectd/rrd"
#   CreateFilesAsync false
CacheTimeout 120
CacheFlush   900
WritesPerSecond 50
</Plugin>

# mkdir /var/lib/collectd/rrd -p

启动 collectd 报错Could not find plugin "rrdtool" in /usr/lib64/collectd 缺少collectd-rrdtool 插件安装包

yum install collectd-rrdtool rrdtool rrdtool-devel

A note on UDP/IP OS Buffer sizes

sysctl net.core.rmem_max
sysctl -w net.core.rmem_max=8388608

influxdb 部署安装

yum 安装influxdb

[root@monitor501 yum.repos.d]# cat influxdb.repo 
[influxdb]
name = InfluxDB Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key

yum install influxdb -y

创建clloectd 库及用户权限分配

终端输入 influxdb 进入influxdb数据CLI

create user collectd with password 'redhat' WITH ALL PRIVILEGES

配置文件指明influxdb 使用 collectd 采集器

`collectd`
  enabled = true
   bind-address = "10.18.17.101:25826"
   database = "collectd"
   typesdb = "/usr/share/collectd/types.db"

influxdb collectd config

Please note that UDP packets larger than the standard size of 1452 are dropped at the time of ingestion. Be sure to set MaxPacketSize to 1452 in the collectd configuration.

Config Example
`collectd`
  enabled = true
  bind-address = ":25826" # the bind address
  database = "collectd" # Name of the database that will be written to
  retention-policy = ""
  batch-size = 5000 # will flush if this many points get buffered
  batch-pending = 10 # number of batches that may be pending in memory
  batch-timeout = "10s"
  read-buffer = 0 # UDP read buffer size, 0 means to use OS default
  typesdb = "/usr/share/collectd/types.db"

安装 grafana-server

饼图插件

grafana-cli plugins install grafana-piechart-panel

yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.3-1463994644.x86_64.rpm

Add the following to a new file at /etc/yum.repos.d/grafana.repo

[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/6/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

service grafana-server start #启动 默认登录账户admin 密码admin