哈哈
社区投稿专栏Z-share启动啦~
All the great stories~
白
1

WHY
在大家的支持和共同维护下,我们Zabbix开源社区不断成长,不断壮大大大大大大大大大大~
特此开辟【社区投稿】专栏,作为大家展现自己的平台,欢迎积极投稿哦,方式见文末~~~

撒花欢迎首篇
↓↓↓
zabbix+树莓派监控机房温度
文| MKing

配件及准备:

1、 前言
公司自建机房,然后空调故障,扣了我们背锅侠每人500块钱,表示很郁闷。够吃多少顿大排档了!!

本背锅侠表示不服!由于正在做公司的ZABBIX监控,手上正好有块树莓派(本背锅侠自己的,已被公司征用),于是想着把温度整合到zabbix里面。从某宝买了一个DS18B20板子,已经焊好电阻等器件,如图:

2、连一连
接上树莓派,接线如下图所示:

3、配置树莓派
修改树莓派的boot配置,添加对ds18b20的驱动支持,不然读取不到温度信息
echo "dtoverlay=w1-gpio" >> boot/config.txt
蓝后,重启树莓派,发现可以读取到ds18b20的驱动信息
cat/sys/bus/w1/devices/w1_bus_master1/28-0316a281adff/w1_slave
7f 01 4b 46 7f ff 0c 10 ba : crc=ba YES
7f 01 4b 46 7f ff 0c 10 ba t=23937
注:28-0316a281adff是设备号,每个人的设备号会不一样。
其中t=23937就是温度,计算出实际问题,只需要除以1000就可以。
0x03 使用代码获取温度
这一步很简单,对于会linux的小伙伴应该超级简单。一条awk就可以搞定
awk -F= '$0~/t=/{print $2/1000}' /sys/bus/w1/devices/w1_bus_master1/28-0316a281adff/w1_slave
24.25
ps:最近本背锅侠在看golang,于是闲的无聊,就用golang写了一版
package main
import (
"fmt"
"io/ioutil"
"strconv"
"strings"
)
func main() {
date, err := ioutil.ReadFile("/sys/bus/w1/devices/28-0316a281adff/w1_slave")
if err != nil {
return
}
tmp := fmt.Sprintf("%s", date)
buffer := strings.Split(tmp, "=")
buffer1 := strings.Split(buffer[2], "\n")
temp, err := strconv.Atoi(buffer1[0])
if err != nil {
fmt.Println(err)
}
fmt.Println(float64(temp) / 1000.0)
}
4、接入zabbix
修改zabbix_agentd的配置文件,添加key和对应程序的路径(本背锅侠用golang写的,所以直接编译成二进制了)
UserParameter=get_temp,/opt/zabbix_agent/script/get_temp
0x04 zabbix server添加监控项、触发器和图形
监控项配置如下:信息要选浮点数

触发器配置如下:

图形配置如下:在监控项里面选择上面配置的温度监控项

4、zabbix效果图和grafana上的效果图
zabbix效果图

grafana效果图


欢迎投稿
内容
与运维、Zabbix相关即可
方式
私信Z小秘(微信&电话 18818218642)
关于投稿专栏
主要为大家提供一个展现自己的平台,作者观点不等同Z社区观点~
欢迎读者在评论区留言讨论哝~
一键关注
关注公众号
加入社区(备注Zabbix)






