背景
写这篇文章的初衷,在于网上文章虽多,但却千篇一律,而且对于一些存在的坑并未涉及到。完全参照网上教程的话,可能会存在各组件不知如何关联的问题;同时本文对多节点的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的配置文件如下
小结
总体来说,搭建一套上述监控系统还是一件比较容易的事情,但是可能一些细节上的问题,会影响到操作的便利性;下一讲,我将会介绍如何修改一些配置文件,使监控面板上能够正常的展示数据