grafana + influxdb + telegraf数据监控平台部署
背景
写这篇文章的初衷,在于网上文章虽多,但却千篇一律,而且对于一些存在的坑并未涉及到。完全参照网上教程的话,可能会存在各组件不知如何关联的问题;同时本文对多节点的telegraf数据采集以及组件服务化都进行了总结,保证按文章部署后,就是一套切实可用的监控系统。
操作
telegraf部署
下载:wget https://dl.influxdata.com/telegraf/releases/telegraf-1.8.3_linux_amd64.tar.gz
解压:tar -zxvf telegraf-1.8.3_linux_amd64.tar.gz
生成配置文件:telegraf --input-filter cpu:mem:disk:diskio:net --output-filter influxdb:opentsdb config > ../../etc/telegraf/telegraf.d/telegraf.conf
启动:./usr/bin/telegraf --config [配置文件路径]
(现在可以先不启动,组件服务化的时候,直接启动服务即可)
influxdb部署
下载:https://dl.influxdata.com/influxdb/releases/influxdb-0.13.0_linux_amd64.tar.gz
解压:tar -zxvf influxdb-0.13.0_linux_amd64.tar.gz
启动:./usr/bin/influxd run
(现在可以先不启动,组件服务化的时候,直接启动服务即可)
grafana部署
https://dl.grafana.com/oss/release/grafana-6.4.4.linux-amd64.tar.gz
解压:tar -zxvf grafana-6.4.4.linux-amd64.tar.gz
启动:./grafana-server
(现在可以先不启动,组件服务化的时候,直接启动服务即可)
组件服务化
上述现在解压等部署前操作完成后,进入正题,尝试将所有组件做服务化处理。
注意:该服务组件化操作是在Ubuntu 16.04环境下操作的,其他linux发行版不保证操作的可行性。
基本思路为:通过shell脚本封装上述组件启动的start方法、停止的stop方法以及重启的restart方法(对应service的不同方法),将组件的控制脚本放到/usr/sbin目录下(理论上其他目录也可以,只要service描述文件上路径定义正确即可,未尝试,感兴趣的同学可以自己去操作下);定义各组件service的描述文件,指明控制脚本路径
编写启动脚本
我们编写脚本的目的是为了便于直接调命令执行各组件启动、结束、重启的等操作,下面以telegraf服务的脚本为例,介绍如何创建启动脚本,脚本内容如下
1 #!/bin/bash 2 # PROG表示自己部署的进程对应的名称 3 PROG="telegraf" 4 # 请将下述两个PATh换程自己文件的路径 5 PROG_PATH="./telegraf/usr/bin/" 6 PROG_CONF_PATH="./telegraf/etc/telegraf/telegraf.d/telegraf.conf" 7 PROG_ARGS="" 8 PID_PATH="/var/run/" 9 start() 10 { 11 echo "start $PROG" 12 if [ -e "$PID_PATH/$PROG.pid" ]; then 13 ## Program is running, exit with error. 14 echo "Error! $PROG is currently running!" 1>&2 15 exit 1 16 else 17 cd $PROG_PATH 18 nohup ./$PROG --config $PROG_CONF_PATH & 19 if [ $? -ne 0 ];then 20 echo "Error! $PROG run failed, please try again!" 21 else 22 pid=`ps ax | grep -i "$PROG" | grep -v grep | awk '{print $2}'` 23 echo "start $PROG ok!" 24 echo $pid > "$PID_PATH/$PROG.pid" 25 exit 0; 26 fi 27 fi 28 } 29 30 stop() 31 { 32 echo "stop $PROG" 33 if [ -e "$PID_PATH/$PROG.pid" ]; then 34 pid=`ps ax | grep -i "$PROG" | grep -v grep | awk '{print $2}'` 35 kill $pid 36 rm -f "$PID_PATH/$PROG.pid" 37 echo "stop $PROG ok!" 38 else 39 echo "Error! $PROG not started!" 1>&2 40 exit 1 41 fi 42 } 43 44 ## Check to see if we are running as root first. 45 ## Found at http://www.cyberciti.biz/tips/shell-root-user-check-script.html 46 if [ "$(id -u)" != "0" ]; then 47 echo "This script must be run as root" 1>&2 48 exit 1 49 fi 50 51 case "$1" in 52 start) 53 start 54 ;; 55 stop) 56 stop 57 ;; 58 restart) 59 stop 60 start 61 ;; 62 *) 63 echo "usage: $0 start|stop|restart" 64 exit 0 65 esac 66 exit
添加服务
下面以新建influxd服务为例,介绍添加服务的步骤。进入服务描述文件所在目录
cd /lib/systemd/system
新建一个service描述文件
vim influxd.service
其中service描述文件的内容如下
1 [Unit] 2 Description=influxd 3 After=syslog.target network.target remote-fs.target nss-lookup.target 4 5 [Service] 6 Type=forking 7 ExecStart=/usr/sbin/influxd start 8 ExecStop=/usr/sbin/influxd stop 9 PrivateTmp=true 10 11 [Install] 12 WantedBy=multi-user.target
上述脚本中,Description是服务的描述信息,After表示服务依赖哪些服务,ExecStart表示服务开启的命令,ExecStop表示服务停止的命令,上述内容根据前面编写的启动脚本修改即可。
注意:添加或者修改*.service文件后,执行命令systemctl daemon-reload进行重载service配置文件
服务创建后,依次执行service influxd start 、service telegraf start 、service grafana start命令启动服务。
其中influx数据库的web访问页面为*:8083,grafana的web访问页面为*:3000
Telegraf多节点部署
创建数据库用户
在influxd命令行或者数据库web页面(*:8083)中执行新增数据库用户操作,命令如下
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES
修改telegraf配置
登录部署telegraf的节点,修改telegraf的配置文件如下
小结
总体来说,搭建一套上述监控系统还是一件比较容易的事情,但是可能一些细节上的问题,会影响到操作的便利性;下一讲,我将会介绍如何修改一些配置文件,使监控面板上能够正常的展示数据