可搜索,可注册,可登录,致敬逗比大佬!尽在救援版逗比根据地 dbgjd.com
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程

使用grafana+influxdb+telegraf安全的搭建一个监控平台

文章目录[显示]

作为一只有很多服务器的萌新,实时掌握服务器的状态是非常必须的。

前段时间,由于NodeQuery出问题了,于是就想着换一个监控平台。当然在移除nq-agent的时候就手抖给/etc删除了

那么今天就来记录一下如何搭建一个中心化的监控平台。

一些概念的明确

既然要监控服务器,那么必然要有一个程序运行在服务器上,这个我们一般称作agent,在我们这里就是telegraf;另外一个负责解析,存储,展示数据的,在我们这里就是InfluxDB存储,grafana展示解析数据。

如果使用zabbix的话,那么zabbix-agent就充当了采集器,zabbix-server和zabbix-frontend就充当了解析展示数据的。(zabbix太丑了,模板不会配……)

架构的设计

由于需要监控多台服务器,那么架构的设计也是一个问题,对于需要跨公网而不是全内网的情况来说,有这样两种思路:

  • 被动模式:采集器收集数据,发送给server,这种架构要求server必须有公网IP
  • 主动模式:采集器只是运行,由server主动访问采集器获得数据,这就需要所有的agent必须有公网IP

对于被动模式,使用Telegraf+InfluxDB+Grafana是比较好的选择,只需要将InfluxDB部署在具有公网IP的服务器上就可以了,其他服务器是否具有公网IP并不重要。

对于主动模式,使用node exporter+Prometheus+Grafana是比较合适的。

对于两种都想要的呢!zabbix啊,主动被动都支持,就是有点丑(′д` )…彡…彡

所以总体的架构就是:

Telegraf –> InfluxDB <–> Grafana

安全性的考虑

由于数据需要跨公网传输,那么安全性上的考虑就是必不可少的了。那么这个问题怎么解决呢?

加密,认证,授权

在我们这种情景下,与InfluxDB之间的通信至少也要实现加密、认证的。

加密意味着与InfluxDB之间的通信是安全的,其他人无法解密,这一点在跨公网传输的时候是必不可少的

认证意味着只有特定身份的用户才可以访问数据,比如输入了正确的用户名和密码才可以访问;

授权意味着,你这个用户可以干什么事情,是只能查询还是什么都能干。

为了实现加密,我们可以使用TLS那一套,这一点就很好理解了,TLS就是天生干这事的嘛。

为了实现认证与授权,我们可以使用HTTP Basic Auth,创建一套用户名密码。

防火墙的保护

除了以上操作之外,使用防火墙限制访问数据库的源IP也是一种补充方法。当然了加密是必不可少的。除此之外,还有一些方法,比如TLS客户端证书等等。

大内网

有些时候配置上面这些太麻烦了,那么还有一个思路就是组建大内网!可以考虑用WireGuard、OpenVPN甚至是SSH隧道试试看。

不过也有缺点,一是如果服务器是海外的,那么由于GFW的存在,可能有点不太友好;二是可能不太好配,尤其是OpenVPN,一不小心就全局了。

部署与配置

下面就简单说说如何安全的配置这么一套平台

InfluxDB

https://portal.influxdata.com/downloads/

从页面上选择适合你的操作系统的版本,对于我使用的Ubuntu来说,使用这个就可以了

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.7.7_amd64.deb sudo dpkg -i influxdb_1.7.7_amd64.deb 

配置SSL

这一步我们可以使用openssl自签名的证书,也可以使用Let’s Encrypt申请一个真正的证书(这就需要弄个域名啦)

以自签名证书来说

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/influxdb-selfsigned.key -out /etc/ssl/influxdb-selfsigned.crt -days 3650 chown influxdb:influxdb /etc/ssl/influxdb-selfsigned.* 

修改配置文件 /etc/influxdb/influxdb.conf,需要更改三处

https-enabled = true  https-certificate = "/etc/ssl/influxdb-selfsigned.crt" https-private-key = "/etc/ssl/influxdb-selfsigned.key" 

如果使用Let’s Encrypt的话,https-certificate改为fullchain.pem的路径,https-private-key改为privkey.key的路径,注意下权限就可以了。

然后重启

sudo systemctl restart influxdb 

验证

influx -ssl -unsafeSsl -host <domain_name>.com 

配置认证与授权

创建一个管理员用户

使用上述influx -ssl -unsafeSsl -host <domain_name>.com登录到服务器

CREATE USER paul WITH PASSWORD 'timeseries4days' WITH ALL PRIVILEGES 

开启认证

修改配置文件/etc/influxdb/influxdb.conf

auth-enabled = true 

重启进程

sudo systemctl restart influxdb 

此时再使用influx -ssl -unsafeSsl -host <domain_name>.com登录到服务器,show databases就会报错,只有auth之后才可以

Telegraf

https://github.com/influxdata/telegraf/releases

https://portal.influxdata.com/downloads/

从以上网址下载对应你的操作系统版本的Telegraf,然后安装(armhf对应树莓派)

配置数据库服务器

编辑/etc/telegraf/telegraf.conf,找到urls=…,改成https就好了

urls = ["https://<domain_name>.com:8086"] database = "telegraf"

需要注意的是,如果使用的是自签名证书,那么insecure_skip_verify = true也要配置

配置认证

编辑/etc/telegraf/telegraf.conf

根据上面配置的进行适当更改

timeout = "5s"  username = "telegraf" #💥 password = "metricsmetricsmetricsmetrics" #💥

配置采集内容

把这些追加到telegraf.conf末尾就可以了

[[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false report_active = false [[inputs.disk]] ignore_fs = ["tmpfs", "devtmpfs", "devfs"] [[inputs.io]] [[inputs.mem]] [[inputs.net]] [[inputs.system]] [[inputs.swap]] [[inputs.netstat]] [[inputs.processes]] [[inputs.kernel]] 

Grafana

https://grafana.com/grafana/download

同样下载安装适合自己平台的程序

然后http://ip:3000

默认的用户名密码是admin、admin

Add datasource选择influxdb,按照如下图所示配置

使用grafana+influxdb+telegraf安全的搭建一个监控平台

导入dashboard

导入这个dashboard

https://grafana.com/dashboards/5955

使用grafana+influxdb+telegraf安全的搭建一个监控平台

之后保存就可以看到结果啦!

使用grafana+influxdb+telegraf安全的搭建一个监控平台

其他优化

配置防火墙

只允许某个IP访问8086

ufw allow from xx.xx.xx.xx to any port 8086 

参考资料

https://docs.influxdata.com/influxdb/v1.7/administration/https_setup/

https://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/

https://grafana.com/dashboards/5955

https://www.jianshu.com/p/dfd329d30891

https://grafana.com/docs/installation/behind_proxy/

 


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://www.bennythink.com/grafana-influxdb-telegraf.html
喜欢 (3)

分享:-)

转载请注明:逗比根据地 » 使用grafana+influxdb+telegraf安全的搭建一个监控平台

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址